@conduction/nextcloud-vue 2.62.0 → 2.63.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/dist/esm/components/CnAdminActionCard/CnAdminActionCard.vue.js +10 -0
  2. package/dist/esm/components/CnAdminActionCard/CnAdminActionCard.vue.js.map +1 -0
  3. package/dist/esm/components/CnAdminActionCard/CnAdminActionCard.vue2.js +189 -0
  4. package/dist/esm/components/CnAdminActionCard/CnAdminActionCard.vue2.js.map +1 -0
  5. package/dist/esm/components/CnAdminActionCard/CnAdminActionCard.vue3.js +72 -0
  6. package/dist/esm/components/CnAdminActionCard/CnAdminActionCard.vue3.js.map +1 -0
  7. package/dist/esm/components/CnAppNav/CnAppNav.vue2.js +271 -32
  8. package/dist/esm/components/CnAppNav/CnAppNav.vue2.js.map +1 -1
  9. package/dist/esm/components/CnAppNav/CnAppNav.vue3.js.map +1 -1
  10. package/dist/esm/components/CnAppRoot/CnAppRoot.vue2.js +99 -9
  11. package/dist/esm/components/CnAppRoot/CnAppRoot.vue2.js.map +1 -1
  12. package/dist/esm/components/CnAppRoot/CnAppRoot.vue3.js +39 -18
  13. package/dist/esm/components/CnAppRoot/CnAppRoot.vue3.js.map +1 -1
  14. package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue2.js.map +1 -1
  15. package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue3.js +53 -37
  16. package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue3.js.map +1 -1
  17. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js.map +1 -1
  18. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js +2 -2
  19. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js.map +1 -1
  20. package/dist/esm/components/CnDataTable/CnColumnFilterPopover.vue.js +10 -0
  21. package/dist/esm/components/CnDataTable/CnColumnFilterPopover.vue.js.map +1 -0
  22. package/dist/esm/components/CnDataTable/CnColumnFilterPopover.vue2.js +293 -0
  23. package/dist/esm/components/CnDataTable/CnColumnFilterPopover.vue2.js.map +1 -0
  24. package/dist/esm/components/CnDataTable/CnColumnFilterPopover.vue3.js +189 -0
  25. package/dist/esm/components/CnDataTable/CnColumnFilterPopover.vue3.js.map +1 -0
  26. package/dist/esm/components/CnDataTable/CnDataTable.vue2.js +216 -8
  27. package/dist/esm/components/CnDataTable/CnDataTable.vue2.js.map +1 -1
  28. package/dist/esm/components/CnDataTable/CnDataTable.vue3.js +118 -50
  29. package/dist/esm/components/CnDataTable/CnDataTable.vue3.js.map +1 -1
  30. package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue2.js.map +1 -1
  31. package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue3.js +2 -1
  32. package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue3.js.map +1 -1
  33. package/dist/esm/components/CnFieldHelper/CnFieldHelper.vue2.js +3 -1
  34. package/dist/esm/components/CnFieldHelper/CnFieldHelper.vue2.js.map +1 -1
  35. package/dist/esm/components/CnFieldHelper/CnFieldHelper.vue3.js +1 -1
  36. package/dist/esm/components/CnFieldHelper/CnFieldHelper.vue3.js.map +1 -1
  37. package/dist/esm/components/CnFormDialog/CnFormDialog.vue2.js +234 -9
  38. package/dist/esm/components/CnFormDialog/CnFormDialog.vue2.js.map +1 -1
  39. package/dist/esm/components/CnFormDialog/CnFormDialog.vue3.js +96 -57
  40. package/dist/esm/components/CnFormDialog/CnFormDialog.vue3.js.map +1 -1
  41. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js +51 -2
  42. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js.map +1 -1
  43. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js +5 -1
  44. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js.map +1 -1
  45. package/dist/esm/components/CnIndexPage/selfModeActions.js +3 -3
  46. package/dist/esm/components/CnIndexPage/selfModeActions.js.map +1 -1
  47. package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue2.js +36 -1
  48. package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue2.js.map +1 -1
  49. package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue3.js +4 -1
  50. package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue3.js.map +1 -1
  51. package/dist/esm/components/CnResourceSelect/CnResourceSelect.vue2.js +121 -12
  52. package/dist/esm/components/CnResourceSelect/CnResourceSelect.vue2.js.map +1 -1
  53. package/dist/esm/components/CnResourceSelect/CnResourceSelect.vue3.js +3 -1
  54. package/dist/esm/components/CnResourceSelect/CnResourceSelect.vue3.js.map +1 -1
  55. package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue2.js +326 -1
  56. package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue2.js.map +1 -1
  57. package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue3.js +112 -26
  58. package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue3.js.map +1 -1
  59. package/dist/esm/components/CnTimelineWidget/CnTimelineWidget.vue.js +10 -0
  60. package/dist/esm/components/CnTimelineWidget/CnTimelineWidget.vue.js.map +1 -0
  61. package/dist/esm/components/CnTimelineWidget/CnTimelineWidget.vue2.js +337 -0
  62. package/dist/esm/components/CnTimelineWidget/CnTimelineWidget.vue2.js.map +1 -0
  63. package/dist/esm/components/CnTimelineWidget/CnTimelineWidget.vue3.js +102 -0
  64. package/dist/esm/components/CnTimelineWidget/CnTimelineWidget.vue3.js.map +1 -0
  65. package/dist/esm/components/CnTimelineWidget/dashboardRegistration.js +34 -0
  66. package/dist/esm/components/CnTimelineWidget/dashboardRegistration.js.map +1 -0
  67. package/dist/esm/components/CnWalkthrough/CnWalkthrough.vue2.js +131 -8
  68. package/dist/esm/components/CnWalkthrough/CnWalkthrough.vue2.js.map +1 -1
  69. package/dist/esm/components/CnWalkthrough/CnWalkthrough.vue3.js +40 -38
  70. package/dist/esm/components/CnWalkthrough/CnWalkthrough.vue3.js.map +1 -1
  71. package/dist/esm/components/CnWidgetGrid/builtInWidgets.js +8 -6
  72. package/dist/esm/components/CnWidgetGrid/builtInWidgets.js.map +1 -1
  73. package/dist/esm/components/CnWidgetGrid/registerDashboardWidgets.js +1 -0
  74. package/dist/esm/components/CnWidgetGrid/registerDashboardWidgets.js.map +1 -1
  75. package/dist/esm/components/CnWizardDialog/CnWizardDialog.vue2.js +19 -0
  76. package/dist/esm/components/CnWizardDialog/CnWizardDialog.vue2.js.map +1 -1
  77. package/dist/esm/components/CnWizardDialog/CnWizardDialog.vue3.js +1 -1
  78. package/dist/esm/components/CnWizardDialog/CnWizardDialog.vue3.js.map +1 -1
  79. package/dist/esm/composables/useDependencyCheck.js +65 -0
  80. package/dist/esm/composables/useDependencyCheck.js.map +1 -0
  81. package/dist/esm/composables/useWalkthrough.js +218 -6
  82. package/dist/esm/composables/useWalkthrough.js.map +1 -1
  83. package/dist/esm/index.js +2 -0
  84. package/dist/esm/index.js.map +1 -1
  85. package/dist/esm/l10n/en.json.js +43 -0
  86. package/dist/esm/l10n/en.json.js.map +1 -1
  87. package/dist/esm/l10n/nl.json.js +43 -0
  88. package/dist/esm/l10n/nl.json.js.map +1 -1
  89. package/dist/esm/nextcloud-vue.css +449 -0
  90. package/dist/esm/store/useObjectStore.js +8 -0
  91. package/dist/esm/store/useObjectStore.js.map +1 -1
  92. package/dist/esm/utils/columnFilters.js +311 -0
  93. package/dist/esm/utils/columnFilters.js.map +1 -0
  94. package/dist/esm/utils/groupAutocomplete.js +123 -0
  95. package/dist/esm/utils/groupAutocomplete.js.map +1 -0
  96. package/dist/esm/utils/libraryWidgetKeys.js +2 -0
  97. package/dist/esm/utils/libraryWidgetKeys.js.map +1 -1
  98. package/dist/esm/utils/pickerOptions.js +198 -0
  99. package/dist/esm/utils/pickerOptions.js.map +1 -0
  100. package/dist/esm/utils/schema.js +83 -7
  101. package/dist/esm/utils/schema.js.map +1 -1
  102. package/dist/esm/utils/timelineEvents.js +174 -0
  103. package/dist/esm/utils/timelineEvents.js.map +1 -0
  104. package/dist/esm/utils/validateManifestV2.compiled.js +2 -2
  105. package/dist/esm/utils/validateManifestV2.compiled.js.map +1 -1
  106. package/dist/esm/utils/walkthroughSignals.js +88 -0
  107. package/dist/esm/utils/walkthroughSignals.js.map +1 -0
  108. package/dist/nextcloud-vue.cjs.js +9369 -5193
  109. package/dist/nextcloud-vue.cjs.js.map +2 -2
  110. package/dist/nextcloud-vue.css +449 -0
  111. package/l10n/en.json +43 -0
  112. package/l10n/nl.json +43 -0
  113. package/package.json +1 -1
  114. package/src/components/CnAdminActionCard/CnAdminActionCard.vue +234 -0
  115. package/src/components/CnAdminActionCard/index.js +4 -0
  116. package/src/components/CnAppNav/CnAppNav.vue +271 -32
  117. package/src/components/CnAppRoot/CnAppRoot.vue +129 -15
  118. package/src/components/CnChoiceCards/CnChoiceCards.vue +56 -31
  119. package/src/components/CnDashboardPage/CnDashboardPage.vue +2 -2
  120. package/src/components/CnDataTable/CnColumnFilterPopover.vue +524 -0
  121. package/src/components/CnDataTable/CnDataTable.md +3 -0
  122. package/src/components/CnDataTable/CnDataTable.vue +260 -4
  123. package/src/components/CnDetailWidgetHost/CnDetailWidgetHost.vue +2 -2
  124. package/src/components/CnFieldHelper/CnFieldHelper.vue +4 -2
  125. package/src/components/CnFormDialog/CnFormDialog.vue +290 -31
  126. package/src/components/CnIndexPage/CnIndexPage.vue +55 -2
  127. package/src/components/CnIndexPage/selfModeActions.js +3 -3
  128. package/src/components/CnObjectListWidget/CnObjectListWidget.vue +39 -1
  129. package/src/components/CnResourceSelect/CnResourceSelect.vue +123 -12
  130. package/src/components/CnSetupWizard/CnSetupWizard.vue +392 -3
  131. package/src/components/CnTimelineWidget/CnTimelineWidget.vue +477 -0
  132. package/src/components/CnTimelineWidget/dashboardRegistration.js +32 -0
  133. package/src/components/CnTimelineWidget/index.js +4 -0
  134. package/src/components/CnWalkthrough/CnWalkthrough.vue +143 -10
  135. package/src/components/CnWidgetGrid/builtInWidgets.js +2 -0
  136. package/src/components/CnWidgetGrid/registerDashboardWidgets.js +1 -0
  137. package/src/components/CnWizardDialog/CnWizardDialog.vue +20 -1
  138. package/src/components/index.js +2 -0
  139. package/src/composables/useDependencyCheck.js +61 -0
  140. package/src/composables/useWalkthrough.js +217 -5
  141. package/src/css/dashboard.css +49 -0
  142. package/src/css/detail-page.css +19 -0
  143. package/src/css/table.css +81 -0
  144. package/src/index.js +2 -0
  145. package/src/schemas/app-manifest-v2.schema.json +23 -1
  146. package/src/store/useObjectStore.js +8 -0
  147. package/src/utils/columnFilters.js +324 -0
  148. package/src/utils/groupAutocomplete.js +119 -0
  149. package/src/utils/libraryWidgetKeys.js +2 -0
  150. package/src/utils/pickerOptions.js +194 -0
  151. package/src/utils/schema.js +83 -7
  152. package/src/utils/timelineEvents.js +171 -0
  153. package/src/utils/validateManifestV2.compiled.js +2 -2
  154. package/src/utils/walkthroughSignals.js +94 -0
@@ -1,3 +1,4 @@
1
+ import { dispatchObjectCreated } from '../../utils/walkthroughSignals.js';
1
2
  import { cloneObjectForCopy, runSelfExportRequest, runSelfImportRequest } from './selfModeIO.js';
2
3
 
3
4
  function resolveNameField(ctx) {
@@ -192,9 +193,8 @@ function createSelfModeActions(ctx) {
192
193
  // @self.register/@self.schema are numeric DB ids, not slugs, so
193
194
  // override with this page's own slug props (self-fetch mode
194
195
  // guarantees ctx.schema() is already a string).
195
- if (isCreate && typeof window !== 'undefined') {
196
- const detail = { ...saved, register: ctx.register(), schema: ctx.schema() };
197
- window.dispatchEvent(new CustomEvent('cn-walkthrough:object-created', { detail }));
196
+ if (isCreate) {
197
+ dispatchObjectCreated({ register: ctx.register(), schema: ctx.schema(), object: saved });
198
198
  }
199
199
  refreshList(ctx);
200
200
  if (isCreate && typeof ctx.afterCreateSuccess === 'function') {
@@ -1 +1 @@
1
- {"version":3,"file":"selfModeActions.js","sources":["../../../../src/components/CnIndexPage/selfModeActions.js"],"sourcesContent":["import {\n\tcloneObjectForCopy,\n\trunSelfExportRequest,\n\trunSelfImportRequest,\n} from './selfModeIO.js'\n\nfunction resolveNameField(ctx) {\n\treturn ctx.effectiveSchema()?.configuration?.objectNameField\n\t\t|| ctx.massActionNameField()\n}\n\nfunction findSource(ctx, id) {\n\treturn ctx.effectiveObjects().find((o) => o.id === id || o['@self']?.id === id)\n}\n\nfunction selfModeReady(ctx) {\n\treturn ctx.isSelfFetchMode() && !!ctx.selfObjectStore() && !!ctx.selfObjectType()\n}\n\nfunction refreshList(ctx) {\n\tconst list = ctx.list()\n\tif (list && typeof list.refresh === 'function') {\n\t\tlist.refresh()\n\t}\n}\n\nfunction storeError(ctx) {\n\treturn ctx.selfObjectStore()?.getError?.(ctx.selfObjectType())\n}\n\nfunction storeErrorMessage(ctx, fallback) {\n\tconst err = storeError(ctx)\n\treturn (err && err.message) || fallback\n}\n\n/**\n * Self-mode action handlers for CnIndexPage. Each `handle*` returns `true`\n * when self-mode handled it (caller should NOT emit), `false` otherwise.\n *\n * @param {object} ctx Accessor closures + emit/setResults forwarders.\n * @return {object}\n */\nexport function createSelfModeActions(ctx) {\n\tasync function handleSingleDelete(id) {\n\t\tif (!selfModeReady(ctx)) {\n\t\t\treturn false\n\t\t}\n\t\ttry {\n\t\t\tconst ok = await ctx.selfObjectStore().deleteObject(ctx.selfObjectType(), id)\n\t\t\tif (ok) {\n\t\t\t\tctx.setResults.singleDelete({ success: true })\n\t\t\t\tctx.emit('delete', id)\n\t\t\t\trefreshList(ctx)\n\t\t\t} else {\n\t\t\t\tctx.setResults.singleDelete({ error: storeErrorMessage(ctx, 'Delete failed') })\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tctx.setResults.singleDelete({ error: (err && err.message) || 'Delete failed' })\n\t\t}\n\t\treturn true\n\t}\n\n\tasync function handleMassDelete(ids) {\n\t\tif (!selfModeReady(ctx)) {\n\t\t\treturn false\n\t\t}\n\t\ttry {\n\t\t\tconst { successfulIds, failedIds } = await ctx.selfObjectStore().deleteObjects(ctx.selfObjectType(), ids)\n\t\t\tif (failedIds.length === 0) {\n\t\t\t\tctx.setResults.massDelete({ success: true, successfulIds })\n\t\t\t} else {\n\t\t\t\tctx.setResults.massDelete({\n\t\t\t\t\terror: storeErrorMessage(ctx, `Failed to delete ${failedIds.length} item(s)`),\n\t\t\t\t\tsuccessfulIds,\n\t\t\t\t\tfailedIds,\n\t\t\t\t})\n\t\t\t}\n\t\t\trefreshList(ctx)\n\t\t} catch (err) {\n\t\t\tctx.setResults.massDelete({ error: (err && err.message) || 'Delete failed' })\n\t\t}\n\t\treturn true\n\t}\n\n\tasync function handleSingleCopy(payload) {\n\t\tif (!selfModeReady(ctx)) {\n\t\t\treturn false\n\t\t}\n\t\tconst { id, newName } = payload || {}\n\t\tconst source = findSource(ctx, id)\n\t\tif (!source) {\n\t\t\tctx.setResults.singleCopy({ error: 'Source object not found in current view' })\n\t\t\treturn true\n\t\t}\n\t\ttry {\n\t\t\tconst clone = cloneObjectForCopy(source, newName, resolveNameField(ctx))\n\t\t\tconst saved = await ctx.selfObjectStore().saveObject(ctx.selfObjectType(), clone)\n\t\t\tif (saved) {\n\t\t\t\tctx.setResults.singleCopy({ success: true })\n\t\t\t\tctx.emit('copy', payload)\n\t\t\t\trefreshList(ctx)\n\t\t\t} else {\n\t\t\t\tctx.setResults.singleCopy({ error: storeErrorMessage(ctx, 'Copy failed') })\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tctx.setResults.singleCopy({ error: (err && err.message) || 'Copy failed' })\n\t\t}\n\t\treturn true\n\t}\n\n\tasync function handleMassCopy(payload) {\n\t\tif (!selfModeReady(ctx)) {\n\t\t\treturn false\n\t\t}\n\t\tconst ids = (payload && payload.ids) || []\n\t\tconst nameField = resolveNameField(ctx)\n\t\tconst getName = (payload && payload.getName) || ((item) => item[ctx.massActionNameField()])\n\t\tconst successfulIds = []\n\t\tconst failedIds = []\n\t\tfor (const id of ids) {\n\t\t\tconst source = findSource(ctx, id)\n\t\t\tif (!source) {\n\t\t\t\tfailedIds.push(id)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tconst clone = cloneObjectForCopy(source, getName(source), nameField)\n\t\t\ttry {\n\t\t\t\tconst saved = await ctx.selfObjectStore().saveObject(ctx.selfObjectType(), clone)\n\t\t\t\tif (saved) {\n\t\t\t\t\tsuccessfulIds.push(id)\n\t\t\t\t} else {\n\t\t\t\t\tfailedIds.push(id)\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\tfailedIds.push(id)\n\t\t\t}\n\t\t}\n\t\tif (failedIds.length === 0) {\n\t\t\tctx.setResults.massCopy({ success: true, successfulIds })\n\t\t} else {\n\t\t\tctx.setResults.massCopy({\n\t\t\t\terror: storeErrorMessage(ctx, `Failed to copy ${failedIds.length} item(s)`),\n\t\t\t\tsuccessfulIds,\n\t\t\t\tfailedIds,\n\t\t\t})\n\t\t}\n\t\trefreshList(ctx)\n\t\treturn true\n\t}\n\n\tasync function handleMassExport(payload) {\n\t\tif (!ctx.isSelfFetchMode() || !ctx.register() || !ctx.schema()) {\n\t\t\treturn false\n\t\t}\n\t\ttry {\n\t\t\tawait runSelfExportRequest({\n\t\t\t\tregister: ctx.register(),\n\t\t\t\tschema: ctx.schema(),\n\t\t\t\tformat: payload && payload.format,\n\t\t\t})\n\t\t\tctx.setResults.massExport({ success: true })\n\t\t} catch (err) {\n\t\t\tctx.setResults.massExport({ error: (err && err.message) || 'Export failed' })\n\t\t}\n\t\treturn true\n\t}\n\n\tasync function handleMassImport(payload) {\n\t\tif (!ctx.isSelfFetchMode() || !ctx.register()) {\n\t\t\treturn false\n\t\t}\n\t\ttry {\n\t\t\tawait runSelfImportRequest({\n\t\t\t\tregister: ctx.register(),\n\t\t\t\tschema: ctx.schema(),\n\t\t\t\tfile: payload && payload.file,\n\t\t\t})\n\t\t\tctx.setResults.massImport({ success: true })\n\t\t\trefreshList(ctx)\n\t\t} catch (err) {\n\t\t\tctx.setResults.massImport({ error: (err && err.message) || 'Import failed' })\n\t\t}\n\t\treturn true\n\t}\n\n\tasync function handleFormSave(formData) {\n\t\tif (!selfModeReady(ctx)) {\n\t\t\treturn false\n\t\t}\n\t\ttry {\n\t\t\tconst saved = await ctx.selfObjectStore().saveObject(ctx.selfObjectType(), formData)\n\t\t\tif (saved) {\n\t\t\t\tctx.setResults.form({ success: true })\n\t\t\t\tconst isCreate = !ctx.editItem()\n\t\t\t\tctx.emit(isCreate ? 'create' : 'edit', saved)\n\t\t\t\t// @self.register/@self.schema are numeric DB ids, not slugs, so\n\t\t\t\t// override with this page's own slug props (self-fetch mode\n\t\t\t\t// guarantees ctx.schema() is already a string).\n\t\t\t\tif (isCreate && typeof window !== 'undefined') {\n\t\t\t\t\tconst detail = { ...saved, register: ctx.register(), schema: ctx.schema() }\n\t\t\t\t\twindow.dispatchEvent(new CustomEvent('cn-walkthrough:object-created', { detail }))\n\t\t\t\t}\n\t\t\t\trefreshList(ctx)\n\t\t\t\tif (isCreate && typeof ctx.afterCreateSuccess === 'function') {\n\t\t\t\t\tctx.afterCreateSuccess(saved)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst err = storeError(ctx)\n\t\t\t\tif (err && err.isValidation) {\n\t\t\t\t\t// Keep the form visible so the user can fix the invalid data.\n\t\t\t\t\tctx.setResults.formValidation(err.fields, err.message || 'Validation failed')\n\t\t\t\t} else {\n\t\t\t\t\tctx.setResults.form({ error: (err && err.message) || 'Save failed' })\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tctx.setResults.form({ error: (err && err.message) || 'Save failed' })\n\t\t}\n\t\treturn true\n\t}\n\n\treturn {\n\t\thandleSingleDelete,\n\t\thandleMassDelete,\n\t\thandleSingleCopy,\n\t\thandleMassCopy,\n\t\thandleMassExport,\n\t\thandleMassImport,\n\t\thandleFormSave,\n\t}\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"selfModeActions.js","sources":["../../../../src/components/CnIndexPage/selfModeActions.js"],"sourcesContent":["import { dispatchObjectCreated } from '../../utils/walkthroughSignals.js'\nimport {\n\tcloneObjectForCopy,\n\trunSelfExportRequest,\n\trunSelfImportRequest,\n} from './selfModeIO.js'\n\nfunction resolveNameField(ctx) {\n\treturn ctx.effectiveSchema()?.configuration?.objectNameField\n\t\t|| ctx.massActionNameField()\n}\n\nfunction findSource(ctx, id) {\n\treturn ctx.effectiveObjects().find((o) => o.id === id || o['@self']?.id === id)\n}\n\nfunction selfModeReady(ctx) {\n\treturn ctx.isSelfFetchMode() && !!ctx.selfObjectStore() && !!ctx.selfObjectType()\n}\n\nfunction refreshList(ctx) {\n\tconst list = ctx.list()\n\tif (list && typeof list.refresh === 'function') {\n\t\tlist.refresh()\n\t}\n}\n\nfunction storeError(ctx) {\n\treturn ctx.selfObjectStore()?.getError?.(ctx.selfObjectType())\n}\n\nfunction storeErrorMessage(ctx, fallback) {\n\tconst err = storeError(ctx)\n\treturn (err && err.message) || fallback\n}\n\n/**\n * Self-mode action handlers for CnIndexPage. Each `handle*` returns `true`\n * when self-mode handled it (caller should NOT emit), `false` otherwise.\n *\n * @param {object} ctx Accessor closures + emit/setResults forwarders.\n * @return {object}\n */\nexport function createSelfModeActions(ctx) {\n\tasync function handleSingleDelete(id) {\n\t\tif (!selfModeReady(ctx)) {\n\t\t\treturn false\n\t\t}\n\t\ttry {\n\t\t\tconst ok = await ctx.selfObjectStore().deleteObject(ctx.selfObjectType(), id)\n\t\t\tif (ok) {\n\t\t\t\tctx.setResults.singleDelete({ success: true })\n\t\t\t\tctx.emit('delete', id)\n\t\t\t\trefreshList(ctx)\n\t\t\t} else {\n\t\t\t\tctx.setResults.singleDelete({ error: storeErrorMessage(ctx, 'Delete failed') })\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tctx.setResults.singleDelete({ error: (err && err.message) || 'Delete failed' })\n\t\t}\n\t\treturn true\n\t}\n\n\tasync function handleMassDelete(ids) {\n\t\tif (!selfModeReady(ctx)) {\n\t\t\treturn false\n\t\t}\n\t\ttry {\n\t\t\tconst { successfulIds, failedIds } = await ctx.selfObjectStore().deleteObjects(ctx.selfObjectType(), ids)\n\t\t\tif (failedIds.length === 0) {\n\t\t\t\tctx.setResults.massDelete({ success: true, successfulIds })\n\t\t\t} else {\n\t\t\t\tctx.setResults.massDelete({\n\t\t\t\t\terror: storeErrorMessage(ctx, `Failed to delete ${failedIds.length} item(s)`),\n\t\t\t\t\tsuccessfulIds,\n\t\t\t\t\tfailedIds,\n\t\t\t\t})\n\t\t\t}\n\t\t\trefreshList(ctx)\n\t\t} catch (err) {\n\t\t\tctx.setResults.massDelete({ error: (err && err.message) || 'Delete failed' })\n\t\t}\n\t\treturn true\n\t}\n\n\tasync function handleSingleCopy(payload) {\n\t\tif (!selfModeReady(ctx)) {\n\t\t\treturn false\n\t\t}\n\t\tconst { id, newName } = payload || {}\n\t\tconst source = findSource(ctx, id)\n\t\tif (!source) {\n\t\t\tctx.setResults.singleCopy({ error: 'Source object not found in current view' })\n\t\t\treturn true\n\t\t}\n\t\ttry {\n\t\t\tconst clone = cloneObjectForCopy(source, newName, resolveNameField(ctx))\n\t\t\tconst saved = await ctx.selfObjectStore().saveObject(ctx.selfObjectType(), clone)\n\t\t\tif (saved) {\n\t\t\t\tctx.setResults.singleCopy({ success: true })\n\t\t\t\tctx.emit('copy', payload)\n\t\t\t\trefreshList(ctx)\n\t\t\t} else {\n\t\t\t\tctx.setResults.singleCopy({ error: storeErrorMessage(ctx, 'Copy failed') })\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tctx.setResults.singleCopy({ error: (err && err.message) || 'Copy failed' })\n\t\t}\n\t\treturn true\n\t}\n\n\tasync function handleMassCopy(payload) {\n\t\tif (!selfModeReady(ctx)) {\n\t\t\treturn false\n\t\t}\n\t\tconst ids = (payload && payload.ids) || []\n\t\tconst nameField = resolveNameField(ctx)\n\t\tconst getName = (payload && payload.getName) || ((item) => item[ctx.massActionNameField()])\n\t\tconst successfulIds = []\n\t\tconst failedIds = []\n\t\tfor (const id of ids) {\n\t\t\tconst source = findSource(ctx, id)\n\t\t\tif (!source) {\n\t\t\t\tfailedIds.push(id)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tconst clone = cloneObjectForCopy(source, getName(source), nameField)\n\t\t\ttry {\n\t\t\t\tconst saved = await ctx.selfObjectStore().saveObject(ctx.selfObjectType(), clone)\n\t\t\t\tif (saved) {\n\t\t\t\t\tsuccessfulIds.push(id)\n\t\t\t\t} else {\n\t\t\t\t\tfailedIds.push(id)\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\tfailedIds.push(id)\n\t\t\t}\n\t\t}\n\t\tif (failedIds.length === 0) {\n\t\t\tctx.setResults.massCopy({ success: true, successfulIds })\n\t\t} else {\n\t\t\tctx.setResults.massCopy({\n\t\t\t\terror: storeErrorMessage(ctx, `Failed to copy ${failedIds.length} item(s)`),\n\t\t\t\tsuccessfulIds,\n\t\t\t\tfailedIds,\n\t\t\t})\n\t\t}\n\t\trefreshList(ctx)\n\t\treturn true\n\t}\n\n\tasync function handleMassExport(payload) {\n\t\tif (!ctx.isSelfFetchMode() || !ctx.register() || !ctx.schema()) {\n\t\t\treturn false\n\t\t}\n\t\ttry {\n\t\t\tawait runSelfExportRequest({\n\t\t\t\tregister: ctx.register(),\n\t\t\t\tschema: ctx.schema(),\n\t\t\t\tformat: payload && payload.format,\n\t\t\t})\n\t\t\tctx.setResults.massExport({ success: true })\n\t\t} catch (err) {\n\t\t\tctx.setResults.massExport({ error: (err && err.message) || 'Export failed' })\n\t\t}\n\t\treturn true\n\t}\n\n\tasync function handleMassImport(payload) {\n\t\tif (!ctx.isSelfFetchMode() || !ctx.register()) {\n\t\t\treturn false\n\t\t}\n\t\ttry {\n\t\t\tawait runSelfImportRequest({\n\t\t\t\tregister: ctx.register(),\n\t\t\t\tschema: ctx.schema(),\n\t\t\t\tfile: payload && payload.file,\n\t\t\t})\n\t\t\tctx.setResults.massImport({ success: true })\n\t\t\trefreshList(ctx)\n\t\t} catch (err) {\n\t\t\tctx.setResults.massImport({ error: (err && err.message) || 'Import failed' })\n\t\t}\n\t\treturn true\n\t}\n\n\tasync function handleFormSave(formData) {\n\t\tif (!selfModeReady(ctx)) {\n\t\t\treturn false\n\t\t}\n\t\ttry {\n\t\t\tconst saved = await ctx.selfObjectStore().saveObject(ctx.selfObjectType(), formData)\n\t\t\tif (saved) {\n\t\t\t\tctx.setResults.form({ success: true })\n\t\t\t\tconst isCreate = !ctx.editItem()\n\t\t\t\tctx.emit(isCreate ? 'create' : 'edit', saved)\n\t\t\t\t// @self.register/@self.schema are numeric DB ids, not slugs, so\n\t\t\t\t// override with this page's own slug props (self-fetch mode\n\t\t\t\t// guarantees ctx.schema() is already a string).\n\t\t\t\tif (isCreate) {\n\t\t\t\t\tdispatchObjectCreated({ register: ctx.register(), schema: ctx.schema(), object: saved })\n\t\t\t\t}\n\t\t\t\trefreshList(ctx)\n\t\t\t\tif (isCreate && typeof ctx.afterCreateSuccess === 'function') {\n\t\t\t\t\tctx.afterCreateSuccess(saved)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst err = storeError(ctx)\n\t\t\t\tif (err && err.isValidation) {\n\t\t\t\t\t// Keep the form visible so the user can fix the invalid data.\n\t\t\t\t\tctx.setResults.formValidation(err.fields, err.message || 'Validation failed')\n\t\t\t\t} else {\n\t\t\t\t\tctx.setResults.form({ error: (err && err.message) || 'Save failed' })\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tctx.setResults.form({ error: (err && err.message) || 'Save failed' })\n\t\t}\n\t\treturn true\n\t}\n\n\treturn {\n\t\thandleSingleDelete,\n\t\thandleMassDelete,\n\t\thandleSingleCopy,\n\t\thandleMassCopy,\n\t\thandleMassExport,\n\t\thandleMassImport,\n\t\thandleFormSave,\n\t}\n}\n"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@ import { resolveHref, followLinkClick, openRowTarget } from '../../utils/linkNav
12
12
  import { objectFieldValue } from '../../utils/objectName.js';
13
13
  import { dropOptionalUnresolved, resolveFilterTokens, hasUnresolvedTokens } from '../../utils/resolveFilterTokens.js';
14
14
  import { markNewTabHandled } from '../../utils/rowAuxClick.js';
15
+ import { dispatchObjectCreated } from '../../utils/walkthroughSignals.js';
15
16
  import __sfc_main$4 from '../CnRowActions/CnRowActions.vue.js';
16
17
 
17
18
  /**
@@ -729,6 +730,39 @@ var script = {
729
730
  return Array.isArray(c.formExcludeFields) ? c.formExcludeFields : []
730
731
  },
731
732
 
733
+ /**
734
+ * Create-form seed values: the list's scalar filter values (the parent
735
+ * this list is scoped to, e.g. `{ lead: '<uuid>' }`), limited to keys
736
+ * the schema declares, so the new row shows its parent already chosen.
737
+ *
738
+ * @spec openspec/changes/form-pickers-from-schema/specs/schema-utilities/spec.md
739
+ * @return {object}
740
+ */
741
+ createInitialData() {
742
+ const props = (this.createSchema && this.createSchema.properties) || {};
743
+ const out = {};
744
+ for (const [key, value] of Object.entries(this.resolvedFilter || {})) {
745
+ if (!(key in props) || value === null || value === undefined || value === '' || typeof value === 'object') {
746
+ continue
747
+ }
748
+ if (typeof value === 'string' && value.charAt(0) === '@') {
749
+ continue
750
+ }
751
+ out[key] = value;
752
+ }
753
+ return out
754
+ },
755
+
756
+ /**
757
+ * The seeded parent keys are locked: a row added to this list belongs
758
+ * to the record the list is scoped to.
759
+ *
760
+ * @return {string[]}
761
+ */
762
+ createLockedFields() {
763
+ return Object.keys(this.createInitialData)
764
+ },
765
+
732
766
  /** Per-field overrides for the create dialog (`content.formFieldOverrides`). */
733
767
  formFieldOverrides() {
734
768
  const c = this.content || {};
@@ -1077,7 +1111,8 @@ var script = {
1077
1111
  }
1078
1112
  }
1079
1113
  const url = generateUrl('/apps/openregister/api/objects/{register}/{schema}', { register: c.register, schema: c.schema });
1080
- await axios.post(url, payload);
1114
+ const response = await axios.post(url, payload);
1115
+ dispatchObjectCreated({ register: c.register, schema: c.schema, object: (response && response.data) || payload });
1081
1116
  if (this.$refs.createDialog) {
1082
1117
  this.$refs.createDialog.setResult({ success: true });
1083
1118
  }