@conduction/nextcloud-vue 2.101.0 → 2.103.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 (140) hide show
  1. package/dist/esm/components/CnActionsBar/CnActionsBar.vue2.js +22 -0
  2. package/dist/esm/components/CnActionsBar/CnActionsBar.vue2.js.map +1 -1
  3. package/dist/esm/components/CnActionsBar/CnActionsBar.vue3.js +8 -6
  4. package/dist/esm/components/CnActionsBar/CnActionsBar.vue3.js.map +1 -1
  5. package/dist/esm/components/CnChartWidget/CnChartWidget.vue.js +1 -1
  6. package/dist/esm/components/CnChartWidget/CnChartWidget.vue2.js +29 -4
  7. package/dist/esm/components/CnChartWidget/CnChartWidget.vue2.js.map +1 -1
  8. package/dist/esm/components/CnChartWidget/CnChartWidget.vue3.js +9 -1
  9. package/dist/esm/components/CnChartWidget/CnChartWidget.vue3.js.map +1 -1
  10. package/dist/esm/components/CnConversationThread/CnConversationThread.vue.js +1 -1
  11. package/dist/esm/components/CnConversationThread/CnConversationThread.vue2.js +73 -0
  12. package/dist/esm/components/CnConversationThread/CnConversationThread.vue2.js.map +1 -1
  13. package/dist/esm/components/CnConversationThread/CnConversationThread.vue3.js +99 -64
  14. package/dist/esm/components/CnConversationThread/CnConversationThread.vue3.js.map +1 -1
  15. package/dist/esm/components/CnConversationThread/CnConversationWidget.vue.js +1 -1
  16. package/dist/esm/components/CnConversationThread/CnConversationWidget.vue2.js +46 -0
  17. package/dist/esm/components/CnConversationThread/CnConversationWidget.vue2.js.map +1 -1
  18. package/dist/esm/components/CnConversationThread/CnConversationWidget.vue3.js +37 -2
  19. package/dist/esm/components/CnConversationThread/CnConversationWidget.vue3.js.map +1 -1
  20. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue.js +1 -1
  21. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js +49 -6
  22. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js.map +1 -1
  23. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js +1 -1
  24. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js.map +1 -1
  25. package/dist/esm/components/CnFormDialog/CnFormDialog.vue.js +1 -1
  26. package/dist/esm/components/CnFormDialog/CnFormDialog.vue2.js +113 -20
  27. package/dist/esm/components/CnFormDialog/CnFormDialog.vue2.js.map +1 -1
  28. package/dist/esm/components/CnFormDialog/CnFormDialog.vue3.js +387 -359
  29. package/dist/esm/components/CnFormDialog/CnFormDialog.vue3.js.map +1 -1
  30. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js +84 -4
  31. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js.map +1 -1
  32. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js +8 -6
  33. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js.map +1 -1
  34. package/dist/esm/components/CnIndexPage/useNamedSource.js +26 -2
  35. package/dist/esm/components/CnIndexPage/useNamedSource.js.map +1 -1
  36. package/dist/esm/components/CnMenuWidget/CnMenuWidget.vue.js +1 -1
  37. package/dist/esm/components/CnMenuWidget/CnMenuWidget.vue2.js +25 -1
  38. package/dist/esm/components/CnMenuWidget/CnMenuWidget.vue2.js.map +1 -1
  39. package/dist/esm/components/CnMenuWidget/CnMenuWidget.vue3.js.map +1 -1
  40. package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue.js +1 -1
  41. package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue2.js +10 -1
  42. package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue2.js.map +1 -1
  43. package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue3.js.map +1 -1
  44. package/dist/esm/components/CnQuickFilterBar/CnQuickFilterBar.vue.js +1 -1
  45. package/dist/esm/components/CnQuickFilterBar/CnQuickFilterBar.vue2.js +106 -4
  46. package/dist/esm/components/CnQuickFilterBar/CnQuickFilterBar.vue2.js.map +1 -1
  47. package/dist/esm/components/CnQuickFilterBar/CnQuickFilterBar.vue3.js +70 -25
  48. package/dist/esm/components/CnQuickFilterBar/CnQuickFilterBar.vue3.js.map +1 -1
  49. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue.js +1 -1
  50. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue2.js +97 -3
  51. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue2.js.map +1 -1
  52. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue3.js +46 -2
  53. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue3.js.map +1 -1
  54. package/dist/esm/components/CnSearchSelect/CnSearchSelect.vue.js +9 -0
  55. package/dist/esm/components/CnSearchSelect/CnSearchSelect.vue.js.map +1 -0
  56. package/dist/esm/components/CnSearchSelect/CnSearchSelect.vue2.js +165 -0
  57. package/dist/esm/components/CnSearchSelect/CnSearchSelect.vue2.js.map +1 -0
  58. package/dist/esm/components/CnSearchSelect/CnSearchSelect.vue3.js +85 -0
  59. package/dist/esm/components/CnSearchSelect/CnSearchSelect.vue3.js.map +1 -0
  60. package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue.js +1 -1
  61. package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue2.js +54 -6
  62. package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue2.js.map +1 -1
  63. package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue3.js +3 -1
  64. package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue3.js.map +1 -1
  65. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue.js +1 -1
  66. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue2.js +8 -1
  67. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue2.js.map +1 -1
  68. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue3.js.map +1 -1
  69. package/dist/esm/components/CnWidgetObjectTable/CnWidgetObjectTable.vue.js +1 -1
  70. package/dist/esm/components/CnWidgetObjectTable/CnWidgetObjectTable.vue2.js +2 -23
  71. package/dist/esm/components/CnWidgetObjectTable/CnWidgetObjectTable.vue2.js.map +1 -1
  72. package/dist/esm/components/CnWidgetObjectTable/CnWidgetObjectTable.vue3.js.map +1 -1
  73. package/dist/esm/components/CnWizardDialog/CnWizardDialog.vue.js +1 -1
  74. package/dist/esm/components/CnWizardDialog/CnWizardDialog.vue2.js +19 -0
  75. package/dist/esm/components/CnWizardDialog/CnWizardDialog.vue2.js.map +1 -1
  76. package/dist/esm/components/CnWizardDialog/CnWizardDialog.vue3.js +1 -1
  77. package/dist/esm/components/CnWizardDialog/CnWizardDialog.vue3.js.map +1 -1
  78. package/dist/esm/composables/indexSources.js +9 -0
  79. package/dist/esm/composables/indexSources.js.map +1 -1
  80. package/dist/esm/index.js +1 -0
  81. package/dist/esm/index.js.map +1 -1
  82. package/dist/esm/l10n/en.json.js +5 -1
  83. package/dist/esm/l10n/en.json.js.map +1 -1
  84. package/dist/esm/l10n/nl.json.js +5 -1
  85. package/dist/esm/l10n/nl.json.js.map +1 -1
  86. package/dist/esm/library-style.js +1 -1
  87. package/dist/esm/mixins/pageViews.js +8 -1
  88. package/dist/esm/mixins/pageViews.js.map +1 -1
  89. package/dist/esm/nextcloud-vue.css +593 -459
  90. package/dist/esm/utils/builtInFormatters.js +24 -4
  91. package/dist/esm/utils/builtInFormatters.js.map +1 -1
  92. package/dist/esm/utils/rowClassRules.js +43 -0
  93. package/dist/esm/utils/rowClassRules.js.map +1 -0
  94. package/dist/esm/utils/validateManifestV2.compiled.js +3 -3
  95. package/dist/esm/utils/validateManifestV2.compiled.js.map +1 -1
  96. package/dist/esm/utils/visibleWhen.js +32 -4
  97. package/dist/esm/utils/visibleWhen.js.map +1 -1
  98. package/dist/nextcloud-vue.cjs.js +10093 -8858
  99. package/dist/nextcloud-vue.cjs.js.map +2 -2
  100. package/dist/nextcloud-vue.css +593 -459
  101. package/l10n/en.json +5 -1
  102. package/l10n/nl.json +5 -1
  103. package/package.json +1 -1
  104. package/src/components/CnActionsBar/CnActionsBar.md +1 -0
  105. package/src/components/CnActionsBar/CnActionsBar.vue +31 -4
  106. package/src/components/CnChartWidget/CnChartWidget.md +3 -2
  107. package/src/components/CnChartWidget/CnChartWidget.vue +42 -4
  108. package/src/components/CnConversationThread/CnConversationThread.md +17 -0
  109. package/src/components/CnConversationThread/CnConversationThread.vue +113 -8
  110. package/src/components/CnConversationThread/CnConversationWidget.vue +60 -1
  111. package/src/components/CnDashboardPage/CnDashboardPage.md +4 -1
  112. package/src/components/CnDashboardPage/CnDashboardPage.vue +50 -7
  113. package/src/components/CnDetailPage/CnDetailPage.md +1 -1
  114. package/src/components/CnFormDialog/CnFormDialog.md +1 -1
  115. package/src/components/CnFormDialog/CnFormDialog.vue +127 -0
  116. package/src/components/CnIndexPage/CnIndexPage.md +15 -1
  117. package/src/components/CnIndexPage/CnIndexPage.vue +92 -9
  118. package/src/components/CnIndexPage/useNamedSource.js +26 -2
  119. package/src/components/CnMenuWidget/CnMenuWidget.vue +25 -1
  120. package/src/components/CnObjectListWidget/CnObjectListWidget.vue +10 -1
  121. package/src/components/CnQuickFilterBar/CnQuickFilterBar.md +1 -0
  122. package/src/components/CnQuickFilterBar/CnQuickFilterBar.vue +159 -5
  123. package/src/components/CnRecordListWidget/CnRecordListWidget.vue +134 -2
  124. package/src/components/CnSearchSelect/CnSearchSelect.vue +283 -0
  125. package/src/components/CnSearchSelect/index.js +12 -0
  126. package/src/components/CnSetupWizard/CnSetupWizard.vue +56 -6
  127. package/src/components/CnTabsWidget/CnTabsWidget.vue +8 -1
  128. package/src/components/CnWidgetObjectTable/CnWidgetObjectTable.vue +2 -23
  129. package/src/components/CnWizardDialog/CnWizardDialog.vue +20 -1
  130. package/src/components/index.js +1 -0
  131. package/src/composables/indexSources.js +9 -0
  132. package/src/css/dialog.css +5 -3
  133. package/src/css/look-board-index.css +10 -0
  134. package/src/index.js +1 -0
  135. package/src/mixins/pageViews.js +8 -1
  136. package/src/schemas/app-manifest-v2.schema.json +107 -8
  137. package/src/utils/builtInFormatters.js +24 -4
  138. package/src/utils/rowClassRules.js +39 -0
  139. package/src/utils/validateManifestV2.compiled.js +3 -3
  140. package/src/utils/visibleWhen.js +32 -4
@@ -50,6 +50,7 @@ import { resolveFilterMap } from '../../utils/routeFilters.js';
50
50
  import { DEFAULT_ROW_ACTION_FIELD, withoutViewWhenRowOpensDetail, availableRowActions, refusalReasonFor, undeclaredRowActions } from '../../utils/rowActionAvailability.js';
51
51
  import { isRowActionVisible, rowActionPayload } from '../../utils/rowActionItem.js';
52
52
  import { isNewTabClick, preventMiddleClickAutoscroll, isRowMiddleClick, isNewTabHandled, markNewTabHandled } from '../../utils/rowAuxClick.js';
53
+ import { compileRowClass } from '../../utils/rowClassRules.js';
53
54
  import { DEFAULT_ROW_INDICATOR_CAP } from '../../utils/rowIndicators.js';
54
55
  import { viewMatchesScope, extractViewState, buildRouteQueryFromViewState, extractViewStateFromRouteQuery, buildViewCreatePayload, savedViewScope, normalizeSharedWith } from '../../utils/savedViewHelpers.js';
55
56
  import { fieldsFromSchema, columnsFromSchema } from '../../utils/schema.js';
@@ -700,6 +701,17 @@ var script = {
700
701
  default: '',
701
702
  },
702
703
 
704
+ /**
705
+ * Board look: draw the bulk band before anything is selected too, its
706
+ * buttons disabled until there is a selection (DqZaken, DqWerkbord).
707
+ * Manifest key `config.bulkBandAlways`. Only when the band has an
708
+ * action to offer.
709
+ */
710
+ bulkBandAlways: {
711
+ type: Boolean,
712
+ default: false,
713
+ },
714
+
703
715
  /**
704
716
  * Board look: the 13px hint after the bulk band's buttons ("See what
705
717
  * changes first, then run it"). Manifest key `config.bulkHint`.
@@ -881,6 +893,21 @@ var script = {
881
893
  default: null,
882
894
  },
883
895
 
896
+ /**
897
+ * Where the quick-filter chips sit (manifest `config.quickFilterPlacement`).
898
+ * `''` (the default) as before. `'toolbar'` keeps them on one row with
899
+ * the Filter button and the view switch, in whatever width that row has
900
+ * beside a side panel (DqTeamwachtrij): the chips take the room the
901
+ * buttons leave, and those that do not fit move into the overflow chip.
902
+ *
903
+ * @type {''|'toolbar'}
904
+ */
905
+ quickFilterPlacement: {
906
+ type: String,
907
+ default: '',
908
+ validator: (v) => ['', 'toolbar'].includes(v),
909
+ },
910
+
884
911
  /**
885
912
  * How the quick filters render: `'chips'` (pill strip, default) or
886
913
  * `'dropdown'` (a single `NcSelect`). Sourced from the manifest as
@@ -1457,9 +1484,18 @@ var script = {
1457
1484
  default: 'Loading…',
1458
1485
  },
1459
1486
 
1460
- /** Function returning CSS class(es) for a row */
1487
+ /**
1488
+ * CSS class(es) for a row: a function `(row) => string`, or (manifest
1489
+ * `config.rowClass`) rules `[{ when: { field, op?, value }, class }]`,
1490
+ * each adding its class to a row whose field compares to the value
1491
+ * (the `visibleWhen` operators, `@today` included). DqTaken marks an
1492
+ * overdue task: `{ when: { field: "dueAt", op: "lt", value: "@today" },
1493
+ * class: "cn-row--overdue" }`.
1494
+ *
1495
+ * @type {((row: object) => string)|Array<{when: {field: string, op?: string, value: unknown}, class: string}>|null}
1496
+ */
1461
1497
  rowClass: {
1462
- type: Function,
1498
+ type: [Function, Array],
1463
1499
  default: null,
1464
1500
  },
1465
1501
 
@@ -1924,6 +1960,9 @@ var script = {
1924
1960
  * defaults to `field`).
1925
1961
  * - `folders` — explicit folder list for `source:'custom'`.
1926
1962
  * - `allLabel` / `title` / `allowCreate` — passed to CnFolderSidebar.
1963
+ * - `pane` — `false` draws no pane: the scope still comes from the
1964
+ * deep-link filter (`?caseType=<id>`) and still applies its look, as
1965
+ * a list narrowed to one case type does without a folder column.
1927
1966
  *
1928
1967
  * A folder entry is also a SCOPE: it may carry `columns`, `defaultSort`
1929
1968
  * and `searchFields`, and while it is selected the list is shown that
@@ -2541,6 +2580,10 @@ var script = {
2541
2580
  //
2542
2581
  // Seeded from the route query so a shared link lands filtered, the
2543
2582
  // same way `_order` and a deep-link filter already do for self-fetch.
2583
+ // The page a paging named source shows: page 1 at the source config's
2584
+ // `limit` (20 by default), moved by the pager.
2585
+ const namedPageSize = Number(props.sourceConfig && props.sourceConfig.limit) > 0 ? Number(props.sourceConfig.limit) : 20;
2586
+ const namedPaging = ref({ page: 1, limit: namedPageSize });
2544
2587
  const namedActiveFilters = ref(namedFiltersFromRoute(getCurrentInstance(), props));
2545
2588
 
2546
2589
  const {
@@ -2549,7 +2592,7 @@ var script = {
2549
2592
  namedRows,
2550
2593
  namedLoading,
2551
2594
  namedQuickFilters,
2552
- } = useNamedSource(props, { activeQuickFilterIndex, activeFilters: namedActiveFilters });
2595
+ } = useNamedSource(props, { activeQuickFilterIndex, activeFilters: namedActiveFilters, paging: namedPaging });
2553
2596
 
2554
2597
  return {
2555
2598
  isBoard: isBoardLook,
@@ -2561,6 +2604,7 @@ var script = {
2561
2604
  namedLoading,
2562
2605
  namedQuickFilters,
2563
2606
  namedActiveFilters,
2607
+ namedPaging,
2564
2608
  contextMenuOpen,
2565
2609
  contextMenuRow,
2566
2610
  openContextMenu,
@@ -3523,6 +3567,9 @@ var script = {
3523
3567
  const loaded = this.effectivePagination || {};
3524
3568
  return Number(loaded.page || 1) < Number(loaded.pages || 1)
3525
3569
  }
3570
+ if (this.isNamedSource && this.namedSource && this.namedSource.pages === true) {
3571
+ return Number(this.effectivePagination?.pages || 1) > 1
3572
+ }
3526
3573
  return Number(this.pagination?.pages || 1) > 1
3527
3574
  },
3528
3575
 
@@ -3549,6 +3596,17 @@ var script = {
3549
3596
  return { shown, total: Math.max(shown, Number(this.effectivePagination?.total || 0)) }
3550
3597
  },
3551
3598
 
3599
+ /**
3600
+ * Whether the folder pane is drawn: a `folderSidebar` without
3601
+ * `pane: false`.
3602
+ *
3603
+ * @spec openspec/changes/folder-sidebar-pane-off/specs/index-page/spec.md#requirement-a-folder-scope-without-a-pane
3604
+ * @return {boolean}
3605
+ */
3606
+ showsFolderPane() {
3607
+ return Boolean(this.folderSidebar) && this.folderSidebar.pane !== false
3608
+ },
3609
+
3552
3610
  /**
3553
3611
  * The CnFolderSidebar source. A `register` source is fetched by this
3554
3612
  * component and handed to CnFolderSidebar as a `custom` folder list.
@@ -4562,7 +4620,13 @@ var script = {
4562
4620
  // A named source that reports its own total (the search source)
4563
4621
  // gives the count line its number.
4564
4622
  if (this.isNamedSource && this.namedSource && typeof this.namedSource.total === 'function') {
4565
- return { ...(this.pagination || {}), total: this.namedSource.total() }
4623
+ const total = this.namedSource.total();
4624
+ // A source with `pages: true` gets the pager the self-fetched lists draw.
4625
+ if (this.namedSource.pages === true) {
4626
+ const { page, limit } = this.namedPaging;
4627
+ return { page, limit, total, pages: Math.max(1, Math.ceil(total / limit)) }
4628
+ }
4629
+ return { ...(this.pagination || {}), total }
4566
4630
  }
4567
4631
  return this.isSelfFetchMode ? this.list.pagination.value : this.pagination
4568
4632
  },
@@ -4815,6 +4879,16 @@ var script = {
4815
4879
  return (this.effectiveSchema && this.effectiveSchema.slug) || ''
4816
4880
  },
4817
4881
 
4882
+ /**
4883
+ * The row-class function the table takes: a function as given, or the
4884
+ * manifest's rules compiled.
4885
+ *
4886
+ * @return {?(row: object) => string}
4887
+ */
4888
+ compiledRowClass() {
4889
+ return compileRowClass(this.rowClass)
4890
+ },
4891
+
4818
4892
  /** @return {number} How many leading columns the person pinned (0 while a saved view's columns are applied). */
4819
4893
  pinnedColumnCount() {
4820
4894
  if (!this.personalColumns || Array.isArray(this.appliedViewColumns) || !this.personalLayout) {
@@ -7539,6 +7613,9 @@ var script = {
7539
7613
  if (this.isSelfFetchMode && typeof this.list.onPageChange === 'function') {
7540
7614
  this.list.onPageChange(page);
7541
7615
  }
7616
+ if (this.isNamedSource && this.namedSource && this.namedSource.pages === true) {
7617
+ this.namedPaging = { ...this.namedPaging, page };
7618
+ }
7542
7619
  this.$emit('page-changed', page);
7543
7620
  },
7544
7621
 
@@ -7554,6 +7631,9 @@ var script = {
7554
7631
  if (this.isSelfFetchMode && typeof this.list.onPageSizeChange === 'function') {
7555
7632
  this.list.onPageSizeChange(size);
7556
7633
  }
7634
+ if (this.isNamedSource && this.namedSource && this.namedSource.pages === true) {
7635
+ this.namedPaging = { page: 1, limit: size };
7636
+ }
7557
7637
  this.$emit('page-size-changed', size);
7558
7638
  },
7559
7639