@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,4 +1,4 @@
1
- import { resolveComponent, openBlock, createElementBlock, normalizeClass, createElementVNode, toDisplayString, createCommentVNode, createVNode, Fragment, renderList, normalizeStyle, withKeys, renderSlot, createTextVNode, withModifiers, createBlock } from 'vue';
1
+ import { resolveComponent, openBlock, createElementBlock, normalizeClass, createElementVNode, toDisplayString, createCommentVNode, Fragment, renderList, createBlock, createVNode, normalizeStyle, withKeys, withModifiers, renderSlot, createTextVNode } from 'vue';
2
2
 
3
3
  const _hoisted_1 = {
4
4
  key: 0,
@@ -9,62 +9,73 @@ const _hoisted_3 = {
9
9
  key: 0,
10
10
  class: "cn-data-table__count"
11
11
  };
12
- const _hoisted_4 = {
13
- key: 1,
12
+ const _hoisted_4 = ["aria-label"];
13
+ const _hoisted_5 = ["aria-label", "onClick"];
14
+ const _hoisted_6 = {
15
+ key: 3,
14
16
  class: "cn-table-loading",
15
17
  "data-testid": "cn-object-list-loading"
16
18
  };
17
- const _hoisted_5 = ["tabindex", "role", "aria-label"];
18
- const _hoisted_6 = { key: 0 };
19
- const _hoisted_7 = {
19
+ const _hoisted_7 = ["tabindex", "role", "aria-label"];
20
+ const _hoisted_8 = { key: 0 };
21
+ const _hoisted_9 = {
20
22
  key: 0,
21
23
  class: "cn-table-col--checkbox"
22
24
  };
23
- const _hoisted_8 = {
25
+ const _hoisted_10 = {
24
26
  key: 1,
25
27
  class: "cn-table-col--icon"
26
28
  };
27
- const _hoisted_9 = ["tabindex", "aria-sort", "title", "onClick", "onKeydown"];
28
- const _hoisted_10 = {
29
+ const _hoisted_11 = ["tabindex", "aria-sort", "data-filtered", "title", "onClick", "onKeydown"];
30
+ const _hoisted_12 = {
29
31
  key: 0,
30
32
  class: "cn-table-sort-indicator"
31
33
  };
32
- const _hoisted_11 = {
34
+ const _hoisted_13 = {
33
35
  key: 1,
34
36
  class: "cn-table-sort-badge"
35
37
  };
36
- const _hoisted_12 = {
38
+ const _hoisted_14 = ["aria-label", "aria-expanded", "onClick"];
39
+ const _hoisted_15 = {
37
40
  key: 2,
38
41
  class: "cn-table-col--actions"
39
42
  };
40
- const _hoisted_13 = {
43
+ const _hoisted_16 = {
41
44
  key: 0,
42
45
  class: "cn-table-empty",
43
46
  "data-testid": "cn-object-list-empty"
44
47
  };
45
- const _hoisted_14 = ["colspan"];
46
- const _hoisted_15 = ["data-testid-row-id", "onClick", "onAuxclick", "onContextmenu"];
47
- const _hoisted_16 = {
48
+ const _hoisted_17 = ["colspan"];
49
+ const _hoisted_18 = ["data-testid-row-id", "onClick", "onAuxclick", "onContextmenu"];
50
+ const _hoisted_19 = {
48
51
  key: 1,
49
52
  class: "cn-table-col--icon"
50
53
  };
51
- const _hoisted_17 = ["href", "aria-label", "onClick"];
52
- const _hoisted_18 = {
54
+ const _hoisted_20 = ["href", "aria-label", "onClick"];
55
+ const _hoisted_21 = {
53
56
  key: 2,
54
57
  class: "cn-table-row-indicators",
55
58
  "data-testid": "cn-row-indicators"
56
59
  };
57
- const _hoisted_19 = ["title", "data-testid"];
58
- const _hoisted_20 = { class: "hidden-visually" };
59
- const _hoisted_21 = {
60
+ const _hoisted_22 = ["title", "data-testid"];
61
+ const _hoisted_23 = { class: "hidden-visually" };
62
+ const _hoisted_24 = {
60
63
  key: 3,
64
+ class: "cn-table-cell__secondary",
65
+ "data-testid": "cn-cell-secondary"
66
+ };
67
+ const _hoisted_25 = {
68
+ key: 5,
61
69
  class: "cn-data-table__footer"
62
70
  };
63
- const _hoisted_22 = ["href"];
71
+ const _hoisted_26 = ["href"];
64
72
 
65
73
  function render(_ctx, _cache, $props, $setup, $data, $options) {
74
+ const _component_CnColumnFilterPopover = resolveComponent("CnColumnFilterPopover");
66
75
  const _component_NcLoadingIcon = resolveComponent("NcLoadingIcon");
67
76
  const _component_NcCheckboxRadioSwitch = resolveComponent("NcCheckboxRadioSwitch");
77
+ const _component_FilterIcon = resolveComponent("FilterIcon");
78
+ const _component_FilterOutline = resolveComponent("FilterOutline");
68
79
  const _component_CnIcon = resolveComponent("CnIcon");
69
80
  const _component_CnLockIndicator = resolveComponent("CnLockIndicator");
70
81
  const _component_CnCellRenderer = resolveComponent("CnCellRenderer");
@@ -85,8 +96,44 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
85
96
  : createCommentVNode("v-if", true)
86
97
  ]))
87
98
  : createCommentVNode("v-if", true),
99
+ (!$options.isLoading && $options.activeColumnFilterChips.length > 0)
100
+ ? (openBlock(), createElementBlock("ul", {
101
+ key: 1,
102
+ class: "cn-data-table__filter-chips",
103
+ "aria-label": $options.activeFiltersLabel,
104
+ "data-testid": "cn-table-filter-chips"
105
+ }, [
106
+ (openBlock(true), createElementBlock(Fragment, null, renderList($options.activeColumnFilterChips, (chip) => {
107
+ return (openBlock(), createElementBlock("li", {
108
+ key: chip.key,
109
+ class: "cn-data-table__filter-chip"
110
+ }, [
111
+ createElementVNode("span", null, toDisplayString(chip.text), 1 /* TEXT */),
112
+ createElementVNode("button", {
113
+ type: "button",
114
+ class: "cn-data-table__filter-chip-remove",
115
+ "aria-label": chip.removeLabel,
116
+ "data-testid": "cn-table-filter-chip-remove",
117
+ onClick: $event => ($options.clearColumnFilter(chip.col))
118
+ }, " × ", 8 /* PROPS */, _hoisted_5)
119
+ ]))
120
+ }), 128 /* KEYED_FRAGMENT */))
121
+ ], 8 /* PROPS */, _hoisted_4))
122
+ : createCommentVNode("v-if", true),
123
+ ($options.openFilterColumn)
124
+ ? (openBlock(), createBlock(_component_CnColumnFilterPopover, {
125
+ key: $data.openFilterKey,
126
+ def: $options.filterDefFor($options.openFilterColumn),
127
+ state: $options.columnFilterStateFor($options.openFilterColumn),
128
+ label: $options.translateLabel($options.openFilterColumn.label),
129
+ anchorRect: $data.filterAnchorRect,
130
+ register: $props.filterRegister,
131
+ onApply: _cache[0] || (_cache[0] = (state) => $options.applyColumnFilter($options.openFilterColumn, state)),
132
+ onClose: $options.closeColumnFilter
133
+ }, null, 8 /* PROPS */, ["def", "state", "label", "anchorRect", "register", "onClose"]))
134
+ : createCommentVNode("v-if", true),
88
135
  ($options.isLoading)
89
- ? (openBlock(), createElementBlock("div", _hoisted_4, [
136
+ ? (openBlock(), createElementBlock("div", _hoisted_6, [
90
137
  createVNode(_component_NcLoadingIcon, {
91
138
  size: 32,
92
139
  "aria-hidden": "true"
@@ -94,7 +141,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
94
141
  createElementVNode("p", null, toDisplayString($props.loadingText), 1 /* TEXT */)
95
142
  ]))
96
143
  : (openBlock(), createElementBlock("div", {
97
- key: 2,
144
+ key: 4,
98
145
  ref: "scrollEl",
99
146
  class: "cn-data-table__scroll",
100
147
  tabindex: $data.isScrollable ? 0 : undefined,
@@ -106,10 +153,10 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
106
153
  "data-testid": "cn-object-list-table"
107
154
  }, [
108
155
  (!$props.hideHeader)
109
- ? (openBlock(), createElementBlock("thead", _hoisted_6, [
156
+ ? (openBlock(), createElementBlock("thead", _hoisted_8, [
110
157
  createElementVNode("tr", null, [
111
158
  ($props.selectable)
112
- ? (openBlock(), createElementBlock("th", _hoisted_7, [
159
+ ? (openBlock(), createElementBlock("th", _hoisted_9, [
113
160
  createVNode(_component_NcCheckboxRadioSwitch, {
114
161
  modelValue: $options.allSelected,
115
162
  indeterminate: $options.someSelected && !$options.allSelected,
@@ -119,7 +166,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
119
166
  ]))
120
167
  : createCommentVNode("v-if", true),
121
168
  ($props.rowIcon)
122
- ? (openBlock(), createElementBlock("th", _hoisted_8))
169
+ ? (openBlock(), createElementBlock("th", _hoisted_10))
123
170
  : createCommentVNode("v-if", true),
124
171
  (openBlock(true), createElementBlock(Fragment, null, renderList($options.effectiveColumns, (col) => {
125
172
  return (openBlock(), createElementBlock("th", {
@@ -131,6 +178,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
131
178
  style: normalizeStyle(col.width ? { width: col.width } : {}),
132
179
  tabindex: col.sortable ? 0 : null,
133
180
  "aria-sort": $options.ariaSortFor(col),
181
+ "data-filtered": $options.isColumnFiltered(col) ? 'true' : null,
134
182
  title: $options.translateLabel(col.description) || null,
135
183
  onClick: $event => (col.sortable ? $options.onHeaderClick(col.key, $event) : null),
136
184
  onKeydown: withKeys($event => (col.sortable ? $options.onHeaderKeydown(col.key, $event) : null), ["enter"])
@@ -139,15 +187,40 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
139
187
  class: normalizeClass(col.description ? 'cn-table-header--described' : '')
140
188
  }, toDisplayString($options.translateLabel(col.label)), 3 /* TEXT, CLASS */),
141
189
  (col.sortable && $options.sortKeyIndex(col.key) !== -1)
142
- ? (openBlock(), createElementBlock("span", _hoisted_10, toDisplayString($options.effectiveSortKeys[$options.sortKeyIndex(col.key)].order === 'asc' ? '▲' : '▼'), 1 /* TEXT */))
190
+ ? (openBlock(), createElementBlock("span", _hoisted_12, toDisplayString($options.effectiveSortKeys[$options.sortKeyIndex(col.key)].order === 'asc' ? '▲' : '▼'), 1 /* TEXT */))
143
191
  : createCommentVNode("v-if", true),
144
192
  (col.sortable && $options.sortBadgeFor(col.key) !== null)
145
- ? (openBlock(), createElementBlock("span", _hoisted_11, toDisplayString($options.sortBadgeFor(col.key)), 1 /* TEXT */))
193
+ ? (openBlock(), createElementBlock("span", _hoisted_13, toDisplayString($options.sortBadgeFor(col.key)), 1 /* TEXT */))
194
+ : createCommentVNode("v-if", true),
195
+ ($options.filterDefFor(col))
196
+ ? (openBlock(), createElementBlock("button", {
197
+ key: 2,
198
+ ref_for: true,
199
+ ref: 'filterButton-' + col.key,
200
+ type: "button",
201
+ class: normalizeClass(["cn-table-header__filter", { 'cn-table-header__filter--active': $options.isColumnFiltered(col) }]),
202
+ "aria-label": $options.filterButtonLabel(col),
203
+ "aria-haspopup": "dialog",
204
+ "aria-expanded": $data.openFilterKey === col.key ? 'true' : 'false',
205
+ "data-testid": "cn-table-header-filter",
206
+ onClick: withModifiers($event => ($options.toggleColumnFilter(col, $event)), ["stop"]),
207
+ onKeydown: _cache[1] || (_cache[1] = withKeys(withModifiers(() => {}, ["stop"]), ["enter"]))
208
+ }, [
209
+ ($options.isColumnFiltered(col))
210
+ ? (openBlock(), createBlock(_component_FilterIcon, {
211
+ key: 0,
212
+ size: 16
213
+ }))
214
+ : (openBlock(), createBlock(_component_FilterOutline, {
215
+ key: 1,
216
+ size: 16
217
+ }))
218
+ ], 42 /* CLASS, PROPS, NEED_HYDRATION */, _hoisted_14))
146
219
  : createCommentVNode("v-if", true)
147
- ], 46 /* CLASS, STYLE, PROPS, NEED_HYDRATION */, _hoisted_9))
220
+ ], 46 /* CLASS, STYLE, PROPS, NEED_HYDRATION */, _hoisted_11))
148
221
  }), 128 /* KEYED_FRAGMENT */)),
149
222
  (_ctx.$slots['row-actions'])
150
- ? (openBlock(), createElementBlock("th", _hoisted_12, [
223
+ ? (openBlock(), createElementBlock("th", _hoisted_15, [
151
224
  renderSlot(_ctx.$slots, "actions-header")
152
225
  ]))
153
226
  : createCommentVNode("v-if", true)
@@ -156,12 +229,12 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
156
229
  : createCommentVNode("v-if", true),
157
230
  createElementVNode("tbody", null, [
158
231
  ($options.effectiveRows.length === 0)
159
- ? (openBlock(), createElementBlock("tr", _hoisted_13, [
232
+ ? (openBlock(), createElementBlock("tr", _hoisted_16, [
160
233
  createElementVNode("td", { colspan: $options.totalColumns }, [
161
234
  renderSlot(_ctx.$slots, "empty", {}, () => [
162
235
  createTextVNode(toDisplayString($options.translateLabel($props.emptyText)), 1 /* TEXT */)
163
236
  ])
164
- ], 8 /* PROPS */, _hoisted_14)
237
+ ], 8 /* PROPS */, _hoisted_17)
165
238
  ]))
166
239
  : (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList($options.effectiveRows, (row) => {
167
240
  return (openBlock(), createElementBlock("tr", {
@@ -173,7 +246,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
173
246
  ]]),
174
247
  "data-testid": "cn-object-row",
175
248
  "data-testid-row-id": row[$props.rowKey],
176
- onMousedown: _cache[5] || (_cache[5] = (...args) => ($options.onRowMouseDown && $options.onRowMouseDown(...args))),
249
+ onMousedown: _cache[7] || (_cache[7] = (...args) => ($options.onRowMouseDown && $options.onRowMouseDown(...args))),
177
250
  onClick: $event => ($options.onRowClick(row, $event)),
178
251
  onAuxclick: $event => ($options.onRowAuxClick(row, $event)),
179
252
  onContextmenu: $event => ($options.onRowContextMenu(row, $event))
@@ -182,8 +255,8 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
182
255
  ? (openBlock(), createElementBlock("td", {
183
256
  key: 0,
184
257
  class: "cn-table-col--checkbox",
185
- onClick: _cache[0] || (_cache[0] = withModifiers(() => {}, ["stop"])),
186
- onAuxclick: _cache[1] || (_cache[1] = withModifiers(() => {}, ["stop"]))
258
+ onClick: _cache[2] || (_cache[2] = withModifiers(() => {}, ["stop"])),
259
+ onAuxclick: _cache[3] || (_cache[3] = withModifiers(() => {}, ["stop"]))
187
260
  }, [
188
261
  createVNode(_component_NcCheckboxRadioSwitch, {
189
262
  modelValue: $options.isSelected(row),
@@ -193,7 +266,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
193
266
  ], 32 /* NEED_HYDRATION */))
194
267
  : createCommentVNode("v-if", true),
195
268
  ($props.rowIcon)
196
- ? (openBlock(), createElementBlock("td", _hoisted_16, [
269
+ ? (openBlock(), createElementBlock("td", _hoisted_19, [
197
270
  createVNode(_component_CnIcon, {
198
271
  name: $options.getRowIcon(row),
199
272
  size: 20
@@ -205,7 +278,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
205
278
  key: col.key,
206
279
  class: normalizeClass([col.class || '', col.cellClass || '', $props.cellClass ? $props.cellClass(row, col) : '']),
207
280
  style: normalizeStyle(col.width ? { maxWidth: col.width } : {}),
208
- onMouseenter: _cache[2] || (_cache[2] = (...args) => ($options.titleWhenClipped && $options.titleWhenClipped(...args)))
281
+ onMouseenter: _cache[4] || (_cache[4] = (...args) => ($options.titleWhenClipped && $options.titleWhenClipped(...args)))
209
282
  }, [
210
283
  (colIndex === 0 && $options.rowLinks[String(row[$props.rowKey])])
211
284
  ? (openBlock(), createElementBlock("a", {
@@ -216,7 +289,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
216
289
  draggable: "false",
217
290
  "data-testid": "cn-row-link",
218
291
  onClick: $event => ($options.onRowLinkClick(row, $event))
219
- }, null, 8 /* PROPS */, _hoisted_17))
292
+ }, null, 8 /* PROPS */, _hoisted_20))
220
293
  : createCommentVNode("v-if", true),
221
294
  (colIndex === 0)
222
295
  ? (openBlock(), createBlock(_component_CnLockIndicator, {
@@ -226,7 +299,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
226
299
  }, null, 8 /* PROPS */, ["object"]))
227
300
  : createCommentVNode("v-if", true),
228
301
  (colIndex === 0 && $options.indicatorsFor(row).shown.length > 0)
229
- ? (openBlock(), createElementBlock("span", _hoisted_18, [
302
+ ? (openBlock(), createElementBlock("span", _hoisted_21, [
230
303
  (openBlock(true), createElementBlock(Fragment, null, renderList($options.indicatorsFor(row).shown, (indicator) => {
231
304
  return (openBlock(), createElementBlock("span", {
232
305
  key: indicator.id || indicator.field,
@@ -238,8 +311,8 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
238
311
  name: indicator.icon || 'InformationOutline',
239
312
  size: 16
240
313
  }, null, 8 /* PROPS */, ["name"]),
241
- createElementVNode("span", _hoisted_20, toDisplayString(indicator.text), 1 /* TEXT */)
242
- ], 8 /* PROPS */, _hoisted_19))
314
+ createElementVNode("span", _hoisted_23, toDisplayString(indicator.text), 1 /* TEXT */)
315
+ ], 8 /* PROPS */, _hoisted_22))
243
316
  }), 128 /* KEYED_FRAGMENT */))
244
317
  ]))
245
318
  : createCommentVNode("v-if", true),
@@ -258,26 +331,29 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
258
331
  row: row,
259
332
  rowKey: $props.rowKey
260
333
  }, null, 8 /* PROPS */, ["value", "property", "formatter", "formatterOptions", "widget", "widgetProps", "format", "row", "rowKey"])
261
- ])
334
+ ]),
335
+ ($options.secondaryValue(row, col))
336
+ ? (openBlock(), createElementBlock("span", _hoisted_24, toDisplayString($options.secondaryValue(row, col)), 1 /* TEXT */))
337
+ : createCommentVNode("v-if", true)
262
338
  ], 38 /* CLASS, STYLE, NEED_HYDRATION */))
263
339
  }), 128 /* KEYED_FRAGMENT */)),
264
340
  (_ctx.$slots['row-actions'])
265
341
  ? (openBlock(), createElementBlock("td", {
266
342
  key: 2,
267
343
  class: normalizeClass(["cn-table-col--actions", [$props.cellClass ? $props.cellClass(row, { key: 'actions' }) : '']]),
268
- onClick: _cache[3] || (_cache[3] = withModifiers(() => {}, ["stop"])),
269
- onAuxclick: _cache[4] || (_cache[4] = withModifiers(() => {}, ["stop"]))
344
+ onClick: _cache[5] || (_cache[5] = withModifiers(() => {}, ["stop"])),
345
+ onAuxclick: _cache[6] || (_cache[6] = withModifiers(() => {}, ["stop"]))
270
346
  }, [
271
347
  renderSlot(_ctx.$slots, "row-actions", { row: row })
272
348
  ], 34 /* CLASS, NEED_HYDRATION */))
273
349
  : createCommentVNode("v-if", true)
274
- ], 42 /* CLASS, PROPS, NEED_HYDRATION */, _hoisted_15))
350
+ ], 42 /* CLASS, PROPS, NEED_HYDRATION */, _hoisted_18))
275
351
  }), 128 /* KEYED_FRAGMENT */))
276
352
  ])
277
353
  ], 2 /* CLASS */)
278
- ], 8 /* PROPS */, _hoisted_5)),
354
+ ], 8 /* PROPS */, _hoisted_7)),
279
355
  (_ctx.$slots.footer || ($props.viewAllRoute && $options.totalRowCount > $options.effectiveRows.length))
280
- ? (openBlock(), createElementBlock("div", _hoisted_21, [
356
+ ? (openBlock(), createElementBlock("div", _hoisted_25, [
281
357
  renderSlot(_ctx.$slots, "footer", {
282
358
  total: $options.totalRowCount,
283
359
  shown: $options.effectiveRows.length
@@ -287,13 +363,13 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
287
363
  key: 0,
288
364
  class: "cn-data-table__view-all",
289
365
  href: $options.viewAllHref,
290
- onClick: _cache[6] || (_cache[6] = (...args) => ($options.onViewAll && $options.onViewAll(...args)))
291
- }, toDisplayString($props.viewAllLabel), 9 /* TEXT, PROPS */, _hoisted_22))
366
+ onClick: _cache[8] || (_cache[8] = (...args) => ($options.onViewAll && $options.onViewAll(...args)))
367
+ }, toDisplayString($props.viewAllLabel), 9 /* TEXT, PROPS */, _hoisted_26))
292
368
  : (openBlock(), createElementBlock("button", {
293
369
  key: 1,
294
370
  type: "button",
295
371
  class: "cn-data-table__view-all",
296
- onClick: _cache[7] || (_cache[7] = (...args) => ($options.onViewAll && $options.onViewAll(...args)))
372
+ onClick: _cache[9] || (_cache[9] = (...args) => ($options.onViewAll && $options.onViewAll(...args)))
297
373
  }, toDisplayString($props.viewAllLabel), 1 /* TEXT */))
298
374
  ])
299
375
  ]))