@conduction/nextcloud-vue 2.61.0 → 2.63.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 (186) 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 +394 -27
  8. package/dist/esm/components/CnAppNav/CnAppNav.vue2.js.map +1 -1
  9. package/dist/esm/components/CnAppNav/CnAppNav.vue3.js.map +1 -1
  10. package/dist/esm/components/CnAppRoot/CnAppRoot.vue2.js +99 -9
  11. package/dist/esm/components/CnAppRoot/CnAppRoot.vue2.js.map +1 -1
  12. package/dist/esm/components/CnAppRoot/CnAppRoot.vue3.js +39 -18
  13. package/dist/esm/components/CnAppRoot/CnAppRoot.vue3.js.map +1 -1
  14. package/dist/esm/components/CnBannerWidget/CnBannerWidget.vue2.js +79 -2
  15. package/dist/esm/components/CnBannerWidget/CnBannerWidget.vue2.js.map +1 -1
  16. package/dist/esm/components/CnBannerWidget/CnBannerWidget.vue3.js +38 -25
  17. package/dist/esm/components/CnBannerWidget/CnBannerWidget.vue3.js.map +1 -1
  18. package/dist/esm/components/CnBrandStripe/CnBrandStripe.vue2.js +21 -1
  19. package/dist/esm/components/CnBrandStripe/CnBrandStripe.vue2.js.map +1 -1
  20. package/dist/esm/components/CnBrandStripe/CnBrandStripe.vue3.js +4 -1
  21. package/dist/esm/components/CnBrandStripe/CnBrandStripe.vue3.js.map +1 -1
  22. package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue2.js.map +1 -1
  23. package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue3.js +53 -37
  24. package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue3.js.map +1 -1
  25. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js +30 -6
  26. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js.map +1 -1
  27. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js +2 -2
  28. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js.map +1 -1
  29. package/dist/esm/components/CnDataTable/CnColumnFilterPopover.vue.js +10 -0
  30. package/dist/esm/components/CnDataTable/CnColumnFilterPopover.vue.js.map +1 -0
  31. package/dist/esm/components/CnDataTable/CnColumnFilterPopover.vue2.js +293 -0
  32. package/dist/esm/components/CnDataTable/CnColumnFilterPopover.vue2.js.map +1 -0
  33. package/dist/esm/components/CnDataTable/CnColumnFilterPopover.vue3.js +189 -0
  34. package/dist/esm/components/CnDataTable/CnColumnFilterPopover.vue3.js.map +1 -0
  35. package/dist/esm/components/CnDataTable/CnDataTable.vue2.js +256 -23
  36. package/dist/esm/components/CnDataTable/CnDataTable.vue2.js.map +1 -1
  37. package/dist/esm/components/CnDataTable/CnDataTable.vue3.js +119 -51
  38. package/dist/esm/components/CnDataTable/CnDataTable.vue3.js.map +1 -1
  39. package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue2.js.map +1 -1
  40. package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue3.js +2 -1
  41. package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue3.js.map +1 -1
  42. package/dist/esm/components/CnFieldHelper/CnFieldHelper.vue2.js +3 -1
  43. package/dist/esm/components/CnFieldHelper/CnFieldHelper.vue2.js.map +1 -1
  44. package/dist/esm/components/CnFieldHelper/CnFieldHelper.vue3.js +1 -1
  45. package/dist/esm/components/CnFieldHelper/CnFieldHelper.vue3.js.map +1 -1
  46. package/dist/esm/components/CnFormDialog/CnFormDialog.vue2.js +234 -9
  47. package/dist/esm/components/CnFormDialog/CnFormDialog.vue2.js.map +1 -1
  48. package/dist/esm/components/CnFormDialog/CnFormDialog.vue3.js +96 -57
  49. package/dist/esm/components/CnFormDialog/CnFormDialog.vue3.js.map +1 -1
  50. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js +51 -2
  51. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js.map +1 -1
  52. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js +5 -1
  53. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js.map +1 -1
  54. package/dist/esm/components/CnIndexPage/selfModeActions.js +3 -3
  55. package/dist/esm/components/CnIndexPage/selfModeActions.js.map +1 -1
  56. package/dist/esm/components/CnLinkCardsPage/CnLinkCardsPage.vue2.js.map +1 -1
  57. package/dist/esm/components/CnLinkCardsPage/CnLinkCardsPage.vue3.js.map +1 -1
  58. package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue2.js +36 -1
  59. package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue2.js.map +1 -1
  60. package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue3.js +4 -1
  61. package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue3.js.map +1 -1
  62. package/dist/esm/components/CnObjectSidebar/CnFilesTab.vue2.js +53 -0
  63. package/dist/esm/components/CnObjectSidebar/CnFilesTab.vue2.js.map +1 -1
  64. package/dist/esm/components/CnObjectSidebar/CnFilesTab.vue3.js +22 -5
  65. package/dist/esm/components/CnObjectSidebar/CnFilesTab.vue3.js.map +1 -1
  66. package/dist/esm/components/CnReportsPage/CnReportsPage.vue2.js.map +1 -1
  67. package/dist/esm/components/CnReportsPage/CnReportsPage.vue3.js.map +1 -1
  68. package/dist/esm/components/CnResourceSelect/CnResourceSelect.vue2.js +121 -12
  69. package/dist/esm/components/CnResourceSelect/CnResourceSelect.vue2.js.map +1 -1
  70. package/dist/esm/components/CnResourceSelect/CnResourceSelect.vue3.js +3 -1
  71. package/dist/esm/components/CnResourceSelect/CnResourceSelect.vue3.js.map +1 -1
  72. package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue2.js +326 -1
  73. package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue2.js.map +1 -1
  74. package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue3.js +112 -26
  75. package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue3.js.map +1 -1
  76. package/dist/esm/components/CnStorePage/CnStorePage.vue2.js.map +1 -1
  77. package/dist/esm/components/CnStorePage/CnStorePage.vue3.js.map +1 -1
  78. package/dist/esm/components/CnTimelineWidget/CnTimelineWidget.vue.js +10 -0
  79. package/dist/esm/components/CnTimelineWidget/CnTimelineWidget.vue.js.map +1 -0
  80. package/dist/esm/components/CnTimelineWidget/CnTimelineWidget.vue2.js +337 -0
  81. package/dist/esm/components/CnTimelineWidget/CnTimelineWidget.vue2.js.map +1 -0
  82. package/dist/esm/components/CnTimelineWidget/CnTimelineWidget.vue3.js +102 -0
  83. package/dist/esm/components/CnTimelineWidget/CnTimelineWidget.vue3.js.map +1 -0
  84. package/dist/esm/components/CnTimelineWidget/dashboardRegistration.js +34 -0
  85. package/dist/esm/components/CnTimelineWidget/dashboardRegistration.js.map +1 -0
  86. package/dist/esm/components/CnWalkthrough/CnWalkthrough.vue2.js +131 -8
  87. package/dist/esm/components/CnWalkthrough/CnWalkthrough.vue2.js.map +1 -1
  88. package/dist/esm/components/CnWalkthrough/CnWalkthrough.vue3.js +40 -38
  89. package/dist/esm/components/CnWalkthrough/CnWalkthrough.vue3.js.map +1 -1
  90. package/dist/esm/components/CnWidgetGrid/builtInWidgets.js +8 -6
  91. package/dist/esm/components/CnWidgetGrid/builtInWidgets.js.map +1 -1
  92. package/dist/esm/components/CnWidgetGrid/registerDashboardWidgets.js +1 -0
  93. package/dist/esm/components/CnWidgetGrid/registerDashboardWidgets.js.map +1 -1
  94. package/dist/esm/components/CnWikiPage/CnWikiPage.vue2.js.map +1 -1
  95. package/dist/esm/components/CnWikiPage/CnWikiPage.vue3.js.map +1 -1
  96. package/dist/esm/components/CnWizardDialog/CnWizardDialog.vue2.js +19 -0
  97. package/dist/esm/components/CnWizardDialog/CnWizardDialog.vue2.js.map +1 -1
  98. package/dist/esm/components/CnWizardDialog/CnWizardDialog.vue3.js +1 -1
  99. package/dist/esm/components/CnWizardDialog/CnWizardDialog.vue3.js.map +1 -1
  100. package/dist/esm/composables/useDependencyCheck.js +65 -0
  101. package/dist/esm/composables/useDependencyCheck.js.map +1 -0
  102. package/dist/esm/composables/useWalkthrough.js +218 -6
  103. package/dist/esm/composables/useWalkthrough.js.map +1 -1
  104. package/dist/esm/index.js +2 -0
  105. package/dist/esm/index.js.map +1 -1
  106. package/dist/esm/l10n/en.json.js +48 -0
  107. package/dist/esm/l10n/en.json.js.map +1 -1
  108. package/dist/esm/l10n/nl.json.js +48 -0
  109. package/dist/esm/l10n/nl.json.js.map +1 -1
  110. package/dist/esm/nextcloud-vue.css +557 -9
  111. package/dist/esm/store/useObjectStore.js +8 -0
  112. package/dist/esm/store/useObjectStore.js.map +1 -1
  113. package/dist/esm/utils/columnFilters.js +311 -0
  114. package/dist/esm/utils/columnFilters.js.map +1 -0
  115. package/dist/esm/utils/groupAutocomplete.js +123 -0
  116. package/dist/esm/utils/groupAutocomplete.js.map +1 -0
  117. package/dist/esm/utils/libraryWidgetKeys.js +2 -0
  118. package/dist/esm/utils/libraryWidgetKeys.js.map +1 -1
  119. package/dist/esm/utils/pickerOptions.js +198 -0
  120. package/dist/esm/utils/pickerOptions.js.map +1 -0
  121. package/dist/esm/utils/schema.js +83 -7
  122. package/dist/esm/utils/schema.js.map +1 -1
  123. package/dist/esm/utils/timelineEvents.js +174 -0
  124. package/dist/esm/utils/timelineEvents.js.map +1 -0
  125. package/dist/esm/utils/validateManifestV2.compiled.js +2 -2
  126. package/dist/esm/utils/validateManifestV2.compiled.js.map +1 -1
  127. package/dist/esm/utils/walkthroughSignals.js +88 -0
  128. package/dist/esm/utils/walkthroughSignals.js.map +1 -0
  129. package/dist/nextcloud-vue.cjs.js +9779 -5236
  130. package/dist/nextcloud-vue.cjs.js.map +2 -2
  131. package/dist/nextcloud-vue.css +557 -9
  132. package/l10n/en.json +48 -0
  133. package/l10n/nl.json +48 -0
  134. package/package.json +3 -2
  135. package/scripts/manifest-schema-hash.js +41 -0
  136. package/scripts/record-manifest-schema-hash.js +52 -0
  137. package/src/components/CnAdminActionCard/CnAdminActionCard.vue +234 -0
  138. package/src/components/CnAdminActionCard/index.js +4 -0
  139. package/src/components/CnAppNav/CnAppNav.vue +394 -27
  140. package/src/components/CnAppRoot/CnAppRoot.vue +129 -15
  141. package/src/components/CnBannerWidget/CnBannerWidget.vue +113 -2
  142. package/src/components/CnBrandStripe/CnBrandStripe.md +16 -0
  143. package/src/components/CnBrandStripe/CnBrandStripe.vue +58 -5
  144. package/src/components/CnChoiceCards/CnChoiceCards.vue +56 -31
  145. package/src/components/CnDashboardPage/CnDashboardPage.vue +32 -8
  146. package/src/components/CnDataTable/CnColumnFilterPopover.vue +524 -0
  147. package/src/components/CnDataTable/CnDataTable.md +4 -1
  148. package/src/components/CnDataTable/CnDataTable.vue +302 -21
  149. package/src/components/CnDetailWidgetHost/CnDetailWidgetHost.vue +2 -2
  150. package/src/components/CnFieldHelper/CnFieldHelper.vue +4 -2
  151. package/src/components/CnFormDialog/CnFormDialog.vue +290 -31
  152. package/src/components/CnIndexPage/CnIndexPage.vue +55 -2
  153. package/src/components/CnIndexPage/selfModeActions.js +3 -3
  154. package/src/components/CnLinkCardsPage/CnLinkCardsPage.vue +35 -2
  155. package/src/components/CnObjectListWidget/CnObjectListWidget.vue +39 -1
  156. package/src/components/CnObjectSidebar/CnFilesTab.vue +65 -0
  157. package/src/components/CnReportsPage/CnReportsPage.vue +7 -0
  158. package/src/components/CnResourceSelect/CnResourceSelect.vue +123 -12
  159. package/src/components/CnSetupWizard/CnSetupWizard.vue +392 -3
  160. package/src/components/CnStorePage/CnStorePage.vue +7 -0
  161. package/src/components/CnTimelineWidget/CnTimelineWidget.vue +477 -0
  162. package/src/components/CnTimelineWidget/dashboardRegistration.js +32 -0
  163. package/src/components/CnTimelineWidget/index.js +4 -0
  164. package/src/components/CnWalkthrough/CnWalkthrough.vue +143 -10
  165. package/src/components/CnWidgetGrid/builtInWidgets.js +2 -0
  166. package/src/components/CnWidgetGrid/registerDashboardWidgets.js +1 -0
  167. package/src/components/CnWikiPage/CnWikiPage.vue +7 -0
  168. package/src/components/CnWizardDialog/CnWizardDialog.vue +20 -1
  169. package/src/components/index.js +2 -0
  170. package/src/composables/useDependencyCheck.js +61 -0
  171. package/src/composables/useWalkthrough.js +217 -5
  172. package/src/css/dashboard.css +49 -0
  173. package/src/css/detail-page.css +19 -0
  174. package/src/css/table.css +82 -2
  175. package/src/index.js +2 -0
  176. package/src/public/index.js +5 -0
  177. package/src/schemas/app-manifest-v2.schema.json +23 -1
  178. package/src/store/useObjectStore.js +8 -0
  179. package/src/utils/columnFilters.js +324 -0
  180. package/src/utils/groupAutocomplete.js +119 -0
  181. package/src/utils/libraryWidgetKeys.js +2 -0
  182. package/src/utils/pickerOptions.js +194 -0
  183. package/src/utils/schema.js +83 -7
  184. package/src/utils/timelineEvents.js +171 -0
  185. package/src/utils/validateManifestV2.compiled.js +2 -2
  186. 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,68 @@ 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
- key: 3,
60
+ const _hoisted_22 = ["title", "data-testid"];
61
+ const _hoisted_23 = { class: "hidden-visually" };
62
+ const _hoisted_24 = {
63
+ key: 5,
61
64
  class: "cn-data-table__footer"
62
65
  };
63
- const _hoisted_22 = ["href"];
66
+ const _hoisted_25 = ["href"];
64
67
 
65
68
  function render(_ctx, _cache, $props, $setup, $data, $options) {
69
+ const _component_CnColumnFilterPopover = resolveComponent("CnColumnFilterPopover");
66
70
  const _component_NcLoadingIcon = resolveComponent("NcLoadingIcon");
67
71
  const _component_NcCheckboxRadioSwitch = resolveComponent("NcCheckboxRadioSwitch");
72
+ const _component_FilterIcon = resolveComponent("FilterIcon");
73
+ const _component_FilterOutline = resolveComponent("FilterOutline");
68
74
  const _component_CnIcon = resolveComponent("CnIcon");
69
75
  const _component_CnLockIndicator = resolveComponent("CnLockIndicator");
70
76
  const _component_CnCellRenderer = resolveComponent("CnCellRenderer");
@@ -85,8 +91,44 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
85
91
  : createCommentVNode("v-if", true)
86
92
  ]))
87
93
  : createCommentVNode("v-if", true),
94
+ (!$options.isLoading && $options.activeColumnFilterChips.length > 0)
95
+ ? (openBlock(), createElementBlock("ul", {
96
+ key: 1,
97
+ class: "cn-data-table__filter-chips",
98
+ "aria-label": $options.activeFiltersLabel,
99
+ "data-testid": "cn-table-filter-chips"
100
+ }, [
101
+ (openBlock(true), createElementBlock(Fragment, null, renderList($options.activeColumnFilterChips, (chip) => {
102
+ return (openBlock(), createElementBlock("li", {
103
+ key: chip.key,
104
+ class: "cn-data-table__filter-chip"
105
+ }, [
106
+ createElementVNode("span", null, toDisplayString(chip.text), 1 /* TEXT */),
107
+ createElementVNode("button", {
108
+ type: "button",
109
+ class: "cn-data-table__filter-chip-remove",
110
+ "aria-label": chip.removeLabel,
111
+ "data-testid": "cn-table-filter-chip-remove",
112
+ onClick: $event => ($options.clearColumnFilter(chip.col))
113
+ }, " × ", 8 /* PROPS */, _hoisted_5)
114
+ ]))
115
+ }), 128 /* KEYED_FRAGMENT */))
116
+ ], 8 /* PROPS */, _hoisted_4))
117
+ : createCommentVNode("v-if", true),
118
+ ($options.openFilterColumn)
119
+ ? (openBlock(), createBlock(_component_CnColumnFilterPopover, {
120
+ key: $data.openFilterKey,
121
+ def: $options.filterDefFor($options.openFilterColumn),
122
+ state: $options.columnFilterStateFor($options.openFilterColumn),
123
+ label: $options.translateLabel($options.openFilterColumn.label),
124
+ anchorRect: $data.filterAnchorRect,
125
+ register: $props.filterRegister,
126
+ onApply: _cache[0] || (_cache[0] = (state) => $options.applyColumnFilter($options.openFilterColumn, state)),
127
+ onClose: $options.closeColumnFilter
128
+ }, null, 8 /* PROPS */, ["def", "state", "label", "anchorRect", "register", "onClose"]))
129
+ : createCommentVNode("v-if", true),
88
130
  ($options.isLoading)
89
- ? (openBlock(), createElementBlock("div", _hoisted_4, [
131
+ ? (openBlock(), createElementBlock("div", _hoisted_6, [
90
132
  createVNode(_component_NcLoadingIcon, {
91
133
  size: 32,
92
134
  "aria-hidden": "true"
@@ -94,7 +136,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
94
136
  createElementVNode("p", null, toDisplayString($props.loadingText), 1 /* TEXT */)
95
137
  ]))
96
138
  : (openBlock(), createElementBlock("div", {
97
- key: 2,
139
+ key: 4,
98
140
  ref: "scrollEl",
99
141
  class: "cn-data-table__scroll",
100
142
  tabindex: $data.isScrollable ? 0 : undefined,
@@ -106,10 +148,10 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
106
148
  "data-testid": "cn-object-list-table"
107
149
  }, [
108
150
  (!$props.hideHeader)
109
- ? (openBlock(), createElementBlock("thead", _hoisted_6, [
151
+ ? (openBlock(), createElementBlock("thead", _hoisted_8, [
110
152
  createElementVNode("tr", null, [
111
153
  ($props.selectable)
112
- ? (openBlock(), createElementBlock("th", _hoisted_7, [
154
+ ? (openBlock(), createElementBlock("th", _hoisted_9, [
113
155
  createVNode(_component_NcCheckboxRadioSwitch, {
114
156
  modelValue: $options.allSelected,
115
157
  indeterminate: $options.someSelected && !$options.allSelected,
@@ -119,7 +161,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
119
161
  ]))
120
162
  : createCommentVNode("v-if", true),
121
163
  ($props.rowIcon)
122
- ? (openBlock(), createElementBlock("th", _hoisted_8))
164
+ ? (openBlock(), createElementBlock("th", _hoisted_10))
123
165
  : createCommentVNode("v-if", true),
124
166
  (openBlock(true), createElementBlock(Fragment, null, renderList($options.effectiveColumns, (col) => {
125
167
  return (openBlock(), createElementBlock("th", {
@@ -131,6 +173,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
131
173
  style: normalizeStyle(col.width ? { width: col.width } : {}),
132
174
  tabindex: col.sortable ? 0 : null,
133
175
  "aria-sort": $options.ariaSortFor(col),
176
+ "data-filtered": $options.isColumnFiltered(col) ? 'true' : null,
134
177
  title: $options.translateLabel(col.description) || null,
135
178
  onClick: $event => (col.sortable ? $options.onHeaderClick(col.key, $event) : null),
136
179
  onKeydown: withKeys($event => (col.sortable ? $options.onHeaderKeydown(col.key, $event) : null), ["enter"])
@@ -139,15 +182,40 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
139
182
  class: normalizeClass(col.description ? 'cn-table-header--described' : '')
140
183
  }, toDisplayString($options.translateLabel(col.label)), 3 /* TEXT, CLASS */),
141
184
  (col.sortable && $options.sortKeyIndex(col.key) !== -1)
142
- ? (openBlock(), createElementBlock("span", _hoisted_10, toDisplayString($options.effectiveSortKeys[$options.sortKeyIndex(col.key)].order === 'asc' ? '▲' : '▼'), 1 /* TEXT */))
185
+ ? (openBlock(), createElementBlock("span", _hoisted_12, toDisplayString($options.effectiveSortKeys[$options.sortKeyIndex(col.key)].order === 'asc' ? '▲' : '▼'), 1 /* TEXT */))
186
+ : createCommentVNode("v-if", true),
187
+ (col.sortable && $options.sortBadgeFor(col.key) !== null)
188
+ ? (openBlock(), createElementBlock("span", _hoisted_13, toDisplayString($options.sortBadgeFor(col.key)), 1 /* TEXT */))
143
189
  : createCommentVNode("v-if", true),
144
- (col.sortable && $options.effectiveSortKeys.length > 1 && $options.sortKeyIndex(col.key) !== -1)
145
- ? (openBlock(), createElementBlock("span", _hoisted_11, toDisplayString($options.sortKeyIndex(col.key) + 1), 1 /* TEXT */))
190
+ ($options.filterDefFor(col))
191
+ ? (openBlock(), createElementBlock("button", {
192
+ key: 2,
193
+ ref_for: true,
194
+ ref: 'filterButton-' + col.key,
195
+ type: "button",
196
+ class: normalizeClass(["cn-table-header__filter", { 'cn-table-header__filter--active': $options.isColumnFiltered(col) }]),
197
+ "aria-label": $options.filterButtonLabel(col),
198
+ "aria-haspopup": "dialog",
199
+ "aria-expanded": $data.openFilterKey === col.key ? 'true' : 'false',
200
+ "data-testid": "cn-table-header-filter",
201
+ onClick: withModifiers($event => ($options.toggleColumnFilter(col, $event)), ["stop"]),
202
+ onKeydown: _cache[1] || (_cache[1] = withKeys(withModifiers(() => {}, ["stop"]), ["enter"]))
203
+ }, [
204
+ ($options.isColumnFiltered(col))
205
+ ? (openBlock(), createBlock(_component_FilterIcon, {
206
+ key: 0,
207
+ size: 16
208
+ }))
209
+ : (openBlock(), createBlock(_component_FilterOutline, {
210
+ key: 1,
211
+ size: 16
212
+ }))
213
+ ], 42 /* CLASS, PROPS, NEED_HYDRATION */, _hoisted_14))
146
214
  : createCommentVNode("v-if", true)
147
- ], 46 /* CLASS, STYLE, PROPS, NEED_HYDRATION */, _hoisted_9))
215
+ ], 46 /* CLASS, STYLE, PROPS, NEED_HYDRATION */, _hoisted_11))
148
216
  }), 128 /* KEYED_FRAGMENT */)),
149
217
  (_ctx.$slots['row-actions'])
150
- ? (openBlock(), createElementBlock("th", _hoisted_12, [
218
+ ? (openBlock(), createElementBlock("th", _hoisted_15, [
151
219
  renderSlot(_ctx.$slots, "actions-header")
152
220
  ]))
153
221
  : createCommentVNode("v-if", true)
@@ -156,12 +224,12 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
156
224
  : createCommentVNode("v-if", true),
157
225
  createElementVNode("tbody", null, [
158
226
  ($options.effectiveRows.length === 0)
159
- ? (openBlock(), createElementBlock("tr", _hoisted_13, [
227
+ ? (openBlock(), createElementBlock("tr", _hoisted_16, [
160
228
  createElementVNode("td", { colspan: $options.totalColumns }, [
161
229
  renderSlot(_ctx.$slots, "empty", {}, () => [
162
230
  createTextVNode(toDisplayString($options.translateLabel($props.emptyText)), 1 /* TEXT */)
163
231
  ])
164
- ], 8 /* PROPS */, _hoisted_14)
232
+ ], 8 /* PROPS */, _hoisted_17)
165
233
  ]))
166
234
  : (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList($options.effectiveRows, (row) => {
167
235
  return (openBlock(), createElementBlock("tr", {
@@ -173,7 +241,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
173
241
  ]]),
174
242
  "data-testid": "cn-object-row",
175
243
  "data-testid-row-id": row[$props.rowKey],
176
- onMousedown: _cache[5] || (_cache[5] = (...args) => ($options.onRowMouseDown && $options.onRowMouseDown(...args))),
244
+ onMousedown: _cache[7] || (_cache[7] = (...args) => ($options.onRowMouseDown && $options.onRowMouseDown(...args))),
177
245
  onClick: $event => ($options.onRowClick(row, $event)),
178
246
  onAuxclick: $event => ($options.onRowAuxClick(row, $event)),
179
247
  onContextmenu: $event => ($options.onRowContextMenu(row, $event))
@@ -182,8 +250,8 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
182
250
  ? (openBlock(), createElementBlock("td", {
183
251
  key: 0,
184
252
  class: "cn-table-col--checkbox",
185
- onClick: _cache[0] || (_cache[0] = withModifiers(() => {}, ["stop"])),
186
- onAuxclick: _cache[1] || (_cache[1] = withModifiers(() => {}, ["stop"]))
253
+ onClick: _cache[2] || (_cache[2] = withModifiers(() => {}, ["stop"])),
254
+ onAuxclick: _cache[3] || (_cache[3] = withModifiers(() => {}, ["stop"]))
187
255
  }, [
188
256
  createVNode(_component_NcCheckboxRadioSwitch, {
189
257
  modelValue: $options.isSelected(row),
@@ -193,7 +261,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
193
261
  ], 32 /* NEED_HYDRATION */))
194
262
  : createCommentVNode("v-if", true),
195
263
  ($props.rowIcon)
196
- ? (openBlock(), createElementBlock("td", _hoisted_16, [
264
+ ? (openBlock(), createElementBlock("td", _hoisted_19, [
197
265
  createVNode(_component_CnIcon, {
198
266
  name: $options.getRowIcon(row),
199
267
  size: 20
@@ -205,7 +273,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
205
273
  key: col.key,
206
274
  class: normalizeClass([col.class || '', col.cellClass || '', $props.cellClass ? $props.cellClass(row, col) : '']),
207
275
  style: normalizeStyle(col.width ? { maxWidth: col.width } : {}),
208
- onMouseenter: _cache[2] || (_cache[2] = (...args) => ($options.titleWhenClipped && $options.titleWhenClipped(...args)))
276
+ onMouseenter: _cache[4] || (_cache[4] = (...args) => ($options.titleWhenClipped && $options.titleWhenClipped(...args)))
209
277
  }, [
210
278
  (colIndex === 0 && $options.rowLinks[String(row[$props.rowKey])])
211
279
  ? (openBlock(), createElementBlock("a", {
@@ -216,7 +284,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
216
284
  draggable: "false",
217
285
  "data-testid": "cn-row-link",
218
286
  onClick: $event => ($options.onRowLinkClick(row, $event))
219
- }, null, 8 /* PROPS */, _hoisted_17))
287
+ }, null, 8 /* PROPS */, _hoisted_20))
220
288
  : createCommentVNode("v-if", true),
221
289
  (colIndex === 0)
222
290
  ? (openBlock(), createBlock(_component_CnLockIndicator, {
@@ -226,7 +294,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
226
294
  }, null, 8 /* PROPS */, ["object"]))
227
295
  : createCommentVNode("v-if", true),
228
296
  (colIndex === 0 && $options.indicatorsFor(row).shown.length > 0)
229
- ? (openBlock(), createElementBlock("span", _hoisted_18, [
297
+ ? (openBlock(), createElementBlock("span", _hoisted_21, [
230
298
  (openBlock(true), createElementBlock(Fragment, null, renderList($options.indicatorsFor(row).shown, (indicator) => {
231
299
  return (openBlock(), createElementBlock("span", {
232
300
  key: indicator.id || indicator.field,
@@ -238,8 +306,8 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
238
306
  name: indicator.icon || 'InformationOutline',
239
307
  size: 16
240
308
  }, null, 8 /* PROPS */, ["name"]),
241
- createElementVNode("span", _hoisted_20, toDisplayString(indicator.text), 1 /* TEXT */)
242
- ], 8 /* PROPS */, _hoisted_19))
309
+ createElementVNode("span", _hoisted_23, toDisplayString(indicator.text), 1 /* TEXT */)
310
+ ], 8 /* PROPS */, _hoisted_22))
243
311
  }), 128 /* KEYED_FRAGMENT */))
244
312
  ]))
245
313
  : createCommentVNode("v-if", true),
@@ -265,19 +333,19 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
265
333
  ? (openBlock(), createElementBlock("td", {
266
334
  key: 2,
267
335
  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"]))
336
+ onClick: _cache[5] || (_cache[5] = withModifiers(() => {}, ["stop"])),
337
+ onAuxclick: _cache[6] || (_cache[6] = withModifiers(() => {}, ["stop"]))
270
338
  }, [
271
339
  renderSlot(_ctx.$slots, "row-actions", { row: row })
272
340
  ], 34 /* CLASS, NEED_HYDRATION */))
273
341
  : createCommentVNode("v-if", true)
274
- ], 42 /* CLASS, PROPS, NEED_HYDRATION */, _hoisted_15))
342
+ ], 42 /* CLASS, PROPS, NEED_HYDRATION */, _hoisted_18))
275
343
  }), 128 /* KEYED_FRAGMENT */))
276
344
  ])
277
345
  ], 2 /* CLASS */)
278
- ], 8 /* PROPS */, _hoisted_5)),
346
+ ], 8 /* PROPS */, _hoisted_7)),
279
347
  (_ctx.$slots.footer || ($props.viewAllRoute && $options.totalRowCount > $options.effectiveRows.length))
280
- ? (openBlock(), createElementBlock("div", _hoisted_21, [
348
+ ? (openBlock(), createElementBlock("div", _hoisted_24, [
281
349
  renderSlot(_ctx.$slots, "footer", {
282
350
  total: $options.totalRowCount,
283
351
  shown: $options.effectiveRows.length
@@ -287,13 +355,13 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
287
355
  key: 0,
288
356
  class: "cn-data-table__view-all",
289
357
  href: $options.viewAllHref,
290
- onClick: _cache[6] || (_cache[6] = (...args) => ($options.onViewAll && $options.onViewAll(...args)))
291
- }, toDisplayString($props.viewAllLabel), 9 /* TEXT, PROPS */, _hoisted_22))
358
+ onClick: _cache[8] || (_cache[8] = (...args) => ($options.onViewAll && $options.onViewAll(...args)))
359
+ }, toDisplayString($props.viewAllLabel), 9 /* TEXT, PROPS */, _hoisted_25))
292
360
  : (openBlock(), createElementBlock("button", {
293
361
  key: 1,
294
362
  type: "button",
295
363
  class: "cn-data-table__view-all",
296
- onClick: _cache[7] || (_cache[7] = (...args) => ($options.onViewAll && $options.onViewAll(...args)))
364
+ onClick: _cache[9] || (_cache[9] = (...args) => ($options.onViewAll && $options.onViewAll(...args)))
297
365
  }, toDisplayString($props.viewAllLabel), 1 /* TEXT */))
298
366
  ])
299
367
  ]))