@conduction/nextcloud-vue 2.62.0 → 2.64.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 (209) hide show
  1. package/dist/esm/components/CnAdminActionCard/CnAdminActionCard.vue.js +10 -0
  2. package/dist/esm/components/CnAdminActionCard/CnAdminActionCard.vue.js.map +1 -0
  3. package/dist/esm/components/CnAdminActionCard/CnAdminActionCard.vue2.js +189 -0
  4. package/dist/esm/components/CnAdminActionCard/CnAdminActionCard.vue2.js.map +1 -0
  5. package/dist/esm/components/CnAdminActionCard/CnAdminActionCard.vue3.js +72 -0
  6. package/dist/esm/components/CnAdminActionCard/CnAdminActionCard.vue3.js.map +1 -0
  7. package/dist/esm/components/CnAppNav/CnAppNav.vue2.js +425 -39
  8. package/dist/esm/components/CnAppNav/CnAppNav.vue2.js.map +1 -1
  9. package/dist/esm/components/CnAppNav/CnAppNav.vue3.js +119 -42
  10. package/dist/esm/components/CnAppNav/CnAppNav.vue3.js.map +1 -1
  11. package/dist/esm/components/CnAppRoot/CnAppRoot.vue2.js +186 -9
  12. package/dist/esm/components/CnAppRoot/CnAppRoot.vue2.js.map +1 -1
  13. package/dist/esm/components/CnAppRoot/CnAppRoot.vue3.js +65 -42
  14. package/dist/esm/components/CnAppRoot/CnAppRoot.vue3.js.map +1 -1
  15. package/dist/esm/components/CnAuditTrailCard/CnAuditTrailCard.vue2.js +61 -16
  16. package/dist/esm/components/CnAuditTrailCard/CnAuditTrailCard.vue2.js.map +1 -1
  17. package/dist/esm/components/CnAuditTrailCard/CnAuditTrailCard.vue3.js.map +1 -1
  18. package/dist/esm/components/CnAuditTrailWidget/CnAuditTrailWidget.vue2.js +20 -0
  19. package/dist/esm/components/CnAuditTrailWidget/CnAuditTrailWidget.vue2.js.map +1 -1
  20. package/dist/esm/components/CnAuditTrailWidget/CnAuditTrailWidget.vue3.js +3 -2
  21. package/dist/esm/components/CnAuditTrailWidget/CnAuditTrailWidget.vue3.js.map +1 -1
  22. package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue2.js +33 -2
  23. package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue2.js.map +1 -1
  24. package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue3.js.map +1 -1
  25. package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue2.js.map +1 -1
  26. package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue3.js +53 -37
  27. package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue3.js.map +1 -1
  28. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js +29 -0
  29. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js.map +1 -1
  30. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js +152 -135
  31. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js.map +1 -1
  32. package/dist/esm/components/CnDataTable/CnColumnFilterPopover.vue.js +10 -0
  33. package/dist/esm/components/CnDataTable/CnColumnFilterPopover.vue.js.map +1 -0
  34. package/dist/esm/components/CnDataTable/CnColumnFilterPopover.vue2.js +293 -0
  35. package/dist/esm/components/CnDataTable/CnColumnFilterPopover.vue2.js.map +1 -0
  36. package/dist/esm/components/CnDataTable/CnColumnFilterPopover.vue3.js +189 -0
  37. package/dist/esm/components/CnDataTable/CnColumnFilterPopover.vue3.js.map +1 -0
  38. package/dist/esm/components/CnDataTable/CnDataTable.vue2.js +253 -9
  39. package/dist/esm/components/CnDataTable/CnDataTable.vue2.js.map +1 -1
  40. package/dist/esm/components/CnDataTable/CnDataTable.vue3.js +126 -50
  41. package/dist/esm/components/CnDataTable/CnDataTable.vue3.js.map +1 -1
  42. package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js +66 -14
  43. package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js.map +1 -1
  44. package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js +23 -14
  45. package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js.map +1 -1
  46. package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue2.js.map +1 -1
  47. package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue3.js +2 -1
  48. package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue3.js.map +1 -1
  49. package/dist/esm/components/CnFieldHelper/CnFieldHelper.vue2.js +3 -1
  50. package/dist/esm/components/CnFieldHelper/CnFieldHelper.vue2.js.map +1 -1
  51. package/dist/esm/components/CnFieldHelper/CnFieldHelper.vue3.js +1 -1
  52. package/dist/esm/components/CnFieldHelper/CnFieldHelper.vue3.js.map +1 -1
  53. package/dist/esm/components/CnFormDialog/CnFormDialog.vue2.js +234 -9
  54. package/dist/esm/components/CnFormDialog/CnFormDialog.vue2.js.map +1 -1
  55. package/dist/esm/components/CnFormDialog/CnFormDialog.vue3.js +96 -57
  56. package/dist/esm/components/CnFormDialog/CnFormDialog.vue3.js.map +1 -1
  57. package/dist/esm/components/CnHeaderWidget/CnHeaderWidget.vue2.js +81 -4
  58. package/dist/esm/components/CnHeaderWidget/CnHeaderWidget.vue2.js.map +1 -1
  59. package/dist/esm/components/CnHeaderWidget/CnHeaderWidget.vue3.js +22 -5
  60. package/dist/esm/components/CnHeaderWidget/CnHeaderWidget.vue3.js.map +1 -1
  61. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js +81 -2
  62. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js.map +1 -1
  63. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js +7 -3
  64. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js.map +1 -1
  65. package/dist/esm/components/CnIndexPage/selfModeActions.js +3 -3
  66. package/dist/esm/components/CnIndexPage/selfModeActions.js.map +1 -1
  67. package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue2.js +41 -2
  68. package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue2.js.map +1 -1
  69. package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue3.js +8 -3
  70. package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue3.js.map +1 -1
  71. package/dist/esm/components/CnResourceSelect/CnResourceSelect.vue2.js +121 -12
  72. package/dist/esm/components/CnResourceSelect/CnResourceSelect.vue2.js.map +1 -1
  73. package/dist/esm/components/CnResourceSelect/CnResourceSelect.vue3.js +3 -1
  74. package/dist/esm/components/CnResourceSelect/CnResourceSelect.vue3.js.map +1 -1
  75. package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue2.js +326 -1
  76. package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue2.js.map +1 -1
  77. package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue3.js +112 -26
  78. package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue3.js.map +1 -1
  79. package/dist/esm/components/CnStagesWidget/CnStagesWidget.vue2.js +63 -2
  80. package/dist/esm/components/CnStagesWidget/CnStagesWidget.vue2.js.map +1 -1
  81. package/dist/esm/components/CnStagesWidget/CnStagesWidget.vue3.js +96 -37
  82. package/dist/esm/components/CnStagesWidget/CnStagesWidget.vue3.js.map +1 -1
  83. package/dist/esm/components/CnStagesWidget/stagesModel.js +5 -2
  84. package/dist/esm/components/CnStagesWidget/stagesModel.js.map +1 -1
  85. package/dist/esm/components/CnStatWidget/CnStatWidget.vue2.js +52 -2
  86. package/dist/esm/components/CnStatWidget/CnStatWidget.vue2.js.map +1 -1
  87. package/dist/esm/components/CnStatWidget/CnStatWidget.vue3.js +6 -6
  88. package/dist/esm/components/CnStatWidget/CnStatWidget.vue3.js.map +1 -1
  89. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue2.js +14 -2
  90. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue2.js.map +1 -1
  91. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue3.js +2 -1
  92. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue3.js.map +1 -1
  93. package/dist/esm/components/CnTimelineWidget/CnTimelineWidget.vue.js +10 -0
  94. package/dist/esm/components/CnTimelineWidget/CnTimelineWidget.vue.js.map +1 -0
  95. package/dist/esm/components/CnTimelineWidget/CnTimelineWidget.vue2.js +337 -0
  96. package/dist/esm/components/CnTimelineWidget/CnTimelineWidget.vue2.js.map +1 -0
  97. package/dist/esm/components/CnTimelineWidget/CnTimelineWidget.vue3.js +102 -0
  98. package/dist/esm/components/CnTimelineWidget/CnTimelineWidget.vue3.js.map +1 -0
  99. package/dist/esm/components/CnTimelineWidget/dashboardRegistration.js +34 -0
  100. package/dist/esm/components/CnTimelineWidget/dashboardRegistration.js.map +1 -0
  101. package/dist/esm/components/CnWalkthrough/CnWalkthrough.vue2.js +131 -8
  102. package/dist/esm/components/CnWalkthrough/CnWalkthrough.vue2.js.map +1 -1
  103. package/dist/esm/components/CnWalkthrough/CnWalkthrough.vue3.js +40 -38
  104. package/dist/esm/components/CnWalkthrough/CnWalkthrough.vue3.js.map +1 -1
  105. package/dist/esm/components/CnWidgetGrid/builtInWidgets.js +8 -6
  106. package/dist/esm/components/CnWidgetGrid/builtInWidgets.js.map +1 -1
  107. package/dist/esm/components/CnWidgetGrid/registerDashboardWidgets.js +1 -0
  108. package/dist/esm/components/CnWidgetGrid/registerDashboardWidgets.js.map +1 -1
  109. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue2.js +73 -1
  110. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue2.js.map +1 -1
  111. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue3.js +14 -2
  112. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue3.js.map +1 -1
  113. package/dist/esm/components/CnWizardDialog/CnWizardDialog.vue2.js +19 -0
  114. package/dist/esm/components/CnWizardDialog/CnWizardDialog.vue2.js.map +1 -1
  115. package/dist/esm/components/CnWizardDialog/CnWizardDialog.vue3.js +1 -1
  116. package/dist/esm/components/CnWizardDialog/CnWizardDialog.vue3.js.map +1 -1
  117. package/dist/esm/composables/useDependencyCheck.js +65 -0
  118. package/dist/esm/composables/useDependencyCheck.js.map +1 -0
  119. package/dist/esm/composables/useWalkthrough.js +218 -6
  120. package/dist/esm/composables/useWalkthrough.js.map +1 -1
  121. package/dist/esm/index.js +2 -0
  122. package/dist/esm/index.js.map +1 -1
  123. package/dist/esm/l10n/en.json.js +45 -1
  124. package/dist/esm/l10n/en.json.js.map +1 -1
  125. package/dist/esm/l10n/nl.json.js +45 -1
  126. package/dist/esm/l10n/nl.json.js.map +1 -1
  127. package/dist/esm/nextcloud-vue.css +780 -81
  128. package/dist/esm/store/useObjectStore.js +8 -0
  129. package/dist/esm/store/useObjectStore.js.map +1 -1
  130. package/dist/esm/utils/columnFilters.js +311 -0
  131. package/dist/esm/utils/columnFilters.js.map +1 -0
  132. package/dist/esm/utils/groupAutocomplete.js +123 -0
  133. package/dist/esm/utils/groupAutocomplete.js.map +1 -0
  134. package/dist/esm/utils/libraryWidgetKeys.js +2 -0
  135. package/dist/esm/utils/libraryWidgetKeys.js.map +1 -1
  136. package/dist/esm/utils/pickerOptions.js +198 -0
  137. package/dist/esm/utils/pickerOptions.js.map +1 -0
  138. package/dist/esm/utils/schema.js +83 -7
  139. package/dist/esm/utils/schema.js.map +1 -1
  140. package/dist/esm/utils/schemaRefSlug.js +19 -3
  141. package/dist/esm/utils/schemaRefSlug.js.map +1 -1
  142. package/dist/esm/utils/timelineEvents.js +174 -0
  143. package/dist/esm/utils/timelineEvents.js.map +1 -0
  144. package/dist/esm/utils/validateManifestV2.compiled.js +2 -2
  145. package/dist/esm/utils/validateManifestV2.compiled.js.map +1 -1
  146. package/dist/esm/utils/walkthroughSignals.js +88 -0
  147. package/dist/esm/utils/walkthroughSignals.js.map +1 -0
  148. package/dist/nextcloud-vue.cjs.js +13088 -7937
  149. package/dist/nextcloud-vue.cjs.js.map +2 -2
  150. package/dist/nextcloud-vue.css +780 -81
  151. package/l10n/en.json +45 -0
  152. package/l10n/nl.json +45 -0
  153. package/package.json +1 -1
  154. package/src/components/CnAdminActionCard/CnAdminActionCard.vue +234 -0
  155. package/src/components/CnAdminActionCard/index.js +4 -0
  156. package/src/components/CnAppNav/CnAppNav.vue +568 -43
  157. package/src/components/CnAppRoot/CnAppRoot.md +4 -0
  158. package/src/components/CnAppRoot/CnAppRoot.vue +223 -16
  159. package/src/components/CnAuditTrailCard/CnAuditTrailCard.vue +61 -16
  160. package/src/components/CnAuditTrailWidget/CnAuditTrailWidget.vue +22 -1
  161. package/src/components/CnCellRenderer/CnCellRenderer.vue +33 -2
  162. package/src/components/CnChoiceCards/CnChoiceCards.vue +56 -31
  163. package/src/components/CnDashboardPage/CnDashboardPage.vue +45 -4
  164. package/src/components/CnDataTable/CnColumnFilterPopover.vue +524 -0
  165. package/src/components/CnDataTable/CnDataTable.md +3 -0
  166. package/src/components/CnDataTable/CnDataTable.vue +305 -5
  167. package/src/components/CnDetailPage/CnDetailPage.md +4 -0
  168. package/src/components/CnDetailPage/CnDetailPage.vue +60 -1
  169. package/src/components/CnDetailWidgetHost/CnDetailWidgetHost.vue +2 -2
  170. package/src/components/CnFieldHelper/CnFieldHelper.vue +4 -2
  171. package/src/components/CnFormDialog/CnFormDialog.vue +290 -31
  172. package/src/components/CnHeaderWidget/CnHeaderWidget.vue +116 -6
  173. package/src/components/CnIndexPage/CnIndexPage.vue +87 -4
  174. package/src/components/CnIndexPage/selfModeActions.js +3 -3
  175. package/src/components/CnObjectListWidget/CnObjectListWidget.vue +46 -2
  176. package/src/components/CnResourceSelect/CnResourceSelect.vue +123 -12
  177. package/src/components/CnSetupWizard/CnSetupWizard.vue +392 -3
  178. package/src/components/CnStagesWidget/CnStagesWidget.vue +180 -2
  179. package/src/components/CnStagesWidget/stagesModel.js +5 -2
  180. package/src/components/CnStatWidget/CnStatWidget.vue +57 -3
  181. package/src/components/CnTabsWidget/CnTabsWidget.vue +15 -2
  182. package/src/components/CnTimelineWidget/CnTimelineWidget.vue +477 -0
  183. package/src/components/CnTimelineWidget/dashboardRegistration.js +32 -0
  184. package/src/components/CnTimelineWidget/index.js +4 -0
  185. package/src/components/CnWalkthrough/CnWalkthrough.vue +143 -10
  186. package/src/components/CnWidgetGrid/builtInWidgets.js +2 -0
  187. package/src/components/CnWidgetGrid/registerDashboardWidgets.js +1 -0
  188. package/src/components/CnWidgetWrapper/CnWidgetWrapper.md +4 -0
  189. package/src/components/CnWidgetWrapper/CnWidgetWrapper.vue +107 -1
  190. package/src/components/CnWizardDialog/CnWizardDialog.vue +20 -1
  191. package/src/components/index.js +2 -0
  192. package/src/composables/useDependencyCheck.js +61 -0
  193. package/src/composables/useWalkthrough.js +217 -5
  194. package/src/css/dashboard.css +49 -0
  195. package/src/css/detail-page.css +29 -4
  196. package/src/css/kpi-card.css +24 -1
  197. package/src/css/table.css +99 -6
  198. package/src/index.js +2 -0
  199. package/src/schemas/app-manifest-v2.schema.json +135 -3
  200. package/src/store/useObjectStore.js +8 -0
  201. package/src/utils/columnFilters.js +324 -0
  202. package/src/utils/groupAutocomplete.js +119 -0
  203. package/src/utils/libraryWidgetKeys.js +2 -0
  204. package/src/utils/pickerOptions.js +194 -0
  205. package/src/utils/schema.js +83 -7
  206. package/src/utils/schemaRefSlug.js +19 -3
  207. package/src/utils/timelineEvents.js +171 -0
  208. package/src/utils/validateManifestV2.compiled.js +2 -2
  209. package/src/utils/walkthroughSignals.js +94 -0
@@ -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'),
@@ -334,10 +345,10 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
334
345
  createVNode(_component_NcEmptyContent, {
335
346
  name: $options.installAppLabel($options.missingRequiredApp(item)),
336
347
  description: _ctx.t('nextcloud-vue', 'This widget shows data from another app that isn\'t installed yet.'),
337
- class: "cn-dashboard-page__requires-app"
348
+ class: "cn-dashboard-page__requires-app cn-requires-app"
338
349
  }, {
339
350
  icon: withCtx(() => [
340
- createVNode(_component_Download, { size: 32 })
351
+ createVNode(_component_Download, { size: 24 })
341
352
  ]),
342
353
  action: withCtx(() => [
343
354
  createVNode(_component_NcButton, {
@@ -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,
@@ -491,6 +503,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
491
503
  borderless: $options.widgetBorderless(item),
492
504
  flush: item.flush !== false,
493
505
  buttons: $options.getWidgetButtons(item),
506
+ headerLink: $options.getWidgetHeaderLink(item),
494
507
  styleConfig: item.styleConfig || {},
495
508
  titleIconPosition: $options.getWidgetTitleIconPosition(item),
496
509
  titleIconColor: $options.getWidgetTitleIconColor(item),
@@ -525,7 +538,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
525
538
  createElementVNode("span", {
526
539
  class: "cn-dashboard-page__date-chip",
527
540
  title: $data.dateChipTitle
528
- }, toDisplayString($options.formatChartDateRange(item) || $options.dashboardRangeChipLabel), 9 /* TEXT, PROPS */, _hoisted_17)
541
+ }, toDisplayString($options.formatChartDateRange(item) || $options.dashboardRangeChipLabel), 9 /* TEXT, PROPS */, _hoisted_18)
529
542
  ]),
530
543
  default: withCtx(() => [
531
544
  (openBlock(true), createElementBlock(Fragment, null, renderList($options.effectivePresets, (preset) => {
@@ -540,7 +553,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
540
553
  key: 0,
541
554
  size: 16
542
555
  }))
543
- : (openBlock(), createElementBlock("span", _hoisted_18))
556
+ : (openBlock(), createElementBlock("span", _hoisted_19))
544
557
  ]),
545
558
  default: withCtx(() => [
546
559
  createTextVNode(" " + toDisplayString(preset.label), 1 /* TEXT */)
@@ -570,7 +583,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
570
583
  key: "0"
571
584
  }
572
585
  : undefined
573
- ]), 1032 /* PROPS, DYNAMIC_SLOTS */, ["widgetId", "class", "title", "iconUrl", "iconClass", "showTitle", "borderless", "flush", "buttons", "styleConfig", "titleIconPosition", "titleIconColor", "titleIconVariant", "showRefresh", "documentationUrl", "docsAnchor", "onRefresh", "onRequestFeature"]))
586
+ ]), 1032 /* PROPS, DYNAMIC_SLOTS */, ["widgetId", "class", "title", "iconUrl", "iconClass", "showTitle", "borderless", "flush", "buttons", "headerLink", "styleConfig", "titleIconPosition", "titleIconColor", "titleIconVariant", "showRefresh", "documentationUrl", "docsAnchor", "onRefresh", "onRequestFeature"]))
574
587
  : ($options.isStatsBlock(item))
575
588
  ? (openBlock(), createBlock(_component_CnWidgetWrapper, {
576
589
  key: 5,
@@ -584,6 +597,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
584
597
  flush: item.flush !== false,
585
598
  class: normalizeClass({ 'cn-dashboard-page__card-fit': $options.isCardWidget(item) }),
586
599
  buttons: $options.getWidgetButtons(item),
600
+ headerLink: $options.getWidgetHeaderLink(item),
587
601
  styleConfig: item.styleConfig || {},
588
602
  documentationUrl: $options.getWidgetDocumentationUrl(item),
589
603
  docsAnchor: $options.getWidgetDocsAnchor(item),
@@ -597,7 +611,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
597
611
  }), null, 16 /* FULL_PROPS */, ["title", "data-source"])
598
612
  ]),
599
613
  _: 2 /* DYNAMIC */
600
- }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["widgetId", "title", "iconUrl", "iconClass", "showTitle", "showActions", "borderless", "flush", "class", "buttons", "styleConfig", "documentationUrl", "docsAnchor", "onRefresh", "onRequestFeature"]))
614
+ }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["widgetId", "title", "iconUrl", "iconClass", "showTitle", "showActions", "borderless", "flush", "class", "buttons", "headerLink", "styleConfig", "documentationUrl", "docsAnchor", "onRefresh", "onRequestFeature"]))
601
615
  : ($options.isIntegration(item))
602
616
  ? (openBlock(), createBlock(_component_CnWidgetWrapper, {
603
617
  key: 6,
@@ -609,6 +623,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
609
623
  borderless: $options.widgetBorderless(item),
610
624
  flush: item.flush !== false,
611
625
  buttons: $options.getWidgetButtons(item),
626
+ headerLink: $options.getWidgetHeaderLink(item),
612
627
  styleConfig: item.styleConfig || {},
613
628
  titleIconPosition: $options.getWidgetTitleIconPosition(item),
614
629
  titleIconColor: $options.getWidgetTitleIconColor(item),
@@ -628,10 +643,10 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
628
643
  }, null, 8 /* PROPS */, ["provider", "mountProps"]))
629
644
  : ($options.resolveIntegrationWidget(item))
630
645
  ? (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 */))
646
+ : (openBlock(), createElementBlock("div", _hoisted_20, toDisplayString($props.unavailableLabel), 1 /* TEXT */))
632
647
  ]),
633
648
  _: 2 /* DYNAMIC */
634
- }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["widgetId", "title", "iconUrl", "iconClass", "showTitle", "borderless", "flush", "buttons", "styleConfig", "titleIconPosition", "titleIconColor", "titleIconVariant", "showRefresh", "documentationUrl", "docsAnchor", "onRefresh", "onRequestFeature"]))
649
+ }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["widgetId", "title", "iconUrl", "iconClass", "showTitle", "borderless", "flush", "buttons", "headerLink", "styleConfig", "titleIconPosition", "titleIconColor", "titleIconVariant", "showRefresh", "documentationUrl", "docsAnchor", "onRefresh", "onRequestFeature"]))
635
650
  : ($options.isNcWidget(item))
636
651
  ? (openBlock(), createBlock(_component_CnWidgetWrapper, {
637
652
  key: 7,
@@ -641,6 +656,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
641
656
  iconClass: $options.getWidgetIconClass(item),
642
657
  showTitle: $options.widgetShowTitle(item),
643
658
  buttons: $options.getWidgetButtons(item),
659
+ headerLink: $options.getWidgetHeaderLink(item),
644
660
  styleConfig: item.styleConfig || {},
645
661
  showRefresh: $options.getWidgetShowRefresh(item),
646
662
  documentationUrl: $options.getWidgetDocumentationUrl(item),
@@ -655,7 +671,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
655
671
  }, null, 8 /* PROPS */, ["widget", "unavailableText"])
656
672
  ]),
657
673
  _: 2 /* DYNAMIC */
658
- }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["widgetId", "title", "iconUrl", "iconClass", "showTitle", "buttons", "styleConfig", "showRefresh", "documentationUrl", "docsAnchor", "onRefresh", "onRequestFeature"]))
674
+ }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["widgetId", "title", "iconUrl", "iconClass", "showTitle", "buttons", "headerLink", "styleConfig", "showRefresh", "documentationUrl", "docsAnchor", "onRefresh", "onRequestFeature"]))
659
675
  : ($options.registryRenderer(item))
660
676
  ? (openBlock(), createBlock(_component_CnWidgetWrapper, {
661
677
  key: 8,
@@ -671,6 +687,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
671
687
  titleIconVariant: $options.getWidgetTitleIconVariant(item),
672
688
  class: normalizeClass({ 'cn-dashboard-page__card-fit': $options.isCardWidget(item) }),
673
689
  buttons: $options.getWidgetButtons(item),
690
+ headerLink: $options.getWidgetHeaderLink(item),
674
691
  styleConfig: item.styleConfig || {},
675
692
  documentationUrl: $options.getWidgetDocumentationUrl(item),
676
693
  docsAnchor: $options.getWidgetDocsAnchor(item),
@@ -701,7 +718,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
701
718
  createElementVNode("span", {
702
719
  class: "cn-dashboard-page__date-chip",
703
720
  title: $data.dateChipTitle
704
- }, toDisplayString($options.dashboardRangeChipLabel), 9 /* TEXT, PROPS */, _hoisted_20)
721
+ }, toDisplayString($options.dashboardRangeChipLabel), 9 /* TEXT, PROPS */, _hoisted_21)
705
722
  ]),
706
723
  default: withCtx(() => [
707
724
  (openBlock(true), createElementBlock(Fragment, null, renderList($options.effectivePresets, (preset) => {
@@ -716,7 +733,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
716
733
  key: 0,
717
734
  size: 16
718
735
  }))
719
- : (openBlock(), createElementBlock("span", _hoisted_21))
736
+ : (openBlock(), createElementBlock("span", _hoisted_22))
720
737
  ]),
721
738
  default: withCtx(() => [
722
739
  createTextVNode(" " + toDisplayString(preset.label), 1 /* TEXT */)
@@ -746,7 +763,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
746
763
  key: "0"
747
764
  }
748
765
  : undefined
749
- ]), 1032 /* PROPS, DYNAMIC_SLOTS */, ["widgetId", "title", "showTitle", "showActions", "showRefresh", "borderless", "flush", "titleIconPosition", "titleIconColor", "titleIconVariant", "class", "buttons", "styleConfig", "documentationUrl", "docsAnchor", "onRefresh", "onRequestFeature"]))
766
+ ]), 1032 /* PROPS, DYNAMIC_SLOTS */, ["widgetId", "title", "showTitle", "showActions", "showRefresh", "borderless", "flush", "titleIconPosition", "titleIconColor", "titleIconVariant", "class", "buttons", "headerLink", "styleConfig", "documentationUrl", "docsAnchor", "onRefresh", "onRequestFeature"]))
750
767
  : (openBlock(), createBlock(_component_CnWidgetWrapper, {
751
768
  key: 9,
752
769
  title: $options.getWidgetTitle(item),
@@ -754,7 +771,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
754
771
  showRefresh: false
755
772
  }, {
756
773
  default: withCtx(() => [
757
- createElementVNode("div", _hoisted_22, toDisplayString($props.unavailableLabel), 1 /* TEXT */)
774
+ createElementVNode("div", _hoisted_23, toDisplayString($props.unavailableLabel), 1 /* TEXT */)
758
775
  ]),
759
776
  _: 1 /* STABLE */
760
777
  }, 8 /* PROPS */, ["title", "showTitle"]))
@@ -763,7 +780,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
763
780
  }, 8 /* PROPS */, ["layout", "editable", "columns", "cellHeight", "margin", "onLayoutChange"])),
764
781
  ($options.hasBodyWidgets)
765
782
  ? (openBlock(), createBlock(_component_CnBodySections, {
766
- key: 8,
783
+ key: 10,
767
784
  sections: $props.bodyWidgets,
768
785
  context: $options.sectionContext,
769
786
  placement: "after-grid",
@@ -772,7 +789,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
772
789
  : createCommentVNode("v-if", true),
773
790
  ($options.hasBodyWidgets)
774
791
  ? (openBlock(), createBlock(_component_CnBodySections, {
775
- key: 9,
792
+ key: 11,
776
793
  sections: $options.endPlacementSections,
777
794
  context: $options.sectionContext,
778
795
  placement: null,
@@ -781,7 +798,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
781
798
  : createCommentVNode("v-if", true),
782
799
  ($data.showWidgetConfig)
783
800
  ? (openBlock(), createBlock(_component_CnWidgetStyleEditorModal, {
784
- key: 10,
801
+ key: 12,
785
802
  show: $data.showWidgetConfig,
786
803
  widget: $options.configWidget,
787
804
  deletable: true,