* feat: Added vite.js dependencies. * chore: Removed tests folder to follow same structure as design-system * chore: Removed unused testing config. * chore: Created vite.js index.html * refactor: Updated scss structure and imports. * refactor: Updated workflow building. * fix: Cleared up all workflow dependency cycles. Added proper package.json imports config. * feat: Got a working build using Vite. Need to fix issues next. * fix: Progress! Getting process.env error. * fix: Changed process.env to import.meta.env. * fix: Fixed circular imports that used require(). Fixed monaco editor. * chore: Removed commented code. * chore: Cleaned up package.json * feat: Made necessary changes to replace base path in css files. * feat: Serve CSS files for `editor-ui` Vite migration (#4069) ⚡ Serve CSS files for Vite migration * chore: Fixed package-lock.json. * fix: Fixed build after centralized tsconfig update. * fix: Removed lodash-es replacement. * fix: Commented out vitest test command. * style: Fixed linting issues. * fix: Added lodash-es hotfix back. * chore: Updated package-lock.json * refactor: Renamed all n8n scss variables to no longer be defined as private. * feat(editor): add application-wide el-button replacement. * fix(editor): Fix import in page alert after merge. * chore(editor): update package-lock.json. * fix: Case sensitive lodash-es replacement for vue-agile. * fix: add alias for lodash-es camelcase import. * fix: add patch-package support for fixing quill * feat: add patch-package on postinstall * fix: update quill patch path. * refactor: rename quill patch * fix: update quill version. * fix: update quill patch * fix: fix linting rules after installing eslint in design-system * fix: update date picker button to have primary color * test: update callout component snapshots * fix(editor): fix linting issues in editor after enabling eslint * fix(cli): add /assets/* to auth ignore endpoints in server * chore: update package-lock.json * chore: update package-lock.json * fix(editor): fix linting issues * feat: add vite-legacy support * fix: update workflow package interface imports to type imports. * chore: update package-lock.json * fix(editor) fix importing translations other than english * fix(editor): remove test command until vitest is added * fix: increase memory allocation for vite build * fix: add patch-package patches to n8n-custom docker build * fix: add performance and load time improvements * fix: add proper typing to setNodeType * chore: update package-lock.json * style: use generic type for reduce in setNodeType Co-authored-by: Iván Ovejero <ivov.src@gmail.com>
100 lines
2.3 KiB
Vue
100 lines
2.3 KiB
Vue
<template>
|
|
<n8n-node-icon
|
|
:type="type"
|
|
:src="iconSource.path || iconSource.fileBuffer"
|
|
:name="iconSource.icon"
|
|
:color="color"
|
|
:disabled="disabled"
|
|
:size="size"
|
|
:circle="circle"
|
|
:nodeTypeName="nodeType ? nodeType.displayName : ''"
|
|
:showTooltip="showTooltip"
|
|
@click="(e) => $emit('click')"
|
|
></n8n-node-icon>
|
|
</template>
|
|
|
|
<script lang="ts">
|
|
import { IVersionNode } from '@/Interface';
|
|
import { INodeTypeDescription } from 'n8n-workflow';
|
|
import Vue from 'vue';
|
|
|
|
interface NodeIconSource {
|
|
path?: string;
|
|
fileBuffer?: string;
|
|
icon?: string;
|
|
}
|
|
|
|
export default Vue.extend({
|
|
name: 'NodeIcon',
|
|
props: {
|
|
nodeType: {
|
|
},
|
|
size: {
|
|
type: Number,
|
|
required: false,
|
|
},
|
|
disabled: {
|
|
type: Boolean,
|
|
default: false,
|
|
},
|
|
circle: {
|
|
type: Boolean,
|
|
default: false,
|
|
},
|
|
showTooltip: {
|
|
type: Boolean,
|
|
default: false,
|
|
},
|
|
},
|
|
computed: {
|
|
type (): string {
|
|
const nodeType = this.nodeType as INodeTypeDescription | IVersionNode | null;
|
|
let iconType = 'unknown';
|
|
if (nodeType) {
|
|
if ((nodeType as IVersionNode).iconData) {
|
|
iconType = (nodeType as IVersionNode).iconData.type;
|
|
} else if (nodeType.icon) {
|
|
iconType = nodeType.icon.split(':')[0] === 'file' ? 'file' : 'icon';
|
|
}
|
|
}
|
|
return iconType;
|
|
},
|
|
color () : string {
|
|
const nodeType = this.nodeType as INodeTypeDescription | IVersionNode | null;
|
|
if (nodeType && nodeType.defaults && nodeType.defaults.color) {
|
|
return nodeType.defaults.color.toString();
|
|
}
|
|
return '';
|
|
},
|
|
iconSource () : NodeIconSource {
|
|
const nodeType = this.nodeType as INodeTypeDescription | IVersionNode | null;
|
|
const restUrl = this.$store.getters.getRestUrl;
|
|
const iconSource = {} as NodeIconSource;
|
|
|
|
if (nodeType) {
|
|
// If node type has icon data, use it
|
|
if ((nodeType as IVersionNode).iconData) {
|
|
return {
|
|
icon: (nodeType as IVersionNode).iconData.icon,
|
|
fileBuffer: (nodeType as IVersionNode).iconData.fileBuffer,
|
|
};
|
|
}
|
|
// Otherwise, extract it from icon prop
|
|
if (nodeType.icon) {
|
|
const [type, path] = nodeType.icon.split(':');
|
|
if (type === 'file') {
|
|
iconSource.path = `${restUrl}/node-icon/${nodeType.name}`;
|
|
} else {
|
|
iconSource.icon = path;
|
|
}
|
|
}
|
|
}
|
|
return iconSource;
|
|
},
|
|
},
|
|
});
|
|
</script>
|
|
|
|
<style lang="scss">
|
|
</style>
|