diff --git a/cypress/e2e/helpers/viewFilteringSelectionSetup.js b/cypress/e2e/helpers/viewFilteringSelectionSetup.js index 160e368b2c..b5c49dba53 100644 --- a/cypress/e2e/helpers/viewFilteringSelectionSetup.js +++ b/cypress/e2e/helpers/viewFilteringSelectionSetup.js @@ -82,6 +82,6 @@ const addRow = (title, selection, multiSelection, checked) => { cy.get('[data-cy="createRowSaveButton"]').click() cy.get('[data-cy="createRowModal"]').should('not.exist') cy.get('body').then($body => { - $body.find('.toastify.toast-success .toast-close').each((_, el) => el.click()) + $body.find('[class*="toast_success"] [class*="toastClose"]').each((_, el) => el.click()) }) } diff --git a/cypress/e2e/tables-table.cy.js b/cypress/e2e/tables-table.cy.js index f4bdb263b2..f317cbb460 100644 --- a/cypress/e2e/tables-table.cy.js +++ b/cypress/e2e/tables-table.cy.js @@ -74,7 +74,7 @@ describe('Manage a table', () => { cy.get('[data-cy="editTableModal"] #description-editor .tiptap.ProseMirror').type('Updated ToDo List description') cy.get('[data-cy="editTableSaveBtn"]').should('be.enabled').click() - cy.wait(10).get('.toastify.toast-success').should('be.visible') + cy.wait(10).get('[class*="toast_success"]').should('be.visible') // cy.get('.app-navigation__list').contains('ToDo list').should('exist') cy.contains('.text-editor__content p', 'Updated ToDo List description').should('be.visible') }) @@ -109,7 +109,7 @@ describe('Manage a table', () => { cy.get('[data-cy="transferTableModal"] input[type="search"]').clear().type(targetUserTransfer.userId) cy.contains('.vs__dropdown-menu li', targetUserTransfer.userId).click() cy.get('[data-cy="transferTableButton"]').should('be.enabled').click() - cy.get('.toastify.toast-success').should('be.visible') + cy.get('[class*="toast_success"]').should('be.visible') cy.get('.app-navigation__list').contains('test table').should('not.exist') cy.login(targetUserTransfer) cy.visit('apps/tables') diff --git a/cypress/support/commands.js b/cypress/support/commands.js index 6042ec05dc..683ec6f4f4 100644 --- a/cypress/support/commands.js +++ b/cypress/support/commands.js @@ -114,7 +114,7 @@ Cypress.Commands.add('deleteTable', (title) => { cy.get('[data-cy="dataTableEditTableBtn"]').click() cy.get('[data-cy="editTableModal"] [data-cy="editTableDeleteBtn"]').click() cy.get('[data-cy="editTableModal"] [data-cy="editTableConfirmDeleteBtn"]').click() - cy.wait(10).get('.toastify.toast-success').should('be.visible') + cy.wait(10).get('[class*="toast_success"]').should('be.visible') cy.get('[data-cy="navigationTableItem"]').contains(title).should('not.exist') }) @@ -235,7 +235,7 @@ Cypress.Commands.add('createUsergroupColumn', (title, selectUsers, selectGroups, }) cy.get('[data-cy="createColumnSaveBtn"]').click() - cy.wait(10).get('.toastify.toast-success').should('be.visible') + cy.wait(10).get('[class*="toast_success"]').should('be.visible') cy.get('[data-cy="ncTable"] table tr th').contains(title).should('exist') }) @@ -254,7 +254,7 @@ Cypress.Commands.add('createTextLinkColumn', (title, ressourceProvider, isFirstC ) cy.get('.modal-container button').contains('Save').click() - cy.wait(10).get('.toastify.toast-success').should('be.visible') + cy.wait(10).get('[class*="toast_success"]').should('be.visible') cy.get('.custom-table table tr th .cell').contains(title).should('exist') }) @@ -278,7 +278,7 @@ Cypress.Commands.add('createSelectionColumn', (title, options, defaultOption, is }) cy.get('.modal-container button').contains('Save').click() - cy.wait(10).get('.toastify.toast-success').should('be.visible') + cy.wait(10).get('[class*="toast_success"]').should('be.visible') cy.get('.custom-table table tr th .cell').contains(title).should('exist') }) @@ -305,7 +305,7 @@ Cypress.Commands.add('createSelectionMultiColumn', (title, options, defaultOptio }) cy.get('.modal-container button').contains('Save').click() - cy.wait(10).get('.toastify.toast-success').should('be.visible') + cy.wait(10).get('[class*="toast_success"]').should('be.visible') cy.get('.custom-table table tr th .cell').contains(title).should('exist') }) @@ -319,7 +319,7 @@ Cypress.Commands.add('createTextLineColumn', (title, defaultValue, maxLength, is cy.get('[data-cy="TextLineForm"] input').eq(1).type(maxLength) } cy.get('.modal-container button').contains('Save').click() - cy.wait(10).get('.toastify.toast-success').should('be.visible') + cy.wait(10).get('[class*="toast_success"]').should('be.visible') cy.get('.custom-table table tr th .cell').contains(title).should('exist') }) @@ -334,7 +334,7 @@ Cypress.Commands.add('createDatetimeColumn', (title, setNow, isFirstColumn) => { } cy.get('.modal-container button').contains('Save').click() - cy.wait(10).get('.toastify.toast-success').should('be.visible') + cy.wait(10).get('[class*="toast_success"]').should('be.visible') cy.get('.custom-table table tr th .cell').contains(title).should('exist') }) @@ -350,7 +350,7 @@ Cypress.Commands.add('createDatetimeDateColumn', (title, setNow, isFirstColumn) } cy.get('.modal-container button').contains('Save').click() - cy.wait(10).get('.toastify.toast-success').should('be.visible') + cy.wait(10).get('[class*="toast_success"]').should('be.visible') cy.get('.custom-table table tr th .cell').contains(title).should('exist') }) @@ -366,7 +366,7 @@ Cypress.Commands.add('createDatetimeTimeColumn', (title, setNow, isFirstColumn) } cy.get('.modal-container button').contains('Save').click() - cy.wait(10).get('.toastify.toast-success').should('be.visible') + cy.wait(10).get('[class*="toast_success"]').should('be.visible') cy.get('.custom-table table tr th .cell').contains(title).should('exist') }) @@ -395,7 +395,7 @@ Cypress.Commands.add('createNumberColumn', (title, defaultValue, decimals, min, cy.get('[data-cy="NumberForm"] input').eq(5).clear().type(suffix) } cy.get('.modal-container button').contains('Save').click() - cy.wait(10).get('.toastify.toast-success').should('be.visible') + cy.wait(10).get('[class*="toast_success"]').should('be.visible') cy.get('.custom-table table tr th .cell').contains(title).should('exist') }) @@ -409,7 +409,7 @@ Cypress.Commands.add('createNumberProgressColumn', (title, defaultValue, isFirst cy.get('[data-cy="NumberProgressForm"] input').eq(0).clear().type(defaultValue) } cy.get('.modal-container button').contains('Save').click() - cy.wait(10).get('.toastify.toast-success').should('be.visible') + cy.wait(10).get('[class*="toast_success"]').should('be.visible') cy.get('.custom-table table tr th .cell').contains(title).should('exist') }) @@ -425,7 +425,7 @@ Cypress.Commands.add('createNumberStarsColumn', (title, defaultValue, isFirstCol } } cy.get('.modal-container button').contains('Save').click() - cy.wait(10).get('.toastify.toast-success').should('be.visible') + cy.wait(10).get('[class*="toast_success"]').should('be.visible') cy.get('.custom-table table tr th .cell').contains(title).should('exist') }) @@ -440,7 +440,7 @@ Cypress.Commands.add('createSelectionCheckColumn', (title, defaultValue, isFirst cy.get('[data-cy="selectionCheckFormDefaultSwitch"]').click() } cy.get('.modal-container button').contains('Save').click() - cy.wait(10).get('.toastify.toast-success').should('be.visible') + cy.wait(10).get('[class*="toast_success"]').should('be.visible') cy.get('.custom-table table tr th .cell').contains(title).should('exist') }) diff --git a/package-lock.json b/package-lock.json index a4a765805a..f8abd26a66 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "@nextcloud/auth": "^2.6.0", "@nextcloud/axios": "^2.6.0", "@nextcloud/capabilities": "^1.2.1", - "@nextcloud/dialogs": "^7.4.1", + "@nextcloud/dialogs": "^7.5.0", "@nextcloud/event-bus": "^3.3.3", "@nextcloud/files": "^4.0.0", "@nextcloud/initial-state": "^3.0.0", @@ -430,12 +430,12 @@ } }, "node_modules/@babel/parser": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz", - "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==", + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.8.tgz", + "integrity": "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==", "license": "MIT", "dependencies": { - "@babel/types": "^7.29.7" + "@babel/types": "^7.29.8" }, "bin": { "parser": "bin/babel-parser.js" @@ -1687,9 +1687,9 @@ } }, "node_modules/@babel/types": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz", - "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==", + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz", + "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==", "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.29.7", @@ -3185,15 +3185,16 @@ } }, "node_modules/@nextcloud/dialogs": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@nextcloud/dialogs/-/dialogs-7.4.1.tgz", - "integrity": "sha512-M8q1v14rTMdjTyv5HOZrpBpa5M+qnqnjoFCeeohmKvt69xVW9Xag6R5InQhBQh3zfsYEaQ4mg3shn3kKBx9qxg==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@nextcloud/dialogs/-/dialogs-7.5.0.tgz", + "integrity": "sha512-2gmv0V3ObphxRd7ZvXwTsPvn/XSf2vummdXb2LRFpkoSamWbk+41SWv7cnDQPC+Ve9p46WebDuqyG+wbefkhEw==", "license": "AGPL-3.0-or-later", "dependencies": { "@mdi/js": "^7.4.47", "@nextcloud/auth": "^2.6.0", "@nextcloud/axios": "^2.6.0", "@nextcloud/browser-storage": "^0.5.0", + "@nextcloud/capabilities": "^1.2.1", "@nextcloud/event-bus": "^3.3.3", "@nextcloud/files": "^4.0.0", "@nextcloud/initial-state": "^3.0.0", @@ -3201,12 +3202,10 @@ "@nextcloud/paths": "^3.1.0", "@nextcloud/router": "^3.1.0", "@nextcloud/sharing": "^0.4.0", - "@nextcloud/vue": "^9.8.2", - "@types/toastify-js": "^1.12.4", - "@vueuse/core": "^14.3.0", - "p-queue": "^9.3.1", - "toastify-js": "^1.12.0", - "vue": "^3.5.39", + "@nextcloud/vue": "^9.9.0", + "@vueuse/core": "^14.4.0", + "p-queue": "^9.3.3", + "vue": "^3.5.41", "webdav": "^5.10.0" }, "engines": { @@ -3214,14 +3213,14 @@ } }, "node_modules/@nextcloud/dialogs/node_modules/@vueuse/core": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-14.3.0.tgz", - "integrity": "sha512-aHfz47g0ZhMtTVHmIzMVpJy8ePhhOy68GY5bv110+5DVtZ+W7BsOx+m61UNQqfrWyPztIHIanWa3E2tib3NFIw==", + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-14.4.0.tgz", + "integrity": "sha512-X4WHz1HlCzCBoYXesUkifzzWBAcZgXG8Fi5iNPQg/epdzOB3gu8Fawj3hvuwYR1nGcXGnvxwYYcUC/71++svtQ==", "license": "MIT", "dependencies": { "@types/web-bluetooth": "^0.0.21", - "@vueuse/metadata": "14.3.0", - "@vueuse/shared": "14.3.0" + "@vueuse/metadata": "14.4.0", + "@vueuse/shared": "14.4.0" }, "funding": { "url": "https://github.com/sponsors/antfu" @@ -3231,9 +3230,9 @@ } }, "node_modules/@nextcloud/dialogs/node_modules/@vueuse/metadata": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-14.3.0.tgz", - "integrity": "sha512-BwxmbAzwAVF50+MW57GXOUEV61nFBGnlBvrTqj49PqWJu3uw7hdu72ztXeZ33RdZtDY6kO+bfCAE1PCn88Tktw==", + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-14.4.0.tgz", + "integrity": "sha512-swx/255R6JyHZFJhx845iz5CRWDZdCfvkZOpACWc5+c5WHcG24mv8gUT1WIdFQaHt6dq79rvILd9QnCWiyVm9g==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/antfu" @@ -3635,18 +3634,6 @@ "url": "https://github.com/sponsors/antfu" } }, - "node_modules/@nextcloud/vue/node_modules/@vueuse/shared": { - "version": "14.4.0", - "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-14.4.0.tgz", - "integrity": "sha512-JRgY90Sz8DDtPMsaDflvPMp9xYk69JZAmbuDvAquUVXKr2gEjqtzGNTTthLfckH0BzBqvnu31gb4a8TGLRe79g==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "vue": "^3.5.0" - } - }, "node_modules/@nextcloud/vue/node_modules/vue-router": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-5.3.1.tgz", @@ -5444,12 +5431,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/toastify-js": { - "version": "1.12.4", - "resolved": "https://registry.npmjs.org/@types/toastify-js/-/toastify-js-1.12.4.tgz", - "integrity": "sha512-zfZHU4tKffPCnZRe7pjv/eFKzTVHozKewFCKaCjZ4gFinKgJRz/t0bkZiMCXJxPhv/ZoeDGNOeRD09R0kQZ/nw==", - "license": "MIT" - }, "node_modules/@types/trusted-types": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", @@ -5844,13 +5825,13 @@ } }, "node_modules/@vue/compiler-core": { - "version": "3.5.40", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.40.tgz", - "integrity": "sha512-39E8IgOhTbVDnoJFMKc2DvYnypcZwUqgUhQkccva/0m6FUwtIKSGV7n1hpVmYcFaoRAwf9pBcwnKlCEsN63ZEQ==", + "version": "3.5.42", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.42.tgz", + "integrity": "sha512-2Ye1ilMtKXxl8qZUrQ5j0CdgenFp/HFQmta6rfRyfEsTG69L6Wk+tWuNoHYHMx9E8tF2Slvdg1FuwDvAXdy1LQ==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.29.7", - "@vue/shared": "3.5.40", + "@babel/parser": "^7.29.8", + "@vue/shared": "3.5.42", "entities": "^7.0.1", "estree-walker": "^2.0.2", "source-map-js": "^1.2.1" @@ -5869,26 +5850,26 @@ } }, "node_modules/@vue/compiler-dom": { - "version": "3.5.40", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.40.tgz", - "integrity": "sha512-pwkx4vqlqOspFstrcmzwkKLePVMD3PT65imRzLhanU2V1Fj4K13g6OXjanOyzw3aTAuRk84BOmY8f3rEHqPaVA==", + "version": "3.5.42", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.42.tgz", + "integrity": "sha512-qbhQZEFmycr+ni/qyuccS4sucNN7VAbDfbkvNxWOX2VfgFm90MNs3/UhRNKoPMEIVn0F8gdlYjLPvqxHwHeQOA==", "license": "MIT", "dependencies": { - "@vue/compiler-core": "3.5.40", - "@vue/shared": "3.5.40" + "@vue/compiler-core": "3.5.42", + "@vue/shared": "3.5.42" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.5.40", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.40.tgz", - "integrity": "sha512-gIf497P4kpuALcvs5n3AEg1Vdn0pSY4XbjASIfHNYF1/MP3T2Mf2STERTubysBxCRxzJGJYtF/O7vwJrxFB3Vw==", + "version": "3.5.42", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.42.tgz", + "integrity": "sha512-fkCAFB4okcAANGMThboWnScp/gzWjU0ZSkVnjTIiplmMDq2uq0tIB3j+xVu4rhv5rvOgBySCysudmbMd6xRRqw==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.29.7", - "@vue/compiler-core": "3.5.40", - "@vue/compiler-dom": "3.5.40", - "@vue/compiler-ssr": "3.5.40", - "@vue/shared": "3.5.40", + "@babel/parser": "^7.29.8", + "@vue/compiler-core": "3.5.42", + "@vue/compiler-dom": "3.5.42", + "@vue/compiler-ssr": "3.5.42", + "@vue/shared": "3.5.42", "estree-walker": "^2.0.2", "magic-string": "^0.30.21", "postcss": "^8.5.19", @@ -5896,13 +5877,13 @@ } }, "node_modules/@vue/compiler-ssr": { - "version": "3.5.40", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.40.tgz", - "integrity": "sha512-rrE5xiXG663+vHCHa3J9p2z5OcBRjXmoqenprJxAFQxg5pSshzeBiCE6pu46axapRJ2Adk0YDA2BRZVjiHXnhg==", + "version": "3.5.42", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.42.tgz", + "integrity": "sha512-xmLk3wLkbizPAiLyomjgFFosf2ys9b5Ghb+oh/k2tnvipNz8OFrQOiTcWCzyK7MpBp9KkyGtfvgfLUivbmuGYA==", "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.5.40", - "@vue/shared": "3.5.40" + "@vue/compiler-dom": "3.5.42", + "@vue/shared": "3.5.42" } }, "node_modules/@vue/compiler-vue2": { @@ -5969,51 +5950,51 @@ } }, "node_modules/@vue/reactivity": { - "version": "3.5.40", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.40.tgz", - "integrity": "sha512-B7ot9UlUZOi1zbq61/LvE88ZLTV8IlajTdiZTAEiDQgrnIMIZoPr9kGw0Zw46ObW62O9+H/Be3kMbfb7kYPQZA==", + "version": "3.5.42", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.42.tgz", + "integrity": "sha512-TzNNfKpb7hDxbQltwAut8VDQA5YP+BuRlxntHUuRjyKwlMvmAPbs3unhCvieijifY6vFfVBwsS7wG/C7uq+bEQ==", "license": "MIT", "dependencies": { - "@vue/shared": "3.5.40" + "@vue/shared": "3.5.42" } }, "node_modules/@vue/runtime-core": { - "version": "3.5.40", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.40.tgz", - "integrity": "sha512-KAZLweuZ6uUJPK1PMSQPgBU5gCjgrrfjUhSglmU9NhH+Zjepa8cnwSydPWDWHDwOgY4g3VcZ+PljbiHlURNCbw==", + "version": "3.5.42", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.42.tgz", + "integrity": "sha512-9uACtuHs7vJGkm5Bp3xu4xRDLFTIYy5DgxpToVjqGIAhAEKwQfsaLvKINhM6nFVp6bZPRFGdDqd1g52MqKsotA==", "license": "MIT", "dependencies": { - "@vue/reactivity": "3.5.40", - "@vue/shared": "3.5.40" + "@vue/reactivity": "3.5.42", + "@vue/shared": "3.5.42" } }, "node_modules/@vue/runtime-dom": { - "version": "3.5.40", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.40.tgz", - "integrity": "sha512-ZfrX8ssZQds900L9pr8AuK05ddnMsR4MPMZr8cPN9GoqoPWcXLhjvvbIA2SMv+7a97sJ1vv9pj/zxK0Cq/eEFQ==", + "version": "3.5.42", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.42.tgz", + "integrity": "sha512-rsCmhiWLaRxGltLwhlCWyYkFn7WAbKRh0q17eZ1A6Dq6eqc2ACQ61IIryxz0LrsvCzHSilLA9JHovVwM8CNE2g==", "license": "MIT", "dependencies": { - "@vue/reactivity": "3.5.40", - "@vue/runtime-core": "3.5.40", - "@vue/shared": "3.5.40", + "@vue/reactivity": "3.5.42", + "@vue/runtime-core": "3.5.42", + "@vue/shared": "3.5.42", "csstype": "^3.2.3" } }, "node_modules/@vue/server-renderer": { - "version": "3.5.40", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.40.tgz", - "integrity": "sha512-XNJym9WpevhTVt1HuwOrCRJ5Q+9z4BjTMrDtjTrvx74SmUll8spNTw6whWJa9mEkO4PKn5TihI/bm/8ds2QVJw==", + "version": "3.5.42", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.42.tgz", + "integrity": "sha512-2++5dUyYS4gvo7xQXSECUDhB7TS0aOl5SeVfC5qSq1Jgfhjvegw1zqhwTIR3imZ+QYPJQw9gfcFvXGAjGZ7ajQ==", "license": "MIT", "dependencies": { - "@vue/compiler-ssr": "3.5.40", - "@vue/runtime-dom": "3.5.40", - "@vue/shared": "3.5.40" + "@vue/compiler-ssr": "3.5.42", + "@vue/runtime-dom": "3.5.42", + "@vue/shared": "3.5.42" } }, "node_modules/@vue/shared": { - "version": "3.5.40", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.40.tgz", - "integrity": "sha512-WxnBtruIqOoV3rA4jeKDWzrYI5h7Cp4+pjwDi8kWGHz+IslhiN+wguLVVhtv2l8VoU02rzDCVfDjgCl1lNpZVg==", + "version": "3.5.42", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.42.tgz", + "integrity": "sha512-2rPxex1jQf4jvl9MOHl6YaXCPcrNqz/FstMOEh3QWY+/OME9nQTvl9WYeCwhW7AFjaR0SnngZGlp/wkR6rkI6g==", "license": "MIT" }, "node_modules/@vue/tsconfig": { @@ -6077,18 +6058,6 @@ "url": "https://github.com/sponsors/antfu" } }, - "node_modules/@vueuse/components/node_modules/@vueuse/shared": { - "version": "14.4.0", - "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-14.4.0.tgz", - "integrity": "sha512-JRgY90Sz8DDtPMsaDflvPMp9xYk69JZAmbuDvAquUVXKr2gEjqtzGNTTthLfckH0BzBqvnu31gb4a8TGLRe79g==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "vue": "^3.5.0" - } - }, "node_modules/@vueuse/core": { "version": "12.8.2", "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-12.8.2.tgz", @@ -6126,9 +6095,9 @@ } }, "node_modules/@vueuse/shared": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-14.3.0.tgz", - "integrity": "sha512-bZpge9eSXwa4ToSiqJ7j6KRwhAsneMFoSz3LMWKQDkqimm3D/tbFlrklrs/IOqC8tEcYmXQZJ6N0UrjhBirVCg==", + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-14.4.0.tgz", + "integrity": "sha512-JRgY90Sz8DDtPMsaDflvPMp9xYk69JZAmbuDvAquUVXKr2gEjqtzGNTTthLfckH0BzBqvnu31gb4a8TGLRe79g==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/antfu" @@ -15437,12 +15406,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/toastify-js": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/toastify-js/-/toastify-js-1.12.0.tgz", - "integrity": "sha512-HeMHCO9yLPvP9k0apGSdPUWrUbLnxUKNFzgUoZp1PHCLploIX/4DSQ7V8H25ef+h4iO9n0he7ImfcndnN6nDrQ==", - "license": "MIT" - }, "node_modules/tough-cookie": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz", @@ -16667,16 +16630,16 @@ "license": "MIT" }, "node_modules/vue": { - "version": "3.5.40", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.40.tgz", - "integrity": "sha512-+8PJ4SJXdn/cHGImF4CKdxlWHIN5Dkt7DoufRREM6h6uVCx2m7QxgcEQmmzyOK8A9mcafg7sFbJFYsdFVubTig==", + "version": "3.5.42", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.42.tgz", + "integrity": "sha512-4RyHQTbQvOPs3MfvUO1Sg0YRrKNnA0mAVtvpd12Tg1fKDN7OHBUl1IqSn8zGJjK9nI3NkNp8cgTpVrSZC5TTcA==", "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.5.40", - "@vue/compiler-sfc": "3.5.40", - "@vue/runtime-dom": "3.5.40", - "@vue/server-renderer": "3.5.40", - "@vue/shared": "3.5.40" + "@vue/compiler-dom": "3.5.42", + "@vue/compiler-sfc": "3.5.42", + "@vue/runtime-dom": "3.5.42", + "@vue/server-renderer": "3.5.42", + "@vue/shared": "3.5.42" }, "peerDependencies": { "typescript": "*" diff --git a/package.json b/package.json index 5102978f4f..7f4112e336 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "@nextcloud/auth": "^2.6.0", "@nextcloud/axios": "^2.6.0", "@nextcloud/capabilities": "^1.2.1", - "@nextcloud/dialogs": "^7.4.1", + "@nextcloud/dialogs": "^7.5.0", "@nextcloud/event-bus": "^3.3.3", "@nextcloud/files": "^4.0.0", "@nextcloud/initial-state": "^3.0.0", diff --git a/playwright/e2e/column-number.spec.ts b/playwright/e2e/column-number.spec.ts index 5aabd6127b..8b4a434c20 100644 --- a/playwright/e2e/column-number.spec.ts +++ b/playwright/e2e/column-number.spec.ts @@ -65,11 +65,11 @@ test.describe('Test column number', () => { await expect(page.locator('.number-input__hint').first()).toContainText('Enter a value between') await expect(page.locator('.number-input__field').first()).toHaveAttribute('aria-invalid', 'true') await page.locator('[data-cy="createRowSaveButton"]').click() - await expect(page.locator('.toastify.toast-error').first()).toBeVisible() + await expect(page.locator('[class*="toast_error"]').first()).toBeVisible() await expect(page.locator('[data-cy="createRowModal"]')).toBeVisible() await expect(page.locator('.custom-table table tr td div').filter({ hasText: 'PRE20.0SUF' })).toHaveCount(0) - await page.locator('.toastify').first().waitFor({ state: 'hidden', timeout: 8000 }).catch(() => {}) + await page.locator('[class*="toast_"]').first().waitFor({ state: 'hidden', timeout: 8000 }).catch(() => {}) await page.locator('.modal__content input').first().clear() await page.locator('.modal__content input').first().fill('-1') @@ -77,7 +77,7 @@ test.describe('Test column number', () => { await expect(page.locator('.number-input__hint').first()).toContainText('Enter a value between') await expect(page.locator('.number-input__field').first()).toHaveAttribute('aria-invalid', 'true') await page.locator('[data-cy="createRowSaveButton"]').click() - await expect(page.locator('.toastify.toast-error').first()).toBeVisible() + await expect(page.locator('[class*="toast_error"]').first()).toBeVisible() await expect(page.locator('.custom-table table tr td div').filter({ hasText: 'PRE2.0SUF' })).toHaveCount(0) await expect(page.locator('[data-cy="customTableRow"]')).toHaveCount(1) diff --git a/playwright/e2e/context.spec.ts b/playwright/e2e/context.spec.ts index 137fe88a87..76fae80ef5 100644 --- a/playwright/e2e/context.spec.ts +++ b/playwright/e2e/context.spec.ts @@ -117,7 +117,7 @@ test.describe('Manage a context', () => { const updateResponse = page.waitForResponse(r => r.url().includes('/apps/tables/') && r.request().method() === 'PUT') await page.locator('[data-cy="editContextSubmitBtn"]').click() await updateResponse - await expect(page.locator('.toastify.toast-success').first()).toBeVisible({ timeout: 10000 }) + await expect(page.locator('[class*="toast_success"]').first()).toBeVisible({ timeout: 10000 }) await loadContext(page, contextTitle) await expect(page.locator('h1', { hasText: contextTitle })).toBeVisible({ timeout: 10000 }) @@ -171,7 +171,7 @@ test.describe('Manage a context', () => { const updateDeleteResponse = page.waitForResponse(r => r.url().includes('/apps/tables/') && r.request().method() === 'PUT') await page.locator('[data-cy="editContextSubmitBtn"]').click() await updateDeleteResponse - await expect(page.locator('.toastify.toast-success').first()).toBeVisible({ timeout: 10000 }) + await expect(page.locator('[class*="toast_success"]').first()).toBeVisible({ timeout: 10000 }) // verify that context was deleted from current user const contextNavItem = page.locator('[data-cy="navigationContextItem"]').filter({ hasText: contextTitle }).first() diff --git a/playwright/e2e/tables-sharing-link.spec.ts b/playwright/e2e/tables-sharing-link.spec.ts index 0e2530ae81..aa1165e4ba 100644 --- a/playwright/e2e/tables-sharing-link.spec.ts +++ b/playwright/e2e/tables-sharing-link.spec.ts @@ -260,7 +260,7 @@ test.describe('Public link sharing', () => { await expect(publicPage.locator('[data-cy="createRowModal"]')).toBeVisible() await publicPage.locator('[data-cy="createRowModal"]').getByRole('textbox').first().fill('Form submission') await publicPage.locator('[data-cy="createRowSaveButton"]').click() - await expect(publicPage.locator('.toastify.toast-success')).toBeVisible() + await expect(publicPage.locator('[class*="toast_success"]')).toBeVisible() await publicContext.close() await page.goto('/index.php/apps/tables') diff --git a/playwright/e2e/tables-table.spec.ts b/playwright/e2e/tables-table.spec.ts index d3d96faee8..086f65668c 100644 --- a/playwright/e2e/tables-table.spec.ts +++ b/playwright/e2e/tables-table.spec.ts @@ -45,7 +45,7 @@ test.describe('Manage a table', () => { await page.locator('[data-cy="editTableSaveBtn"]').click() await page.waitForTimeout(10) - await expect(page.locator('.toastify.toast-success').first()).toBeVisible() + await expect(page.locator('[class*="toast_success"]').first()).toBeVisible() await expect(page.locator('.text-editor__content p').filter({ hasText: 'Updated ToDo List description' })).toBeVisible() }) @@ -104,7 +104,7 @@ test.describe('Manage a table', () => { await expect(page.locator('[data-cy="transferTableButton"]')).toBeEnabled() await page.locator('[data-cy="transferTableButton"]').click() - await expect(page.locator('.toastify.toast-success').first()).toBeVisible() + await expect(page.locator('[class*="toast_success"]').first()).toBeVisible() await expect(page.locator('.app-navigation__list').filter({ hasText: 'test table' })).toBeHidden() // login as other user @@ -148,7 +148,7 @@ test.describe('Manage a table', () => { const body = await updateResponse.json() expect(body.ocs.data.columnOrder).toHaveLength(2) - await expect(page.locator('.toastify.toast-success').first()).toBeVisible() + await expect(page.locator('[class*="toast_success"]').first()).toBeVisible() }) test('Set default sort in Table settings modal', async ({ userPage: { page } }) => { @@ -194,7 +194,7 @@ test.describe('Manage a table', () => { expect(body.ocs.data.sort).toHaveLength(1) expect(body.ocs.data.sort[0].mode).toBe('DESC') - await expect(page.locator('.toastify.toast-success').first()).toBeVisible() + await expect(page.locator('[class*="toast_success"]').first()).toBeVisible() await page.reload() await expect(page.locator('h1').filter({ hasText: 'Default sort test table' })).toBeVisible() diff --git a/playwright/support/commands.ts b/playwright/support/commands.ts index ab4351d81f..acd96bedb0 100644 --- a/playwright/support/commands.ts +++ b/playwright/support/commands.ts @@ -102,7 +102,7 @@ async function openTableActionsMenu(page: Page) { for (let attempt = 1; attempt <= 3; attempt++) { await menuButton.waitFor({ state: 'visible', timeout: ACTION_TIMEOUT }) await menuButton.scrollIntoViewIfNeeded() - await page.locator('.toastify').first().waitFor({ state: 'hidden', timeout: 5000 }).catch(() => {}) + await page.locator('[class*="toast_"]').first().waitFor({ state: 'hidden', timeout: 5000 }).catch(() => {}) await menuButton.click() if (await firstVisible(anyMenuAction, ACTION_TIMEOUT)) { return @@ -165,7 +165,7 @@ export async function openCreateRowModal(page: Page) { const createRowButton = page.locator('[data-cy="createRowBtn"]').filter({ hasText: 'Create row' }).first() for (let attempt = 1; attempt <= 2; attempt++) { - await page.locator('.toastify').first().waitFor({ state: 'hidden', timeout: 5000 }).catch(() => {}) + await page.locator('[class*="toast_"]').first().waitFor({ state: 'hidden', timeout: 5000 }).catch(() => {}) await createRowButton.click({ force: true }) if (await page.locator('[data-cy="createRowModal"]').isVisible().catch(() => false)) { @@ -193,7 +193,7 @@ export async function createTable(page: Page, title: string) { continue } - await page.locator('.toastify').first().waitFor({ state: 'hidden', timeout: 5000 }).catch(() => {}) + await page.locator('[class*="toast_"]').first().waitFor({ state: 'hidden', timeout: 5000 }).catch(() => {}) await createButton.click({ force: true }) if (await createDialog.waitFor({ state: 'visible', timeout: 5000 }).then(() => true).catch(() => false)) { break @@ -238,7 +238,7 @@ export async function deleteTable(page: Page, title: string) { .click() await page.waitForTimeout(10) - await expect(page.locator('.toastify.toast-success').first()).toBeVisible() + await expect(page.locator('[class*="toast_success"]').first()).toBeVisible() await expect( page.locator('[data-cy="navigationTableItem"]').filter({ hasText: title }), ).not.toBeVisible() @@ -410,7 +410,7 @@ export async function clickOnNavigationTableMenu(page: Page, tableTitle: string, for (let attempt = 1; attempt <= 3; attempt++) { await tableItem.scrollIntoViewIfNeeded() await tableItem.hover() - await page.locator('.toastify').first().waitFor({ state: 'hidden', timeout: 5000 }).catch(() => {}) + await page.locator('[class*="toast_"]').first().waitFor({ state: 'hidden', timeout: 5000 }).catch(() => {}) const menuButton = tableItem.getByRole('button', { name: /Actions|Open menu/i }).first() await menuButton.waitFor({ state: 'visible', timeout: 5000 }) await menuButton.click({ force: true }) @@ -575,7 +575,7 @@ export async function createUsergroupColumn( await page.locator('[data-cy="createColumnSaveBtn"]').click() await page.waitForTimeout(10) - await expect(page.locator('.toastify.toast-success').first()).toBeVisible() + await expect(page.locator('[class*="toast_success"]').first()).toBeVisible() await expect( page .locator('[data-cy="ncTable"] table tr th') @@ -628,7 +628,7 @@ export async function createTextLinkColumn( .click() await page.waitForTimeout(10) - await expect(page.locator('.toastify.toast-success').first()).toBeVisible() + await expect(page.locator('[class*="toast_success"]').first()).toBeVisible() await expect( page .locator('.custom-table table tr th .cell') @@ -678,7 +678,7 @@ export async function createSelectionColumn( .click() await page.waitForTimeout(10) - await expect(page.locator('.toastify.toast-success').first()).toBeVisible() + await expect(page.locator('[class*="toast_success"]').first()).toBeVisible() await expect( page .locator('.custom-table table tr th .cell') @@ -735,7 +735,7 @@ export async function createSelectionMultiColumn( .click() await page.waitForTimeout(10) - await expect(page.locator('.toastify.toast-success').first()).toBeVisible() + await expect(page.locator('[class*="toast_success"]').first()).toBeVisible() await expect( page .locator('.custom-table table tr th .cell') @@ -768,7 +768,7 @@ export async function createTextLineColumn( .filter({ hasText: 'Save' }) .click() await page.waitForTimeout(10) - await expect(page.locator('.toastify.toast-success').first()).toBeVisible() + await expect(page.locator('[class*="toast_success"]').first()).toBeVisible() await expect( page .locator('.custom-table table tr th .cell') @@ -801,7 +801,7 @@ export async function createDatetimeColumn( .filter({ hasText: 'Save' }) .click() await page.waitForTimeout(10) - await expect(page.locator('.toastify.toast-success').first()).toBeVisible() + await expect(page.locator('[class*="toast_success"]').first()).toBeVisible() await expect( page .locator('.custom-table table tr th .cell') @@ -835,7 +835,7 @@ export async function createDatetimeDateColumn( .filter({ hasText: 'Save' }) .click() await page.waitForTimeout(10) - await expect(page.locator('.toastify.toast-success').first()).toBeVisible() + await expect(page.locator('[class*="toast_success"]').first()).toBeVisible() await expect( page .locator('.custom-table table tr th .cell') @@ -869,7 +869,7 @@ export async function createDatetimeTimeColumn( .filter({ hasText: 'Save' }) .click() await page.waitForTimeout(10) - await expect(page.locator('.toastify.toast-success').first()).toBeVisible() + await expect(page.locator('[class*="toast_success"]').first()).toBeVisible() await expect( page .locator('.custom-table table tr th .cell') @@ -939,7 +939,7 @@ export async function createNumberColumn( .filter({ hasText: 'Save' }) .click() await page.waitForTimeout(10) - await expect(page.locator('.toastify.toast-success').first()).toBeVisible() + await expect(page.locator('[class*="toast_success"]').first()).toBeVisible() await expect( page .locator('.custom-table table tr th .cell') @@ -975,7 +975,7 @@ export async function createNumberProgressColumn( .filter({ hasText: 'Save' }) .click() await page.waitForTimeout(10) - await expect(page.locator('.toastify.toast-success').first()).toBeVisible() + await expect(page.locator('[class*="toast_success"]').first()).toBeVisible() await expect( page .locator('.custom-table table tr th .cell') @@ -1009,7 +1009,7 @@ export async function createNumberStarsColumn( .filter({ hasText: 'Save' }) .click() await page.waitForTimeout(10) - await expect(page.locator('.toastify.toast-success').first()).toBeVisible() + await expect(page.locator('[class*="toast_success"]').first()).toBeVisible() await expect( page .locator('.custom-table table tr th .cell') @@ -1042,7 +1042,7 @@ export async function createSelectionCheckColumn( .filter({ hasText: 'Save' }) .click() await page.waitForTimeout(10) - await expect(page.locator('.toastify.toast-success').first()).toBeVisible() + await expect(page.locator('[class*="toast_success"]').first()).toBeVisible() await expect( page .locator('.custom-table table tr th .cell')