From ef5ec8a6882d6e3590c2dded9d9024dc62e53bac Mon Sep 17 00:00:00 2001 From: yehorkardash Date: Fri, 26 Sep 2025 09:35:46 +0000 Subject: [PATCH] feat(editor): Show node update button in ndv and nodecreator (#19696) --- .../frontend/@n8n/i18n/src/locales/en.json | 4 + .../Node/NodeCreator/NodeCreator.vue | 14 +- .../Panel/CommunityNodeFooter.test.ts | 74 +++-- .../NodeCreator/Panel/CommunityNodeFooter.vue | 18 +- .../Panel/CommunityNodeInfo.test.ts | 75 +++-- .../NodeCreator/Panel/CommunityNodeInfo.vue | 19 +- .../Panel/CommunityNodeUpdateInfo.vue | 47 ++-- .../editor-ui/src/components/NodeSettings.vue | 92 +++---- .../src/components/NodeSettingsTabs.test.ts | 40 ++- .../src/components/NodeSettingsTabs.vue | 36 +-- .../useInstalledCommunityPackage.test.ts | 258 ++++++++++++++++++ .../useInstalledCommunityPackage.ts | 65 +++++ .../communityNodeUtils.test.ts} | 2 +- .../utils.ts => utils/communityNodeUtils.ts} | 0 14 files changed, 571 insertions(+), 173 deletions(-) create mode 100644 packages/frontend/editor-ui/src/composables/useInstalledCommunityPackage.test.ts create mode 100644 packages/frontend/editor-ui/src/composables/useInstalledCommunityPackage.ts rename packages/frontend/editor-ui/src/{components/Node/NodeCreator/Panel/utils.test.ts => utils/communityNodeUtils.test.ts} (97%) rename packages/frontend/editor-ui/src/{components/Node/NodeCreator/Panel/utils.ts => utils/communityNodeUtils.ts} (100%) diff --git a/packages/frontend/@n8n/i18n/src/locales/en.json b/packages/frontend/@n8n/i18n/src/locales/en.json index 91601a3c08e..d6d7b91d6ba 100644 --- a/packages/frontend/@n8n/i18n/src/locales/en.json +++ b/packages/frontend/@n8n/i18n/src/locales/en.json @@ -96,6 +96,7 @@ "generic.unsavedWork.confirmMessage.cancelButtonText": "Leave without saving", "generic.upgrade": "Upgrade", "generic.upgradeNow": "Upgrade now", + "generic.update": "Update", "generic.credential": "Credential | {count} Credential | {count} Credentials", "generic.credentials": "Credentials", "generic.workflow": "Workflow | {count} Workflow | {count} Workflows", @@ -588,6 +589,9 @@ "codeNodeEditor.defaultsTo": "Defaults to {default}.", "collectionParameter.choose": "Choose...", "collectionParameter.noProperties": "No properties", + "communityNodeFooter.legacy": "Legacy", + "communityNodeFooter.manage": "Manage", + "communityNodeFooter.reportIssue": "Report issue", "credentialEdit.credentialConfig.accountConnected": "Account connected", "credentialEdit.credentialConfig.clickToCopy": "Click To Copy", "credentialEdit.credentialConfig.connectionTestedSuccessfully": "Connection tested successfully", diff --git a/packages/frontend/editor-ui/src/components/Node/NodeCreator/NodeCreator.vue b/packages/frontend/editor-ui/src/components/Node/NodeCreator/NodeCreator.vue index fede3fe5702..161e2f9d29b 100644 --- a/packages/frontend/editor-ui/src/components/Node/NodeCreator/NodeCreator.vue +++ b/packages/frontend/editor-ui/src/components/Node/NodeCreator/NodeCreator.vue @@ -18,6 +18,12 @@ import { useBuilderStore } from '@/stores/builder.store'; import type { NodeTypeSelectedPayload } from '@/Interface'; import { onClickOutside } from '@vueuse/core'; +// elements that should not trigger onClickOutside +const OUTSIDE_CLICK_WHITELIST = [ + // different modals + '.el-overlay-dialog', +]; + export interface Props { active?: boolean; onNodeTypeSelected?: (value: NodeTypeSelectedPayload[]) => void; @@ -153,7 +159,13 @@ onBeforeUnmount(() => { unBindOnMouseUpOutside(); }); -onClickOutside(nodeCreator, () => emit('closeNodeCreator')); +onClickOutside( + nodeCreator, + () => { + emit('closeNodeCreator'); + }, + { ignore: OUTSIDE_CLICK_WHITELIST }, +);