@conduction/nextcloud-vue 2.93.0 → 2.95.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 (162) hide show
  1. package/dist/esm/components/CnActionsMenu/CnActionsMenu.vue2.js +1 -1
  2. package/dist/esm/components/CnActionsMenu/CnActionsMenu.vue2.js.map +1 -1
  3. package/dist/esm/components/CnActionsMenu/CnActionsMenu.vue3.js +2 -1
  4. package/dist/esm/components/CnActionsMenu/CnActionsMenu.vue3.js.map +1 -1
  5. package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue.js +1 -1
  6. package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue2.js +28 -8
  7. package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue2.js.map +1 -1
  8. package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue3.js +37 -2
  9. package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue3.js.map +1 -1
  10. package/dist/esm/components/CnAppRoot/CnAppRoot.vue2.js +46 -28
  11. package/dist/esm/components/CnAppRoot/CnAppRoot.vue2.js.map +1 -1
  12. package/dist/esm/components/CnAppRoot/CnAppRoot.vue3.js +17 -10
  13. package/dist/esm/components/CnAppRoot/CnAppRoot.vue3.js.map +1 -1
  14. package/dist/esm/components/CnBrandBar/CnBrandBar.vue2.js.map +1 -1
  15. package/dist/esm/components/CnBrandBar/CnBrandBar.vue3.js.map +1 -1
  16. package/dist/esm/components/CnCountdownWidget/CnCountdownWidget.vue.js +1 -1
  17. package/dist/esm/components/CnCountdownWidget/CnCountdownWidget.vue2.js +139 -3
  18. package/dist/esm/components/CnCountdownWidget/CnCountdownWidget.vue2.js.map +1 -1
  19. package/dist/esm/components/CnCountdownWidget/CnCountdownWidget.vue3.js +60 -12
  20. package/dist/esm/components/CnCountdownWidget/CnCountdownWidget.vue3.js.map +1 -1
  21. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue.js +1 -1
  22. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js +91 -36
  23. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js.map +1 -1
  24. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js +115 -72
  25. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js.map +1 -1
  26. package/dist/esm/components/CnDataTable/CnDataTable.vue2.js +32 -3
  27. package/dist/esm/components/CnDataTable/CnDataTable.vue2.js.map +1 -1
  28. package/dist/esm/components/CnDataTable/CnDataTable.vue3.js +7 -7
  29. package/dist/esm/components/CnDataTable/CnDataTable.vue3.js.map +1 -1
  30. package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js +56 -16
  31. package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js.map +1 -1
  32. package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js.map +1 -1
  33. package/dist/esm/components/CnDeviceFramesWidget/CnDeviceFramesWidget.vue.js +9 -0
  34. package/dist/esm/components/CnDeviceFramesWidget/CnDeviceFramesWidget.vue.js.map +1 -0
  35. package/dist/esm/components/CnDeviceFramesWidget/CnDeviceFramesWidget.vue2.js +240 -0
  36. package/dist/esm/components/CnDeviceFramesWidget/CnDeviceFramesWidget.vue2.js.map +1 -0
  37. package/dist/esm/components/CnDeviceFramesWidget/CnDeviceFramesWidget.vue3.js +65 -0
  38. package/dist/esm/components/CnDeviceFramesWidget/CnDeviceFramesWidget.vue3.js.map +1 -0
  39. package/dist/esm/components/CnDeviceFramesWidget/index.js +30 -0
  40. package/dist/esm/components/CnDeviceFramesWidget/index.js.map +1 -0
  41. package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue.js +1 -1
  42. package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue2.js +17 -1
  43. package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue2.js.map +1 -1
  44. package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue3.js +30 -31
  45. package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue3.js.map +1 -1
  46. package/dist/esm/components/CnHeaderSearchLabel/CnHeaderSearchLabel.vue.js +6 -0
  47. package/dist/esm/components/CnHeaderSearchLabel/CnHeaderSearchLabel.vue.js.map +1 -0
  48. package/dist/esm/components/CnHeaderSearchLabel/CnHeaderSearchLabel.vue2.js +90 -0
  49. package/dist/esm/components/CnHeaderSearchLabel/CnHeaderSearchLabel.vue2.js.map +1 -0
  50. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js +141 -7
  51. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js.map +1 -1
  52. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js +5 -2
  53. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js.map +1 -1
  54. package/dist/esm/components/CnPageHeader/CnHeaderTrail.vue.js +8 -0
  55. package/dist/esm/components/CnPageHeader/CnHeaderTrail.vue.js.map +1 -0
  56. package/dist/esm/components/CnPageHeader/CnHeaderTrail.vue2.js +114 -0
  57. package/dist/esm/components/CnPageHeader/CnHeaderTrail.vue2.js.map +1 -0
  58. package/dist/esm/components/CnPageHeader/CnHeaderTrail.vue3.js +45 -0
  59. package/dist/esm/components/CnPageHeader/CnHeaderTrail.vue3.js.map +1 -0
  60. package/dist/esm/components/CnPageHeader/CnPageHeader.vue2.js +38 -2
  61. package/dist/esm/components/CnPageHeader/CnPageHeader.vue2.js.map +1 -1
  62. package/dist/esm/components/CnPageHeader/CnPageHeader.vue3.js +12 -2
  63. package/dist/esm/components/CnPageHeader/CnPageHeader.vue3.js.map +1 -1
  64. package/dist/esm/components/CnPagination/CnPagination.vue2.js.map +1 -1
  65. package/dist/esm/components/CnPagination/CnPagination.vue3.js +56 -51
  66. package/dist/esm/components/CnPagination/CnPagination.vue3.js.map +1 -1
  67. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue.js +1 -1
  68. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue2.js +51 -4
  69. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue2.js.map +1 -1
  70. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue3.js +20 -2
  71. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue3.js.map +1 -1
  72. package/dist/esm/components/CnRegisterMapping/CnRegisterMapping.vue.js +1 -1
  73. package/dist/esm/components/CnRegisterMapping/CnRegisterMapping.vue2.js +230 -25
  74. package/dist/esm/components/CnRegisterMapping/CnRegisterMapping.vue2.js.map +1 -1
  75. package/dist/esm/components/CnRegisterMapping/CnRegisterMapping.vue3.js +447 -221
  76. package/dist/esm/components/CnRegisterMapping/CnRegisterMapping.vue3.js.map +1 -1
  77. package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue.js +1 -1
  78. package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue2.js +24 -0
  79. package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue2.js.map +1 -1
  80. package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue3.js +3 -1
  81. package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue3.js.map +1 -1
  82. package/dist/esm/components/CnTabs/CnTabs.vue.js +1 -1
  83. package/dist/esm/components/CnTabs/CnTabs.vue2.js +39 -2
  84. package/dist/esm/components/CnTabs/CnTabs.vue2.js.map +1 -1
  85. package/dist/esm/components/CnTabs/CnTabs.vue3.js.map +1 -1
  86. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue.js +1 -1
  87. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue2.js +85 -8
  88. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue2.js.map +1 -1
  89. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue3.js +37 -9
  90. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue3.js.map +1 -1
  91. package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue.js +1 -1
  92. package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue2.js.map +1 -1
  93. package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue3.js +4 -3
  94. package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue3.js.map +1 -1
  95. package/dist/esm/components/CnWidgetGrid/registerDashboardWidgets.js +1 -0
  96. package/dist/esm/components/CnWidgetGrid/registerDashboardWidgets.js.map +1 -1
  97. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue.js +1 -1
  98. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue2.js +20 -0
  99. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue2.js.map +1 -1
  100. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue3.js +31 -20
  101. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue3.js.map +1 -1
  102. package/dist/esm/composables/indexSources.js +9 -0
  103. package/dist/esm/composables/indexSources.js.map +1 -1
  104. package/dist/esm/index.js +1 -0
  105. package/dist/esm/index.js.map +1 -1
  106. package/dist/esm/l10n/en.json.js +18 -1
  107. package/dist/esm/l10n/en.json.js.map +1 -1
  108. package/dist/esm/l10n/nl.json.js +18 -1
  109. package/dist/esm/l10n/nl.json.js.map +1 -1
  110. package/dist/esm/library-style.js +1 -1
  111. package/dist/esm/nextcloud-vue.css +712 -330
  112. package/dist/esm/utils/dueText.js +49 -8
  113. package/dist/esm/utils/dueText.js.map +1 -1
  114. package/dist/esm/utils/libraryWidgetKeys.js +1 -0
  115. package/dist/esm/utils/libraryWidgetKeys.js.map +1 -1
  116. package/dist/esm/utils/validateManifestV2.compiled.js +3 -3
  117. package/dist/esm/utils/validateManifestV2.compiled.js.map +1 -1
  118. package/dist/nextcloud-vue.cjs.js +8275 -6302
  119. package/dist/nextcloud-vue.cjs.js.map +2 -2
  120. package/dist/nextcloud-vue.css +712 -330
  121. package/l10n/en.json +18 -1
  122. package/l10n/nl.json +18 -1
  123. package/package.json +1 -1
  124. package/src/components/CnActionsMenu/CnActionsMenu.vue +3 -1
  125. package/src/components/CnAdminSettingsShell/CnAdminSettingsShell.vue +39 -1
  126. package/src/components/CnAppRoot/CnAppRoot.vue +20 -0
  127. package/src/components/CnBrandBar/CnBrandBar.vue +5 -4
  128. package/src/components/CnCountdownWidget/CnCountdownWidget.vue +222 -6
  129. package/src/components/CnDashboardPage/CnDashboardPage.vue +96 -2
  130. package/src/components/CnDataTable/CnDataTable.md +1 -0
  131. package/src/components/CnDataTable/CnDataTable.vue +39 -10
  132. package/src/components/CnDetailPage/CnDetailPage.vue +55 -15
  133. package/src/components/CnDeviceFramesWidget/CnDeviceFramesWidget.vue +360 -0
  134. package/src/components/CnDeviceFramesWidget/index.js +29 -0
  135. package/src/components/CnFactsWidget/CnFactsWidget.vue +46 -2
  136. package/src/components/CnHeaderSearchLabel/CnHeaderSearchLabel.vue +107 -0
  137. package/src/components/CnIndexPage/CnIndexPage.vue +144 -7
  138. package/src/components/CnPageHeader/CnHeaderTrail.vue +140 -0
  139. package/src/components/CnPageHeader/CnPageHeader.md +11 -0
  140. package/src/components/CnPageHeader/CnPageHeader.vue +42 -0
  141. package/src/components/CnPagination/CnPagination.vue +10 -2
  142. package/src/components/CnRecordListWidget/CnRecordListWidget.vue +84 -4
  143. package/src/components/CnRegisterMapping/CnRegisterMapping.md +10 -0
  144. package/src/components/CnRegisterMapping/CnRegisterMapping.vue +511 -28
  145. package/src/components/CnSettingsPage/CnSettingsPage.vue +26 -0
  146. package/src/components/CnTabs/CnTabs.vue +39 -2
  147. package/src/components/CnTabsWidget/CnTabsWidget.vue +106 -13
  148. package/src/components/CnVersionInfoCard/CnVersionInfoCard.vue +4 -3
  149. package/src/components/CnWidgetGrid/registerDashboardWidgets.js +1 -0
  150. package/src/components/CnWidgetWrapper/CnWidgetWrapper.md +8 -0
  151. package/src/components/CnWidgetWrapper/CnWidgetWrapper.vue +31 -2
  152. package/src/components/index.js +1 -0
  153. package/src/composables/indexSources.js +9 -0
  154. package/src/css/dialog.css +14 -0
  155. package/src/css/look-board-index.css +27 -1
  156. package/src/css/look-board.css +27 -0
  157. package/src/css/page-header.css +16 -0
  158. package/src/index.js +1 -0
  159. package/src/schemas/app-manifest-v2.schema.json +27 -15
  160. package/src/utils/dueText.js +49 -8
  161. package/src/utils/libraryWidgetKeys.js +1 -0
  162. package/src/utils/validateManifestV2.compiled.js +3 -3
@@ -1,4 +1,4 @@
1
- import { resolveComponent, openBlock, createElementBlock, normalizeClass, normalizeStyle, toDisplayString, createCommentVNode, createElementVNode, createBlock, resolveDynamicComponent, withCtx, createTextVNode, renderSlot, Fragment, createVNode, createSlots, renderList, mergeProps } from 'vue';
1
+ import { resolveComponent, openBlock, createElementBlock, normalizeClass, normalizeStyle, toDisplayString, createCommentVNode, createElementVNode, createBlock, resolveDynamicComponent, withCtx, createTextVNode, renderSlot, createVNode, Fragment, createSlots, renderList, mergeProps } from 'vue';
2
2
 
3
3
  const _hoisted_1 = {
4
4
  key: 0,
@@ -17,94 +17,105 @@ const _hoisted_4 = {
17
17
  };
18
18
  const _hoisted_5 = {
19
19
  key: 1,
20
- class: "cn-dashboard-page__description",
20
+ class: "cn-dashboard-page__description cn-dashboard-page__description--with-period",
21
21
  "data-testid": "cn-dashboard-page-subtitle"
22
22
  };
23
- const _hoisted_6 = { class: "cn-dashboard-page__header-actions" };
23
+ const _hoisted_6 = { key: 0 };
24
24
  const _hoisted_7 = {
25
+ key: 1,
26
+ "aria-hidden": "true"
27
+ };
28
+ const _hoisted_8 = {
29
+ key: 2,
30
+ class: "cn-dashboard-page__description",
31
+ "data-testid": "cn-dashboard-page-subtitle"
32
+ };
33
+ const _hoisted_9 = { class: "cn-dashboard-page__header-actions" };
34
+ const _hoisted_10 = {
25
35
  key: 2,
26
36
  class: "cn-dashboard-page__switch-row",
27
37
  "data-testid": "cn-dashboard-page-switch-row"
28
38
  };
29
- const _hoisted_8 = {
39
+ const _hoisted_11 = {
30
40
  key: 0,
31
41
  class: "cn-dashboard-page__date-segmented",
32
42
  "data-testid": "cn-dashboard-page-date-segmented"
33
43
  };
34
- const _hoisted_9 = ["aria-label"];
35
- const _hoisted_10 = ["aria-pressed", "data-testid", "onClick"];
36
- const _hoisted_11 = {
44
+ const _hoisted_12 = ["aria-label"];
45
+ const _hoisted_13 = ["aria-pressed", "data-testid", "onClick"];
46
+ const _hoisted_14 = {
37
47
  key: 4,
38
48
  class: "cn-dashboard-page__page-filters",
39
49
  "data-testid": "cn-dashboard-page-page-filters"
40
50
  };
41
- const _hoisted_12 = {
51
+ const _hoisted_15 = {
42
52
  key: 0,
43
53
  class: "cn-dashboard-page__page-filter-label"
44
54
  };
45
- const _hoisted_13 = {
55
+ const _hoisted_16 = {
46
56
  key: 8,
47
57
  class: "cn-dashboard-page__empty"
48
58
  };
49
- const _hoisted_14 = {
59
+ const _hoisted_17 = {
50
60
  key: 9,
51
61
  class: "cn-dashboard-page__content"
52
62
  };
53
- const _hoisted_15 = ["data-testid"];
54
- const _hoisted_16 = {
63
+ const _hoisted_18 = ["data-testid"];
64
+ const _hoisted_19 = {
55
65
  key: 0,
56
66
  class: "cn-dashboard-page__widget-note",
57
67
  "data-testid": "cn-dashboard-widget-header-note"
58
68
  };
59
- const _hoisted_17 = ["onClick"];
60
- const _hoisted_18 = { class: "cn-dashboard-page__unknown" };
61
- const _hoisted_19 = {
69
+ const _hoisted_20 = ["onClick"];
70
+ const _hoisted_21 = { class: "cn-dashboard-page__unknown" };
71
+ const _hoisted_22 = {
62
72
  key: 11,
63
73
  class: "cn-dashboard-page__view-switch"
64
74
  };
65
- const _hoisted_20 = {
75
+ const _hoisted_23 = {
66
76
  key: 0,
67
77
  class: "cn-dashboard-page__widget-edit"
68
78
  };
69
- const _hoisted_21 = {
79
+ const _hoisted_24 = {
70
80
  class: "cn-dashboard-page__requires-app cn-requires-app cn-requires-app--compact",
71
81
  "data-testid": "cn-requires-app"
72
82
  };
73
- const _hoisted_22 = { class: "cn-requires-app__description" };
74
- const _hoisted_23 = ["title"];
75
- const _hoisted_24 = {
83
+ const _hoisted_25 = { class: "cn-requires-app__description" };
84
+ const _hoisted_26 = ["title"];
85
+ const _hoisted_27 = {
76
86
  key: 1,
77
87
  class: "cn-dashboard-page__date-chip-preset-spacer"
78
88
  };
79
- const _hoisted_25 = ["title"];
80
- const _hoisted_26 = {
89
+ const _hoisted_28 = ["title"];
90
+ const _hoisted_29 = {
81
91
  key: 1,
82
92
  class: "cn-dashboard-page__date-chip-preset-spacer"
83
93
  };
84
- const _hoisted_27 = {
94
+ const _hoisted_30 = {
85
95
  key: 2,
86
96
  class: "cn-dashboard-page__unknown"
87
97
  };
88
- const _hoisted_28 = {
98
+ const _hoisted_31 = {
89
99
  key: 0,
90
100
  class: "cn-dashboard-page__widget-count",
91
101
  "data-testid": "cn-dashboard-widget-header-count"
92
102
  };
93
- const _hoisted_29 = ["title"];
94
- const _hoisted_30 = {
103
+ const _hoisted_32 = ["title"];
104
+ const _hoisted_33 = {
95
105
  key: 1,
96
106
  class: "cn-dashboard-page__date-chip-preset-spacer"
97
107
  };
98
- const _hoisted_31 = {
108
+ const _hoisted_34 = {
99
109
  key: 0,
100
110
  class: "cn-dashboard-page__widget-note",
101
111
  "data-testid": "cn-dashboard-widget-header-note"
102
112
  };
103
- const _hoisted_32 = ["onClick"];
104
- const _hoisted_33 = { class: "cn-dashboard-page__unknown" };
105
- const _hoisted_34 = ["id", "aria-label"];
113
+ const _hoisted_35 = ["onClick"];
114
+ const _hoisted_36 = { class: "cn-dashboard-page__unknown" };
115
+ const _hoisted_37 = ["id", "aria-label"];
106
116
 
107
117
  function render(_ctx, _cache, $props, $setup, $data, $options) {
118
+ const _component_CnHeaderTrail = resolveComponent("CnHeaderTrail");
108
119
  const _component_CnSegmentedControl = resolveComponent("CnSegmentedControl");
109
120
  const _component_CnActionButtons = resolveComponent("CnActionButtons");
110
121
  const _component_Pencil = resolveComponent("Pencil");
@@ -165,11 +176,34 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
165
176
  renderSlot(_ctx.$slots, "title-meta")
166
177
  ]))
167
178
  : createCommentVNode("v-if", true),
168
- ($options.subtitleText)
169
- ? (openBlock(), createElementBlock("p", _hoisted_5, toDisplayString($options.subtitleText), 1 /* TEXT */))
170
- : createCommentVNode("v-if", true)
179
+ createVNode(_component_CnHeaderTrail, {
180
+ breadcrumb: $props.breadcrumb,
181
+ current: $props.title ? $options.resolvedTitle : '',
182
+ meta: $props.headerMeta ? $options.effectiveTranslate($props.headerMeta) : ''
183
+ }, null, 8 /* PROPS */, ["breadcrumb", "current", "meta"]),
184
+ ($options.datePeriodInDescription)
185
+ ? (openBlock(), createElementBlock("div", _hoisted_5, [
186
+ ($options.subtitleText)
187
+ ? (openBlock(), createElementBlock("span", _hoisted_6, toDisplayString($options.subtitleText), 1 /* TEXT */))
188
+ : createCommentVNode("v-if", true),
189
+ ($options.subtitleText)
190
+ ? (openBlock(), createElementBlock("span", _hoisted_7, "·"))
191
+ : createCommentVNode("v-if", true),
192
+ createVNode(_component_CnSegmentedControl, {
193
+ size: "compact",
194
+ mode: "toggle",
195
+ options: $options.segmentedOptions,
196
+ modelValue: $options.segmentedValue,
197
+ ariaLabel: $options.datePeriodLabel,
198
+ "data-testid": "cn-dashboard-page-date-segmented",
199
+ "onUpdate:modelValue": $options.onSegmentPick
200
+ }, null, 8 /* PROPS */, ["options", "modelValue", "ariaLabel", "onUpdate:modelValue"])
201
+ ]))
202
+ : ($options.subtitleText)
203
+ ? (openBlock(), createElementBlock("p", _hoisted_8, toDisplayString($options.subtitleText), 1 /* TEXT */))
204
+ : createCommentVNode("v-if", true)
171
205
  ]),
172
- createElementVNode("div", _hoisted_6, [
206
+ createElementVNode("div", _hoisted_9, [
173
207
  (_ctx.showsPageViewSwitch && !$options.switchInRow)
174
208
  ? (openBlock(), createBlock(_component_CnSegmentedControl, {
175
209
  key: 0,
@@ -289,7 +323,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
289
323
  ]))
290
324
  : createCommentVNode("v-if", true),
291
325
  ($props.showHeader && ($options.switchInRow || $options.resolvedViewLinks.length > 0))
292
- ? (openBlock(), createElementBlock("div", _hoisted_7, [
326
+ ? (openBlock(), createElementBlock("div", _hoisted_10, [
293
327
  ($options.switchInRow)
294
328
  ? (openBlock(), createBlock(_component_CnSegmentedControl, {
295
329
  key: 0,
@@ -326,7 +360,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
326
360
  }), 128 /* KEYED_FRAGMENT */))
327
361
  ]))
328
362
  : createCommentVNode("v-if", true),
329
- ($options.showHeaderDateRange)
363
+ ($options.showHeaderDateRange && !$options.datePeriodInDescription)
330
364
  ? (openBlock(), createElementBlock("div", {
331
365
  key: 3,
332
366
  class: normalizeClass(["cn-dashboard-page__date-range", {
@@ -336,7 +370,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
336
370
  "data-testid": "cn-dashboard-page-date-range"
337
371
  }, [
338
372
  ($options.dateRangeControl === 'segmented')
339
- ? (openBlock(), createElementBlock("div", _hoisted_8, [
373
+ ? (openBlock(), createElementBlock("div", _hoisted_11, [
340
374
  createVNode(_component_CnSegmentedControl, {
341
375
  size: "compact",
342
376
  mode: "toggle",
@@ -392,7 +426,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
392
426
  "aria-pressed": String(Boolean($data.currentRange && $data.currentRange.preset === preset.id)),
393
427
  "data-testid": `cn-dashboard-page-date-pill-${preset.id}`,
394
428
  onClick: $event => ($options.onPillPick(preset))
395
- }, toDisplayString(preset.label), 11 /* TEXT, CLASS, PROPS */, _hoisted_10))
429
+ }, toDisplayString(preset.label), 11 /* TEXT, CLASS, PROPS */, _hoisted_13))
396
430
  }), 128 /* KEYED_FRAGMENT */)),
397
431
  ($options.hasCustomPreset)
398
432
  ? (openBlock(), createBlock(_component_NcActions, {
@@ -426,7 +460,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
426
460
  _: 1 /* STABLE */
427
461
  }))
428
462
  : createCommentVNode("v-if", true)
429
- ], 8 /* PROPS */, _hoisted_9))
463
+ ], 8 /* PROPS */, _hoisted_12))
430
464
  : (openBlock(), createBlock(_component_CnDateRangePicker, {
431
465
  key: 2,
432
466
  value: $data.currentRange,
@@ -436,14 +470,14 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
436
470
  ], 2 /* CLASS */))
437
471
  : createCommentVNode("v-if", true),
438
472
  ($props.pageFilters && $props.pageFilters.length)
439
- ? (openBlock(), createElementBlock("div", _hoisted_11, [
473
+ ? (openBlock(), createElementBlock("div", _hoisted_14, [
440
474
  (openBlock(true), createElementBlock(Fragment, null, renderList($props.pageFilters, (pf) => {
441
475
  return (openBlock(), createElementBlock("label", {
442
476
  key: pf.key,
443
477
  class: "cn-dashboard-page__page-filter"
444
478
  }, [
445
479
  (pf.label)
446
- ? (openBlock(), createElementBlock("span", _hoisted_12, toDisplayString(pf.label), 1 /* TEXT */))
480
+ ? (openBlock(), createElementBlock("span", _hoisted_15, toDisplayString(pf.label), 1 /* TEXT */))
447
481
  : createCommentVNode("v-if", true),
448
482
  createVNode(_component_NcSelect, {
449
483
  modelValue: $options.selectedPageFilterOption(pf),
@@ -472,7 +506,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
472
506
  : (!$data.widgetConditionsSettled && !$options.gridEditable)
473
507
  ? (openBlock(), createBlock(_component_NcLoadingIcon, { key: 7 }))
474
508
  : (!$options.hasWidgets && !$options.hasBodyWidgets && !_ctx.hasViews)
475
- ? (openBlock(), createElementBlock("div", _hoisted_13, [
509
+ ? (openBlock(), createElementBlock("div", _hoisted_16, [
476
510
  renderSlot(_ctx.$slots, "empty", {}, () => [
477
511
  createVNode(_component_CnEmptyContent, { description: $props.emptyLabel }, {
478
512
  icon: withCtx(() => [
@@ -483,7 +517,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
483
517
  ])
484
518
  ]))
485
519
  : ($options.widgetRefItems.length > 0)
486
- ? (openBlock(), createElementBlock("div", _hoisted_14, [
520
+ ? (openBlock(), createElementBlock("div", _hoisted_17, [
487
521
  (openBlock(true), createElementBlock(Fragment, null, renderList($options.widgetRefItems, (item, idx) => {
488
522
  return (openBlock(), createBlock(_component_CnWidgetRefItem, {
489
523
  key: item.ref + '-' + idx,
@@ -547,7 +581,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
547
581
  name: "actions",
548
582
  fn: withCtx(() => [
549
583
  ($options.widgetHeaderNote(item))
550
- ? (openBlock(), createElementBlock("span", _hoisted_16, toDisplayString($options.widgetHeaderNote(item)), 1 /* TEXT */))
584
+ ? (openBlock(), createElementBlock("span", _hoisted_19, toDisplayString($options.widgetHeaderNote(item)), 1 /* TEXT */))
551
585
  : createCommentVNode("v-if", true),
552
586
  ($options.widgetHeaderAction(item))
553
587
  ? (openBlock(), createElementBlock("button", {
@@ -556,7 +590,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
556
590
  class: "cn-dashboard-page__widget-action",
557
591
  "data-testid": "cn-dashboard-widget-header-action",
558
592
  onClick: $event => ($options.widgetHeaderAction(item).run())
559
- }, toDisplayString($options.widgetHeaderAction(item).label), 9 /* TEXT, PROPS */, _hoisted_17))
593
+ }, toDisplayString($options.widgetHeaderAction(item).label), 9 /* TEXT, PROPS */, _hoisted_20))
560
594
  : createCommentVNode("v-if", true)
561
595
  ]),
562
596
  key: "0"
@@ -583,22 +617,23 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
583
617
  key: 3,
584
618
  title: $options.getWidgetTitle(item),
585
619
  eyebrow: $options.getWidgetEyebrow(item),
620
+ subtitle: $options.getWidgetSubtitle(item),
586
621
  showTitle: false,
587
622
  showRefresh: false
588
623
  }, {
589
624
  default: withCtx(() => [
590
- createElementVNode("div", _hoisted_18, toDisplayString($props.unavailableLabel), 1 /* TEXT */)
625
+ createElementVNode("div", _hoisted_21, toDisplayString($props.unavailableLabel), 1 /* TEXT */)
591
626
  ]),
592
627
  _: 1 /* STABLE */
593
- }, 8 /* PROPS */, ["title", "eyebrow"]))
594
- ], 8 /* PROPS */, _hoisted_15))
628
+ }, 8 /* PROPS */, ["title", "eyebrow", "subtitle"]))
629
+ ], 8 /* PROPS */, _hoisted_18))
595
630
  }), 128 /* KEYED_FRAGMENT */))
596
631
  ]),
597
632
  _: 3 /* FORWARDED */
598
633
  }))
599
634
  : createCommentVNode("v-if", true),
600
635
  ($options.gridSectionsShown && !$props.showHeader && _ctx.showsPageViewSwitch)
601
- ? (openBlock(), createElementBlock("div", _hoisted_19, [
636
+ ? (openBlock(), createElementBlock("div", _hoisted_22, [
602
637
  createVNode(_component_CnSegmentedControl, {
603
638
  class: "cn-page-view-switch",
604
639
  options: _ctx.viewSwitchOptions,
@@ -625,7 +660,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
625
660
  }), {
626
661
  widget: withCtx(({ item }) => [
627
662
  ($options.gridEditable)
628
- ? (openBlock(), createElementBlock("div", _hoisted_20, [
663
+ ? (openBlock(), createElementBlock("div", _hoisted_23, [
629
664
  createVNode(_component_NcButton, {
630
665
  variant: "tertiary",
631
666
  "aria-label": _ctx.t('nextcloud-vue', 'Configure widget'),
@@ -643,11 +678,12 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
643
678
  key: 1,
644
679
  title: $options.getWidgetTitle(item),
645
680
  eyebrow: $options.getWidgetEyebrow(item),
681
+ subtitle: $options.getWidgetSubtitle(item),
646
682
  showTitle: $options.widgetShowTitle(item)
647
683
  }, {
648
684
  default: withCtx(() => [
649
- createElementVNode("div", _hoisted_21, [
650
- createElementVNode("p", _hoisted_22, toDisplayString(_ctx.t('nextcloud-vue', 'This widget shows data from another app that isn\'t installed yet.')), 1 /* TEXT */),
685
+ createElementVNode("div", _hoisted_24, [
686
+ createElementVNode("p", _hoisted_25, toDisplayString(_ctx.t('nextcloud-vue', 'This widget shows data from another app that isn\'t installed yet.')), 1 /* TEXT */),
651
687
  createVNode(_component_NcButton, {
652
688
  variant: "primary",
653
689
  href: $options.appInstallUrl($options.missingRequiredApp(item))
@@ -663,7 +699,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
663
699
  ])
664
700
  ]),
665
701
  _: 2 /* DYNAMIC */
666
- }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["title", "eyebrow", "showTitle"]))
702
+ }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["title", "eyebrow", "subtitle", "showTitle"]))
667
703
  : ($options.isTile(item))
668
704
  ? (openBlock(), createBlock(_component_CnTileWidget, {
669
705
  key: 2,
@@ -675,6 +711,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
675
711
  widgetId: item.widgetId,
676
712
  title: $options.getWidgetTitle(item),
677
713
  eyebrow: $options.getWidgetEyebrow(item),
714
+ subtitle: $options.getWidgetSubtitle(item),
678
715
  iconUrl: $options.getWidgetIconUrl(item),
679
716
  iconClass: $options.getWidgetIconClass(item),
680
717
  showTitle: $options.widgetShowTitle(item),
@@ -741,7 +778,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
741
778
  createElementVNode("span", {
742
779
  class: "cn-dashboard-page__date-chip",
743
780
  title: $data.dateChipTitle
744
- }, toDisplayString($options.dashboardRangeChipLabel), 9 /* TEXT, PROPS */, _hoisted_23)
781
+ }, toDisplayString($options.dashboardRangeChipLabel), 9 /* TEXT, PROPS */, _hoisted_26)
745
782
  ]),
746
783
  default: withCtx(() => [
747
784
  (openBlock(true), createElementBlock(Fragment, null, renderList($options.effectivePresets, (preset) => {
@@ -756,7 +793,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
756
793
  key: 0,
757
794
  size: 16
758
795
  }))
759
- : (openBlock(), createElementBlock("span", _hoisted_24))
796
+ : (openBlock(), createElementBlock("span", _hoisted_27))
760
797
  ]),
761
798
  default: withCtx(() => [
762
799
  createTextVNode(" " + toDisplayString(preset.label), 1 /* TEXT */)
@@ -786,7 +823,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
786
823
  key: "2"
787
824
  }
788
825
  : undefined
789
- ]), 1032 /* PROPS, DYNAMIC_SLOTS */, ["widgetId", "title", "eyebrow", "iconUrl", "iconClass", "showTitle", "borderless", "flush", "buttons", "headerLink", "styleConfig", "titleIconPosition", "titleIconColor", "titleIconVariant", "showRefresh", "showActions", "documentationUrl", "docsAnchor", "onRefresh", "onRequestFeature"]))
826
+ ]), 1032 /* PROPS, DYNAMIC_SLOTS */, ["widgetId", "title", "eyebrow", "subtitle", "iconUrl", "iconClass", "showTitle", "borderless", "flush", "buttons", "headerLink", "styleConfig", "titleIconPosition", "titleIconColor", "titleIconVariant", "showRefresh", "showActions", "documentationUrl", "docsAnchor", "onRefresh", "onRequestFeature"]))
790
827
  : ($options.isChart(item))
791
828
  ? (openBlock(), createBlock(_component_CnWidgetWrapper, {
792
829
  key: 4,
@@ -794,6 +831,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
794
831
  class: normalizeClass({ 'cn-dashboard-page__chart-fit': $options.isChartFitted(item) }),
795
832
  title: $options.getWidgetTitle(item),
796
833
  eyebrow: $options.getWidgetEyebrow(item),
834
+ subtitle: $options.getWidgetSubtitle(item),
797
835
  iconUrl: $options.getWidgetIconUrl(item),
798
836
  iconClass: $options.getWidgetIconClass(item),
799
837
  showTitle: $options.widgetShowTitle(item),
@@ -836,7 +874,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
836
874
  createElementVNode("span", {
837
875
  class: "cn-dashboard-page__date-chip",
838
876
  title: $data.dateChipTitle
839
- }, toDisplayString($options.formatChartDateRange(item) || $options.dashboardRangeChipLabel), 9 /* TEXT, PROPS */, _hoisted_25)
877
+ }, toDisplayString($options.formatChartDateRange(item) || $options.dashboardRangeChipLabel), 9 /* TEXT, PROPS */, _hoisted_28)
840
878
  ]),
841
879
  default: withCtx(() => [
842
880
  (openBlock(true), createElementBlock(Fragment, null, renderList($options.effectivePresets, (preset) => {
@@ -851,7 +889,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
851
889
  key: 0,
852
890
  size: 16
853
891
  }))
854
- : (openBlock(), createElementBlock("span", _hoisted_26))
892
+ : (openBlock(), createElementBlock("span", _hoisted_29))
855
893
  ]),
856
894
  default: withCtx(() => [
857
895
  createTextVNode(" " + toDisplayString(preset.label), 1 /* TEXT */)
@@ -881,13 +919,14 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
881
919
  key: "0"
882
920
  }
883
921
  : undefined
884
- ]), 1032 /* PROPS, DYNAMIC_SLOTS */, ["widgetId", "class", "title", "eyebrow", "iconUrl", "iconClass", "showTitle", "showActions", "borderless", "flush", "buttons", "headerLink", "styleConfig", "titleIconPosition", "titleIconColor", "titleIconVariant", "showRefresh", "documentationUrl", "docsAnchor", "onRefresh", "onRequestFeature"]))
922
+ ]), 1032 /* PROPS, DYNAMIC_SLOTS */, ["widgetId", "class", "title", "eyebrow", "subtitle", "iconUrl", "iconClass", "showTitle", "showActions", "borderless", "flush", "buttons", "headerLink", "styleConfig", "titleIconPosition", "titleIconColor", "titleIconVariant", "showRefresh", "documentationUrl", "docsAnchor", "onRefresh", "onRequestFeature"]))
885
923
  : ($options.isStatsBlock(item))
886
924
  ? (openBlock(), createBlock(_component_CnWidgetWrapper, {
887
925
  key: 5,
888
926
  widgetId: item.widgetId,
889
927
  title: $options.getWidgetTitle(item),
890
928
  eyebrow: $options.getWidgetEyebrow(item),
929
+ subtitle: $options.getWidgetSubtitle(item),
891
930
  iconUrl: $options.getWidgetIconUrl(item),
892
931
  iconClass: $options.getWidgetIconClass(item),
893
932
  showTitle: $options.widgetShowTitle(item),
@@ -910,13 +949,14 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
910
949
  }), null, 16 /* FULL_PROPS */, ["title", "data-source"])
911
950
  ]),
912
951
  _: 2 /* DYNAMIC */
913
- }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["widgetId", "title", "eyebrow", "iconUrl", "iconClass", "showTitle", "showActions", "borderless", "flush", "class", "buttons", "headerLink", "styleConfig", "documentationUrl", "docsAnchor", "onRefresh", "onRequestFeature"]))
952
+ }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["widgetId", "title", "eyebrow", "subtitle", "iconUrl", "iconClass", "showTitle", "showActions", "borderless", "flush", "class", "buttons", "headerLink", "styleConfig", "documentationUrl", "docsAnchor", "onRefresh", "onRequestFeature"]))
914
953
  : ($options.isIntegration(item))
915
954
  ? (openBlock(), createBlock(_component_CnWidgetWrapper, {
916
955
  key: 6,
917
956
  widgetId: item.widgetId,
918
957
  title: $options.getWidgetTitle(item),
919
958
  eyebrow: $options.getWidgetEyebrow(item),
959
+ subtitle: $options.getWidgetSubtitle(item),
920
960
  iconUrl: $options.getWidgetIconUrl(item),
921
961
  iconClass: $options.getWidgetIconClass(item),
922
962
  showTitle: $options.widgetShowTitle(item),
@@ -947,16 +987,17 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
947
987
  key: 1,
948
988
  ref_for: true
949
989
  }, $options.getIntegrationProps(item)), null, 16 /* FULL_PROPS */))
950
- : (openBlock(), createElementBlock("div", _hoisted_27, toDisplayString($props.unavailableLabel), 1 /* TEXT */))
990
+ : (openBlock(), createElementBlock("div", _hoisted_30, toDisplayString($props.unavailableLabel), 1 /* TEXT */))
951
991
  ]),
952
992
  _: 2 /* DYNAMIC */
953
- }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["widgetId", "title", "eyebrow", "iconUrl", "iconClass", "showTitle", "showActions", "borderless", "flush", "buttons", "headerLink", "styleConfig", "titleIconPosition", "titleIconColor", "titleIconVariant", "showRefresh", "documentationUrl", "docsAnchor", "onRefresh", "onRequestFeature"]))
993
+ }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["widgetId", "title", "eyebrow", "subtitle", "iconUrl", "iconClass", "showTitle", "showActions", "borderless", "flush", "buttons", "headerLink", "styleConfig", "titleIconPosition", "titleIconColor", "titleIconVariant", "showRefresh", "documentationUrl", "docsAnchor", "onRefresh", "onRequestFeature"]))
954
994
  : ($options.isNcWidget(item))
955
995
  ? (openBlock(), createBlock(_component_CnWidgetWrapper, {
956
996
  key: 7,
957
997
  widgetId: item.widgetId,
958
998
  title: $options.getWidgetTitle(item),
959
999
  eyebrow: $options.getWidgetEyebrow(item),
1000
+ subtitle: $options.getWidgetSubtitle(item),
960
1001
  iconUrl: $options.getWidgetIconUrl(item),
961
1002
  iconClass: $options.getWidgetIconClass(item),
962
1003
  showTitle: $options.widgetShowTitle(item),
@@ -977,13 +1018,14 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
977
1018
  }, null, 8 /* PROPS */, ["widget", "unavailableText"])
978
1019
  ]),
979
1020
  _: 2 /* DYNAMIC */
980
- }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["widgetId", "title", "eyebrow", "iconUrl", "iconClass", "showTitle", "showActions", "buttons", "headerLink", "styleConfig", "showRefresh", "documentationUrl", "docsAnchor", "onRefresh", "onRequestFeature"]))
1021
+ }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["widgetId", "title", "eyebrow", "subtitle", "iconUrl", "iconClass", "showTitle", "showActions", "buttons", "headerLink", "styleConfig", "showRefresh", "documentationUrl", "docsAnchor", "onRefresh", "onRequestFeature"]))
981
1022
  : ($options.registryRenderer(item))
982
1023
  ? (openBlock(), createBlock(_component_CnWidgetWrapper, {
983
1024
  key: 8,
984
1025
  widgetId: item.widgetId,
985
1026
  title: $options.getWidgetTitle(item),
986
1027
  eyebrow: $options.getWidgetEyebrow(item),
1028
+ subtitle: $options.getWidgetSubtitle(item),
987
1029
  showTitle: $options.widgetShowTitle(item),
988
1030
  showActions: $options.widgetShowActions(item),
989
1031
  showRefresh: $options.getWidgetShowRefresh(item),
@@ -1016,7 +1058,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
1016
1058
  name: "title-meta",
1017
1059
  fn: withCtx(() => [
1018
1060
  ($options.widgetHeaderCount(item) !== null)
1019
- ? (openBlock(), createElementBlock("span", _hoisted_28, toDisplayString($options.widgetHeaderCount(item)), 1 /* TEXT */))
1061
+ ? (openBlock(), createElementBlock("span", _hoisted_31, toDisplayString($options.widgetHeaderCount(item)), 1 /* TEXT */))
1020
1062
  : createCommentVNode("v-if", true),
1021
1063
  ($options.dateRangeEnabled && item.dateChip === true)
1022
1064
  ? (openBlock(), createBlock(_component_NcActions, {
@@ -1032,7 +1074,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
1032
1074
  createElementVNode("span", {
1033
1075
  class: "cn-dashboard-page__date-chip",
1034
1076
  title: $data.dateChipTitle
1035
- }, toDisplayString($options.dashboardRangeChipLabel), 9 /* TEXT, PROPS */, _hoisted_29)
1077
+ }, toDisplayString($options.dashboardRangeChipLabel), 9 /* TEXT, PROPS */, _hoisted_32)
1036
1078
  ]),
1037
1079
  default: withCtx(() => [
1038
1080
  (openBlock(true), createElementBlock(Fragment, null, renderList($options.effectivePresets, (preset) => {
@@ -1047,7 +1089,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
1047
1089
  key: 0,
1048
1090
  size: 16
1049
1091
  }))
1050
- : (openBlock(), createElementBlock("span", _hoisted_30))
1092
+ : (openBlock(), createElementBlock("span", _hoisted_33))
1051
1093
  ]),
1052
1094
  default: withCtx(() => [
1053
1095
  createTextVNode(" " + toDisplayString(preset.label), 1 /* TEXT */)
@@ -1083,7 +1125,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
1083
1125
  name: "actions",
1084
1126
  fn: withCtx(() => [
1085
1127
  ($options.widgetHeaderNote(item))
1086
- ? (openBlock(), createElementBlock("span", _hoisted_31, toDisplayString($options.widgetHeaderNote(item)), 1 /* TEXT */))
1128
+ ? (openBlock(), createElementBlock("span", _hoisted_34, toDisplayString($options.widgetHeaderNote(item)), 1 /* TEXT */))
1087
1129
  : createCommentVNode("v-if", true),
1088
1130
  ($options.widgetHeaderAction(item))
1089
1131
  ? (openBlock(), createElementBlock("button", {
@@ -1092,25 +1134,26 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
1092
1134
  class: "cn-dashboard-page__widget-action",
1093
1135
  "data-testid": "cn-dashboard-widget-header-action",
1094
1136
  onClick: $event => ($options.widgetHeaderAction(item).run())
1095
- }, toDisplayString($options.widgetHeaderAction(item).label), 9 /* TEXT, PROPS */, _hoisted_32))
1137
+ }, toDisplayString($options.widgetHeaderAction(item).label), 9 /* TEXT, PROPS */, _hoisted_35))
1096
1138
  : createCommentVNode("v-if", true)
1097
1139
  ]),
1098
1140
  key: "1"
1099
1141
  }
1100
1142
  : undefined
1101
- ]), 1032 /* PROPS, DYNAMIC_SLOTS */, ["widgetId", "title", "eyebrow", "showTitle", "showActions", "showRefresh", "borderless", "flush", "titleIconPosition", "titleIconColor", "titleIconVariant", "class", "buttons", "headerLink", "styleConfig", "documentationUrl", "docsAnchor", "onRefresh", "onRequestFeature"]))
1143
+ ]), 1032 /* PROPS, DYNAMIC_SLOTS */, ["widgetId", "title", "eyebrow", "subtitle", "showTitle", "showActions", "showRefresh", "borderless", "flush", "titleIconPosition", "titleIconColor", "titleIconVariant", "class", "buttons", "headerLink", "styleConfig", "documentationUrl", "docsAnchor", "onRefresh", "onRequestFeature"]))
1102
1144
  : (openBlock(), createBlock(_component_CnWidgetWrapper, {
1103
1145
  key: 9,
1104
1146
  title: $options.getWidgetTitle(item),
1105
1147
  eyebrow: $options.getWidgetEyebrow(item),
1148
+ subtitle: $options.getWidgetSubtitle(item),
1106
1149
  showTitle: $options.widgetShowTitle(item),
1107
1150
  showRefresh: false
1108
1151
  }, {
1109
1152
  default: withCtx(() => [
1110
- createElementVNode("div", _hoisted_33, toDisplayString($props.unavailableLabel), 1 /* TEXT */)
1153
+ createElementVNode("div", _hoisted_36, toDisplayString($props.unavailableLabel), 1 /* TEXT */)
1111
1154
  ]),
1112
1155
  _: 1 /* STABLE */
1113
- }, 8 /* PROPS */, ["title", "eyebrow", "showTitle"]))
1156
+ }, 8 /* PROPS */, ["title", "eyebrow", "subtitle", "showTitle"]))
1114
1157
  ]),
1115
1158
  _: 3 /* FORWARDED */
1116
1159
  }, 16 /* FULL_PROPS */, ["layout", "editable", "columns", "columnOpts", "cellHeight", "margin", "float", "onLayoutChange"]))
@@ -1130,7 +1173,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
1130
1173
  ]),
1131
1174
  _: 1 /* STABLE */
1132
1175
  }, 8 /* PROPS */, ["description"])
1133
- ], 8 /* PROPS */, _hoisted_34))
1176
+ ], 8 /* PROPS */, _hoisted_37))
1134
1177
  : createCommentVNode("v-if", true),
1135
1178
  ($options.hasBodyWidgets)
1136
1179
  ? (openBlock(), createBlock(_component_CnBodySections, {