@conduction/nextcloud-vue 2.103.0 → 2.105.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/CnActionsBar/CnActionsBar.vue2.js +23 -0
  2. package/dist/esm/components/CnActionsBar/CnActionsBar.vue2.js.map +1 -1
  3. package/dist/esm/components/CnActionsBar/CnActionsBar.vue3.js +94 -72
  4. package/dist/esm/components/CnActionsBar/CnActionsBar.vue3.js.map +1 -1
  5. package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue.js +1 -1
  6. package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue2.js.map +1 -1
  7. package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue3.js +1 -1
  8. package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue3.js.map +1 -1
  9. package/dist/esm/components/CnAppRoot/CnAppRoot.vue2.js +18 -1
  10. package/dist/esm/components/CnAppRoot/CnAppRoot.vue2.js.map +1 -1
  11. package/dist/esm/components/CnAppRoot/CnAppRoot.vue3.js +3 -3
  12. package/dist/esm/components/CnAppRoot/CnAppRoot.vue3.js.map +1 -1
  13. package/dist/esm/components/CnChartWidget/CnChartWidget.vue.js +1 -1
  14. package/dist/esm/components/CnChartWidget/CnChartWidget.vue2.js +93 -1
  15. package/dist/esm/components/CnChartWidget/CnChartWidget.vue2.js.map +1 -1
  16. package/dist/esm/components/CnChartWidget/CnChartWidget.vue3.js.map +1 -1
  17. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue.js +1 -1
  18. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js +6 -3
  19. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js.map +1 -1
  20. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js +3 -3
  21. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js.map +1 -1
  22. package/dist/esm/components/CnDataTable/CnDataTable.vue2.js +39 -2
  23. package/dist/esm/components/CnDataTable/CnDataTable.vue2.js.map +1 -1
  24. package/dist/esm/components/CnDataTable/CnDataTable.vue3.js +14 -0
  25. package/dist/esm/components/CnDataTable/CnDataTable.vue3.js.map +1 -1
  26. package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js +99 -3
  27. package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js.map +1 -1
  28. package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js.map +1 -1
  29. package/dist/esm/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue.js +1 -1
  30. package/dist/esm/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue2.js +1 -1
  31. package/dist/esm/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue2.js.map +1 -1
  32. package/dist/esm/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue3.js.map +1 -1
  33. package/dist/esm/components/CnFeaturesBoard/CnFeaturesBoard.vue.js +1 -1
  34. package/dist/esm/components/CnFeaturesBoard/CnFeaturesBoard.vue2.js +2 -0
  35. package/dist/esm/components/CnFeaturesBoard/CnFeaturesBoard.vue2.js.map +1 -1
  36. package/dist/esm/components/CnFeaturesBoard/CnFeaturesBoard.vue3.js +32 -29
  37. package/dist/esm/components/CnFeaturesBoard/CnFeaturesBoard.vue3.js.map +1 -1
  38. package/dist/esm/components/CnFlowsPage/CnFlowBoard.vue.js +1 -1
  39. package/dist/esm/components/CnFlowsPage/CnFlowBoard.vue2.js +73 -4
  40. package/dist/esm/components/CnFlowsPage/CnFlowBoard.vue2.js.map +1 -1
  41. package/dist/esm/components/CnFlowsPage/CnFlowBoard.vue3.js +74 -27
  42. package/dist/esm/components/CnFlowsPage/CnFlowBoard.vue3.js.map +1 -1
  43. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js +213 -4
  44. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js.map +1 -1
  45. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js +105 -85
  46. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js.map +1 -1
  47. package/dist/esm/components/CnIndexPage/useSelfFetchList.js +10 -4
  48. package/dist/esm/components/CnIndexPage/useSelfFetchList.js.map +1 -1
  49. package/dist/esm/components/CnNoticeWidget/CnNoticeWidget.vue.js +9 -0
  50. package/dist/esm/components/CnNoticeWidget/CnNoticeWidget.vue.js.map +1 -0
  51. package/dist/esm/components/CnNoticeWidget/CnNoticeWidget.vue2.js +88 -0
  52. package/dist/esm/components/CnNoticeWidget/CnNoticeWidget.vue2.js.map +1 -0
  53. package/dist/esm/components/CnNoticeWidget/CnNoticeWidget.vue3.js +39 -0
  54. package/dist/esm/components/CnNoticeWidget/CnNoticeWidget.vue3.js.map +1 -0
  55. package/dist/esm/components/CnObjectRow/CnObjectRow.vue.js +1 -1
  56. package/dist/esm/components/CnObjectRow/CnObjectRow.vue2.js +57 -5
  57. package/dist/esm/components/CnObjectRow/CnObjectRow.vue2.js.map +1 -1
  58. package/dist/esm/components/CnObjectRow/CnObjectRow.vue3.js +37 -4
  59. package/dist/esm/components/CnObjectRow/CnObjectRow.vue3.js.map +1 -1
  60. package/dist/esm/components/CnSettingsField/CnSettingsField.vue.js +1 -1
  61. package/dist/esm/components/CnSettingsField/CnSettingsField.vue2.js.map +1 -1
  62. package/dist/esm/components/CnSettingsField/CnSettingsField.vue3.js +3 -3
  63. package/dist/esm/components/CnSettingsField/CnSettingsField.vue3.js.map +1 -1
  64. package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue.js +1 -1
  65. package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue2.js.map +1 -1
  66. package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue3.js +16 -4
  67. package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue3.js.map +1 -1
  68. package/dist/esm/components/CnUserSettingsDialog/CnUserSettingsDialog.vue.js +1 -1
  69. package/dist/esm/components/CnUserSettingsDialog/CnUserSettingsDialog.vue2.js.map +1 -1
  70. package/dist/esm/components/CnUserSettingsDialog/CnUserSettingsDialog.vue3.js.map +1 -1
  71. package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue.js +1 -1
  72. package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue2.js +11 -0
  73. package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue2.js.map +1 -1
  74. package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue3.js +4 -4
  75. package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue3.js.map +1 -1
  76. package/dist/esm/components/CnWidgetGrid/builtInWidgets.js +16 -14
  77. package/dist/esm/components/CnWidgetGrid/builtInWidgets.js.map +1 -1
  78. package/dist/esm/components/CnWidgetObjectTable/CnWidgetObjectTable.vue.js +1 -1
  79. package/dist/esm/components/CnWidgetObjectTable/CnWidgetObjectTable.vue2.js +18 -2
  80. package/dist/esm/components/CnWidgetObjectTable/CnWidgetObjectTable.vue2.js.map +1 -1
  81. package/dist/esm/components/CnWidgetObjectTable/CnWidgetObjectTable.vue3.js.map +1 -1
  82. package/dist/esm/composables/indexSources.js +7 -7
  83. package/dist/esm/composables/indexSources.js.map +1 -1
  84. package/dist/esm/index.js +1 -0
  85. package/dist/esm/index.js.map +1 -1
  86. package/dist/esm/l10n/en.json.js +8 -1
  87. package/dist/esm/l10n/en.json.js.map +1 -1
  88. package/dist/esm/l10n/nl.json.js +8 -1
  89. package/dist/esm/l10n/nl.json.js.map +1 -1
  90. package/dist/esm/library-style.js +1 -1
  91. package/dist/esm/nextcloud-vue.css +680 -328
  92. package/dist/esm/utils/libraryWidgetKeys.js +1 -0
  93. package/dist/esm/utils/libraryWidgetKeys.js.map +1 -1
  94. package/dist/esm/utils/nextcloudApps.js +45 -0
  95. package/dist/esm/utils/nextcloudApps.js.map +1 -0
  96. package/dist/esm/utils/nextcloudDirectory.js +18 -1
  97. package/dist/esm/utils/nextcloudDirectory.js.map +1 -1
  98. package/dist/esm/utils/scopeListLayout.js +9 -2
  99. package/dist/esm/utils/scopeListLayout.js.map +1 -1
  100. package/dist/esm/utils/sortOrder.js +61 -0
  101. package/dist/esm/utils/sortOrder.js.map +1 -0
  102. package/dist/esm/utils/validateManifestV2.compiled.js +3 -3
  103. package/dist/esm/utils/validateManifestV2.compiled.js.map +1 -1
  104. package/dist/esm/utils/visibleWhen.js +12 -4
  105. package/dist/esm/utils/visibleWhen.js.map +1 -1
  106. package/dist/nextcloud-vue.cjs.js +4046 -2999
  107. package/dist/nextcloud-vue.cjs.js.map +2 -2
  108. package/dist/nextcloud-vue.css +680 -328
  109. package/l10n/en.json +8 -1
  110. package/l10n/nl.json +8 -1
  111. package/package.json +1 -1
  112. package/src/components/CnActionsBar/CnActionsBar.md +1 -0
  113. package/src/components/CnActionsBar/CnActionsBar.vue +39 -2
  114. package/src/components/CnAdminSettingsShell/CnAdminSettingsShell.vue +1 -1
  115. package/src/components/CnAppRoot/CnAppRoot.md +1 -1
  116. package/src/components/CnAppRoot/CnAppRoot.vue +21 -4
  117. package/src/components/CnChartWidget/CnChartWidget.md +2 -0
  118. package/src/components/CnChartWidget/CnChartWidget.vue +93 -1
  119. package/src/components/CnDashboardPage/CnDashboardPage.vue +9 -6
  120. package/src/components/CnDataTable/CnDataTable.md +1 -0
  121. package/src/components/CnDataTable/CnDataTable.vue +49 -0
  122. package/src/components/CnDetailPage/CnDetailPage.md +2 -0
  123. package/src/components/CnDetailPage/CnDetailPage.vue +99 -3
  124. package/src/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue +1 -1
  125. package/src/components/CnFeaturesBoard/CnFeaturesBoard.vue +4 -1
  126. package/src/components/CnFlowsPage/CnFlowBoard.vue +132 -8
  127. package/src/components/CnIndexPage/CnIndexPage.md +5 -2
  128. package/src/components/CnIndexPage/CnIndexPage.vue +228 -9
  129. package/src/components/CnIndexPage/useSelfFetchList.js +9 -3
  130. package/src/components/CnNoticeWidget/CnNoticeWidget.vue +153 -0
  131. package/src/components/CnNoticeWidget/index.js +12 -0
  132. package/src/components/CnObjectRow/CnObjectRow.vue +95 -1
  133. package/src/components/CnSettingsField/CnSettingsField.vue +4 -1
  134. package/src/components/CnSetupWizard/CnSetupWizard.vue +9 -1
  135. package/src/components/CnUserSettingsDialog/CnUserSettingsDialog.vue +7 -2
  136. package/src/components/CnVersionInfoCard/CnVersionInfoCard.vue +15 -4
  137. package/src/components/CnWidgetGrid/builtInWidgets.js +2 -0
  138. package/src/components/CnWidgetObjectTable/CnWidgetObjectTable.vue +18 -2
  139. package/src/components/index.js +1 -0
  140. package/src/composables/indexSources.js +7 -7
  141. package/src/css/dialog.css +20 -2
  142. package/src/css/index-page.css +19 -0
  143. package/src/css/look-board-detail.css +77 -4
  144. package/src/css/look-board-index.css +84 -2
  145. package/src/css/look-board.css +97 -12
  146. package/src/index.js +1 -0
  147. package/src/schemas/app-manifest-v2.schema.json +58 -3
  148. package/src/utils/libraryWidgetKeys.js +1 -0
  149. package/src/utils/nextcloudApps.js +50 -0
  150. package/src/utils/nextcloudDirectory.js +17 -0
  151. package/src/utils/scopeListLayout.js +9 -2
  152. package/src/utils/sortOrder.js +58 -0
  153. package/src/utils/validateManifestV2.compiled.js +3 -3
  154. package/src/utils/visibleWhen.js +12 -4
@@ -56,7 +56,7 @@ import { resolveHeaderMeta, isActivityWidget } from '../../utils/headerMeta.js';
56
56
  import { patchStoredSelf } from '../../utils/patchStoredSelf.js';
57
57
  import { setReadState } from '../../utils/recordInteractions.js';
58
58
  import { slotRenders } from '../../utils/slotContent.js';
59
- import { isLocallyDecidableVisibleWhen, evaluateVisibleWhen } from '../../utils/visibleWhen.js';
59
+ import { readVisibleWhenPath, isLocallyDecidableVisibleWhen, evaluateVisibleWhen } from '../../utils/visibleWhen.js';
60
60
  import { isDataWidgetDef, isRelatedWidgetDef, isGeoWidgetDef, isContentOnlyWidgetDef, isCardWidgetDef, widgetContentOf, resolveRegistryRenderer, widgetTitleOf } from '../../utils/widgetDispatch.js';
61
61
  import __sfc_main$a from '../CnActionButtons/CnActionButtons.vue.js';
62
62
  import __sfc_main$b from '../CnBreadcrumbs/CnBreadcrumbs.vue.js';
@@ -1347,6 +1347,22 @@ var script = {
1347
1347
  default: null,
1348
1348
  },
1349
1349
 
1350
+ /**
1351
+ * A field path whose value picks the tabs of the page's `tabs` widgets
1352
+ * and their order for this record (manifest `config.tabsFrom`), read
1353
+ * like a `visibleWhen` field: `@context.caseType.tabs` reads the list a
1354
+ * case type keeps. A non-empty list of tab ids (a tab's `id`, else its
1355
+ * `widgetId`, or the string entry itself) keeps those tabs in that
1356
+ * order and leaves the rest out. Any other value keeps the declared
1357
+ * tabs. Edit mode shows them all.
1358
+ *
1359
+ * @spec openspec/changes/detail-tabs-from/specs/detail-page/spec.md#requirement-a-record-can-pick-its-tabs-and-their-order
1360
+ */
1361
+ tabsFrom: {
1362
+ type: String,
1363
+ default: '',
1364
+ },
1365
+
1350
1366
  /**
1351
1367
  * A column of cards beside the body (manifest `config.sideColumn`),
1352
1368
  * for the record's facts: deadline, requester, handler, links. Each
@@ -1362,6 +1378,22 @@ var script = {
1362
1378
  default: () => [],
1363
1379
  },
1364
1380
 
1381
+ /**
1382
+ * A field path whose value picks the side column and its order for
1383
+ * this record (manifest `config.sideColumnFrom`), read like a
1384
+ * `visibleWhen` field: `@context.caseType.sideCards` reads the list a
1385
+ * case type keeps. A non-empty list of ids keeps those `sideColumn`
1386
+ * entries, in that order, and leaves the rest out; each still follows
1387
+ * its own `visibleWhen`. Any other value keeps `sideColumn` as
1388
+ * declared, so a record whose list is empty changes nothing.
1389
+ *
1390
+ * @spec openspec/changes/detail-side-column-from/specs/detail-page/spec.md#requirement-a-record-can-pick-the-side-column-and-its-order
1391
+ */
1392
+ sideColumnFrom: {
1393
+ type: String,
1394
+ default: '',
1395
+ },
1396
+
1365
1397
  /**
1366
1398
  * Draw the header as a card (manifest `config.headerCard: true`): the
1367
1399
  * pills, the title and the actions on the page's surface colour inside
@@ -2272,7 +2304,7 @@ var script = {
2272
2304
  * @spec openspec/changes/detail-side-visible-when/specs/detail-page/spec.md#requirement-a-side-column-widget-shows-only-while-its-visiblewhen-holds
2273
2305
  */
2274
2306
  sideColumnWidgets() {
2275
- const resolved = this.declaredSideWidgets.filter((widget) => this.sideWidgetVisible(widget));
2307
+ const resolved = this.pickedSideWidgets.filter((widget) => this.sideWidgetVisible(widget));
2276
2308
  if (!this.isBoard) {
2277
2309
  return resolved
2278
2310
  }
@@ -2284,6 +2316,28 @@ var script = {
2284
2316
  .map(({ widget }) => widget)
2285
2317
  },
2286
2318
 
2319
+ /**
2320
+ * The side column's definitions as the record picks them
2321
+ * (`sideColumnFrom`): the ids it lists, in its order, or every
2322
+ * declared entry when it lists none. Edit mode shows them all.
2323
+ *
2324
+ * @return {Array<object>}
2325
+ * @spec openspec/changes/detail-side-column-from/specs/detail-page/spec.md#requirement-a-record-can-pick-the-side-column-and-its-order
2326
+ */
2327
+ pickedSideWidgets() {
2328
+ const declared = this.declaredSideWidgets;
2329
+ if (!this.sideColumnFrom || this.editingBody || !this.widgetVisibilityData) {
2330
+ return declared
2331
+ }
2332
+ const ids = readVisibleWhenPath(this.widgetVisibilityData, this.sideColumnFrom);
2333
+ if (!Array.isArray(ids) || ids.length === 0) {
2334
+ return declared
2335
+ }
2336
+ return ids
2337
+ .map((id) => declared.find((widget) => widget.id === id) || null)
2338
+ .filter(Boolean)
2339
+ },
2340
+
2287
2341
  /**
2288
2342
  * The side column's entries resolved to definitions, before any
2289
2343
  * `visibleWhen` is read: a string names a widget declared in
@@ -3293,7 +3347,7 @@ var script = {
3293
3347
  */
3294
3348
  bodyGridWidgets() {
3295
3349
  if (this.hasGridLayout) {
3296
- return this.widgets
3350
+ return this.pickTabs(this.widgets)
3297
3351
  }
3298
3352
  if (this.shouldRenderAutoBody) {
3299
3353
  return this.autoBodyWidgets || []
@@ -3301,6 +3355,21 @@ var script = {
3301
3355
  return []
3302
3356
  },
3303
3357
 
3358
+ /**
3359
+ * The tab ids `tabsFrom` reads off this record, or null when it reads
3360
+ * no non-empty list (or the body is being edited).
3361
+ *
3362
+ * @spec openspec/changes/detail-tabs-from/specs/detail-page/spec.md#requirement-a-record-can-pick-its-tabs-and-their-order
3363
+ * @return {Array<string>|null}
3364
+ */
3365
+ pickedTabIds() {
3366
+ if (!this.tabsFrom || this.editingBody || !this.widgetVisibilityData) {
3367
+ return null
3368
+ }
3369
+ const ids = readVisibleWhenPath(this.widgetVisibilityData, this.tabsFrom);
3370
+ return Array.isArray(ids) && ids.length > 0 ? ids.map((id) => String(id)) : null
3371
+ },
3372
+
3304
3373
  /**
3305
3374
  * Whether the body renders as an adjustable widget grid (vs. the
3306
3375
  * hand-authored default slot). True for explicit grid pages and for the
@@ -3719,6 +3788,33 @@ var script = {
3719
3788
  },
3720
3789
 
3721
3790
  methods: {
3791
+ /**
3792
+ * The widget definitions with each `tabs` widget's tabs narrowed and
3793
+ * ordered by `pickedTabIds`; the definitions as given without a pick.
3794
+ * A new definition is returned for a changed widget; the declared one
3795
+ * is never mutated.
3796
+ *
3797
+ * @spec openspec/changes/detail-tabs-from/specs/detail-page/spec.md#requirement-a-record-can-pick-its-tabs-and-their-order
3798
+ * @param {Array<object>} widgets The widget definitions.
3799
+ * @return {Array<object>}
3800
+ */
3801
+ pickTabs(widgets) {
3802
+ const ids = this.pickedTabIds;
3803
+ if (!ids || !Array.isArray(widgets)) {
3804
+ return widgets
3805
+ }
3806
+ const idOf = (tab) => String(typeof tab === 'string' ? tab : (tab && (tab.id ?? tab.widgetId)) ?? '');
3807
+ return widgets.map((widget) => {
3808
+ if (!widget || widget.type !== 'tabs' || !Array.isArray(widget.content?.tabs)) {
3809
+ return widget
3810
+ }
3811
+ const tabs = ids
3812
+ .map((id) => widget.content.tabs.find((tab) => idOf(tab) === id))
3813
+ .filter(Boolean);
3814
+ return tabs.length > 0 ? { ...widget, content: { ...widget.content, tabs } } : widget
3815
+ })
3816
+ },
3817
+
3722
3818
  /**
3723
3819
  * The tag after an admin-only entry in the board look ("beheerder",
3724
3820
  * DqZaakMeer), or null for any other entry or look. It is drawn by