diff --git a/package-lock.json b/package-lock.json index 7cdce999b0..500c44ab10 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "n8n", - "version": "0.196.0", + "version": "0.197.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "n8n", - "version": "0.196.0", + "version": "0.197.1", "hasInstallScript": true, "workspaces": [ "packages/*", @@ -43257,7 +43257,7 @@ }, "packages/cli": { "name": "n8n", - "version": "0.196.0", + "version": "0.197.1", "license": "SEE LICENSE IN LICENSE.md", "dependencies": { "@oclif/command": "^1.5.18", @@ -43303,10 +43303,10 @@ "lodash.split": "^4.4.2", "lodash.unset": "^4.5.2", "mysql2": "~2.3.0", - "n8n-core": "~0.136.0", - "n8n-editor-ui": "~0.162.0", - "n8n-nodes-base": "~0.194.0", - "n8n-workflow": "~0.118.0", + "n8n-core": "~0.137.0", + "n8n-editor-ui": "~0.163.1", + "n8n-nodes-base": "~0.195.1", + "n8n-workflow": "~0.119.0", "nodemailer": "^6.7.1", "oauth-1.0a": "^2.2.6", "open": "^7.0.0", @@ -44453,7 +44453,7 @@ }, "packages/core": { "name": "n8n-core", - "version": "0.136.0", + "version": "0.137.0", "license": "SEE LICENSE IN LICENSE.md", "dependencies": { "axios": "^0.21.1", @@ -44465,7 +44465,7 @@ "form-data": "^4.0.0", "lodash.get": "^4.4.2", "mime-types": "^2.1.27", - "n8n-workflow": "~0.118.0", + "n8n-workflow": "~0.119.0", "oauth-1.0a": "^2.2.6", "p-cancelable": "^2.0.0", "qs": "^6.10.1", @@ -45521,7 +45521,7 @@ }, "packages/design-system": { "name": "n8n-design-system", - "version": "0.36.0", + "version": "0.37.0", "license": "SEE LICENSE IN LICENSE.md", "dependencies": { "element-ui": "~2.15.7", @@ -45704,7 +45704,7 @@ }, "packages/editor-ui": { "name": "n8n-editor-ui", - "version": "0.162.0", + "version": "0.163.1", "license": "SEE LICENSE IN LICENSE.md", "dependencies": { "@fontsource/open-sans": "^4.5.0", @@ -45728,8 +45728,8 @@ "lodash.set": "^4.3.2", "luxon": "^2.3.0", "monaco-editor": "^0.30.1", - "n8n-design-system": "~0.36.0", - "n8n-workflow": "~0.118.0", + "n8n-design-system": "~0.37.0", + "n8n-workflow": "~0.119.0", "normalize-wheel": "^1.0.1", "prismjs": "^1.17.1", "quill": "2.0.0-dev.4", @@ -46156,7 +46156,7 @@ }, "packages/node-dev": { "name": "n8n-node-dev", - "version": "0.75.0", + "version": "0.76.0", "license": "SEE LICENSE IN LICENSE.md", "dependencies": { "@oclif/command": "^1.5.18", @@ -46164,8 +46164,8 @@ "change-case": "^4.1.1", "fast-glob": "^3.2.5", "inquirer": "^7.0.1", - "n8n-core": "~0.136.0", - "n8n-workflow": "~0.118.0", + "n8n-core": "~0.137.0", + "n8n-workflow": "~0.119.0", "oauth-1.0a": "^2.2.6", "replace-in-file": "^6.0.0", "request": "^2.88.2", @@ -46185,21 +46185,9 @@ "@types/vorpal": "^1.11.0" } }, - "packages/node-dev/node_modules/typescript": { - "version": "4.6.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz", - "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "packages/nodes-base": { "name": "n8n-nodes-base", - "version": "0.194.0", + "version": "0.195.1", "license": "SEE LICENSE IN LICENSE.md", "dependencies": { "@kafkajs/confluent-schema-registry": "1.0.6", @@ -46237,7 +46225,7 @@ "mqtt": "4.2.6", "mssql": "^8.1.2", "mysql2": "~2.3.0", - "n8n-core": "~0.136.0", + "n8n-core": "~0.137.0", "node-html-markdown": "^1.1.3", "node-ssh": "^12.0.0", "nodemailer": "^6.7.1", @@ -46292,7 +46280,7 @@ "eslint-plugin-n8n-nodes-base": "^1.9.3", "gulp": "^4.0.0", "jest": "^27.4.7", - "n8n-workflow": "~0.118.0", + "n8n-workflow": "~0.119.0", "ts-jest": "^27.1.3", "tslint": "^6.1.2", "typescript": "~4.8.0" @@ -47329,7 +47317,7 @@ }, "packages/workflow": { "name": "n8n-workflow", - "version": "0.118.0", + "version": "0.119.0", "license": "SEE LICENSE IN LICENSE.md", "dependencies": { "@n8n_io/riot-tmpl": "^1.0.1", @@ -52127,7 +52115,7 @@ "@oclif/errors": "^1.3.5", "@oclif/parser": "^3.8.0", "debug": "^4.1.1", - "globby": "^11.0.2", + "globby": "^11.0.1", "is-wsl": "^2.1.1", "tslib": "^2.3.1" }, @@ -52153,10 +52141,10 @@ "clean-stack": "^3.0.1", "cli-progress": "^3.10.0", "debug": "^4.3.4", - "ejs": "^3.1.8", + "ejs": "^3.1.6", "fs-extra": "^9.1.0", "get-package-type": "^0.1.0", - "globby": "^11.0.2", + "globby": "^11.1.0", "hyperlinker": "^1.0.0", "indent-string": "^4.0.0", "is-wsl": "^2.2.0", @@ -52368,7 +52356,7 @@ "@oclif/errors": "^1.3.3", "@oclif/parser": "^3.8.0", "debug": "^4.1.1", - "globby": "^11.0.2", + "globby": "^11.0.1", "is-wsl": "^2.1.1", "tslib": "^2.0.0" } @@ -52561,7 +52549,7 @@ "@oclif/errors": "^1.3.3", "@oclif/parser": "^3.8.0", "debug": "^4.1.1", - "globby": "^11.0.2", + "globby": "^11.0.1", "is-wsl": "^2.1.1", "tslib": "^2.0.0" } @@ -53067,7 +53055,7 @@ "css-loader": "^3.6.0", "file-loader": "^6.2.0", "find-up": "^5.0.0", - "fork-ts-checker-webpack-plugin": "^6.0.4", + "fork-ts-checker-webpack-plugin": "^4.1.6", "glob": "^7.1.6", "glob-promise": "^3.4.0", "global": "^4.4.0", @@ -55589,7 +55577,7 @@ "@typescript-eslint/types": "5.38.1", "@typescript-eslint/visitor-keys": "5.38.1", "debug": "^4.3.4", - "globby": "^11.0.2", + "globby": "^11.1.0", "is-glob": "^4.0.3", "semver": "^7.3.7", "tsutils": "^3.21.0" @@ -56959,7 +56947,7 @@ "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", "dev": true, "requires": { - "browserslist": "^4.21.3", + "browserslist": "^4.12.0", "caniuse-lite": "^1.0.30001109", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", @@ -59784,7 +59772,7 @@ "integrity": "sha512-xVtYpJQ5grszDHEUU9O7XbjjcZ0ccX3LgQsyqSvTnjX97ZqEgn9F5srmrwwwMtbKzDllyFPL+O+2OFMl1lU4TQ==", "dev": true, "requires": { - "browserslist": "^4.21.3" + "browserslist": "^4.21.4" } }, "core-js-pure": { @@ -59858,7 +59846,7 @@ "requires": { "arrify": "^2.0.1", "cp-file": "^7.0.0", - "globby": "^11.0.2", + "globby": "^9.2.0", "has-glob": "^1.0.0", "junk": "^3.1.0", "nested-error-stacks": "^2.1.0", @@ -61462,7 +61450,7 @@ "functional-red-black-tree": "^1.0.1", "glob-parent": "^6.0.1", "globals": "^13.15.0", - "globby": "^11.0.2", + "globby": "^11.1.0", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "import-fresh": "^3.0.0", @@ -71914,10 +71902,10 @@ "lodash.split": "^4.4.2", "lodash.unset": "^4.5.2", "mysql2": "~2.3.0", - "n8n-core": "~0.136.0", - "n8n-editor-ui": "~0.162.0", - "n8n-nodes-base": "~0.194.0", - "n8n-workflow": "~0.118.0", + "n8n-core": "~0.137.0", + "n8n-editor-ui": "~0.163.1", + "n8n-nodes-base": "~0.195.1", + "n8n-workflow": "~0.119.0", "nodemailer": "^6.7.1", "nodemon": "^2.0.2", "oauth-1.0a": "^2.2.6", @@ -72807,7 +72795,7 @@ "jest": "^27.4.7", "lodash.get": "^4.4.2", "mime-types": "^2.1.27", - "n8n-workflow": "~0.118.0", + "n8n-workflow": "~0.119.0", "oauth-1.0a": "^2.2.6", "p-cancelable": "^2.0.0", "qs": "^6.10.1", @@ -73791,8 +73779,8 @@ "lodash.set": "^4.3.2", "luxon": "^2.3.0", "monaco-editor": "^0.30.1", - "n8n-design-system": "~0.36.0", - "n8n-workflow": "~0.118.0", + "n8n-design-system": "~0.37.0", + "n8n-workflow": "~0.119.0", "normalize-wheel": "^1.0.1", "prismjs": "^1.17.1", "quill": "2.0.0-dev.4", @@ -74109,19 +74097,13 @@ "change-case": "^4.1.1", "fast-glob": "^3.2.5", "inquirer": "^7.0.1", - "n8n-core": "~0.136.0", - "n8n-workflow": "~0.118.0", + "n8n-core": "~0.137.0", + "n8n-workflow": "~0.119.0", "oauth-1.0a": "^2.2.6", "replace-in-file": "^6.0.0", "request": "^2.88.2", "tmp-promise": "^3.0.2", "typescript": "~4.8.0" - }, - "dependencies": { - "typescript": { - "version": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz", - "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==" - } } }, "n8n-nodes-base": { @@ -74194,8 +74176,8 @@ "mqtt": "4.2.6", "mssql": "^8.1.2", "mysql2": "~2.3.0", - "n8n-core": "~0.136.0", - "n8n-workflow": "~0.118.0", + "n8n-core": "~0.137.0", + "n8n-workflow": "~0.119.0", "node-html-markdown": "^1.1.3", "node-ssh": "^12.0.0", "nodemailer": "^6.7.1", @@ -78476,7 +78458,7 @@ "fs-extra": "^6.0.1", "get-stream": "^5.1.0", "glob": "^7.1.2", - "globby": "^11.0.2", + "globby": "^10.0.1", "http-call": "^5.1.2", "load-json-file": "^6.2.0", "pkg-dir": "^4.2.0", @@ -84173,7 +84155,7 @@ "consola": "^2.15.3", "dotenv": "^16.0.0", "dotenv-expand": "^8.0.2", - "ejs": "^3.1.8", + "ejs": "^3.1.6", "fast-glob": "^3.2.11", "fs-extra": "^10.0.1", "html-minifier-terser": "^6.1.0", diff --git a/packages/design-system/src/css/_tokens.scss b/packages/design-system/src/css/_tokens.scss index 5a8d984d0d..9ab9178807 100644 --- a/packages/design-system/src/css/_tokens.scss +++ b/packages/design-system/src/css/_tokens.scss @@ -72,33 +72,34 @@ var(--color-secondary-l) ); - --color-secondary-tint-1-h: 247; - --color-secondary-tint-1-s: 49%; --color-secondary-tint-1-l: 85%; --color-secondary-tint-1: hsl( - var(--color-secondary-tint-1-h), - var(--color-secondary-tint-1-s), + var(--color-secondary-h), + var(--color-secondary-s), var(--color-secondary-tint-1-l) ); - --color-secondary-tint-2-h: 247; - --color-secondary-tint-2-s: 49%; --color-secondary-tint-2-l: 92%; --color-secondary-tint-2: hsl( - var(--color-secondary-tint-2-h), - var(--color-secondary-tint-2-s), + var(--color-secondary-h), + var(--color-secondary-s), var(--color-secondary-tint-2-l) ); - --color-secondary-tint-3-h: 247; - --color-secondary-tint-3-s: 49%; --color-secondary-tint-3-l: 95%; --color-secondary-tint-3: hsl( - var(--color-secondary-tint-3-h), - var(--color-secondary-tint-3-s), + var(--color-secondary-h), + var(--color-secondary-s), var(--color-secondary-tint-3-l) ); + --color-secondary-tint-4-l: 98%; + --color-secondary-tint-4: hsl( + var(--color-secondary-h), + var(--color-secondary-s), + var(--color-secondary-tint-4-l) + ); + --color-success-h: 150.4; --color-success-s: 60%; --color-success-l: 40.4%; diff --git a/packages/design-system/src/styleguide/colors.stories.mdx b/packages/design-system/src/styleguide/colors.stories.mdx index 5e8bc29b05..84accb7f1e 100644 --- a/packages/design-system/src/styleguide/colors.stories.mdx +++ b/packages/design-system/src/styleguide/colors.stories.mdx @@ -31,7 +31,7 @@ import ColorCircles from './ColorCircles.vue'; {{ - template: ``, + template: ``, components: { ColorCircles, }, diff --git a/packages/editor-ui/src/Interface.ts b/packages/editor-ui/src/Interface.ts index 747435c9ac..ab28dcf156 100644 --- a/packages/editor-ui/src/Interface.ts +++ b/packages/editor-ui/src/Interface.ts @@ -212,11 +212,6 @@ export interface IStartRunData { pinData?: IPinData; } -export interface IRunDataUi { - node?: string; - workflowData: IWorkflowData; -} - export interface ITableData { columns: string[]; data: GenericValue[][]; @@ -863,6 +858,7 @@ export interface IRootState { oauthCallbackUrls: object; n8nMetadata: object; workflowExecutionData: IExecutionResponse | null; + workflowExecutionPairedItemMappings: {[itemId: string]: Set}; lastSelectedNode: string | null; lastSelectedNodeOutputIndex: number | null; nodeViewOffsetPosition: XYPosition; @@ -912,6 +908,13 @@ export interface IModalState { export type IRunDataDisplayMode = 'table' | 'json' | 'binary'; +export interface TargetItem { + nodeName: string; + itemIndex: number; + runIndex: number; + outputIndex: number; +} + export interface IUiState { sidebarMenuCollapsed: boolean; modalStack: string[]; @@ -925,11 +928,15 @@ export interface IUiState { sessionId: string; input: { displayMode: IRunDataDisplayMode; + nodeName?: string; + run?: number; + branch?: number; data: { isEmpty: boolean; } }; output: { + branch?: number; displayMode: IRunDataDisplayMode; data: { isEmpty: boolean; @@ -941,6 +948,7 @@ export interface IUiState { }; focusedMappableInput: string; mappingTelemetry: {[key: string]: string | number | boolean}; + hoveringItem: null | TargetItem; }; mainPanelPosition: number; draggable: { diff --git a/packages/editor-ui/src/components/CredentialEdit/CredentialInputs.vue b/packages/editor-ui/src/components/CredentialEdit/CredentialInputs.vue index cd1395b908..0de7991759 100644 --- a/packages/editor-ui/src/components/CredentialEdit/CredentialInputs.vue +++ b/packages/editor-ui/src/components/CredentialEdit/CredentialInputs.vue @@ -2,7 +2,7 @@
-
- - diff --git a/packages/editor-ui/src/components/ParameterInputHint.vue b/packages/editor-ui/src/components/ParameterInputHint.vue index 3bdd4336a3..9d0075cd9e 100644 --- a/packages/editor-ui/src/components/ParameterInputHint.vue +++ b/packages/editor-ui/src/components/ParameterInputHint.vue @@ -1,9 +1,7 @@ + + + + diff --git a/packages/editor-ui/src/components/ParameterInputList.vue b/packages/editor-ui/src/components/ParameterInputList.vue index 6450068ba1..324ccd8669 100644 --- a/packages/editor-ui/src/components/ParameterInputList.vue +++ b/packages/editor-ui/src/components/ParameterInputList.vue @@ -45,6 +45,7 @@ :tooltipText="$locale.nodeText().inputLabelDescription(parameter, path)" size="small" :underline="true" + color="text-dark" /> +
+ + +
+ + + + + diff --git a/packages/editor-ui/src/components/ResourceLocator/ResourceLocator.vue b/packages/editor-ui/src/components/ResourceLocator/ResourceLocator.vue index fa44682c84..bd6511e627 100644 --- a/packages/editor-ui/src/components/ResourceLocator/ResourceLocator.vue +++ b/packages/editor-ui/src/components/ResourceLocator/ResourceLocator.vue @@ -82,7 +82,7 @@ v-if="isValueExpression || droppable || forceShowExpression" type="text" :size="inputSize" - :value="activeDrop || forceShowExpression ? '' : expressionDisplayValue" + :value="expressionDisplayValue" :title="displayTitle" @keydown.stop ref="input" @@ -137,7 +137,6 @@
-
@@ -163,7 +162,6 @@ import { import DraggableTarget from '@/components/DraggableTarget.vue'; import ExpressionEdit from '@/components/ExpressionEdit.vue'; import ParameterIssues from '@/components/ParameterIssues.vue'; -import ParameterInputHint from '@/components/ParameterInputHint.vue'; import ResourceLocatorDropdown from './ResourceLocatorDropdown.vue'; import Vue, { PropType } from 'vue'; import { INodeUi, IResourceLocatorReqParams, IResourceLocatorResultExpanded } from '@/Interface'; @@ -172,7 +170,6 @@ import stringify from 'fast-json-stable-stringify'; import { workflowHelpers } from '../mixins/workflowHelpers'; import { nodeHelpers } from '../mixins/nodeHelpers'; import { getAppNameFromNodeName } from '../helpers'; -import { type } from 'os'; import { isResourceLocatorValue } from '@/typeGuards'; interface IResourceLocatorQuery { @@ -188,7 +185,6 @@ export default mixins(debounceHelper, workflowHelpers, nodeHelpers).extend({ DraggableTarget, ExpressionEdit, ParameterIssues, - ParameterInputHint, ResourceLocatorDropdown, }, props: { @@ -216,7 +212,7 @@ export default mixins(debounceHelper, workflowHelpers, nodeHelpers).extend({ type: String, default: '', }, - expressionDisplayValue: { + expressionComputedValue: { type: String, default: '', }, @@ -224,6 +220,9 @@ export default mixins(debounceHelper, workflowHelpers, nodeHelpers).extend({ type: Boolean, default: false, }, + expressionDisplayValue: { + type: String, + }, forceShowExpression: { type: Boolean, default: false, @@ -298,9 +297,6 @@ export default mixins(debounceHelper, workflowHelpers, nodeHelpers).extend({ return defaults[this.selectedMode] || ''; }, - infoText(): string { - return this.currentMode.hint ? this.currentMode.hint : ''; - }, currentMode(): INodePropertyMode { return this.findModeByName(this.selectedMode) || ({} as INodePropertyMode); }, @@ -327,8 +323,8 @@ export default mixins(debounceHelper, workflowHelpers, nodeHelpers).extend({ } if (this.selectedMode === 'url') { - if (this.isValueExpression && typeof this.expressionDisplayValue === 'string' && this.expressionDisplayValue.startsWith('http')) { - return this.expressionDisplayValue; + if (this.isValueExpression && typeof this.expressionComputedValue === 'string' && this.expressionComputedValue.startsWith('http')) { + return this.expressionComputedValue; } if (typeof this.valueToDisplay === 'string' && this.valueToDisplay.startsWith('http')) { @@ -337,7 +333,7 @@ export default mixins(debounceHelper, workflowHelpers, nodeHelpers).extend({ } if (this.currentMode.url) { - const value = this.isValueExpression? this.expressionDisplayValue : this.valueToDisplay; + const value = this.isValueExpression? this.expressionComputedValue : this.valueToDisplay; if (typeof value === 'string') { const expression = this.currentMode.url.replace(/\{\{\$value\}\}/g, value); const resolved = this.resolveExpression(expression); diff --git a/packages/editor-ui/src/components/RunData.vue b/packages/editor-ui/src/components/RunData.vue index 08544b574e..6b92607ea7 100644 --- a/packages/editor-ui/src/components/RunData.vue +++ b/packages/editor-ui/src/components/RunData.vue @@ -220,8 +220,11 @@ :distanceFromActive="distanceFromActive" :showMappingHint="showMappingHint" :runIndex="runIndex" + :pageOffset="currentPageOffset" :totalRuns="maxRunIndex" + :hasDefaultHoverState="paneType === 'input'" @mounted="$emit('tableMounted', $event)" + @activeRowChanged="onItemHover" /> , }, mappingEnabled: { type: Boolean, @@ -463,6 +466,10 @@ export default mixins( this.showPinDataDiscoveryTooltip(this.jsonData); } } + this.$store.commit('ui/setNDVBranchIndex', { + pane: this.paneType, + branchIndex: this.currentOutputIndex, + }); }, destroyed() { this.hidePinDataDiscoveryTooltip(); @@ -561,6 +568,9 @@ export default mixins( return 0; }, + currentPageOffset(): number { + return this.pageSize * (this.currentPage - 1); + }, maxRunIndex (): number { if (this.node === null) { return 0; @@ -662,6 +672,17 @@ export default mixins( }, }, methods: { + onItemHover(itemIndex: number | null) { + if (itemIndex === null) { + this.$emit('itemHover', null); + + return; + } + this.$emit('itemHover', { + outputIndex: this.currentOutputIndex, + itemIndex, + }); + }, onClickDataPinningDocsLink() { this.$telemetry.track('User clicked ndv link', { workflow_id: this.$store.getters.workflowId, @@ -1094,6 +1115,12 @@ export default mixins( this.onDisplayModeChange('table'); } }, + currentOutputIndex(branchIndex: number) { + this.$store.commit('ui/setNDVBranchIndex', { + pane: this.paneType, + branchIndex, + }); + }, }, }); diff --git a/packages/editor-ui/src/components/RunDataTable.vue b/packages/editor-ui/src/components/RunDataTable.vue index e725e67787..b03fc9bb71 100644 --- a/packages/editor-ui/src/components/RunDataTable.vue +++ b/packages/editor-ui/src/components/RunDataTable.vue @@ -5,8 +5,13 @@ - - + + {{ $locale.baseText('runData.emptyItemHint') }} @@ -88,10 +93,11 @@