From 6a4ec9952b97f7179bcf536709275cc505cdaea6 Mon Sep 17 00:00:00 2001 From: Thijn Date: Wed, 18 Mar 2026 16:08:34 +0100 Subject: [PATCH 1/7] Migrate ConfigurationCard and ConfigurationsIndex to shared CnCard/CnIndexPage components Refactors ConfigurationCard.vue to use CnCard and CnStatusBadge from @conduction/nextcloud-vue, replacing the bespoke card markup. All status badges (Local, External, Discovered, sync status, update available, published) are converted to CnStatusBadge with icon slots and solid variants. The actions menu moves into the #actions slot, metadata footer into the #footer slot, and a syncBadgeVariant computed property drives badge colour based on sync status. Refactors ConfigurationsIndex.vue to use CnIndexPage, replacing the hand-rolled header, actions bar, view-mode switcher, card grid, and full table implementation. Card view uses a #card slot with ConfigurationCard; table columns use #column-* slots for title, source type, status badges, and version. The Import Configuration button is surfaced via the #action-items slot. Removes leftover debug logging and simplifies isRemoteConfiguration to a one-liner. --- src/components/cards/ConfigurationCard.vue | 403 ++++------- .../configuration/ConfigurationsIndex.vue | 646 ++++++++---------- 2 files changed, 400 insertions(+), 649 deletions(-) diff --git a/src/components/cards/ConfigurationCard.vue b/src/components/cards/ConfigurationCard.vue index bf1bcdebff..0ff4df476c 100644 --- a/src/components/cards/ConfigurationCard.vue +++ b/src/components/cards/ConfigurationCard.vue @@ -1,56 +1,95 @@ diff --git a/src/views/configuration/ConfigurationsIndex.vue b/src/views/configuration/ConfigurationsIndex.vue index 6de22b00db..92329fb96e 100644 --- a/src/views/configuration/ConfigurationsIndex.vue +++ b/src/views/configuration/ConfigurationsIndex.vue @@ -4,265 +4,166 @@ import { configurationStore, navigationStore } from '../../store/store.js' - - From eb8cff92b954c6046b111baf4f29eac202fae50e Mon Sep 17 00:00:00 2001 From: Thijn Date: Wed, 18 Mar 2026 21:11:36 +0100 Subject: [PATCH 4/7] Use built in delete modal, deleted local detete modal --- src/components/cards/ConfigurationCard.vue | 7 +- src/modals/Modals.vue | 3 - .../configuration/DeleteConfiguration.vue | 97 ------------------- .../configuration/ConfigurationsIndex.vue | 25 ++--- 4 files changed, 14 insertions(+), 118 deletions(-) delete mode 100644 src/modals/configuration/DeleteConfiguration.vue diff --git a/src/components/cards/ConfigurationCard.vue b/src/components/cards/ConfigurationCard.vue index 0ff4df476c..9b06f0f73d 100644 --- a/src/components/cards/ConfigurationCard.vue +++ b/src/components/cards/ConfigurationCard.vue @@ -742,12 +742,7 @@ export default { * Handle delete action */ handleDelete() { - if (this.isDiscovered && this.existingConfiguration) { - configurationStore.setConfigurationItem(this.existingConfiguration) - navigationStore.setDialog('deleteConfiguration') - } else { - this.$emit('delete', this.existingConfiguration || this.displayConfiguration) - } + this.$emit('delete', this.existingConfiguration || this.displayConfiguration) }, /** * Handle check version action diff --git a/src/modals/Modals.vue b/src/modals/Modals.vue index 9573ca99a4..a15c5cb29a 100644 --- a/src/modals/Modals.vue +++ b/src/modals/Modals.vue @@ -10,7 +10,6 @@ import { navigationStore } from '../store/store.js' - @@ -59,7 +58,6 @@ import ExportRegister from './register/ExportRegister.vue' import PublishRegister from './register/PublishRegister.vue' import DeleteRegister from './register/DeleteRegister.vue' import EditConfiguration from './configuration/EditConfiguration.vue' -import DeleteConfiguration from './configuration/DeleteConfiguration.vue' import ImportConfiguration from './configuration/ImportConfiguration.vue' import ExportConfiguration from './configuration/ExportConfiguration.vue' import PublishConfiguration from './configuration/PublishConfiguration.vue' @@ -106,7 +104,6 @@ export default { PublishRegister, DeleteRegister, EditConfiguration, - DeleteConfiguration, ImportConfiguration, ExportConfiguration, PublishConfiguration, diff --git a/src/modals/configuration/DeleteConfiguration.vue b/src/modals/configuration/DeleteConfiguration.vue deleted file mode 100644 index c97bc28f29..0000000000 --- a/src/modals/configuration/DeleteConfiguration.vue +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - diff --git a/src/views/configuration/ConfigurationsIndex.vue b/src/views/configuration/ConfigurationsIndex.vue index 92329fb96e..fb58c65778 100644 --- a/src/views/configuration/ConfigurationsIndex.vue +++ b/src/views/configuration/ConfigurationsIndex.vue @@ -19,7 +19,6 @@ import { configurationStore, navigationStore } from '../../store/store.js' :show-form-dialog="false" :show-copy-action="false" :show-edit-action="false" - :show-delete-action="false" :actions="customActions" :show-mass-import="false" :show-mass-export="false" @@ -35,6 +34,7 @@ import { configurationStore, navigationStore } from '../../store/store.js' @page-changed="onPageChanged" @page-size-changed="onPageSizeChanged" @view-mode-change="viewMode = $event" + @delete="onDeleteConfiguration" @select="selectedConfigurations = $event"> @@ -153,7 +153,6 @@ import CloudUpload from 'vue-material-design-icons/CloudUpload.vue' import Eye from 'vue-material-design-icons/Eye.vue' import EyeOutline from 'vue-material-design-icons/EyeOutline.vue' import Pencil from 'vue-material-design-icons/Pencil.vue' -import TrashCanOutline from 'vue-material-design-icons/TrashCanOutline.vue' import Download from 'vue-material-design-icons/Download.vue' import Sync from 'vue-material-design-icons/Sync.vue' import CheckCircle from 'vue-material-design-icons/CheckCircle.vue' @@ -263,12 +262,6 @@ export default { icon: Download, handler: (row) => this.handleExport(row), }, - { - label: 'Delete', - icon: TrashCanOutline, - destructive: true, - handler: (row) => this.handleDelete(row), - }, ] }, tableColumns() { @@ -372,9 +365,17 @@ export default { configurationStore.setConfigurationItem(configuration) navigationStore.setModal('exportConfiguration') }, - handleDelete(configuration) { - configurationStore.setConfigurationItem(configuration) - navigationStore.setDialog('deleteConfiguration') + async onDeleteConfiguration(id) { + const configuration = configurationStore.configurationList.find(c => c.id === id) + if (!configuration) return + try { + await configurationStore.deleteConfiguration(configuration) + this.$refs.indexPage.setSingleDeleteResult({ success: true }) + } catch (error) { + this.$refs.indexPage.setSingleDeleteResult({ + error: error.message || 'An error occurred while deleting the configuration', + }) + } }, previewUpdate(configuration) { configurationStore.setConfigurationItem(configuration) From eda6633dc58f7ac8a61187a312dd034ab25b91af Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 18 Mar 2026 20:17:55 +0000 Subject: [PATCH 5/7] chore: update SBOM --- sbom.cdx.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sbom.cdx.json b/sbom.cdx.json index 59ff5f1bff..4afb163ba6 100644 --- a/sbom.cdx.json +++ b/sbom.cdx.json @@ -2,10 +2,10 @@ "$schema": "http://cyclonedx.org/schema/bom-1.5.schema.json", "bomFormat": "CycloneDX", "specVersion": "1.5", - "serialNumber": "urn:uuid:b11ceca0-9428-4c0a-b876-b5619671d2bb", + "serialNumber": "urn:uuid:3e6f6fd0-89c8-4f2a-b12a-03d4777b2a24", "version": 1, "metadata": { - "timestamp": "2026-03-18T15:10:05Z", + "timestamp": "2026-03-18T20:14:32Z", "tools": [ { "name": "composer", @@ -100,11 +100,11 @@ "properties": [ { "name": "cdx:composer:package:distReference", - "value": "6a4ec9952b97f7179bcf536709275cc505cdaea6" + "value": "eb8cff92b954c6046b111baf4f29eac202fae50e" }, { "name": "cdx:composer:package:sourceReference", - "value": "6a4ec9952b97f7179bcf536709275cc505cdaea6" + "value": "eb8cff92b954c6046b111baf4f29eac202fae50e" }, { "name": "cdx:composer:package:type", From f496d30112c18cd1767173ea65e9a9a55ff1d97b Mon Sep 17 00:00:00 2001 From: Thijn Date: Wed, 18 Mar 2026 21:44:27 +0100 Subject: [PATCH 6/7] refactored Import Configuration to use CnTabbedFormDialog --- .../configuration/ImportConfiguration.vue | 664 ++++++++---------- 1 file changed, 281 insertions(+), 383 deletions(-) diff --git a/src/modals/configuration/ImportConfiguration.vue b/src/modals/configuration/ImportConfiguration.vue index 6ae320762a..a9bef2b493 100644 --- a/src/modals/configuration/ImportConfiguration.vue +++ b/src/modals/configuration/ImportConfiguration.vue @@ -3,309 +3,274 @@ import { configurationStore, navigationStore, registerStore, schemaStore } from