From 212a5bf23eb11cc3296e7a8d002a4b7727d5193c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20G=C3=B3mez=20Morales?= Date: Wed, 29 Jan 2025 14:34:32 +0100 Subject: [PATCH] fix(editor): Refine push modal layout (#12886) Co-authored-by: Csaba Tuncsik --- packages/editor-ui/package.json | 3 +- packages/editor-ui/src/__tests__/setup.ts | 1 + .../SourceControlPushModal.ee.test.ts | 20 +- .../components/SourceControlPushModal.ee.vue | 410 +++++++++++------- pnpm-lock.yaml | 73 ++-- 5 files changed, 307 insertions(+), 200 deletions(-) diff --git a/packages/editor-ui/package.json b/packages/editor-ui/package.json index ecab857191..c20e298e21 100644 --- a/packages/editor-ui/package.json +++ b/packages/editor-ui/package.json @@ -41,8 +41,8 @@ "@n8n/codemirror-lang-sql": "^1.0.2", "@n8n/permissions": "workspace:*", "@replit/codemirror-indentation-markers": "^6.5.3", - "@typescript/vfs": "^1.6.0", "@sentry/vue": "catalog:frontend", + "@typescript/vfs": "^1.6.0", "@vue-flow/background": "^1.3.2", "@vue-flow/controls": "^1.1.2", "@vue-flow/core": "^1.41.6", @@ -56,6 +56,7 @@ "chart.js": "^4.4.0", "codemirror-lang-html-n8n": "^1.0.0", "comlink": "^4.4.1", + "core-js": "^3.40.0", "dateformat": "^3.0.3", "email-providers": "^2.0.1", "esprima-next": "5.8.4", diff --git a/packages/editor-ui/src/__tests__/setup.ts b/packages/editor-ui/src/__tests__/setup.ts index 3ddee75f14..934017e2ba 100644 --- a/packages/editor-ui/src/__tests__/setup.ts +++ b/packages/editor-ui/src/__tests__/setup.ts @@ -1,5 +1,6 @@ import '@testing-library/jest-dom'; import { configure } from '@testing-library/vue'; +import 'core-js/proposals/set-methods-v2'; configure({ testIdAttribute: 'data-test-id' }); diff --git a/packages/editor-ui/src/components/SourceControlPushModal.ee.test.ts b/packages/editor-ui/src/components/SourceControlPushModal.ee.test.ts index 80af6e29f2..01c4fb8ff9 100644 --- a/packages/editor-ui/src/components/SourceControlPushModal.ee.test.ts +++ b/packages/editor-ui/src/components/SourceControlPushModal.ee.test.ts @@ -24,17 +24,25 @@ vi.mock('vue-router', () => ({ let route: ReturnType; -const RecycleScroller = { +const DynamicScrollerStub = { props: { items: Array, }, template: '
', + methods: { + scrollToItem: vi.fn(), + }, +}; + +const DynamicScrollerItemStub = { + template: '', }; const renderModal = createComponentRenderer(SourceControlPushModal, { global: { stubs: { - RecycleScroller, + DynamicScroller: DynamicScrollerStub, + DynamicScrollerItem: DynamicScrollerItemStub, Modal: { template: `
@@ -195,7 +203,7 @@ describe('SourceControlPushModal', () => { const sourceControlStore = mockedStore(useSourceControlStore); - const { getByTestId, getByText } = renderModal({ + const { getByTestId, getByRole } = renderModal({ props: { data: { eventBus, @@ -207,9 +215,9 @@ describe('SourceControlPushModal', () => { const submitButton = getByTestId('source-control-push-modal-submit'); const commitMessage = 'commit message'; expect(submitButton).toBeDisabled(); - expect(getByText('1 new credentials added, 0 deleted and 0 changed')).toBeInTheDocument(); - expect(getByText('At least one new variable has been added or modified')).toBeInTheDocument(); - expect(getByText('At least one new tag has been added or modified')).toBeInTheDocument(); + expect(getByRole('alert').textContent).toContain('Credentials: 1 added.'); + expect(getByRole('alert').textContent).toContain('Variables: at least one new or modified.'); + expect(getByRole('alert').textContent).toContain('Tags: at least one new or modified.'); await userEvent.type(getByTestId('source-control-push-modal-commit'), commitMessage); diff --git a/packages/editor-ui/src/components/SourceControlPushModal.ee.vue b/packages/editor-ui/src/components/SourceControlPushModal.ee.vue index d76b4500bb..dec2e0ebdb 100644 --- a/packages/editor-ui/src/components/SourceControlPushModal.ee.vue +++ b/packages/editor-ui/src/components/SourceControlPushModal.ee.vue @@ -1,7 +1,7 @@ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0244f6d900..7571a3abf4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -443,7 +443,7 @@ importers: version: 3.666.0(@aws-sdk/client-sts@3.666.0) '@getzep/zep-cloud': specifier: 1.0.12 - version: 1.0.12(@langchain/core@0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13)(langchain@0.3.11(uhxpxbd3xjubkjdqqkxxpkezmi)) + version: 1.0.12(@langchain/core@0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13)(langchain@0.3.11(ilqk5sp4kmqg6yh3rv76amkknm)) '@getzep/zep-js': specifier: 0.9.0 version: 0.9.0 @@ -470,7 +470,7 @@ importers: version: 0.3.2(@aws-sdk/client-sso-oidc@3.666.0(@aws-sdk/client-sts@3.666.0))(@langchain/core@0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13) '@langchain/community': specifier: 0.3.24 - version: 0.3.24(xbnzedcvjhnriori3dst4asz2q) + version: 0.3.24(knkgly4tvsbdesqmuf53sm5qpe) '@langchain/core': specifier: 'catalog:' version: 0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)) @@ -557,7 +557,7 @@ importers: version: 23.0.1 langchain: specifier: 0.3.11 - version: 0.3.11(uhxpxbd3xjubkjdqqkxxpkezmi) + version: 0.3.11(ilqk5sp4kmqg6yh3rv76amkknm) lodash: specifier: 'catalog:' version: 4.17.21 @@ -1480,6 +1480,9 @@ importers: comlink: specifier: ^4.4.1 version: 4.4.1 + core-js: + specifier: ^3.40.0 + version: 3.40.0 dateformat: specifier: ^3.0.3 version: 3.0.3 @@ -7412,12 +7415,12 @@ packages: core-js-compat@3.39.0: resolution: {integrity: sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw==} - core-js@3.35.0: - resolution: {integrity: sha512-ntakECeqg81KqMueeGJ79Q5ZgQNR+6eaE8sxGCx62zMbAIj65q+uYvatToew3m6eAGdU4gNZwpZ34NMe4GYswg==} - core-js@3.39.0: resolution: {integrity: sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g==} + core-js@3.40.0: + resolution: {integrity: sha512-7vsMc/Lty6AGnn7uFpYT56QesI5D2Y/UkgKounk87OP9Z2H9Z8kj6jzcSGAxFmUtDOS0ntK6lbQz+Nsa0Jj6mQ==} + core-util-is@1.0.2: resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} @@ -9992,6 +9995,7 @@ packages: lodash.get@4.4.2: resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} + deprecated: This package is deprecated. Use the optional chaining (?.) operator instead. lodash.includes@4.3.0: resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} @@ -10004,6 +10008,7 @@ packages: lodash.isequal@4.5.0: resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + deprecated: This package is deprecated. Use require('node:util').isDeepStrictEqual instead. lodash.isinteger@4.0.4: resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} @@ -16042,7 +16047,7 @@ snapshots: '@gar/promisify@1.1.3': optional: true - '@getzep/zep-cloud@1.0.12(@langchain/core@0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13)(langchain@0.3.11(uhxpxbd3xjubkjdqqkxxpkezmi))': + '@getzep/zep-cloud@1.0.12(@langchain/core@0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13)(langchain@0.3.11(ilqk5sp4kmqg6yh3rv76amkknm))': dependencies: form-data: 4.0.0 node-fetch: 2.7.0(encoding@0.1.13) @@ -16051,7 +16056,7 @@ snapshots: zod: 3.24.1 optionalDependencies: '@langchain/core': 0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)) - langchain: 0.3.11(uhxpxbd3xjubkjdqqkxxpkezmi) + langchain: 0.3.11(ilqk5sp4kmqg6yh3rv76amkknm) transitivePeerDependencies: - encoding @@ -16590,7 +16595,7 @@ snapshots: - aws-crt - encoding - '@langchain/community@0.3.24(xbnzedcvjhnriori3dst4asz2q)': + '@langchain/community@0.3.24(knkgly4tvsbdesqmuf53sm5qpe)': dependencies: '@browserbasehq/stagehand': 1.9.0(@playwright/test@1.49.1)(deepmerge@4.3.1)(dotenv@16.4.5)(encoding@0.1.13)(openai@4.78.1(encoding@0.1.13)(zod@3.24.1))(zod@3.24.1) '@ibm-cloud/watsonx-ai': 1.1.2 @@ -16601,7 +16606,7 @@ snapshots: flat: 5.0.2 ibm-cloud-sdk-core: 5.1.0 js-yaml: 4.1.0 - langchain: 0.3.11(uhxpxbd3xjubkjdqqkxxpkezmi) + langchain: 0.3.11(ilqk5sp4kmqg6yh3rv76amkknm) langsmith: 0.2.15(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)) openai: 4.78.1(encoding@0.1.13)(zod@3.24.1) uuid: 10.0.0 @@ -16616,7 +16621,7 @@ snapshots: '@aws-sdk/credential-provider-node': 3.666.0(@aws-sdk/client-sso-oidc@3.666.0(@aws-sdk/client-sts@3.666.0))(@aws-sdk/client-sts@3.666.0) '@azure/storage-blob': 12.18.0(encoding@0.1.13) '@browserbasehq/sdk': 2.0.0(encoding@0.1.13) - '@getzep/zep-cloud': 1.0.12(@langchain/core@0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13)(langchain@0.3.11(uhxpxbd3xjubkjdqqkxxpkezmi)) + '@getzep/zep-cloud': 1.0.12(@langchain/core@0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13)(langchain@0.3.11(ilqk5sp4kmqg6yh3rv76amkknm)) '@getzep/zep-js': 0.9.0 '@google-ai/generativelanguage': 2.6.0(encoding@0.1.13) '@google-cloud/storage': 7.12.1(encoding@0.1.13) @@ -17521,7 +17526,7 @@ snapshots: abort-controller: 3.0.0 chokidar: 4.0.1 colorette: 1.4.0 - core-js: 3.35.0 + core-js: 3.39.0 form-data: 4.0.0 get-port-please: 3.1.2 glob: 7.2.3 @@ -17531,7 +17536,7 @@ snapshots: pluralize: 8.0.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - redoc: 2.1.5(core-js@3.35.0)(encoding@0.1.13)(enzyme@3.11.0)(mobx@6.12.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(styled-components@6.1.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0)) + redoc: 2.1.5(core-js@3.39.0)(encoding@0.1.13)(enzyme@3.11.0)(mobx@6.12.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(styled-components@6.1.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0)) semver: 7.6.0 simple-websocket: 9.1.0 styled-components: 6.1.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -19275,7 +19280,7 @@ snapshots: '@babel/preset-env': 7.26.0(@babel/core@7.26.0) browserslist: 4.24.2 browserslist-to-esbuild: 2.1.1(browserslist@4.24.2) - core-js: 3.39.0 + core-js: 3.40.0 magic-string: 0.30.14 regenerator-runtime: 0.14.1 systemjs: 6.15.1 @@ -19963,14 +19968,6 @@ snapshots: transitivePeerDependencies: - debug - axios@1.7.4(debug@4.4.0): - dependencies: - follow-redirects: 1.15.6(debug@4.4.0) - form-data: 4.0.0 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - axios@1.7.7: dependencies: follow-redirects: 1.15.6(debug@4.3.6) @@ -20737,10 +20734,10 @@ snapshots: dependencies: browserslist: 4.24.2 - core-js@3.35.0: {} - core-js@3.39.0: {} + core-js@3.40.0: {} + core-util-is@1.0.2: {} core-util-is@1.0.3: {} @@ -21707,7 +21704,7 @@ snapshots: eslint-import-resolver-node@0.3.9: dependencies: - debug: 3.2.7(supports-color@5.5.0) + debug: 3.2.7(supports-color@8.1.1) is-core-module: 2.13.1 resolve: 1.22.8 transitivePeerDependencies: @@ -21732,7 +21729,7 @@ snapshots: eslint-module-utils@2.8.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): dependencies: - debug: 3.2.7(supports-color@5.5.0) + debug: 3.2.7(supports-color@8.1.1) optionalDependencies: '@typescript-eslint/parser': 7.2.0(eslint@8.57.0)(typescript@5.7.2) eslint: 8.57.0 @@ -21752,7 +21749,7 @@ snapshots: array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 - debug: 3.2.7(supports-color@5.5.0) + debug: 3.2.7(supports-color@8.1.1) doctrine: 2.1.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 @@ -22241,10 +22238,6 @@ snapshots: optionalDependencies: debug: 4.3.7 - follow-redirects@1.15.6(debug@4.4.0): - optionalDependencies: - debug: 4.4.0 - for-each@0.3.3: dependencies: is-callable: 1.2.7 @@ -22538,7 +22531,7 @@ snapshots: array-parallel: 0.1.3 array-series: 0.1.5 cross-spawn: 4.0.2 - debug: 3.2.7(supports-color@5.5.0) + debug: 3.2.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -22844,7 +22837,7 @@ snapshots: '@types/debug': 4.1.12 '@types/node': 18.16.16 '@types/tough-cookie': 4.0.2 - axios: 1.7.4(debug@4.4.0) + axios: 1.7.4 camelcase: 6.3.0 debug: 4.4.0 dotenv: 16.4.5 @@ -22854,7 +22847,7 @@ snapshots: isstream: 0.1.2 jsonwebtoken: 9.0.2 mime-types: 2.1.35 - retry-axios: 2.6.0(axios@1.7.4) + retry-axios: 2.6.0(axios@1.7.4(debug@4.4.0)) tough-cookie: 4.1.3 transitivePeerDependencies: - supports-color @@ -23861,7 +23854,7 @@ snapshots: kuler@2.0.0: {} - langchain@0.3.11(uhxpxbd3xjubkjdqqkxxpkezmi): + langchain@0.3.11(ilqk5sp4kmqg6yh3rv76amkknm): dependencies: '@langchain/core': 0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)) '@langchain/openai': 0.3.17(@langchain/core@0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13) @@ -25436,7 +25429,7 @@ snapshots: pdf-parse@1.1.1: dependencies: - debug: 3.2.7(supports-color@5.5.0) + debug: 3.2.7(supports-color@8.1.1) node-ensure: 0.0.0 transitivePeerDependencies: - supports-color @@ -26109,12 +26102,12 @@ snapshots: '@redis/search': 1.1.6(@redis/client@1.5.16) '@redis/time-series': 1.0.5(@redis/client@1.5.16) - redoc@2.1.5(core-js@3.35.0)(encoding@0.1.13)(enzyme@3.11.0)(mobx@6.12.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(styled-components@6.1.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0)): + redoc@2.1.5(core-js@3.39.0)(encoding@0.1.13)(enzyme@3.11.0)(mobx@6.12.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(styled-components@6.1.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0)): dependencies: '@cfaester/enzyme-adapter-react-18': 0.8.0(enzyme@3.11.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@redocly/openapi-core': 1.25.5(encoding@0.1.13) classnames: 2.5.1 - core-js: 3.35.0 + core-js: 3.39.0 decko: 1.2.0 dompurify: 3.1.7 eventemitter3: 5.0.1 @@ -26266,7 +26259,7 @@ snapshots: ret@0.1.15: {} - retry-axios@2.6.0(axios@1.7.4): + retry-axios@2.6.0(axios@1.7.4(debug@4.4.0)): dependencies: axios: 1.7.4 @@ -26293,7 +26286,7 @@ snapshots: rhea@1.0.24: dependencies: - debug: 3.2.7(supports-color@5.5.0) + debug: 3.2.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color