@conduction/nextcloud-vue 2.68.0 → 2.70.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 (137) hide show
  1. package/dist/esm/components/CnActionsBar/CnActionsBar.vue2.js +25 -0
  2. package/dist/esm/components/CnActionsBar/CnActionsBar.vue2.js.map +1 -1
  3. package/dist/esm/components/CnActionsBar/CnActionsBar.vue3.js +155 -152
  4. package/dist/esm/components/CnActionsBar/CnActionsBar.vue3.js.map +1 -1
  5. package/dist/esm/components/CnAppNav/CnAppNav.vue2.js +77 -0
  6. package/dist/esm/components/CnAppNav/CnAppNav.vue2.js.map +1 -1
  7. package/dist/esm/components/CnAppNav/CnAppNav.vue3.js +8 -8
  8. package/dist/esm/components/CnAppNav/CnAppNav.vue3.js.map +1 -1
  9. package/dist/esm/components/CnBreadcrumbs/CnBreadcrumbs.vue.js +1 -0
  10. package/dist/esm/components/CnBreadcrumbs/CnBreadcrumbs.vue.js.map +1 -1
  11. package/dist/esm/components/CnBreadcrumbs/CnBreadcrumbs.vue2.js +28 -0
  12. package/dist/esm/components/CnBreadcrumbs/CnBreadcrumbs.vue2.js.map +1 -1
  13. package/dist/esm/components/CnBreadcrumbs/CnBreadcrumbs.vue3.js +4 -2
  14. package/dist/esm/components/CnBreadcrumbs/CnBreadcrumbs.vue3.js.map +1 -1
  15. package/dist/esm/components/CnCalendarWidget/CnCalendarWidget.vue2.js +25 -1
  16. package/dist/esm/components/CnCalendarWidget/CnCalendarWidget.vue2.js.map +1 -1
  17. package/dist/esm/components/CnCalendarWidget/CnCalendarWidget.vue3.js +32 -17
  18. package/dist/esm/components/CnCalendarWidget/CnCalendarWidget.vue3.js.map +1 -1
  19. package/dist/esm/components/CnCapabilityTable/CnCapabilityTable.vue2.js +14 -1
  20. package/dist/esm/components/CnCapabilityTable/CnCapabilityTable.vue2.js.map +1 -1
  21. package/dist/esm/components/CnCapabilityTable/CnCapabilityTable.vue3.js.map +1 -1
  22. package/dist/esm/components/CnDashboardGrid/CnDashboardGrid.vue2.js +43 -2
  23. package/dist/esm/components/CnDashboardGrid/CnDashboardGrid.vue2.js.map +1 -1
  24. package/dist/esm/components/CnDashboardGrid/CnDashboardGrid.vue3.js +3 -3
  25. package/dist/esm/components/CnDashboardGrid/CnDashboardGrid.vue3.js.map +1 -1
  26. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js +45 -35
  27. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js.map +1 -1
  28. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js +19 -1
  29. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js.map +1 -1
  30. package/dist/esm/components/CnDataTable/CnDataTable.vue2.js +35 -1
  31. package/dist/esm/components/CnDataTable/CnDataTable.vue2.js.map +1 -1
  32. package/dist/esm/components/CnDataTable/CnDataTable.vue3.js.map +1 -1
  33. package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js +94 -6
  34. package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js.map +1 -1
  35. package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js +64 -19
  36. package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js.map +1 -1
  37. package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue2.js +28 -0
  38. package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue2.js.map +1 -1
  39. package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue3.js +3 -2
  40. package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue3.js.map +1 -1
  41. package/dist/esm/components/CnFeaturesAndRoadmapPage/CnFeaturesAndRoadmapPage.vue2.js +12 -0
  42. package/dist/esm/components/CnFeaturesAndRoadmapPage/CnFeaturesAndRoadmapPage.vue2.js.map +1 -1
  43. package/dist/esm/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue2.js +9 -0
  44. package/dist/esm/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue2.js.map +1 -1
  45. package/dist/esm/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue3.js.map +1 -1
  46. package/dist/esm/components/CnHeaderWidget/CnHeaderWidget.vue2.js +54 -7
  47. package/dist/esm/components/CnHeaderWidget/CnHeaderWidget.vue2.js.map +1 -1
  48. package/dist/esm/components/CnHeaderWidget/CnHeaderWidget.vue3.js +26 -8
  49. package/dist/esm/components/CnHeaderWidget/CnHeaderWidget.vue3.js.map +1 -1
  50. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js +143 -0
  51. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js.map +1 -1
  52. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js +68 -25
  53. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js.map +1 -1
  54. package/dist/esm/components/CnNextStepCard/CnNextStepCard.vue2.js.map +1 -1
  55. package/dist/esm/components/CnNextStepCard/CnNextStepCard.vue3.js.map +1 -1
  56. package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue2.js +4 -1
  57. package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue2.js.map +1 -1
  58. package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue3.js.map +1 -1
  59. package/dist/esm/components/CnStackedBarWidget/CnStackedBarWidget.vue2.js +17 -3
  60. package/dist/esm/components/CnStackedBarWidget/CnStackedBarWidget.vue2.js.map +1 -1
  61. package/dist/esm/components/CnStackedBarWidget/CnStackedBarWidget.vue3.js +25 -24
  62. package/dist/esm/components/CnStackedBarWidget/CnStackedBarWidget.vue3.js.map +1 -1
  63. package/dist/esm/components/CnStagesWidget/CnStagesWidget.vue2.js.map +1 -1
  64. package/dist/esm/components/CnStagesWidget/CnStagesWidget.vue3.js.map +1 -1
  65. package/dist/esm/components/CnStatWidget/CnStatWidget.vue2.js +29 -2
  66. package/dist/esm/components/CnStatWidget/CnStatWidget.vue2.js.map +1 -1
  67. package/dist/esm/components/CnStatWidget/CnStatWidget.vue3.js +7 -0
  68. package/dist/esm/components/CnStatWidget/CnStatWidget.vue3.js.map +1 -1
  69. package/dist/esm/components/CnStatsBlock/CnStatsBlock.vue2.js +24 -1
  70. package/dist/esm/components/CnStatsBlock/CnStatsBlock.vue2.js.map +1 -1
  71. package/dist/esm/components/CnStatsBlock/CnStatsBlock.vue3.js +1 -1
  72. package/dist/esm/components/CnStatsBlock/CnStatsBlock.vue3.js.map +1 -1
  73. package/dist/esm/components/CnStatsBlockWidget/CnStatsBlockWidget.vue2.js +81 -1
  74. package/dist/esm/components/CnStatsBlockWidget/CnStatsBlockWidget.vue2.js.map +1 -1
  75. package/dist/esm/components/CnStatsBlockWidget/CnStatsBlockWidget.vue3.js +25 -3
  76. package/dist/esm/components/CnStatsBlockWidget/CnStatsBlockWidget.vue3.js.map +1 -1
  77. package/dist/esm/components/CnWeekStripWidget/CnWeekStripWidget.vue2.js +15 -2
  78. package/dist/esm/components/CnWeekStripWidget/CnWeekStripWidget.vue2.js.map +1 -1
  79. package/dist/esm/components/CnWeekStripWidget/CnWeekStripWidget.vue3.js +31 -32
  80. package/dist/esm/components/CnWeekStripWidget/CnWeekStripWidget.vue3.js.map +1 -1
  81. package/dist/esm/l10n/en.json.js +3 -0
  82. package/dist/esm/l10n/en.json.js.map +1 -1
  83. package/dist/esm/l10n/nl.json.js +3 -0
  84. package/dist/esm/l10n/nl.json.js.map +1 -1
  85. package/dist/esm/mixins/pageViews.js +278 -11
  86. package/dist/esm/mixins/pageViews.js.map +1 -1
  87. package/dist/esm/nextcloud-vue.css +145 -0
  88. package/dist/esm/store/plugins/dashboardLayouts.js +35 -1
  89. package/dist/esm/store/plugins/dashboardLayouts.js.map +1 -1
  90. package/dist/esm/utils/capabilityComparison.js +29 -1
  91. package/dist/esm/utils/capabilityComparison.js.map +1 -1
  92. package/dist/esm/utils/formatMetric.js +137 -16
  93. package/dist/esm/utils/formatMetric.js.map +1 -1
  94. package/dist/esm/utils/validateManifestV2.compiled.js +2 -2
  95. package/dist/esm/utils/validateManifestV2.compiled.js.map +1 -1
  96. package/dist/nextcloud-vue.cjs.js +2840 -1477
  97. package/dist/nextcloud-vue.cjs.js.map +2 -2
  98. package/dist/nextcloud-vue.css +145 -0
  99. package/l10n/en.json +3 -0
  100. package/l10n/nl.json +3 -0
  101. package/package.json +1 -1
  102. package/src/components/CnActionsBar/CnActionsBar.md +2 -0
  103. package/src/components/CnActionsBar/CnActionsBar.vue +28 -2
  104. package/src/components/CnAppNav/CnAppNav.vue +85 -8
  105. package/src/components/CnBreadcrumbs/CnBreadcrumbs.vue +45 -0
  106. package/src/components/CnCalendarWidget/CnCalendarWidget.vue +32 -4
  107. package/src/components/CnCapabilityTable/CnCapabilityTable.vue +14 -0
  108. package/src/components/CnDashboardGrid/CnDashboardGrid.md +2 -0
  109. package/src/components/CnDashboardGrid/CnDashboardGrid.vue +54 -2
  110. package/src/components/CnDashboardPage/CnDashboardPage.md +2 -0
  111. package/src/components/CnDashboardPage/CnDashboardPage.vue +59 -35
  112. package/src/components/CnDataTable/CnDataTable.vue +35 -1
  113. package/src/components/CnDetailPage/CnDetailPage.md +8 -0
  114. package/src/components/CnDetailPage/CnDetailPage.vue +124 -8
  115. package/src/components/CnDetailWidgetHost/CnDetailWidgetHost.vue +30 -1
  116. package/src/components/CnFeaturesAndRoadmapPage/CnFeaturesAndRoadmapPage.vue +12 -0
  117. package/src/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue +9 -0
  118. package/src/components/CnHeaderWidget/CnHeaderWidget.vue +95 -8
  119. package/src/components/CnIndexPage/CnIndexPage.vue +171 -6
  120. package/src/components/CnNextStepCard/CnNextStepCard.vue +11 -0
  121. package/src/components/CnObjectListWidget/CnObjectListWidget.vue +4 -1
  122. package/src/components/CnStackedBarWidget/CnStackedBarWidget.vue +34 -7
  123. package/src/components/CnStagesWidget/CnStagesWidget.vue +19 -0
  124. package/src/components/CnStatWidget/CnStatWidget.vue +38 -2
  125. package/src/components/CnStatsBlock/CnStatsBlock.md +2 -0
  126. package/src/components/CnStatsBlock/CnStatsBlock.vue +25 -2
  127. package/src/components/CnStatsBlockWidget/CnStatsBlockWidget.vue +95 -3
  128. package/src/components/CnWeekStripWidget/CnWeekStripWidget.vue +24 -3
  129. package/src/css/detail-page.css +10 -0
  130. package/src/css/index-page.css +12 -0
  131. package/src/css/kpi-card.css +15 -0
  132. package/src/mixins/pageViews.js +277 -10
  133. package/src/schemas/app-manifest-v2.schema.json +73 -6
  134. package/src/store/plugins/dashboardLayouts.js +34 -0
  135. package/src/utils/capabilityComparison.js +28 -0
  136. package/src/utils/formatMetric.js +143 -15
  137. package/src/utils/validateManifestV2.compiled.js +2 -2
@@ -6,6 +6,7 @@ import Check from 'vue-material-design-icons/Check.vue';
6
6
  import Cog from 'vue-material-design-icons/Cog.vue';
7
7
  import Download from 'vue-material-design-icons/Download.vue';
8
8
  import Pencil from 'vue-material-design-icons/Pencil.vue';
9
+ import Restore from 'vue-material-design-icons/Restore.vue';
9
10
  import ViewDashboardOutline from 'vue-material-design-icons/ViewDashboardOutline.vue';
10
11
  import __sfc_main$c from '../../dialogs/CnWidgetStyleEditorModal.vue.js';
11
12
  import __sfc_main$7 from '../CnBodySections/CnBodySections.vue.js';
@@ -20,9 +21,8 @@ import __sfc_main$6 from '../CnWidgetRefItem/CnWidgetRefItem.vue.js';
20
21
  import __sfc_main$2 from '../CnWidgetRenderer/CnWidgetRenderer.vue.js';
21
22
  import __sfc_main$1 from '../CnWidgetWrapper/CnWidgetWrapper.vue.js';
22
23
  import { useIntegrationRegistry } from '../../composables/useIntegrationRegistry.js';
23
- import { readUserPreference, writeUserPreference } from '../../composables/useUserPreferences.js';
24
24
  import { pageViews } from '../../mixins/pageViews.js';
25
- import { mergeUserLayout, dashboardLayoutKey } from '../../store/plugins/dashboardLayouts.js';
25
+ import { mergeUserLayout, resolveUserLayoutApi } from '../../store/plugins/dashboardLayouts.js';
26
26
  import { isAppInstalled } from '../../utils/appInstalled.js';
27
27
  import { readVisibleWhenValue, compareVisibleWhen } from '../../utils/visibleWhen.js';
28
28
  import { canonicalWidgetType } from '../../utils/widgetTypeAliases.js';
@@ -158,6 +158,7 @@ var script = {
158
158
  NcLoadingIcon,
159
159
  NcSelect,
160
160
  Pencil,
161
+ Restore,
161
162
  Check,
162
163
  Cog,
163
164
  CalendarRange,
@@ -269,6 +270,19 @@ var script = {
269
270
  default: true,
270
271
  },
271
272
 
273
+ /**
274
+ * GridStack's `float` for this dashboard (manifest
275
+ * `config.gridFloat`). True (the default) keeps every widget on its
276
+ * row. False packs widgets upward, so a size-to-content widget that
277
+ * shrinks closes the gap under it instead of leaving an empty band.
278
+ *
279
+ * @spec openspec/changes/zuiddrecht-pixel-gaps-3/specs/zuiddrecht-pixel-gaps-3/spec.md#requirement-a-dashboard-closes-the-gap-a-shrinking-or-hidden-widget-leaves
280
+ */
281
+ gridFloat: {
282
+ type: Boolean,
283
+ default: true,
284
+ },
285
+
272
286
  /**
273
287
  * Widget definitions array. Each widget defines metadata for rendering.
274
288
  *
@@ -1211,7 +1225,7 @@ var script = {
1211
1225
  * @spec openspec/changes/view-switch-containers/specs/view-switch-containers/spec.md#requirement-a-view-with-nothing-to-draw-says-so
1212
1226
  */
1213
1227
  viewDisplayLayout() {
1214
- const items = this.activeView ? this.activeView.layout : [];
1228
+ const items = this.activeViewLayout;
1215
1229
  if (this.gridEditable) {
1216
1230
  return items
1217
1231
  }
@@ -1253,8 +1267,9 @@ var script = {
1253
1267
  key: `view-${this.activeViewId}`,
1254
1268
  view: true,
1255
1269
  layout: this.viewDisplayLayout,
1256
- // A user arrangement covers the page's own layout only.
1257
- editable: this.gridEditable && !this.userLayout,
1270
+ // With `userLayout` the user arranges the view too; the
1271
+ // arrangement is kept per view (pageViews mixin).
1272
+ editable: this.gridEditable,
1258
1273
  attrs: {
1259
1274
  id: this.viewRegionId,
1260
1275
  role: 'region',
@@ -1974,6 +1989,7 @@ var script = {
1974
1989
  // the user's arrangement is finished when they say it is.
1975
1990
  if (leaving) {
1976
1991
  this.saveUserLayout();
1992
+ this.saveViewUserLayouts();
1977
1993
  }
1978
1994
 
1979
1995
  /**
@@ -2033,6 +2049,17 @@ var script = {
2033
2049
  }
2034
2050
  },
2035
2051
 
2052
+ /**
2053
+ * The edit-mode reset: the page's own grid and the chosen view return
2054
+ * to the manifest layout. Other views keep this user's arrangement.
2055
+ *
2056
+ * @return {Promise<void>}
2057
+ * @spec openspec/changes/page-view-user-layouts/specs/view-switch-containers/spec.md#requirement-resetting-a-view-restores-its-manifest-layout
2058
+ */
2059
+ async resetLayout() {
2060
+ await Promise.all([this.resetUserLayout(), this.resetViewUserLayout()]);
2061
+ },
2062
+
2036
2063
  /**
2037
2064
  * Drop this user's arrangement and return to the manifest.
2038
2065
  *
@@ -2085,35 +2112,7 @@ var script = {
2085
2112
  * @return {{ load: (appId: string, pageId: string) => Promise<object|null>, save: (appId: string, pageId: string, layout: Array<object>) => Promise<boolean>, reset: (appId: string, pageId: string) => Promise<boolean> }} The api.
2086
2113
  */
2087
2114
  userLayoutApi() {
2088
- const store = this.userLayoutStore;
2089
- if (store && typeof store.loadDashboardLayout === 'function') {
2090
- return {
2091
- load: (...a) => store.loadDashboardLayout(...a),
2092
- save: (...a) => store.saveDashboardLayout(...a),
2093
- reset: (...a) => store.resetDashboardLayout(...a),
2094
- }
2095
- }
2096
-
2097
- return {
2098
- load: (appId, pageId) => readUserPreference(appId, dashboardLayoutKey(pageId), null),
2099
- save: (appId, pageId, layout) => writeUserPreference(
2100
- appId,
2101
- dashboardLayoutKey(pageId),
2102
- { items: (layout || []).map((i) => ({
2103
- widgetId: i.widgetId,
2104
- gridX: i.gridX,
2105
- gridY: i.gridY,
2106
- gridWidth: i.gridWidth,
2107
- gridHeight: i.gridHeight,
2108
- })) },
2109
- ),
2110
-
2111
- reset: (appId, pageId) => writeUserPreference(
2112
- appId,
2113
- dashboardLayoutKey(pageId),
2114
- { items: [] },
2115
- ),
2116
- }
2115
+ return resolveUserLayoutApi(this.userLayoutStore)
2117
2116
  },
2118
2117
 
2119
2118
  onLayoutChange(updated) {
@@ -2856,6 +2855,12 @@ var script = {
2856
2855
 
2857
2856
  getWidgetButtons(item) {
2858
2857
  const def = this.getWidgetDef(item.widgetId);
2858
+ // `showButtons: false` on the placement or the definition drops
2859
+ // the footer links ("More events"), for a placement whose card
2860
+ // says enough without them (zuiddrecht-pixel-gaps-3).
2861
+ if (item?.showButtons === false || def?.showButtons === false) {
2862
+ return []
2863
+ }
2859
2864
  return def?.buttons || []
2860
2865
  },
2861
2866
 
@@ -3159,11 +3164,16 @@ var script = {
3159
3164
  // library's own defaults, so a manifest need not set them — but a
3160
3165
  // manifest that DOES set them must reach the component, or the
3161
3166
  // declaration is a silent no-op that reads like configuration.
3162
- for (const key of ['countLabel', 'variant', 'showZeroCount', 'horizontal', 'vertical', 'filled', 'route', 'iconClass']) {
3167
+ for (const key of ['countLabel', 'variant', 'showZeroCount', 'horizontal', 'vertical', 'filled', 'route', 'iconClass', 'format', 'layout']) {
3163
3168
  if (props[key] !== undefined) {
3164
3169
  out[key] = props[key];
3165
3170
  }
3166
3171
  }
3172
+ // `content.layout: "stacked"`, the key a stat tile takes, works on
3173
+ // a stats block too (zuiddrecht-pixel-gaps-3).
3174
+ if (out.layout === undefined && typeof content.layout === 'string') {
3175
+ out.layout = content.layout;
3176
+ }
3167
3177
  // `countLabel` is the unit beside the number ("0 cases", "0 tasks").
3168
3178
  // It is manifest-authored prose and was being forwarded raw, so a
3169
3179
  // Dutch account read "0 cases" beside a translated widget title.