@conduction/nextcloud-vue 2.63.0 → 2.65.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 (111) hide show
  1. package/dist/esm/components/CnAppNav/CnAppNav.vue2.js +253 -10
  2. package/dist/esm/components/CnAppNav/CnAppNav.vue2.js.map +1 -1
  3. package/dist/esm/components/CnAppNav/CnAppNav.vue3.js +139 -46
  4. package/dist/esm/components/CnAppNav/CnAppNav.vue3.js.map +1 -1
  5. package/dist/esm/components/CnAppRoot/CnAppRoot.vue2.js +87 -0
  6. package/dist/esm/components/CnAppRoot/CnAppRoot.vue2.js.map +1 -1
  7. package/dist/esm/components/CnAppRoot/CnAppRoot.vue3.js +26 -24
  8. package/dist/esm/components/CnAppRoot/CnAppRoot.vue3.js.map +1 -1
  9. package/dist/esm/components/CnAuditTrailCard/CnAuditTrailCard.vue2.js +61 -16
  10. package/dist/esm/components/CnAuditTrailCard/CnAuditTrailCard.vue2.js.map +1 -1
  11. package/dist/esm/components/CnAuditTrailCard/CnAuditTrailCard.vue3.js.map +1 -1
  12. package/dist/esm/components/CnAuditTrailWidget/CnAuditTrailWidget.vue2.js +20 -0
  13. package/dist/esm/components/CnAuditTrailWidget/CnAuditTrailWidget.vue2.js.map +1 -1
  14. package/dist/esm/components/CnAuditTrailWidget/CnAuditTrailWidget.vue3.js +3 -2
  15. package/dist/esm/components/CnAuditTrailWidget/CnAuditTrailWidget.vue3.js.map +1 -1
  16. package/dist/esm/components/CnBreadcrumbs/CnBreadcrumbs.vue2.js +13 -0
  17. package/dist/esm/components/CnBreadcrumbs/CnBreadcrumbs.vue2.js.map +1 -1
  18. package/dist/esm/components/CnBreadcrumbs/CnBreadcrumbs.vue3.js +2 -1
  19. package/dist/esm/components/CnBreadcrumbs/CnBreadcrumbs.vue3.js.map +1 -1
  20. package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue2.js +33 -2
  21. package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue2.js.map +1 -1
  22. package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue3.js.map +1 -1
  23. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js +55 -2
  24. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js.map +1 -1
  25. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js +153 -133
  26. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js.map +1 -1
  27. package/dist/esm/components/CnDataTable/CnDataTable.vue2.js +37 -1
  28. package/dist/esm/components/CnDataTable/CnDataTable.vue2.js.map +1 -1
  29. package/dist/esm/components/CnDataTable/CnDataTable.vue3.js +12 -4
  30. package/dist/esm/components/CnDataTable/CnDataTable.vue3.js.map +1 -1
  31. package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js +125 -14
  32. package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js.map +1 -1
  33. package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js +87 -40
  34. package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js.map +1 -1
  35. package/dist/esm/components/CnHeaderWidget/CnHeaderWidget.vue2.js +101 -7
  36. package/dist/esm/components/CnHeaderWidget/CnHeaderWidget.vue2.js.map +1 -1
  37. package/dist/esm/components/CnHeaderWidget/CnHeaderWidget.vue3.js +22 -5
  38. package/dist/esm/components/CnHeaderWidget/CnHeaderWidget.vue3.js.map +1 -1
  39. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js +30 -0
  40. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js.map +1 -1
  41. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js +2 -2
  42. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js.map +1 -1
  43. package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue2.js +5 -1
  44. package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue2.js.map +1 -1
  45. package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue3.js +4 -2
  46. package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue3.js.map +1 -1
  47. package/dist/esm/components/CnStagesWidget/CnStagesWidget.vue2.js +63 -2
  48. package/dist/esm/components/CnStagesWidget/CnStagesWidget.vue2.js.map +1 -1
  49. package/dist/esm/components/CnStagesWidget/CnStagesWidget.vue3.js +96 -37
  50. package/dist/esm/components/CnStagesWidget/CnStagesWidget.vue3.js.map +1 -1
  51. package/dist/esm/components/CnStagesWidget/stagesModel.js +5 -2
  52. package/dist/esm/components/CnStagesWidget/stagesModel.js.map +1 -1
  53. package/dist/esm/components/CnStatWidget/CnStatWidget.vue2.js +74 -5
  54. package/dist/esm/components/CnStatWidget/CnStatWidget.vue2.js.map +1 -1
  55. package/dist/esm/components/CnStatWidget/CnStatWidget.vue3.js +15 -8
  56. package/dist/esm/components/CnStatWidget/CnStatWidget.vue3.js.map +1 -1
  57. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue2.js +14 -2
  58. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue2.js.map +1 -1
  59. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue3.js +2 -1
  60. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue3.js.map +1 -1
  61. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue2.js +73 -1
  62. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue2.js.map +1 -1
  63. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue3.js +14 -2
  64. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue3.js.map +1 -1
  65. package/dist/esm/l10n/en.json.js +2 -1
  66. package/dist/esm/l10n/en.json.js.map +1 -1
  67. package/dist/esm/l10n/nl.json.js +2 -1
  68. package/dist/esm/l10n/nl.json.js.map +1 -1
  69. package/dist/esm/nextcloud-vue.css +495 -81
  70. package/dist/esm/store/useObjectStore.js +118 -33
  71. package/dist/esm/store/useObjectStore.js.map +1 -1
  72. package/dist/esm/utils/actionsDispatcher.js +14 -0
  73. package/dist/esm/utils/actionsDispatcher.js.map +1 -1
  74. package/dist/esm/utils/schemaRefSlug.js +19 -3
  75. package/dist/esm/utils/schemaRefSlug.js.map +1 -1
  76. package/dist/esm/utils/validateManifestV2.compiled.js +2 -2
  77. package/dist/esm/utils/validateManifestV2.compiled.js.map +1 -1
  78. package/dist/nextcloud-vue.cjs.js +7388 -6021
  79. package/dist/nextcloud-vue.cjs.js.map +2 -2
  80. package/dist/nextcloud-vue.css +495 -81
  81. package/l10n/en.json +2 -0
  82. package/l10n/nl.json +2 -0
  83. package/package.json +1 -1
  84. package/src/components/CnAppNav/CnAppNav.vue +441 -14
  85. package/src/components/CnAppRoot/CnAppRoot.md +4 -0
  86. package/src/components/CnAppRoot/CnAppRoot.vue +94 -1
  87. package/src/components/CnAuditTrailCard/CnAuditTrailCard.vue +61 -16
  88. package/src/components/CnAuditTrailWidget/CnAuditTrailWidget.vue +22 -1
  89. package/src/components/CnBreadcrumbs/CnBreadcrumbs.vue +14 -0
  90. package/src/components/CnCellRenderer/CnCellRenderer.vue +33 -2
  91. package/src/components/CnDashboardPage/CnDashboardPage.vue +72 -4
  92. package/src/components/CnDataTable/CnDataTable.vue +45 -1
  93. package/src/components/CnDetailPage/CnDetailPage.md +8 -0
  94. package/src/components/CnDetailPage/CnDetailPage.vue +169 -2
  95. package/src/components/CnHeaderWidget/CnHeaderWidget.vue +147 -9
  96. package/src/components/CnIndexPage/CnIndexPage.vue +32 -2
  97. package/src/components/CnObjectListWidget/CnObjectListWidget.vue +7 -1
  98. package/src/components/CnStagesWidget/CnStagesWidget.vue +189 -2
  99. package/src/components/CnStagesWidget/stagesModel.js +5 -2
  100. package/src/components/CnStatWidget/CnStatWidget.vue +89 -7
  101. package/src/components/CnTabsWidget/CnTabsWidget.vue +15 -2
  102. package/src/components/CnWidgetWrapper/CnWidgetWrapper.md +4 -0
  103. package/src/components/CnWidgetWrapper/CnWidgetWrapper.vue +107 -1
  104. package/src/css/detail-page.css +32 -4
  105. package/src/css/kpi-card.css +71 -1
  106. package/src/css/table.css +18 -6
  107. package/src/schemas/app-manifest-v2.schema.json +134 -3
  108. package/src/store/useObjectStore.js +118 -33
  109. package/src/utils/actionsDispatcher.js +14 -0
  110. package/src/utils/schemaRefSlug.js +19 -3
  111. package/src/utils/validateManifestV2.compiled.js +2 -2
@@ -1,70 +1,76 @@
1
- import { resolveComponent, openBlock, createElementBlock, createElementVNode, toDisplayString, createCommentVNode, renderSlot, createBlock, withCtx, createTextVNode, createVNode, createSlots, normalizeClass, Fragment, renderList, mergeProps, resolveDynamicComponent, normalizeProps } from 'vue';
1
+ import { resolveComponent, openBlock, createElementBlock, toDisplayString, createCommentVNode, createElementVNode, renderSlot, createBlock, withCtx, createTextVNode, createVNode, createSlots, normalizeClass, Fragment, renderList, mergeProps, resolveDynamicComponent, normalizeProps } from 'vue';
2
2
 
3
3
  const _hoisted_1 = {
4
4
  class: "cn-dashboard-page",
5
5
  "data-testid": "cn-dashboard-page"
6
6
  };
7
7
  const _hoisted_2 = {
8
+ key: 0,
9
+ class: "hidden-visually",
10
+ "data-testid": "cn-dashboard-page-hidden-title"
11
+ };
12
+ const _hoisted_3 = {
13
+ key: 1,
8
14
  class: "cn-dashboard-page__header",
9
15
  "data-testid": "cn-dashboard-page-header"
10
16
  };
11
- const _hoisted_3 = { class: "cn-dashboard-page__header-left" };
12
- const _hoisted_4 = {
17
+ const _hoisted_4 = { class: "cn-dashboard-page__header-left" };
18
+ const _hoisted_5 = {
13
19
  key: 0,
14
20
  class: "cn-dashboard-page__title-row"
15
21
  };
16
- const _hoisted_5 = {
22
+ const _hoisted_6 = {
17
23
  key: 0,
18
24
  class: "cn-dashboard-page__title"
19
25
  };
20
- const _hoisted_6 = {
26
+ const _hoisted_7 = {
21
27
  key: 1,
22
28
  class: "cn-dashboard-page__description"
23
29
  };
24
- const _hoisted_7 = { class: "cn-dashboard-page__header-actions" };
25
- const _hoisted_8 = ["aria-label"];
26
- const _hoisted_9 = ["aria-pressed", "data-testid", "onClick"];
27
- const _hoisted_10 = {
28
- key: 1,
30
+ const _hoisted_8 = { class: "cn-dashboard-page__header-actions" };
31
+ const _hoisted_9 = ["aria-label"];
32
+ const _hoisted_10 = ["aria-pressed", "data-testid", "onClick"];
33
+ const _hoisted_11 = {
34
+ key: 3,
29
35
  class: "cn-dashboard-page__page-filters",
30
36
  "data-testid": "cn-dashboard-page-page-filters"
31
37
  };
32
- const _hoisted_11 = {
38
+ const _hoisted_12 = {
33
39
  key: 0,
34
40
  class: "cn-dashboard-page__page-filter-label"
35
41
  };
36
- const _hoisted_12 = {
37
- key: 5,
42
+ const _hoisted_13 = {
43
+ key: 7,
38
44
  class: "cn-dashboard-page__empty"
39
45
  };
40
- const _hoisted_13 = {
41
- key: 6,
46
+ const _hoisted_14 = {
47
+ key: 8,
42
48
  class: "cn-dashboard-page__content"
43
49
  };
44
- const _hoisted_14 = {
50
+ const _hoisted_15 = {
45
51
  key: 0,
46
52
  class: "cn-dashboard-page__widget-edit"
47
53
  };
48
- const _hoisted_15 = ["title"];
49
- const _hoisted_16 = {
54
+ const _hoisted_16 = ["title"];
55
+ const _hoisted_17 = {
50
56
  key: 1,
51
57
  class: "cn-dashboard-page__date-chip-preset-spacer"
52
58
  };
53
- const _hoisted_17 = ["title"];
54
- const _hoisted_18 = {
59
+ const _hoisted_18 = ["title"];
60
+ const _hoisted_19 = {
55
61
  key: 1,
56
62
  class: "cn-dashboard-page__date-chip-preset-spacer"
57
63
  };
58
- const _hoisted_19 = {
64
+ const _hoisted_20 = {
59
65
  key: 2,
60
66
  class: "cn-dashboard-page__unknown"
61
67
  };
62
- const _hoisted_20 = ["title"];
63
- const _hoisted_21 = {
68
+ const _hoisted_21 = ["title"];
69
+ const _hoisted_22 = {
64
70
  key: 1,
65
71
  class: "cn-dashboard-page__date-chip-preset-spacer"
66
72
  };
67
- const _hoisted_22 = { class: "cn-dashboard-page__unknown" };
73
+ const _hoisted_23 = { class: "cn-dashboard-page__unknown" };
68
74
 
69
75
  function render(_ctx, _cache, $props, $setup, $data, $options) {
70
76
  const _component_CnActionButtons = resolveComponent("CnActionButtons");
@@ -97,90 +103,95 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
97
103
  const _component_CnWidgetStyleEditorModal = resolveComponent("CnWidgetStyleEditorModal");
98
104
 
99
105
  return (openBlock(), createElementBlock("div", _hoisted_1, [
100
- createElementVNode("div", _hoisted_2, [
101
- createElementVNode("div", _hoisted_3, [
102
- ($props.title || _ctx.$slots['title-meta'])
103
- ? (openBlock(), createElementBlock("div", _hoisted_4, [
104
- ($props.title)
105
- ? (openBlock(), createElementBlock("h2", _hoisted_5, toDisplayString($options.resolvedTitle), 1 /* TEXT */))
106
- : createCommentVNode("v-if", true),
107
- renderSlot(_ctx.$slots, "title-meta")
108
- ]))
109
- : createCommentVNode("v-if", true),
110
- ($props.description)
111
- ? (openBlock(), createElementBlock("p", _hoisted_6, toDisplayString($options.resolvedDescription), 1 /* TEXT */))
112
- : createCommentVNode("v-if", true)
113
- ]),
114
- createElementVNode("div", _hoisted_7, [
115
- ($props.headerActions && $props.headerActions.length)
116
- ? (openBlock(), createBlock(_component_CnActionButtons, {
117
- key: 0,
118
- actions: $props.headerActions,
119
- "data-testid": "cn-dashboard-page-header-actions"
120
- }, null, 8 /* PROPS */, ["actions"]))
121
- : createCommentVNode("v-if", true),
122
- renderSlot(_ctx.$slots, "header-actions"),
123
- renderSlot(_ctx.$slots, "actions"),
124
- ($props.allowEdit)
125
- ? (openBlock(), createBlock(_component_NcButton, {
126
- key: 1,
127
- variant: $data.isEditing ? 'primary' : 'secondary',
128
- onClick: $options.toggleEdit
129
- }, {
130
- icon: withCtx(() => [
131
- (!$data.isEditing)
132
- ? (openBlock(), createBlock(_component_Pencil, {
133
- key: 0,
134
- size: 20
135
- }))
136
- : (openBlock(), createBlock(_component_Check, {
137
- key: 1,
138
- size: 20
139
- }))
140
- ]),
141
- default: withCtx(() => [
142
- createTextVNode(" " + toDisplayString($data.isEditing ? $props.doneLabel : $props.editLabel), 1 /* TEXT */)
143
- ]),
144
- _: 1 /* STABLE */
145
- }, 8 /* PROPS */, ["variant", "onClick"]))
146
- : createCommentVNode("v-if", true),
147
- createVNode(_component_CnBuildiqEditButton),
148
- createVNode(_component_CnActionsMenu, {
149
- showRefresh: $props.showRefresh,
150
- showRequestFeature: $props.showRequestFeature,
151
- showReportBug: $props.showReportBug,
152
- showDocumentation: $props.showDocumentation,
153
- documentationUrl: $props.documentationUrl,
154
- docsAnchor: $options.resolvedPageId,
155
- documentationLabel: $props.documentationLabel,
156
- refreshLabel: $props.refreshLabel,
157
- requestFeatureLabel: $props.requestFeatureLabel,
158
- actionsMenuLabel: $props.actionsMenuLabel,
159
- refreshing: $props.refreshing,
160
- widgetId: $options.resolvedPageId,
161
- title: $props.title,
162
- surface: `dashboard:${$options.resolvedPageId}`,
163
- specRef: $props.specRef,
164
- refreshChannel: "cn:page:refresh",
165
- testidBase: "cn-dashboard-page",
166
- onRefresh: $options.onActionsRefresh,
167
- onRequestFeature: $options.onActionsRequestFeature
168
- }, createSlots({ _: 2 /* DYNAMIC */ }, [
169
- ($options.hasActionItemsSlot)
170
- ? {
171
- name: "action-items",
172
- fn: withCtx(() => [
173
- renderSlot(_ctx.$slots, "action-items")
174
- ]),
175
- key: "0"
176
- }
177
- : undefined
178
- ]), 1032 /* PROPS, DYNAMIC_SLOTS */, ["showRefresh", "showRequestFeature", "showReportBug", "showDocumentation", "documentationUrl", "docsAnchor", "documentationLabel", "refreshLabel", "requestFeatureLabel", "actionsMenuLabel", "refreshing", "widgetId", "title", "surface", "specRef", "onRefresh", "onRequestFeature"])
179
- ])
180
- ]),
106
+ (!$props.showHeader && $props.title)
107
+ ? (openBlock(), createElementBlock("h2", _hoisted_2, toDisplayString($options.resolvedTitle), 1 /* TEXT */))
108
+ : createCommentVNode("v-if", true),
109
+ ($props.showHeader)
110
+ ? (openBlock(), createElementBlock("div", _hoisted_3, [
111
+ createElementVNode("div", _hoisted_4, [
112
+ ($props.title || _ctx.$slots['title-meta'])
113
+ ? (openBlock(), createElementBlock("div", _hoisted_5, [
114
+ ($props.title)
115
+ ? (openBlock(), createElementBlock("h2", _hoisted_6, toDisplayString($options.resolvedTitle), 1 /* TEXT */))
116
+ : createCommentVNode("v-if", true),
117
+ renderSlot(_ctx.$slots, "title-meta")
118
+ ]))
119
+ : createCommentVNode("v-if", true),
120
+ ($props.description)
121
+ ? (openBlock(), createElementBlock("p", _hoisted_7, toDisplayString($options.resolvedDescription), 1 /* TEXT */))
122
+ : createCommentVNode("v-if", true)
123
+ ]),
124
+ createElementVNode("div", _hoisted_8, [
125
+ ($props.headerActions && $props.headerActions.length)
126
+ ? (openBlock(), createBlock(_component_CnActionButtons, {
127
+ key: 0,
128
+ actions: $props.headerActions,
129
+ "data-testid": "cn-dashboard-page-header-actions"
130
+ }, null, 8 /* PROPS */, ["actions"]))
131
+ : createCommentVNode("v-if", true),
132
+ renderSlot(_ctx.$slots, "header-actions"),
133
+ renderSlot(_ctx.$slots, "actions"),
134
+ ($props.allowEdit)
135
+ ? (openBlock(), createBlock(_component_NcButton, {
136
+ key: 1,
137
+ variant: $data.isEditing ? 'primary' : 'secondary',
138
+ onClick: $options.toggleEdit
139
+ }, {
140
+ icon: withCtx(() => [
141
+ (!$data.isEditing)
142
+ ? (openBlock(), createBlock(_component_Pencil, {
143
+ key: 0,
144
+ size: 20
145
+ }))
146
+ : (openBlock(), createBlock(_component_Check, {
147
+ key: 1,
148
+ size: 20
149
+ }))
150
+ ]),
151
+ default: withCtx(() => [
152
+ createTextVNode(" " + toDisplayString($data.isEditing ? $props.doneLabel : $props.editLabel), 1 /* TEXT */)
153
+ ]),
154
+ _: 1 /* STABLE */
155
+ }, 8 /* PROPS */, ["variant", "onClick"]))
156
+ : createCommentVNode("v-if", true),
157
+ createVNode(_component_CnBuildiqEditButton),
158
+ createVNode(_component_CnActionsMenu, {
159
+ showRefresh: $props.showRefresh,
160
+ showRequestFeature: $props.showRequestFeature,
161
+ showReportBug: $props.showReportBug,
162
+ showDocumentation: $props.showDocumentation,
163
+ documentationUrl: $props.documentationUrl,
164
+ docsAnchor: $options.resolvedPageId,
165
+ documentationLabel: $props.documentationLabel,
166
+ refreshLabel: $props.refreshLabel,
167
+ requestFeatureLabel: $props.requestFeatureLabel,
168
+ actionsMenuLabel: $props.actionsMenuLabel,
169
+ refreshing: $props.refreshing,
170
+ widgetId: $options.resolvedPageId,
171
+ title: $props.title,
172
+ surface: `dashboard:${$options.resolvedPageId}`,
173
+ specRef: $props.specRef,
174
+ refreshChannel: "cn:page:refresh",
175
+ testidBase: "cn-dashboard-page",
176
+ onRefresh: $options.onActionsRefresh,
177
+ onRequestFeature: $options.onActionsRequestFeature
178
+ }, createSlots({ _: 2 /* DYNAMIC */ }, [
179
+ ($options.hasActionItemsSlot)
180
+ ? {
181
+ name: "action-items",
182
+ fn: withCtx(() => [
183
+ renderSlot(_ctx.$slots, "action-items")
184
+ ]),
185
+ key: "0"
186
+ }
187
+ : undefined
188
+ ]), 1032 /* PROPS, DYNAMIC_SLOTS */, ["showRefresh", "showRequestFeature", "showReportBug", "showDocumentation", "documentationUrl", "docsAnchor", "documentationLabel", "refreshLabel", "requestFeatureLabel", "actionsMenuLabel", "refreshing", "widgetId", "title", "surface", "specRef", "onRefresh", "onRequestFeature"])
189
+ ])
190
+ ]))
191
+ : createCommentVNode("v-if", true),
181
192
  ($options.showHeaderDateRange)
182
193
  ? (openBlock(), createElementBlock("div", {
183
- key: 0,
194
+ key: 2,
184
195
  class: normalizeClass(["cn-dashboard-page__date-range", { 'cn-dashboard-page__date-range--pills': $options.dateRangeControl === 'pills' }]),
185
196
  "data-testid": "cn-dashboard-page-date-range"
186
197
  }, [
@@ -200,7 +211,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
200
211
  "aria-pressed": String(Boolean($data.currentRange && $data.currentRange.preset === preset.id)),
201
212
  "data-testid": `cn-dashboard-page-date-pill-${preset.id}`,
202
213
  onClick: $event => ($options.onPillPick(preset))
203
- }, toDisplayString(preset.label), 11 /* TEXT, CLASS, PROPS */, _hoisted_9))
214
+ }, toDisplayString(preset.label), 11 /* TEXT, CLASS, PROPS */, _hoisted_10))
204
215
  }), 128 /* KEYED_FRAGMENT */)),
205
216
  ($options.hasCustomPreset)
206
217
  ? (openBlock(), createBlock(_component_NcActions, {
@@ -234,7 +245,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
234
245
  _: 1 /* STABLE */
235
246
  }))
236
247
  : createCommentVNode("v-if", true)
237
- ], 8 /* PROPS */, _hoisted_8))
248
+ ], 8 /* PROPS */, _hoisted_9))
238
249
  : (openBlock(), createBlock(_component_CnDateRangePicker, {
239
250
  key: 1,
240
251
  value: $data.currentRange,
@@ -244,14 +255,14 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
244
255
  ], 2 /* CLASS */))
245
256
  : createCommentVNode("v-if", true),
246
257
  ($props.pageFilters && $props.pageFilters.length)
247
- ? (openBlock(), createElementBlock("div", _hoisted_10, [
258
+ ? (openBlock(), createElementBlock("div", _hoisted_11, [
248
259
  (openBlock(true), createElementBlock(Fragment, null, renderList($props.pageFilters, (pf) => {
249
260
  return (openBlock(), createElementBlock("label", {
250
261
  key: pf.key,
251
262
  class: "cn-dashboard-page__page-filter"
252
263
  }, [
253
264
  (pf.label)
254
- ? (openBlock(), createElementBlock("span", _hoisted_11, toDisplayString(pf.label), 1 /* TEXT */))
265
+ ? (openBlock(), createElementBlock("span", _hoisted_12, toDisplayString(pf.label), 1 /* TEXT */))
255
266
  : createCommentVNode("v-if", true),
256
267
  createVNode(_component_NcSelect, {
257
268
  modelValue: $options.selectedPageFilterOption(pf),
@@ -268,7 +279,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
268
279
  : createCommentVNode("v-if", true),
269
280
  ($options.hasBodyWidgets)
270
281
  ? (openBlock(), createBlock(_component_CnBodySections, {
271
- key: 2,
282
+ key: 4,
272
283
  sections: $props.bodyWidgets,
273
284
  context: $options.sectionContext,
274
285
  placement: "before-grid",
@@ -276,11 +287,11 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
276
287
  }, null, 8 /* PROPS */, ["sections", "context"]))
277
288
  : createCommentVNode("v-if", true),
278
289
  ($props.loading)
279
- ? (openBlock(), createBlock(_component_NcLoadingIcon, { key: 3 }))
290
+ ? (openBlock(), createBlock(_component_NcLoadingIcon, { key: 5 }))
280
291
  : (!$data.widgetConditionsSettled && !$options.gridEditable)
281
- ? (openBlock(), createBlock(_component_NcLoadingIcon, { key: 4 }))
292
+ ? (openBlock(), createBlock(_component_NcLoadingIcon, { key: 6 }))
282
293
  : (!$options.hasWidgets && !$options.hasBodyWidgets)
283
- ? (openBlock(), createElementBlock("div", _hoisted_12, [
294
+ ? (openBlock(), createElementBlock("div", _hoisted_13, [
284
295
  renderSlot(_ctx.$slots, "empty", {}, () => [
285
296
  createVNode(_component_NcEmptyContent, { description: $props.emptyLabel }, {
286
297
  icon: withCtx(() => [
@@ -291,7 +302,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
291
302
  ])
292
303
  ]))
293
304
  : ($options.widgetRefItems.length > 0)
294
- ? (openBlock(), createElementBlock("div", _hoisted_13, [
305
+ ? (openBlock(), createElementBlock("div", _hoisted_14, [
295
306
  (openBlock(true), createElementBlock(Fragment, null, renderList($options.widgetRefItems, (item, idx) => {
296
307
  return (openBlock(), createBlock(_component_CnWidgetRefItem, {
297
308
  key: item.ref + '-' + idx,
@@ -311,7 +322,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
311
322
  }, {
312
323
  widget: withCtx(({ item }) => [
313
324
  ($options.gridEditable)
314
- ? (openBlock(), createElementBlock("div", _hoisted_14, [
325
+ ? (openBlock(), createElementBlock("div", _hoisted_15, [
315
326
  createVNode(_component_NcButton, {
316
327
  variant: "tertiary",
317
328
  "aria-label": _ctx.t('nextcloud-vue', 'Configure widget'),
@@ -374,6 +385,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
374
385
  borderless: $options.widgetBorderless(item),
375
386
  flush: item.flush !== false,
376
387
  buttons: $options.getWidgetButtons(item),
388
+ headerLink: $options.getWidgetHeaderLink(item),
377
389
  styleConfig: item.styleConfig || {},
378
390
  titleIconPosition: $options.getWidgetTitleIconPosition(item),
379
391
  titleIconColor: $options.getWidgetTitleIconColor(item),
@@ -433,7 +445,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
433
445
  createElementVNode("span", {
434
446
  class: "cn-dashboard-page__date-chip",
435
447
  title: $data.dateChipTitle
436
- }, toDisplayString($options.dashboardRangeChipLabel), 9 /* TEXT, PROPS */, _hoisted_15)
448
+ }, toDisplayString($options.dashboardRangeChipLabel), 9 /* TEXT, PROPS */, _hoisted_16)
437
449
  ]),
438
450
  default: withCtx(() => [
439
451
  (openBlock(true), createElementBlock(Fragment, null, renderList($options.effectivePresets, (preset) => {
@@ -448,7 +460,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
448
460
  key: 0,
449
461
  size: 16
450
462
  }))
451
- : (openBlock(), createElementBlock("span", _hoisted_16))
463
+ : (openBlock(), createElementBlock("span", _hoisted_17))
452
464
  ]),
453
465
  default: withCtx(() => [
454
466
  createTextVNode(" " + toDisplayString(preset.label), 1 /* TEXT */)
@@ -478,7 +490,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
478
490
  key: "2"
479
491
  }
480
492
  : undefined
481
- ]), 1032 /* PROPS, DYNAMIC_SLOTS */, ["widgetId", "title", "iconUrl", "iconClass", "showTitle", "borderless", "flush", "buttons", "styleConfig", "titleIconPosition", "titleIconColor", "titleIconVariant", "showRefresh", "showActions", "documentationUrl", "docsAnchor", "onRefresh", "onRequestFeature"]))
493
+ ]), 1032 /* PROPS, DYNAMIC_SLOTS */, ["widgetId", "title", "iconUrl", "iconClass", "showTitle", "borderless", "flush", "buttons", "headerLink", "styleConfig", "titleIconPosition", "titleIconColor", "titleIconVariant", "showRefresh", "showActions", "documentationUrl", "docsAnchor", "onRefresh", "onRequestFeature"]))
482
494
  : ($options.isChart(item))
483
495
  ? (openBlock(), createBlock(_component_CnWidgetWrapper, {
484
496
  key: 4,
@@ -488,9 +500,11 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
488
500
  iconUrl: $options.getWidgetIconUrl(item),
489
501
  iconClass: $options.getWidgetIconClass(item),
490
502
  showTitle: $options.widgetShowTitle(item),
503
+ showActions: $options.widgetShowActions(item),
491
504
  borderless: $options.widgetBorderless(item),
492
505
  flush: item.flush !== false,
493
506
  buttons: $options.getWidgetButtons(item),
507
+ headerLink: $options.getWidgetHeaderLink(item),
494
508
  styleConfig: item.styleConfig || {},
495
509
  titleIconPosition: $options.getWidgetTitleIconPosition(item),
496
510
  titleIconColor: $options.getWidgetTitleIconColor(item),
@@ -525,7 +539,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
525
539
  createElementVNode("span", {
526
540
  class: "cn-dashboard-page__date-chip",
527
541
  title: $data.dateChipTitle
528
- }, toDisplayString($options.formatChartDateRange(item) || $options.dashboardRangeChipLabel), 9 /* TEXT, PROPS */, _hoisted_17)
542
+ }, toDisplayString($options.formatChartDateRange(item) || $options.dashboardRangeChipLabel), 9 /* TEXT, PROPS */, _hoisted_18)
529
543
  ]),
530
544
  default: withCtx(() => [
531
545
  (openBlock(true), createElementBlock(Fragment, null, renderList($options.effectivePresets, (preset) => {
@@ -540,7 +554,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
540
554
  key: 0,
541
555
  size: 16
542
556
  }))
543
- : (openBlock(), createElementBlock("span", _hoisted_18))
557
+ : (openBlock(), createElementBlock("span", _hoisted_19))
544
558
  ]),
545
559
  default: withCtx(() => [
546
560
  createTextVNode(" " + toDisplayString(preset.label), 1 /* TEXT */)
@@ -570,7 +584,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
570
584
  key: "0"
571
585
  }
572
586
  : undefined
573
- ]), 1032 /* PROPS, DYNAMIC_SLOTS */, ["widgetId", "class", "title", "iconUrl", "iconClass", "showTitle", "borderless", "flush", "buttons", "styleConfig", "titleIconPosition", "titleIconColor", "titleIconVariant", "showRefresh", "documentationUrl", "docsAnchor", "onRefresh", "onRequestFeature"]))
587
+ ]), 1032 /* PROPS, DYNAMIC_SLOTS */, ["widgetId", "class", "title", "iconUrl", "iconClass", "showTitle", "showActions", "borderless", "flush", "buttons", "headerLink", "styleConfig", "titleIconPosition", "titleIconColor", "titleIconVariant", "showRefresh", "documentationUrl", "docsAnchor", "onRefresh", "onRequestFeature"]))
574
588
  : ($options.isStatsBlock(item))
575
589
  ? (openBlock(), createBlock(_component_CnWidgetWrapper, {
576
590
  key: 5,
@@ -584,6 +598,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
584
598
  flush: item.flush !== false,
585
599
  class: normalizeClass({ 'cn-dashboard-page__card-fit': $options.isCardWidget(item) }),
586
600
  buttons: $options.getWidgetButtons(item),
601
+ headerLink: $options.getWidgetHeaderLink(item),
587
602
  styleConfig: item.styleConfig || {},
588
603
  documentationUrl: $options.getWidgetDocumentationUrl(item),
589
604
  docsAnchor: $options.getWidgetDocsAnchor(item),
@@ -597,7 +612,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
597
612
  }), null, 16 /* FULL_PROPS */, ["title", "data-source"])
598
613
  ]),
599
614
  _: 2 /* DYNAMIC */
600
- }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["widgetId", "title", "iconUrl", "iconClass", "showTitle", "showActions", "borderless", "flush", "class", "buttons", "styleConfig", "documentationUrl", "docsAnchor", "onRefresh", "onRequestFeature"]))
615
+ }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["widgetId", "title", "iconUrl", "iconClass", "showTitle", "showActions", "borderless", "flush", "class", "buttons", "headerLink", "styleConfig", "documentationUrl", "docsAnchor", "onRefresh", "onRequestFeature"]))
601
616
  : ($options.isIntegration(item))
602
617
  ? (openBlock(), createBlock(_component_CnWidgetWrapper, {
603
618
  key: 6,
@@ -606,9 +621,11 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
606
621
  iconUrl: $options.getWidgetIconUrl(item),
607
622
  iconClass: $options.getWidgetIconClass(item),
608
623
  showTitle: $options.widgetShowTitle(item),
624
+ showActions: $options.widgetShowActions(item),
609
625
  borderless: $options.widgetBorderless(item),
610
626
  flush: item.flush !== false,
611
627
  buttons: $options.getWidgetButtons(item),
628
+ headerLink: $options.getWidgetHeaderLink(item),
612
629
  styleConfig: item.styleConfig || {},
613
630
  titleIconPosition: $options.getWidgetTitleIconPosition(item),
614
631
  titleIconColor: $options.getWidgetTitleIconColor(item),
@@ -628,10 +645,10 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
628
645
  }, null, 8 /* PROPS */, ["provider", "mountProps"]))
629
646
  : ($options.resolveIntegrationWidget(item))
630
647
  ? (openBlock(), createBlock(resolveDynamicComponent($options.resolveIntegrationWidget(item)), normalizeProps(mergeProps({ key: 1 }, $options.getIntegrationProps(item))), null, 16 /* FULL_PROPS */))
631
- : (openBlock(), createElementBlock("div", _hoisted_19, toDisplayString($props.unavailableLabel), 1 /* TEXT */))
648
+ : (openBlock(), createElementBlock("div", _hoisted_20, toDisplayString($props.unavailableLabel), 1 /* TEXT */))
632
649
  ]),
633
650
  _: 2 /* DYNAMIC */
634
- }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["widgetId", "title", "iconUrl", "iconClass", "showTitle", "borderless", "flush", "buttons", "styleConfig", "titleIconPosition", "titleIconColor", "titleIconVariant", "showRefresh", "documentationUrl", "docsAnchor", "onRefresh", "onRequestFeature"]))
651
+ }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["widgetId", "title", "iconUrl", "iconClass", "showTitle", "showActions", "borderless", "flush", "buttons", "headerLink", "styleConfig", "titleIconPosition", "titleIconColor", "titleIconVariant", "showRefresh", "documentationUrl", "docsAnchor", "onRefresh", "onRequestFeature"]))
635
652
  : ($options.isNcWidget(item))
636
653
  ? (openBlock(), createBlock(_component_CnWidgetWrapper, {
637
654
  key: 7,
@@ -640,7 +657,9 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
640
657
  iconUrl: $options.getWidgetIconUrl(item),
641
658
  iconClass: $options.getWidgetIconClass(item),
642
659
  showTitle: $options.widgetShowTitle(item),
660
+ showActions: $options.widgetShowActions(item),
643
661
  buttons: $options.getWidgetButtons(item),
662
+ headerLink: $options.getWidgetHeaderLink(item),
644
663
  styleConfig: item.styleConfig || {},
645
664
  showRefresh: $options.getWidgetShowRefresh(item),
646
665
  documentationUrl: $options.getWidgetDocumentationUrl(item),
@@ -655,7 +674,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
655
674
  }, null, 8 /* PROPS */, ["widget", "unavailableText"])
656
675
  ]),
657
676
  _: 2 /* DYNAMIC */
658
- }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["widgetId", "title", "iconUrl", "iconClass", "showTitle", "buttons", "styleConfig", "showRefresh", "documentationUrl", "docsAnchor", "onRefresh", "onRequestFeature"]))
677
+ }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["widgetId", "title", "iconUrl", "iconClass", "showTitle", "showActions", "buttons", "headerLink", "styleConfig", "showRefresh", "documentationUrl", "docsAnchor", "onRefresh", "onRequestFeature"]))
659
678
  : ($options.registryRenderer(item))
660
679
  ? (openBlock(), createBlock(_component_CnWidgetWrapper, {
661
680
  key: 8,
@@ -671,6 +690,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
671
690
  titleIconVariant: $options.getWidgetTitleIconVariant(item),
672
691
  class: normalizeClass({ 'cn-dashboard-page__card-fit': $options.isCardWidget(item) }),
673
692
  buttons: $options.getWidgetButtons(item),
693
+ headerLink: $options.getWidgetHeaderLink(item),
674
694
  styleConfig: item.styleConfig || {},
675
695
  documentationUrl: $options.getWidgetDocumentationUrl(item),
676
696
  docsAnchor: $options.getWidgetDocsAnchor(item),
@@ -701,7 +721,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
701
721
  createElementVNode("span", {
702
722
  class: "cn-dashboard-page__date-chip",
703
723
  title: $data.dateChipTitle
704
- }, toDisplayString($options.dashboardRangeChipLabel), 9 /* TEXT, PROPS */, _hoisted_20)
724
+ }, toDisplayString($options.dashboardRangeChipLabel), 9 /* TEXT, PROPS */, _hoisted_21)
705
725
  ]),
706
726
  default: withCtx(() => [
707
727
  (openBlock(true), createElementBlock(Fragment, null, renderList($options.effectivePresets, (preset) => {
@@ -716,7 +736,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
716
736
  key: 0,
717
737
  size: 16
718
738
  }))
719
- : (openBlock(), createElementBlock("span", _hoisted_21))
739
+ : (openBlock(), createElementBlock("span", _hoisted_22))
720
740
  ]),
721
741
  default: withCtx(() => [
722
742
  createTextVNode(" " + toDisplayString(preset.label), 1 /* TEXT */)
@@ -746,7 +766,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
746
766
  key: "0"
747
767
  }
748
768
  : undefined
749
- ]), 1032 /* PROPS, DYNAMIC_SLOTS */, ["widgetId", "title", "showTitle", "showActions", "showRefresh", "borderless", "flush", "titleIconPosition", "titleIconColor", "titleIconVariant", "class", "buttons", "styleConfig", "documentationUrl", "docsAnchor", "onRefresh", "onRequestFeature"]))
769
+ ]), 1032 /* PROPS, DYNAMIC_SLOTS */, ["widgetId", "title", "showTitle", "showActions", "showRefresh", "borderless", "flush", "titleIconPosition", "titleIconColor", "titleIconVariant", "class", "buttons", "headerLink", "styleConfig", "documentationUrl", "docsAnchor", "onRefresh", "onRequestFeature"]))
750
770
  : (openBlock(), createBlock(_component_CnWidgetWrapper, {
751
771
  key: 9,
752
772
  title: $options.getWidgetTitle(item),
@@ -754,7 +774,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
754
774
  showRefresh: false
755
775
  }, {
756
776
  default: withCtx(() => [
757
- createElementVNode("div", _hoisted_22, toDisplayString($props.unavailableLabel), 1 /* TEXT */)
777
+ createElementVNode("div", _hoisted_23, toDisplayString($props.unavailableLabel), 1 /* TEXT */)
758
778
  ]),
759
779
  _: 1 /* STABLE */
760
780
  }, 8 /* PROPS */, ["title", "showTitle"]))
@@ -763,7 +783,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
763
783
  }, 8 /* PROPS */, ["layout", "editable", "columns", "cellHeight", "margin", "onLayoutChange"])),
764
784
  ($options.hasBodyWidgets)
765
785
  ? (openBlock(), createBlock(_component_CnBodySections, {
766
- key: 8,
786
+ key: 10,
767
787
  sections: $props.bodyWidgets,
768
788
  context: $options.sectionContext,
769
789
  placement: "after-grid",
@@ -772,7 +792,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
772
792
  : createCommentVNode("v-if", true),
773
793
  ($options.hasBodyWidgets)
774
794
  ? (openBlock(), createBlock(_component_CnBodySections, {
775
- key: 9,
795
+ key: 11,
776
796
  sections: $options.endPlacementSections,
777
797
  context: $options.sectionContext,
778
798
  placement: null,
@@ -781,7 +801,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
781
801
  : createCommentVNode("v-if", true),
782
802
  ($data.showWidgetConfig)
783
803
  ? (openBlock(), createBlock(_component_CnWidgetStyleEditorModal, {
784
- key: 10,
804
+ key: 12,
785
805
  show: $data.showWidgetConfig,
786
806
  widget: $options.configWidget,
787
807
  deletable: true,