@skdx/vue 0.30.0 → 0.32.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 (225) hide show
  1. package/dist/autocomplete/AutocompleteAnatomy.vue_vue_type_script_setup_true_lang.cjs +1 -1
  2. package/dist/autocomplete/AutocompleteAnatomy.vue_vue_type_script_setup_true_lang.js +1 -1
  3. package/dist/backdrop/Backdrop.vue.cjs +1 -0
  4. package/dist/backdrop/Backdrop.vue.d.cts +12 -0
  5. package/dist/backdrop/Backdrop.vue.d.ts +12 -0
  6. package/dist/backdrop/Backdrop.vue.js +1 -0
  7. package/dist/backdrop/Backdrop.vue_vue_type_script_setup_true_lang.cjs +1 -0
  8. package/dist/backdrop/Backdrop.vue_vue_type_script_setup_true_lang.js +1 -0
  9. package/dist/backdrop/index.cjs +1 -0
  10. package/dist/backdrop/index.d.cts +1 -0
  11. package/dist/backdrop/index.d.ts +1 -0
  12. package/dist/backdrop/index.js +1 -0
  13. package/dist/checkbox-card/CheckboxCard.vue_vue_type_script_setup_true_lang.cjs +1 -1
  14. package/dist/checkbox-card/CheckboxCard.vue_vue_type_script_setup_true_lang.js +1 -1
  15. package/dist/checkbox-group/CheckboxGroupItem.vue.d.cts +7 -4
  16. package/dist/checkbox-group/CheckboxGroupItem.vue.d.ts +7 -4
  17. package/dist/checkbox-group/CheckboxGroupItem.vue_vue_type_script_setup_true_lang.cjs +1 -1
  18. package/dist/checkbox-group/CheckboxGroupItem.vue_vue_type_script_setup_true_lang.js +1 -1
  19. package/dist/checkbox-group/CheckboxGroupSelectAll.vue.d.cts +7 -4
  20. package/dist/checkbox-group/CheckboxGroupSelectAll.vue.d.ts +7 -4
  21. package/dist/checkbox-group/CheckboxGroupSelectAll.vue_vue_type_script_setup_true_lang.cjs +1 -1
  22. package/dist/checkbox-group/CheckboxGroupSelectAll.vue_vue_type_script_setup_true_lang.js +1 -1
  23. package/dist/chip/Chip.vue.cjs +1 -0
  24. package/dist/chip/Chip.vue.d.cts +12 -0
  25. package/dist/chip/Chip.vue.d.ts +12 -0
  26. package/dist/chip/Chip.vue.js +1 -0
  27. package/dist/chip/Chip.vue_vue_type_script_setup_true_lang.cjs +1 -0
  28. package/dist/chip/Chip.vue_vue_type_script_setup_true_lang.js +1 -0
  29. package/dist/chip/index.cjs +1 -0
  30. package/dist/chip/index.d.cts +1 -0
  31. package/dist/chip/index.d.ts +1 -0
  32. package/dist/chip/index.js +1 -0
  33. package/dist/combobox/Combobox.vue_vue_type_script_setup_true_lang.cjs +1 -1
  34. package/dist/combobox/Combobox.vue_vue_type_script_setup_true_lang.js +1 -1
  35. package/dist/combobox/primitives.d.cts +1 -0
  36. package/dist/combobox/primitives.d.ts +1 -0
  37. package/dist/date-picker/DatePickerTimeField.vue.d.cts +1 -1
  38. package/dist/date-picker/DatePickerTimeField.vue.d.ts +1 -1
  39. package/dist/date-picker/DatePickerTrigger.vue_vue_type_script_setup_true_lang.cjs +1 -1
  40. package/dist/date-picker/DatePickerTrigger.vue_vue_type_script_setup_true_lang.js +1 -1
  41. package/dist/date-range-picker/DateRangePicker.vue.cjs +1 -0
  42. package/dist/date-range-picker/DateRangePicker.vue.d.cts +12 -0
  43. package/dist/date-range-picker/DateRangePicker.vue.d.ts +12 -0
  44. package/dist/date-range-picker/DateRangePicker.vue.js +1 -0
  45. package/dist/date-range-picker/DateRangePicker.vue_vue_type_script_setup_true_lang.cjs +1 -0
  46. package/dist/date-range-picker/DateRangePicker.vue_vue_type_script_setup_true_lang.js +1 -0
  47. package/dist/date-range-picker/index.cjs +1 -0
  48. package/dist/date-range-picker/index.d.cts +1 -0
  49. package/dist/date-range-picker/index.d.ts +1 -0
  50. package/dist/date-range-picker/index.js +1 -0
  51. package/dist/date-time-picker/DateTimePicker.vue.cjs +1 -0
  52. package/dist/date-time-picker/DateTimePicker.vue.d.cts +12 -0
  53. package/dist/date-time-picker/DateTimePicker.vue.d.ts +12 -0
  54. package/dist/date-time-picker/DateTimePicker.vue.js +1 -0
  55. package/dist/date-time-picker/DateTimePicker.vue_vue_type_script_setup_true_lang.cjs +1 -0
  56. package/dist/date-time-picker/DateTimePicker.vue_vue_type_script_setup_true_lang.js +1 -0
  57. package/dist/date-time-picker/index.cjs +1 -0
  58. package/dist/date-time-picker/index.d.cts +1 -0
  59. package/dist/date-time-picker/index.d.ts +1 -0
  60. package/dist/date-time-picker/index.js +1 -0
  61. package/dist/dialog/Dialogs.vue.cjs +1 -0
  62. package/dist/dialog/Dialogs.vue.d.cts +17 -0
  63. package/dist/dialog/Dialogs.vue.d.ts +17 -0
  64. package/dist/dialog/Dialogs.vue.js +1 -0
  65. package/dist/dialog/Dialogs.vue_vue_type_script_setup_true_lang.cjs +1 -0
  66. package/dist/dialog/Dialogs.vue_vue_type_script_setup_true_lang.js +1 -0
  67. package/dist/dialog/index.cjs +1 -1
  68. package/dist/dialog/index.d.cts +2 -0
  69. package/dist/dialog/index.d.ts +2 -0
  70. package/dist/dialog/index.js +1 -1
  71. package/dist/fab/Fab.vue.cjs +1 -0
  72. package/dist/fab/Fab.vue.d.cts +12 -0
  73. package/dist/fab/Fab.vue.d.ts +12 -0
  74. package/dist/fab/Fab.vue.js +1 -0
  75. package/dist/fab/Fab.vue_vue_type_script_setup_true_lang.cjs +1 -0
  76. package/dist/fab/Fab.vue_vue_type_script_setup_true_lang.js +1 -0
  77. package/dist/fab/index.cjs +1 -0
  78. package/dist/fab/index.d.cts +1 -0
  79. package/dist/fab/index.d.ts +1 -0
  80. package/dist/fab/index.js +1 -0
  81. package/dist/field/FieldError.vue_vue_type_script_setup_true_lang.cjs +1 -1
  82. package/dist/field/FieldError.vue_vue_type_script_setup_true_lang.js +1 -1
  83. package/dist/file-upload/FileUploadAnatomy.vue_vue_type_script_setup_true_lang.cjs +1 -1
  84. package/dist/file-upload/FileUploadAnatomy.vue_vue_type_script_setup_true_lang.js +1 -1
  85. package/dist/floating-panel/FloatingPanelContent.vue_vue_type_script_setup_true_lang.cjs +1 -1
  86. package/dist/floating-panel/FloatingPanelContent.vue_vue_type_script_setup_true_lang.js +1 -1
  87. package/dist/floating-panel/FloatingPanelRoot.vue_vue_type_script_setup_true_lang.cjs +1 -1
  88. package/dist/floating-panel/FloatingPanelRoot.vue_vue_type_script_setup_true_lang.js +1 -1
  89. package/dist/floating-panel/context.d.cts +4 -0
  90. package/dist/floating-panel/context.d.ts +4 -0
  91. package/dist/gauge/Gauge.vue.cjs +1 -0
  92. package/dist/gauge/Gauge.vue.d.cts +12 -0
  93. package/dist/gauge/Gauge.vue.d.ts +12 -0
  94. package/dist/gauge/Gauge.vue.js +1 -0
  95. package/dist/gauge/Gauge.vue_vue_type_script_setup_true_lang.cjs +1 -0
  96. package/dist/gauge/Gauge.vue_vue_type_script_setup_true_lang.js +1 -0
  97. package/dist/gauge/index.cjs +1 -0
  98. package/dist/gauge/index.d.cts +1 -0
  99. package/dist/gauge/index.d.ts +1 -0
  100. package/dist/gauge/index.js +1 -0
  101. package/dist/grid/Grid.vue.cjs +1 -0
  102. package/dist/grid/Grid.vue.d.cts +12 -0
  103. package/dist/grid/Grid.vue.d.ts +12 -0
  104. package/dist/grid/Grid.vue.js +1 -0
  105. package/dist/grid/Grid.vue_vue_type_script_setup_true_lang.cjs +1 -0
  106. package/dist/grid/Grid.vue_vue_type_script_setup_true_lang.js +1 -0
  107. package/dist/grid/index.cjs +1 -0
  108. package/dist/grid/index.d.cts +1 -0
  109. package/dist/grid/index.d.ts +1 -0
  110. package/dist/grid/index.js +1 -0
  111. package/dist/index.cjs +1 -1
  112. package/dist/index.d.cts +15 -1
  113. package/dist/index.d.ts +15 -1
  114. package/dist/index.js +1 -1
  115. package/dist/listbox/ListboxAnatomy.vue_vue_type_script_setup_true_lang.cjs +1 -1
  116. package/dist/listbox/ListboxAnatomy.vue_vue_type_script_setup_true_lang.js +1 -1
  117. package/dist/paper/Paper.vue.cjs +1 -0
  118. package/dist/paper/Paper.vue.d.cts +12 -0
  119. package/dist/paper/Paper.vue.d.ts +12 -0
  120. package/dist/paper/Paper.vue.js +1 -0
  121. package/dist/paper/Paper.vue_vue_type_script_setup_true_lang.cjs +1 -0
  122. package/dist/paper/Paper.vue_vue_type_script_setup_true_lang.js +1 -0
  123. package/dist/paper/index.cjs +1 -0
  124. package/dist/paper/index.d.cts +1 -0
  125. package/dist/paper/index.d.ts +1 -0
  126. package/dist/paper/index.js +1 -0
  127. package/dist/progress/Progress.vue_vue_type_script_setup_true_lang.cjs +1 -1
  128. package/dist/progress/Progress.vue_vue_type_script_setup_true_lang.js +1 -1
  129. package/dist/select/SelectContent.vue_vue_type_script_setup_true_lang.cjs +1 -1
  130. package/dist/select/SelectContent.vue_vue_type_script_setup_true_lang.js +1 -1
  131. package/dist/speed-dial/SpeedDial.vue.d.cts +5 -0
  132. package/dist/speed-dial/SpeedDial.vue.d.ts +5 -0
  133. package/dist/speed-dial/SpeedDial.vue_vue_type_script_setup_true_lang.cjs +1 -1
  134. package/dist/speed-dial/SpeedDial.vue_vue_type_script_setup_true_lang.js +1 -1
  135. package/dist/speed-dial/SpeedDialAnatomy.vue.d.cts +5 -0
  136. package/dist/speed-dial/SpeedDialAnatomy.vue.d.ts +5 -0
  137. package/dist/speed-dial/SpeedDialAnatomy.vue_vue_type_script_setup_true_lang.cjs +1 -1
  138. package/dist/speed-dial/SpeedDialAnatomy.vue_vue_type_script_setup_true_lang.js +1 -1
  139. package/dist/speed-dial/SpeedDialContent.vue_vue_type_script_setup_true_lang.cjs +1 -1
  140. package/dist/speed-dial/SpeedDialContent.vue_vue_type_script_setup_true_lang.js +1 -1
  141. package/dist/stack/Stack.vue.cjs +1 -0
  142. package/dist/stack/Stack.vue.d.cts +12 -0
  143. package/dist/stack/Stack.vue.d.ts +12 -0
  144. package/dist/stack/Stack.vue.js +1 -0
  145. package/dist/stack/Stack.vue_vue_type_script_setup_true_lang.cjs +1 -0
  146. package/dist/stack/Stack.vue_vue_type_script_setup_true_lang.js +1 -0
  147. package/dist/stack/index.cjs +1 -0
  148. package/dist/stack/index.d.cts +1 -0
  149. package/dist/stack/index.d.ts +1 -0
  150. package/dist/stack/index.js +1 -0
  151. package/dist/table/Table.vue.d.cts +14 -3
  152. package/dist/table/Table.vue.d.ts +14 -3
  153. package/dist/table/Table.vue_vue_type_script_setup_true_lang.cjs +1 -1
  154. package/dist/table/Table.vue_vue_type_script_setup_true_lang.js +1 -1
  155. package/dist/table/TableAnatomy.vue.d.cts +1 -0
  156. package/dist/table/TableAnatomy.vue.d.ts +1 -0
  157. package/dist/table/TableAnatomy.vue_vue_type_script_setup_true_lang.cjs +1 -1
  158. package/dist/table/TableAnatomy.vue_vue_type_script_setup_true_lang.js +1 -1
  159. package/dist/table/TableColumnHeaderFilterInput.vue.cjs +1 -0
  160. package/dist/table/TableColumnHeaderFilterInput.vue.d.cts +11 -0
  161. package/dist/table/TableColumnHeaderFilterInput.vue.d.ts +11 -0
  162. package/dist/table/TableColumnHeaderFilterInput.vue.js +1 -0
  163. package/dist/table/TableColumnHeaderFilterInput.vue_vue_type_script_setup_true_lang.cjs +1 -0
  164. package/dist/table/TableColumnHeaderFilterInput.vue_vue_type_script_setup_true_lang.js +1 -0
  165. package/dist/table/TableHeaderCell.vue.d.cts +6 -0
  166. package/dist/table/TableHeaderCell.vue.d.ts +6 -0
  167. package/dist/table/TableHeaderCell.vue_vue_type_script_setup_true_lang.cjs +1 -1
  168. package/dist/table/TableHeaderCell.vue_vue_type_script_setup_true_lang.js +1 -1
  169. package/dist/table/context.d.cts +11 -0
  170. package/dist/table/context.d.ts +11 -0
  171. package/dist/table/index.d.cts +1 -1
  172. package/dist/table/index.d.ts +1 -1
  173. package/dist/table/primitives.cjs +1 -1
  174. package/dist/table/primitives.d.cts +2 -1
  175. package/dist/table/primitives.d.ts +2 -1
  176. package/dist/table/primitives.js +1 -1
  177. package/dist/timeline/Timeline.vue.d.cts +5 -0
  178. package/dist/timeline/Timeline.vue.d.ts +5 -0
  179. package/dist/timeline/Timeline.vue_vue_type_script_setup_true_lang.cjs +1 -1
  180. package/dist/timeline/Timeline.vue_vue_type_script_setup_true_lang.js +1 -1
  181. package/dist/timeline/TimelineAnatomy.vue.d.cts +4 -0
  182. package/dist/timeline/TimelineAnatomy.vue.d.ts +4 -0
  183. package/dist/timeline/TimelineAnatomy.vue_vue_type_script_setup_true_lang.cjs +1 -1
  184. package/dist/timeline/TimelineAnatomy.vue_vue_type_script_setup_true_lang.js +1 -1
  185. package/dist/timeline/types.d.cts +2 -2
  186. package/dist/timeline/types.d.ts +2 -2
  187. package/dist/tooltip/Tooltip.vue.cjs +1 -0
  188. package/dist/tooltip/Tooltip.vue.d.cts +12 -0
  189. package/dist/tooltip/Tooltip.vue.d.ts +12 -0
  190. package/dist/tooltip/Tooltip.vue.js +1 -0
  191. package/dist/tooltip/Tooltip.vue_vue_type_script_setup_true_lang.cjs +1 -0
  192. package/dist/tooltip/Tooltip.vue_vue_type_script_setup_true_lang.js +1 -0
  193. package/dist/tooltip/index.cjs +1 -0
  194. package/dist/tooltip/index.d.cts +1 -0
  195. package/dist/tooltip/index.d.ts +1 -0
  196. package/dist/tooltip/index.js +1 -0
  197. package/dist/tree-select/TreeSelect.vue.d.cts +2 -2
  198. package/dist/tree-select/TreeSelect.vue.d.ts +2 -2
  199. package/dist/utils/csv.cjs +2 -0
  200. package/dist/utils/csv.d.cts +43 -0
  201. package/dist/utils/csv.d.ts +43 -0
  202. package/dist/utils/csv.js +1 -0
  203. package/dist/utils/dialogs.cjs +1 -0
  204. package/dist/utils/dialogs.d.cts +96 -0
  205. package/dist/utils/dialogs.d.ts +96 -0
  206. package/dist/utils/dialogs.js +1 -0
  207. package/dist/utils/dismissal.cjs +1 -1
  208. package/dist/utils/dismissal.d.cts +7 -0
  209. package/dist/utils/dismissal.d.ts +7 -0
  210. package/dist/utils/dismissal.js +1 -1
  211. package/dist/utils/field-core.cjs +1 -1
  212. package/dist/utils/field-core.d.cts +2 -0
  213. package/dist/utils/field-core.d.ts +2 -0
  214. package/dist/utils/field-core.js +1 -1
  215. package/dist/utils/media-query.cjs +1 -0
  216. package/dist/utils/media-query.d.cts +7 -0
  217. package/dist/utils/media-query.d.ts +7 -0
  218. package/dist/utils/media-query.js +1 -0
  219. package/dist/utils/useDismiss.cjs +1 -1
  220. package/dist/utils/useDismiss.js +1 -1
  221. package/dist/utils/useMediaQuery.cjs +1 -0
  222. package/dist/utils/useMediaQuery.d.cts +11 -0
  223. package/dist/utils/useMediaQuery.d.ts +11 -0
  224. package/dist/utils/useMediaQuery.js +1 -0
  225. package/package.json +102 -2
@@ -1,8 +1,10 @@
1
- import { type SortDirection, type TableColumnDef, type TableColumnWidths, type TableSelectionMode, type TableSort } from './context.cjs';
1
+ import { type SortDirection, type TableColumnDef, type TableColumnWidths, type TableFilterState, type TableSelectionMode, type TableSort } from './context.cjs';
2
2
  declare const _default: <TRow extends object = object>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
3
3
  props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
4
4
  readonly "onUpdate:sort"?: (sort: TableSort) => any;
5
5
  readonly "onSort-change"?: (sort: TableSort) => any;
6
+ readonly "onUpdate:filter"?: (filter: TableFilterState) => any;
7
+ readonly "onFilter-change"?: (filter: TableFilterState) => any;
6
8
  readonly "onUpdate:selected"?: (selected: string[]) => any;
7
9
  readonly "onSelected-change"?: (selected: string[]) => any;
8
10
  readonly "onUpdate:expandedRowIds"?: (rowIds: string[]) => any;
@@ -10,11 +12,15 @@ declare const _default: <TRow extends object = object>(__VLS_props: NonNullable<
10
12
  readonly "onUpdate:columnWidths"?: (widths: TableColumnWidths) => any;
11
13
  readonly "onColumn-widths-change"?: (widths: TableColumnWidths) => any;
12
14
  readonly "onColumn-widths-commit"?: (widths: TableColumnWidths) => any;
13
- } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onUpdate:sort" | "onSort-change" | "onUpdate:selected" | "onSelected-change" | "onUpdate:expandedRowIds" | "onExpanded-row-ids-change" | "onUpdate:columnWidths" | "onColumn-widths-change" | "onColumn-widths-commit"> & {
15
+ } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onUpdate:sort" | "onSort-change" | "onUpdate:filter" | "onFilter-change" | "onUpdate:selected" | "onSelected-change" | "onUpdate:expandedRowIds" | "onExpanded-row-ids-change" | "onUpdate:columnWidths" | "onColumn-widths-change" | "onColumn-widths-commit"> & {
14
16
  /** Sorted columns, most significant first, for controlled usage. Pair with `v-model:sort`. */
15
17
  sort?: TableSort | undefined;
16
18
  /** Initially sorted columns, for uncontrolled usage. */
17
19
  defaultSort?: TableSort;
20
+ /** Active column filters keyed by `columnKey`, for controlled usage. Pair with `v-model:filter`. */
21
+ filter?: TableFilterState | undefined;
22
+ /** Initial column filters, for uncontrolled usage. */
23
+ defaultFilter?: TableFilterState;
18
24
  /** Total row count published as `aria-rowcount`; set when DOM doesn't hold all rows. `-1` means unknown. */
19
25
  rowCount?: number | undefined;
20
26
  /** Total column count published as `aria-colcount`, the column counterpart of `rowCount`. */
@@ -87,6 +93,11 @@ declare const _default: <TRow extends object = object>(__VLS_props: NonNullable<
87
93
  * @default false — derived columns are not resizable.
88
94
  */
89
95
  resizable?: boolean;
96
+ /**
97
+ * Makes derived columns filterable, each with a filter input under its header; the derived rows are then the ones matching every active filter.
98
+ * @default false — derived columns are not filterable.
99
+ */
100
+ filterable?: boolean;
90
101
  /**
91
102
  * Content for the derived empty state, shown when `data` is empty.
92
103
  * @default undefined — no derived empty state.
@@ -125,7 +136,7 @@ declare const _default: <TRow extends object = object>(__VLS_props: NonNullable<
125
136
  slots: {
126
137
  default?: (props: {}) => any;
127
138
  };
128
- emit: ((evt: "update:sort", sort: TableSort) => void) & ((evt: "sort-change", sort: TableSort) => void) & ((evt: "update:selected", selected: string[]) => void) & ((evt: "selected-change", selected: string[]) => void) & ((evt: "update:expandedRowIds", rowIds: string[]) => void) & ((evt: "expanded-row-ids-change", rowIds: string[]) => void) & ((evt: "update:columnWidths", widths: TableColumnWidths) => void) & ((evt: "column-widths-change", widths: TableColumnWidths) => void) & ((evt: "column-widths-commit", widths: TableColumnWidths) => void);
139
+ emit: ((evt: "update:sort", sort: TableSort) => void) & ((evt: "sort-change", sort: TableSort) => void) & ((evt: "update:filter", filter: TableFilterState) => void) & ((evt: "filter-change", filter: TableFilterState) => void) & ((evt: "update:selected", selected: string[]) => void) & ((evt: "selected-change", selected: string[]) => void) & ((evt: "update:expandedRowIds", rowIds: string[]) => void) & ((evt: "expanded-row-ids-change", rowIds: string[]) => void) & ((evt: "update:columnWidths", widths: TableColumnWidths) => void) & ((evt: "column-widths-change", widths: TableColumnWidths) => void) & ((evt: "column-widths-commit", widths: TableColumnWidths) => void);
129
140
  }>) => import("vue").VNode & {
130
141
  __ctx?: Awaited<typeof __VLS_setup>;
131
142
  };
@@ -1,8 +1,10 @@
1
- import { type SortDirection, type TableColumnDef, type TableColumnWidths, type TableSelectionMode, type TableSort } from './context.js';
1
+ import { type SortDirection, type TableColumnDef, type TableColumnWidths, type TableFilterState, type TableSelectionMode, type TableSort } from './context.js';
2
2
  declare const _default: <TRow extends object = object>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
3
3
  props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
4
4
  readonly "onUpdate:sort"?: (sort: TableSort) => any;
5
5
  readonly "onSort-change"?: (sort: TableSort) => any;
6
+ readonly "onUpdate:filter"?: (filter: TableFilterState) => any;
7
+ readonly "onFilter-change"?: (filter: TableFilterState) => any;
6
8
  readonly "onUpdate:selected"?: (selected: string[]) => any;
7
9
  readonly "onSelected-change"?: (selected: string[]) => any;
8
10
  readonly "onUpdate:expandedRowIds"?: (rowIds: string[]) => any;
@@ -10,11 +12,15 @@ declare const _default: <TRow extends object = object>(__VLS_props: NonNullable<
10
12
  readonly "onUpdate:columnWidths"?: (widths: TableColumnWidths) => any;
11
13
  readonly "onColumn-widths-change"?: (widths: TableColumnWidths) => any;
12
14
  readonly "onColumn-widths-commit"?: (widths: TableColumnWidths) => any;
13
- } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onUpdate:sort" | "onSort-change" | "onUpdate:selected" | "onSelected-change" | "onUpdate:expandedRowIds" | "onExpanded-row-ids-change" | "onUpdate:columnWidths" | "onColumn-widths-change" | "onColumn-widths-commit"> & {
15
+ } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onUpdate:sort" | "onSort-change" | "onUpdate:filter" | "onFilter-change" | "onUpdate:selected" | "onSelected-change" | "onUpdate:expandedRowIds" | "onExpanded-row-ids-change" | "onUpdate:columnWidths" | "onColumn-widths-change" | "onColumn-widths-commit"> & {
14
16
  /** Sorted columns, most significant first, for controlled usage. Pair with `v-model:sort`. */
15
17
  sort?: TableSort | undefined;
16
18
  /** Initially sorted columns, for uncontrolled usage. */
17
19
  defaultSort?: TableSort;
20
+ /** Active column filters keyed by `columnKey`, for controlled usage. Pair with `v-model:filter`. */
21
+ filter?: TableFilterState | undefined;
22
+ /** Initial column filters, for uncontrolled usage. */
23
+ defaultFilter?: TableFilterState;
18
24
  /** Total row count published as `aria-rowcount`; set when DOM doesn't hold all rows. `-1` means unknown. */
19
25
  rowCount?: number | undefined;
20
26
  /** Total column count published as `aria-colcount`, the column counterpart of `rowCount`. */
@@ -87,6 +93,11 @@ declare const _default: <TRow extends object = object>(__VLS_props: NonNullable<
87
93
  * @default false — derived columns are not resizable.
88
94
  */
89
95
  resizable?: boolean;
96
+ /**
97
+ * Makes derived columns filterable, each with a filter input under its header; the derived rows are then the ones matching every active filter.
98
+ * @default false — derived columns are not filterable.
99
+ */
100
+ filterable?: boolean;
90
101
  /**
91
102
  * Content for the derived empty state, shown when `data` is empty.
92
103
  * @default undefined — no derived empty state.
@@ -125,7 +136,7 @@ declare const _default: <TRow extends object = object>(__VLS_props: NonNullable<
125
136
  slots: {
126
137
  default?: (props: {}) => any;
127
138
  };
128
- emit: ((evt: "update:sort", sort: TableSort) => void) & ((evt: "sort-change", sort: TableSort) => void) & ((evt: "update:selected", selected: string[]) => void) & ((evt: "selected-change", selected: string[]) => void) & ((evt: "update:expandedRowIds", rowIds: string[]) => void) & ((evt: "expanded-row-ids-change", rowIds: string[]) => void) & ((evt: "update:columnWidths", widths: TableColumnWidths) => void) & ((evt: "column-widths-change", widths: TableColumnWidths) => void) & ((evt: "column-widths-commit", widths: TableColumnWidths) => void);
139
+ emit: ((evt: "update:sort", sort: TableSort) => void) & ((evt: "sort-change", sort: TableSort) => void) & ((evt: "update:filter", filter: TableFilterState) => void) & ((evt: "filter-change", filter: TableFilterState) => void) & ((evt: "update:selected", selected: string[]) => void) & ((evt: "selected-change", selected: string[]) => void) & ((evt: "update:expandedRowIds", rowIds: string[]) => void) & ((evt: "expanded-row-ids-change", rowIds: string[]) => void) & ((evt: "update:columnWidths", widths: TableColumnWidths) => void) & ((evt: "column-widths-change", widths: TableColumnWidths) => void) & ((evt: "column-widths-commit", widths: TableColumnWidths) => void);
129
140
  }>) => import("vue").VNode & {
130
141
  __ctx?: Awaited<typeof __VLS_setup>;
131
142
  };
@@ -1 +1 @@
1
- const Q=require("../utils/appearance.cjs"),U=require("../utils/id.cjs"),Y=require("../utils/liveAnnouncer.cjs"),A=require("./context.cjs"),Z=require("./TableAnatomy.vue.cjs");let n=require("vue");var K=["aria-rowcount","aria-colcount"],_=(0,n.defineComponent)({inheritAttrs:!1,__name:"Table",props:{sort:{default:void 0},defaultSort:{default:()=>[]},rowCount:{default:void 0},columnCount:{default:void 0},multiSort:{type:Boolean,default:!1},selected:{default:void 0},defaultSelected:{default:void 0},selectionMode:{},getSortLabel:{type:Function,default:A.defaultGetSortLabel},expandedRowIds:{},defaultExpandedRowIds:{default:()=>[]},columnWidths:{},defaultColumnWidths:{default:()=>({})},columns:{},data:{},rowId:{},getRowLabel:{},sortable:{type:Boolean,default:!1},selectable:{type:Boolean,default:!1},expandable:{type:Boolean,default:!1},resizable:{type:Boolean,default:!1},empty:{},caption:{},renderCell:{},renderExpanded:{},density:{},stickyHeader:{type:Boolean,default:void 0},size:{default:void 0}},emits:["update:sort","sort-change","update:selected","selected-change","update:expandedRowIds","expanded-row-ids-change","update:columnWidths","column-widths-change","column-widths-commit"],setup(a,{emit:B}){function W(e,t,o){const d=e.find(r=>r.columnKey===t);let u="asc";return d!==void 0&&(u=d.direction==="asc"?"desc":null),o?u===null?e.filter(r=>r.columnKey!==t):d===void 0?[...e,{columnKey:t,direction:u}]:e.map(r=>r.columnKey===t?{columnKey:t,direction:u}:r):u===null?[]:[{columnKey:t,direction:u}]}function S(e){return e===void 0?new Set:e instanceof Set?e:new Set(e)}const l=a,i=(0,n.computed)(()=>l.selectionMode??(l.selectable?"multiple":"none")),b=(0,n.useAttrs)(),E=(0,n.computed)(()=>l.size??b["data-size"]),I=(0,n.computed)(()=>{const{"data-size":e,...t}=b;return t}),c=B,L=U.nextId("table"),g=(0,n.ref)(null),x=(0,n.ref)(l.defaultSort),y=(0,n.computed)(()=>l.sort!==void 0?l.sort:x.value),R=(0,n.shallowRef)(S(l.defaultSelected??[])),s=(0,n.computed)(()=>l.selected!==void 0?S(l.selected):R.value);function M(e){l.sort===void 0&&(x.value=e),c("update:sort",e),c("sort-change",e)}function f(e){const t=s.value;if(t.size===e.size&&[...e].every(d=>t.has(d)))return;l.selected===void 0&&(R.value=e);const o=[...e];c("update:selected",o),c("selected-change",o)}function T(e,t=e){const o=W(y.value,e,l.multiSort);M(o);const d=o.find(u=>u.columnKey===e)?.direction??null;Y.announce(l.getSortLabel(t,d))}function H(){const e=g.value?.querySelectorAll(":scope > tbody > tr[data-row-id]");return e?[...e].map(t=>t.dataset.rowId):[]}let m=null;function O(e,t=!1){if(i.value==="none")return;const o=s.value;if(t&&i.value==="multiple"&&m!==null&&m!==e){const u=H(),r=u.indexOf(m),p=u.indexOf(e);if(r!==-1&&p!==-1){const J=u.slice(Math.min(r,p),Math.max(r,p)+1);f(new Set([...o,...J]));return}}if(m=e,i.value==="single"){f(o.has(e)&&o.size===1?new Set:new Set([e]));return}const d=new Set(o);d.has(e)?d.delete(e):d.add(e),f(d)}function N(e){return s.value.has(e)}function C(e){return e.length>0&&e.every(t=>s.value.has(t))}function $(e){return e.some(t=>s.value.has(t))&&!C(e)}function F(e){if(i.value==="none")return;const t=s.value;if(e.length>0&&e.every(o=>t.has(o))){const o=new Set(t);for(const d of e)o.delete(d);f(o);return}f(new Set([...t,...e]))}const z=(0,n.ref)(l.defaultExpandedRowIds),v=(0,n.computed)(()=>l.expandedRowIds??z.value),q=(0,n.computed)(()=>new Set(v.value));function G(e){const t=v.value.includes(e)?v.value.filter(o=>o!==e):[...v.value,e];l.expandedRowIds===void 0&&(z.value=t),c("update:expandedRowIds",t),c("expanded-row-ids-change",t)}function P(e){return q.value.has(e)}const k=(0,n.ref)({...l.defaultColumnWidths}),w=(0,n.computed)(()=>l.columnWidths??k.value);function V(e,t){if(w.value[e]===t)return;const o={...w.value,[e]:t};l.columnWidths===void 0&&(k.value=o),c("update:columnWidths",o),c("column-widths-change",o)}function X(){c("column-widths-commit",w.value)}const h=(0,n.ref)(0),j=(0,n.computed)(()=>h.value>0?h.value:l.columnCount??1);function D(){return h.value+=1,()=>{h.value-=1}}return(0,n.provide)(A.TABLE_CONTEXT,{tableId:L,headerCellCount:j,registerHeaderCell:D,sortList:y,get multiSort(){return l.multiSort},selected:s,get selectionMode(){return i.value},toggleSort:T,toggleRow:O,isRowSelected:N,toggleAll:F,isAllSelected:C,isSomeSelected:$,expandedRows:q,toggleRowExpanded:G,isRowExpanded:P,columnWidths:w,setColumnWidth:V,commitColumnWidths:X}),(e,t)=>((0,n.openBlock)(),(0,n.createElementBlock)("table",(0,n.mergeProps)({ref_key:"tableRef",ref:g,class:"skdx-table","data-part":"root","data-skdx-component":"table","aria-rowcount":a.rowCount,"aria-colcount":a.columnCount},{...I.value,...(0,n.unref)(Q.appearanceAttrs)({density:a.density,stickyHeader:a.stickyHeader},e.$attrs)}),[(0,n.renderSlot)(e.$slots,"default",{},()=>[a.columns&&a.data?((0,n.openBlock)(),(0,n.createBlock)(Z.default,{key:0,columns:a.columns,data:a.data,"row-id":a.rowId,"get-row-label":a.getRowLabel,sortable:a.sortable,selectable:a.selectable,expandable:a.expandable,resizable:a.resizable,empty:a.empty,caption:a.caption,"render-cell":a.renderCell,"render-expanded":a.renderExpanded,size:E.value},null,8,["columns","data","row-id","get-row-label","sortable","selectable","expandable","resizable","empty","caption","render-cell","render-expanded","size"])):(0,n.createCommentVNode)("",!0)])],16,K))}});exports.default=_;
1
+ const Z=require("../utils/appearance.cjs"),K=require("../utils/id.cjs"),_=require("../utils/liveAnnouncer.cjs"),W=require("./context.cjs"),ee=require("./TableAnatomy.vue.cjs");let n=require("vue");var te=["aria-rowcount","aria-colcount"],ne=(0,n.defineComponent)({inheritAttrs:!1,__name:"Table",props:{sort:{default:void 0},defaultSort:{default:()=>[]},filter:{default:void 0},defaultFilter:{default:()=>({})},rowCount:{default:void 0},columnCount:{default:void 0},multiSort:{type:Boolean,default:!1},selected:{default:void 0},defaultSelected:{default:void 0},selectionMode:{},getSortLabel:{type:Function,default:W.defaultGetSortLabel},expandedRowIds:{},defaultExpandedRowIds:{default:()=>[]},columnWidths:{},defaultColumnWidths:{default:()=>({})},columns:{},data:{},rowId:{},getRowLabel:{},sortable:{type:Boolean,default:!1},selectable:{type:Boolean,default:!1},expandable:{type:Boolean,default:!1},resizable:{type:Boolean,default:!1},filterable:{type:Boolean,default:!1},empty:{},caption:{},renderCell:{},renderExpanded:{},density:{},stickyHeader:{type:Boolean,default:void 0},size:{default:void 0}},emits:["update:sort","sort-change","update:filter","filter-change","update:selected","selected-change","update:expandedRowIds","expanded-row-ids-change","update:columnWidths","column-widths-change","column-widths-commit"],setup(a,{emit:E}){function I(e,t,l){const d=e.find(i=>i.columnKey===t);let r="asc";return d!==void 0&&(r=d.direction==="asc"?"desc":null),l?r===null?e.filter(i=>i.columnKey!==t):d===void 0?[...e,{columnKey:t,direction:r}]:e.map(i=>i.columnKey===t?{columnKey:t,direction:r}:i):r===null?[]:[{columnKey:t,direction:r}]}function b(e){return e===void 0?new Set:e instanceof Set?e:new Set(e)}const o=a,s=(0,n.computed)(()=>o.selectionMode??(o.selectable?"multiple":"none")),S=(0,n.useAttrs)(),L=(0,n.computed)(()=>o.size??S["data-size"]),M=(0,n.computed)(()=>{const{"data-size":e,...t}=S;return t}),u=E,T=K.nextId("table"),g=(0,n.ref)(null),x=(0,n.ref)(o.defaultSort),R=(0,n.computed)(()=>o.sort!==void 0?o.sort:x.value),y=(0,n.shallowRef)(b(o.defaultSelected??[])),c=(0,n.computed)(()=>o.selected!==void 0?b(o.selected):y.value),C=(0,n.ref)(o.defaultFilter),z=(0,n.computed)(()=>o.filter!==void 0?o.filter:C.value);function F(e,t){const l=z.value;if((l[e]??"")===t)return;const d={...l};t===""?delete d[e]:d[e]=t,o.filter===void 0&&(C.value=d),u("update:filter",d),u("filter-change",d)}function H(e){o.sort===void 0&&(x.value=e),u("update:sort",e),u("sort-change",e)}function f(e){const t=c.value;if(t.size===e.size&&[...e].every(d=>t.has(d)))return;o.selected===void 0&&(y.value=e);const l=[...e];u("update:selected",l),u("selected-change",l)}function O(e,t=e){const l=I(R.value,e,o.multiSort);H(l);const d=l.find(r=>r.columnKey===e)?.direction??null;_.announce(o.getSortLabel(t,d))}function N(){const e=g.value?.querySelectorAll(":scope > tbody > tr[data-row-id]");return e?[...e].map(t=>t.dataset.rowId):[]}let v=null;function $(e,t=!1){if(s.value==="none")return;const l=c.value;if(t&&s.value==="multiple"&&v!==null&&v!==e){const r=N(),i=r.indexOf(v),h=r.indexOf(e);if(i!==-1&&h!==-1){const Y=r.slice(Math.min(i,h),Math.max(i,h)+1);f(new Set([...l,...Y]));return}}if(v=e,s.value==="single"){f(l.has(e)&&l.size===1?new Set:new Set([e]));return}const d=new Set(l);d.has(e)?d.delete(e):d.add(e),f(d)}function G(e){return c.value.has(e)}function q(e){return e.length>0&&e.every(t=>c.value.has(t))}function P(e){return e.some(t=>c.value.has(t))&&!q(e)}function V(e){if(s.value==="none")return;const t=c.value;if(e.length>0&&e.every(l=>t.has(l))){const l=new Set(t);for(const d of e)l.delete(d);f(l);return}f(new Set([...t,...e]))}const B=(0,n.ref)(o.defaultExpandedRowIds),m=(0,n.computed)(()=>o.expandedRowIds??B.value),k=(0,n.computed)(()=>new Set(m.value));function X(e){const t=m.value.includes(e)?m.value.filter(l=>l!==e):[...m.value,e];o.expandedRowIds===void 0&&(B.value=t),u("update:expandedRowIds",t),u("expanded-row-ids-change",t)}function j(e){return k.value.has(e)}const A=(0,n.ref)({...o.defaultColumnWidths}),w=(0,n.computed)(()=>o.columnWidths??A.value);function D(e,t){if(w.value[e]===t)return;const l={...w.value,[e]:t};o.columnWidths===void 0&&(A.value=l),u("update:columnWidths",l),u("column-widths-change",l)}function J(){u("column-widths-commit",w.value)}const p=(0,n.ref)(0),Q=(0,n.computed)(()=>p.value>0?p.value:o.columnCount??1);function U(){return p.value+=1,()=>{p.value-=1}}return(0,n.provide)(W.TABLE_CONTEXT,{tableId:T,headerCellCount:Q,registerHeaderCell:U,sortList:R,get multiSort(){return o.multiSort},selected:c,get selectionMode(){return s.value},toggleSort:O,filterMap:z,setColumnFilter:F,toggleRow:$,isRowSelected:G,toggleAll:V,isAllSelected:q,isSomeSelected:P,expandedRows:k,toggleRowExpanded:X,isRowExpanded:j,columnWidths:w,setColumnWidth:D,commitColumnWidths:J}),(e,t)=>((0,n.openBlock)(),(0,n.createElementBlock)("table",(0,n.mergeProps)({ref_key:"tableRef",ref:g,class:"skdx-table","data-part":"root","data-skdx-component":"table","aria-rowcount":a.rowCount,"aria-colcount":a.columnCount},{...M.value,...(0,n.unref)(Z.appearanceAttrs)({density:a.density,stickyHeader:a.stickyHeader},e.$attrs)}),[(0,n.renderSlot)(e.$slots,"default",{},()=>[a.columns&&a.data?((0,n.openBlock)(),(0,n.createBlock)(ee.default,{key:0,columns:a.columns,data:a.data,"row-id":a.rowId,"get-row-label":a.getRowLabel,sortable:a.sortable,selectable:a.selectable,expandable:a.expandable,resizable:a.resizable,filterable:a.filterable,empty:a.empty,caption:a.caption,"render-cell":a.renderCell,"render-expanded":a.renderExpanded,size:L.value},null,8,["columns","data","row-id","get-row-label","sortable","selectable","expandable","resizable","filterable","empty","caption","render-cell","render-expanded","size"])):(0,n.createCommentVNode)("",!0)])],16,te))}});exports.default=ne;
@@ -1 +1 @@
1
- import{appearanceAttrs as e}from"../utils/appearance.js";import{nextId as t}from"../utils/id.js";import{announce as a}from"../utils/liveAnnouncer.js";import{TABLE_CONTEXT as o,defaultGetSortLabel as l}from"./context.js";import n from"./TableAnatomy.vue.js";import{computed as d,createBlock as u,createCommentVNode as s,createElementBlock as r,defineComponent as i,mergeProps as c,openBlock as m,provide as f,ref as p,renderSlot as v,shallowRef as w,unref as h,useAttrs as b}from"vue";var y=["aria-rowcount","aria-colcount"],g=/* @__PURE__ */i({inheritAttrs:!1,__name:"Table",props:{sort:{default:void 0},defaultSort:{default:()=>[]},rowCount:{default:void 0},columnCount:{default:void 0},multiSort:{type:Boolean,default:!1},selected:{default:void 0},defaultSelected:{default:void 0},selectionMode:{},getSortLabel:{type:Function,default:l},expandedRowIds:{},defaultExpandedRowIds:{default:()=>[]},columnWidths:{},defaultColumnWidths:{default:()=>({})},columns:{},data:{},rowId:{},getRowLabel:{},sortable:{type:Boolean,default:!1},selectable:{type:Boolean,default:!1},expandable:{type:Boolean,default:!1},resizable:{type:Boolean,default:!1},empty:{},caption:{},renderCell:{},renderExpanded:{},density:{},stickyHeader:{type:Boolean,default:void 0},size:{default:void 0}},emits:["update:sort","sort-change","update:selected","selected-change","update:expandedRowIds","expanded-row-ids-change","update:columnWidths","column-widths-change","column-widths-commit"],setup(l,{emit:i}){function g(e){return void 0===e?/* @__PURE__ */new Set:e instanceof Set?e:new Set(e)}const x=l,S=d(()=>x.selectionMode??(x.selectable?"multiple":"none")),C=b(),R=d(()=>x.size??C["data-size"]),z=d(()=>{const{"data-size":e,...t}=C;return t}),I=i,k=t("table"),B=p(null),W=p(x.defaultSort),A=d(()=>void 0!==x.sort?x.sort:W.value),E=w(g(x.defaultSelected??[])),K=d(()=>void 0!==x.selected?g(x.selected):E.value);function L(e){const t=K.value;if(t.size===e.size&&[...e].every(e=>t.has(e)))return;void 0===x.selected&&(E.value=e);const a=[...e];I("update:selected",a),I("selected-change",a)}let j=null;function M(e){return e.length>0&&e.every(e=>K.value.has(e))}const T=p(x.defaultExpandedRowIds),H=d(()=>x.expandedRowIds??T.value),_=d(()=>new Set(H.value)),O=p({...x.defaultColumnWidths}),N=d(()=>x.columnWidths??O.value),$=p(0),q=d(()=>$.value>0?$.value:x.columnCount??1);return f(o,{tableId:k,headerCellCount:q,registerHeaderCell:function(){return $.value+=1,()=>{$.value-=1}},sortList:A,get multiSort(){return x.multiSort},selected:K,get selectionMode(){return S.value},toggleSort:function(e,t=e){const o=function(e,t,a){const o=e.find(e=>e.columnKey===t);let l="asc";return void 0!==o&&(l="asc"===o.direction?"desc":null),a?null===l?e.filter(e=>e.columnKey!==t):void 0===o?[...e,{columnKey:t,direction:l}]:e.map(e=>e.columnKey===t?{columnKey:t,direction:l}:e):null===l?[]:[{columnKey:t,direction:l}]}(A.value,e,x.multiSort);!function(e){void 0===x.sort&&(W.value=e),I("update:sort",e),I("sort-change",e)}(o);const l=o.find(t=>t.columnKey===e)?.direction??null;a(x.getSortLabel(t,l))},toggleRow:function(e,t=!1){if("none"===S.value)return;const a=K.value;if(t&&"multiple"===S.value&&null!==j&&j!==e){const t=function(){const e=B.value?.querySelectorAll(":scope > tbody > tr[data-row-id]");return e?[...e].map(e=>e.dataset.rowId):[]}(),o=t.indexOf(j),l=t.indexOf(e);if(-1!==o&&-1!==l){const e=t.slice(Math.min(o,l),Math.max(o,l)+1);return void L(/* @__PURE__ */new Set([...a,...e]))}}if(j=e,"single"===S.value)return void L(a.has(e)&&1===a.size?/* @__PURE__ */new Set:/* @__PURE__ */new Set([e]));const o=new Set(a);o.has(e)?o.delete(e):o.add(e),L(o)},isRowSelected:function(e){return K.value.has(e)},toggleAll:function(e){if("none"===S.value)return;const t=K.value;if(e.length>0&&e.every(e=>t.has(e))){const a=new Set(t);for(const t of e)a.delete(t);return void L(a)}L(/* @__PURE__ */new Set([...t,...e]))},isAllSelected:M,isSomeSelected:function(e){return e.some(e=>K.value.has(e))&&!M(e)},expandedRows:_,toggleRowExpanded:function(e){const t=H.value.includes(e)?H.value.filter(t=>t!==e):[...H.value,e];void 0===x.expandedRowIds&&(T.value=t),I("update:expandedRowIds",t),I("expanded-row-ids-change",t)},isRowExpanded:function(e){return _.value.has(e)},columnWidths:N,setColumnWidth:function(e,t){if(N.value[e]===t)return;const a={...N.value,[e]:t};void 0===x.columnWidths&&(O.value=a),I("update:columnWidths",a),I("column-widths-change",a)},commitColumnWidths:function(){I("column-widths-commit",N.value)}}),(t,a)=>(m(),r("table",c({ref_key:"tableRef",ref:B,class:"skdx-table","data-part":"root","data-skdx-component":"table","aria-rowcount":l.rowCount,"aria-colcount":l.columnCount},{...z.value,...h(e)({density:l.density,stickyHeader:l.stickyHeader},t.$attrs)}),[v(t.$slots,"default",{},()=>[l.columns&&l.data?(m(),u(n,{key:0,columns:l.columns,data:l.data,"row-id":l.rowId,"get-row-label":l.getRowLabel,sortable:l.sortable,selectable:l.selectable,expandable:l.expandable,resizable:l.resizable,empty:l.empty,caption:l.caption,"render-cell":l.renderCell,"render-expanded":l.renderExpanded,size:R.value},null,8,["columns","data","row-id","get-row-label","sortable","selectable","expandable","resizable","empty","caption","render-cell","render-expanded","size"])):s("",!0)])],16,y))}});export{g as default};
1
+ import{appearanceAttrs as e}from"../utils/appearance.js";import{nextId as t}from"../utils/id.js";import{announce as l}from"../utils/liveAnnouncer.js";import{TABLE_CONTEXT as a,defaultGetSortLabel as o}from"./context.js";import n from"./TableAnatomy.vue.js";import{computed as d,createBlock as u,createCommentVNode as r,createElementBlock as i,defineComponent as s,mergeProps as c,openBlock as f,provide as m,ref as p,renderSlot as v,shallowRef as w,unref as h,useAttrs as b}from"vue";var y=["aria-rowcount","aria-colcount"],g=/* @__PURE__ */s({inheritAttrs:!1,__name:"Table",props:{sort:{default:void 0},defaultSort:{default:()=>[]},filter:{default:void 0},defaultFilter:{default:()=>({})},rowCount:{default:void 0},columnCount:{default:void 0},multiSort:{type:Boolean,default:!1},selected:{default:void 0},defaultSelected:{default:void 0},selectionMode:{},getSortLabel:{type:Function,default:o},expandedRowIds:{},defaultExpandedRowIds:{default:()=>[]},columnWidths:{},defaultColumnWidths:{default:()=>({})},columns:{},data:{},rowId:{},getRowLabel:{},sortable:{type:Boolean,default:!1},selectable:{type:Boolean,default:!1},expandable:{type:Boolean,default:!1},resizable:{type:Boolean,default:!1},filterable:{type:Boolean,default:!1},empty:{},caption:{},renderCell:{},renderExpanded:{},density:{},stickyHeader:{type:Boolean,default:void 0},size:{default:void 0}},emits:["update:sort","sort-change","update:filter","filter-change","update:selected","selected-change","update:expandedRowIds","expanded-row-ids-change","update:columnWidths","column-widths-change","column-widths-commit"],setup(o,{emit:s}){function g(e){return void 0===e?/* @__PURE__ */new Set:e instanceof Set?e:new Set(e)}const x=o,S=d(()=>x.selectionMode??(x.selectable?"multiple":"none")),C=b(),R=d(()=>x.size??C["data-size"]),z=d(()=>{const{"data-size":e,...t}=C;return t}),I=s,B=t("table"),k=p(null),W=p(x.defaultSort),A=d(()=>void 0!==x.sort?x.sort:W.value),E=w(g(x.defaultSelected??[])),K=d(()=>void 0!==x.selected?g(x.selected):E.value),L=p(x.defaultFilter),M=d(()=>void 0!==x.filter?x.filter:L.value);function j(e){const t=K.value;if(t.size===e.size&&[...e].every(e=>t.has(e)))return;void 0===x.selected&&(E.value=e);const l=[...e];I("update:selected",l),I("selected-change",l)}let T=null;function F(e){return e.length>0&&e.every(e=>K.value.has(e))}const H=p(x.defaultExpandedRowIds),_=d(()=>x.expandedRowIds??H.value),O=d(()=>new Set(_.value)),N=p({...x.defaultColumnWidths}),$=d(()=>x.columnWidths??N.value),q=p(0),G=d(()=>q.value>0?q.value:x.columnCount??1);return m(a,{tableId:B,headerCellCount:G,registerHeaderCell:function(){return q.value+=1,()=>{q.value-=1}},sortList:A,get multiSort(){return x.multiSort},selected:K,get selectionMode(){return S.value},toggleSort:function(e,t=e){const a=function(e,t,l){const a=e.find(e=>e.columnKey===t);let o="asc";return void 0!==a&&(o="asc"===a.direction?"desc":null),l?null===o?e.filter(e=>e.columnKey!==t):void 0===a?[...e,{columnKey:t,direction:o}]:e.map(e=>e.columnKey===t?{columnKey:t,direction:o}:e):null===o?[]:[{columnKey:t,direction:o}]}(A.value,e,x.multiSort);!function(e){void 0===x.sort&&(W.value=e),I("update:sort",e),I("sort-change",e)}(a);const o=a.find(t=>t.columnKey===e)?.direction??null;l(x.getSortLabel(t,o))},filterMap:M,setColumnFilter:function(e,t){const l=M.value;if((l[e]??"")===t)return;const a={...l};""===t?delete a[e]:a[e]=t,void 0===x.filter&&(L.value=a),I("update:filter",a),I("filter-change",a)},toggleRow:function(e,t=!1){if("none"===S.value)return;const l=K.value;if(t&&"multiple"===S.value&&null!==T&&T!==e){const t=function(){const e=k.value?.querySelectorAll(":scope > tbody > tr[data-row-id]");return e?[...e].map(e=>e.dataset.rowId):[]}(),a=t.indexOf(T),o=t.indexOf(e);if(-1!==a&&-1!==o){const e=t.slice(Math.min(a,o),Math.max(a,o)+1);return void j(/* @__PURE__ */new Set([...l,...e]))}}if(T=e,"single"===S.value)return void j(l.has(e)&&1===l.size?/* @__PURE__ */new Set:/* @__PURE__ */new Set([e]));const a=new Set(l);a.has(e)?a.delete(e):a.add(e),j(a)},isRowSelected:function(e){return K.value.has(e)},toggleAll:function(e){if("none"===S.value)return;const t=K.value;if(e.length>0&&e.every(e=>t.has(e))){const l=new Set(t);for(const t of e)l.delete(t);return void j(l)}j(/* @__PURE__ */new Set([...t,...e]))},isAllSelected:F,isSomeSelected:function(e){return e.some(e=>K.value.has(e))&&!F(e)},expandedRows:O,toggleRowExpanded:function(e){const t=_.value.includes(e)?_.value.filter(t=>t!==e):[..._.value,e];void 0===x.expandedRowIds&&(H.value=t),I("update:expandedRowIds",t),I("expanded-row-ids-change",t)},isRowExpanded:function(e){return O.value.has(e)},columnWidths:$,setColumnWidth:function(e,t){if($.value[e]===t)return;const l={...$.value,[e]:t};void 0===x.columnWidths&&(N.value=l),I("update:columnWidths",l),I("column-widths-change",l)},commitColumnWidths:function(){I("column-widths-commit",$.value)}}),(t,l)=>(f(),i("table",c({ref_key:"tableRef",ref:k,class:"skdx-table","data-part":"root","data-skdx-component":"table","aria-rowcount":o.rowCount,"aria-colcount":o.columnCount},{...z.value,...h(e)({density:o.density,stickyHeader:o.stickyHeader},t.$attrs)}),[v(t.$slots,"default",{},()=>[o.columns&&o.data?(f(),u(n,{key:0,columns:o.columns,data:o.data,"row-id":o.rowId,"get-row-label":o.getRowLabel,sortable:o.sortable,selectable:o.selectable,expandable:o.expandable,resizable:o.resizable,filterable:o.filterable,empty:o.empty,caption:o.caption,"render-cell":o.renderCell,"render-expanded":o.renderExpanded,size:R.value},null,8,["columns","data","row-id","get-row-label","sortable","selectable","expandable","resizable","filterable","empty","caption","render-cell","render-expanded","size"])):r("",!0)])],16,y))}});export{g as default};
@@ -9,6 +9,7 @@ declare const _default: <TRow extends object>(__VLS_props: NonNullable<Awaited<t
9
9
  selectable?: boolean | undefined;
10
10
  expandable?: boolean | undefined;
11
11
  resizable?: boolean | undefined;
12
+ filterable?: boolean | undefined;
12
13
  empty?: string | undefined;
13
14
  caption?: string | undefined;
14
15
  renderCell?: ((row: TRow, column: TableColumnDef<TRow>) => unknown) | undefined;
@@ -9,6 +9,7 @@ declare const _default: <TRow extends object>(__VLS_props: NonNullable<Awaited<t
9
9
  selectable?: boolean | undefined;
10
10
  expandable?: boolean | undefined;
11
11
  resizable?: boolean | undefined;
12
+ filterable?: boolean | undefined;
12
13
  empty?: string | undefined;
13
14
  caption?: string | undefined;
14
15
  renderCell?: ((row: TRow, column: TableColumnDef<TRow>) => unknown) | undefined;
@@ -1 +1 @@
1
- const g=require("../utils/injectRequired.cjs"),i=require("../utils/renderProp.cjs"),k=require("./context.cjs"),w=require("./TableBody.vue.cjs"),T=require("./TableCaption.vue.cjs"),y=require("./TableCell.vue.cjs"),v=require("./TableEmpty.vue.cjs"),V=require("./TableExpandedRow.vue.cjs"),N=require("./TableExpandTrigger.vue.cjs"),E=require("./TableHeader.vue.cjs"),p=require("./TableHeaderCell.vue.cjs"),B=require("./TableRow.vue.cjs"),z=require("./TableRowSelectCheckbox.vue.cjs"),R=require("./TableSelectAllCheckbox.vue.cjs");let e=require("vue");var F=(0,e.defineComponent)({__name:"TableAnatomy",props:{columns:{},data:{},rowId:{type:Function,default:void 0},getRowLabel:{type:Function,default:void 0},sortable:{type:Boolean,default:!1},selectable:{type:Boolean,default:!1},expandable:{type:Boolean,default:!1},resizable:{type:Boolean,default:!1},empty:{default:void 0},caption:{default:void 0},renderCell:{type:Function,default:void 0},renderExpanded:{type:Function,default:void 0},size:{default:void 0}},setup(l){const n=l,C=g.injectRequired(k.TABLE_CONTEXT,"TableAnatomy must be used within SkdxTable.");function d(r){return typeof r=="string"?r:String(r)}function c(r,a){if(n.rowId)return n.rowId(r,a);const t=k.cellValue(r,"id");return t===void 0?String(a):d(t)}function m(r,a){return n.getRowLabel?n.getRowLabel(r,a):`row ${c(r,a)}`}function q(r,a){const t=k.cellValue(r,a.key);return t==null?"":d(t)}function h(r,a){return typeof r=="number"&&typeof a=="number"?r-a:d(r??"").localeCompare(d(a??""))}const f=(0,e.computed)(()=>{const r=C.sortList.value;return r.length===0?n.data:[...n.data].sort((a,t)=>{for(const{columnKey:o,direction:u}of r){const s=h(a[o],t[o]);if(s!==0)return u==="asc"?s:-s}return 0})}),b=(0,e.computed)(()=>n.columns.length+(n.selectable?1:0)+(n.expandable?1:0)),x=(0,e.computed)(()=>f.value.map((r,a)=>c(r,a)));return(r,a)=>((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,null,[l.caption?((0,e.openBlock)(),(0,e.createBlock)(T.default,{key:0},{default:(0,e.withCtx)(()=>[(0,e.createTextVNode)((0,e.toDisplayString)(l.caption),1)]),_:1})):(0,e.createCommentVNode)("",!0),(0,e.createVNode)(E.default,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(B.default,null,{default:(0,e.withCtx)(()=>[l.selectable?((0,e.openBlock)(),(0,e.createBlock)(p.default,{key:0},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(R.default,{"row-ids":x.value,scope:"page",size:l.size},null,8,["row-ids","size"])]),_:1})):(0,e.createCommentVNode)("",!0),l.expandable?((0,e.openBlock)(),(0,e.createBlock)(p.default,{key:1,"aria-hidden":"true"})):(0,e.createCommentVNode)("",!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(l.columns,t=>((0,e.openBlock)(),(0,e.createBlock)(p.default,{key:t.key,"column-key":t.key,sortable:t.sortable??l.sortable,resizable:t.resizable??l.resizable,"min-width":t.minWidth,"max-width":t.maxWidth},{default:(0,e.withCtx)(()=>[t.header!==void 0&&typeof t.header!="string"?((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(i.RenderProp),{key:0,render:()=>t.header},null,8,["render"])):((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:1},[(0,e.createTextVNode)((0,e.toDisplayString)(t.header??t.key),1)],64))]),_:2},1032,["column-key","sortable","resizable","min-width","max-width"]))),128))]),_:1})]),_:1}),(0,e.createVNode)(w.default,null,{default:(0,e.withCtx)(()=>[f.value.length===0&&l.empty?((0,e.openBlock)(),(0,e.createBlock)(v.default,{key:0,"col-span":b.value},{default:(0,e.withCtx)(()=>[(0,e.createTextVNode)((0,e.toDisplayString)(l.empty),1)]),_:1},8,["col-span"])):(0,e.createCommentVNode)("",!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(f.value,(t,o)=>((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:c(t,o)},[(0,e.createVNode)(B.default,{"row-id":l.selectable?c(t,o):void 0},{default:(0,e.withCtx)(()=>[l.selectable?((0,e.openBlock)(),(0,e.createBlock)(y.default,{key:0},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(z.default,{"row-id":c(t,o),"aria-label":`Select ${m(t,o)}`,size:l.size},null,8,["row-id","aria-label","size"])]),_:2},1024)):(0,e.createCommentVNode)("",!0),l.expandable?((0,e.openBlock)(),(0,e.createBlock)(y.default,{key:1},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(N.default,{"row-id":c(t,o),"aria-label":`Details for ${m(t,o)}`},null,8,["row-id","aria-label"])]),_:2},1024)):(0,e.createCommentVNode)("",!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(l.columns,u=>((0,e.openBlock)(),(0,e.createBlock)(y.default,{key:u.key},{default:(0,e.withCtx)(()=>[typeof u.cell=="function"?((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(i.RenderProp),{key:0,render:()=>u.cell(t)},null,8,["render"])):typeof l.renderCell=="function"?((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(i.RenderProp),{key:1,render:()=>n.renderCell(t,u)},null,8,["render"])):((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:2},[(0,e.createTextVNode)((0,e.toDisplayString)(q(t,u)),1)],64))]),_:2},1024))),128))]),_:2},1032,["row-id"]),l.expandable?((0,e.openBlock)(),(0,e.createBlock)(V.default,{key:0,"row-id":c(t,o),"col-span":b.value},{default:(0,e.withCtx)(()=>[typeof l.renderExpanded=="function"?((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(i.RenderProp),{key:0,render:()=>n.renderExpanded(t)},null,8,["render"])):(0,e.createCommentVNode)("",!0)]),_:2},1032,["row-id","col-span"])):(0,e.createCommentVNode)("",!0)],64))),128))]),_:1})],64))}});exports.default=F;
1
+ const x=require("../utils/injectRequired.cjs"),d=require("../utils/renderProp.cjs"),f=require("./context.cjs"),v=require("./TableBody.vue.cjs"),T=require("./TableCaption.vue.cjs"),y=require("./TableCell.vue.cjs"),V=require("./TableEmpty.vue.cjs"),N=require("./TableExpandedRow.vue.cjs"),E=require("./TableExpandTrigger.vue.cjs"),z=require("./TableHeader.vue.cjs"),b=require("./TableHeaderCell.vue.cjs"),h=require("./TableRow.vue.cjs"),F=require("./TableRowSelectCheckbox.vue.cjs"),R=require("./TableSelectAllCheckbox.vue.cjs");let e=require("vue");var S=(0,e.defineComponent)({__name:"TableAnatomy",props:{columns:{},data:{},rowId:{type:Function,default:void 0},getRowLabel:{type:Function,default:void 0},sortable:{type:Boolean,default:!1},selectable:{type:Boolean,default:!1},expandable:{type:Boolean,default:!1},resizable:{type:Boolean,default:!1},filterable:{type:Boolean,default:!1},empty:{default:void 0},caption:{default:void 0},renderCell:{type:Function,default:void 0},renderExpanded:{type:Function,default:void 0},size:{default:void 0}},setup(l){const o=l,p=x.injectRequired(f.TABLE_CONTEXT,"TableAnatomy must be used within SkdxTable.");function u(r){return typeof r=="string"?r:String(r)}function i(r,a){if(o.rowId)return o.rowId(r,a);const t=f.cellValue(r,"id");return t===void 0?String(a):u(t)}function B(r,a){return o.getRowLabel?o.getRowLabel(r,a):`row ${i(r,a)}`}function q(r,a){const t=f.cellValue(r,a.key);return t==null?"":u(t)}function g(r,a){return typeof r=="number"&&typeof a=="number"?r-a:u(r??"").localeCompare(u(a??""))}const m=(0,e.computed)(()=>{const r=Object.entries(p.filterMap.value).filter(([,a])=>a!=="");return r.length===0?o.data:o.data.filter(a=>r.every(([t,n])=>u(f.cellValue(a,t)??"").toLowerCase().includes(n.toLowerCase())))}),s=(0,e.computed)(()=>{const r=p.sortList.value;return r.length===0?m.value:[...m.value].sort((a,t)=>{for(const{columnKey:n,direction:c}of r){const k=g(a[n],t[n]);if(k!==0)return c==="asc"?k:-k}return 0})}),C=(0,e.computed)(()=>o.columns.length+(o.selectable?1:0)+(o.expandable?1:0)),w=(0,e.computed)(()=>s.value.map((r,a)=>i(r,a)));return(r,a)=>((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,null,[l.caption?((0,e.openBlock)(),(0,e.createBlock)(T.default,{key:0},{default:(0,e.withCtx)(()=>[(0,e.createTextVNode)((0,e.toDisplayString)(l.caption),1)]),_:1})):(0,e.createCommentVNode)("",!0),(0,e.createVNode)(z.default,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(h.default,null,{default:(0,e.withCtx)(()=>[l.selectable?((0,e.openBlock)(),(0,e.createBlock)(b.default,{key:0},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(R.default,{"row-ids":w.value,scope:"page",size:l.size},null,8,["row-ids","size"])]),_:1})):(0,e.createCommentVNode)("",!0),l.expandable?((0,e.openBlock)(),(0,e.createBlock)(b.default,{key:1,"aria-hidden":"true"})):(0,e.createCommentVNode)("",!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(l.columns,t=>((0,e.openBlock)(),(0,e.createBlock)(b.default,{key:t.key,"column-key":t.key,sortable:t.sortable??l.sortable,filterable:t.filterable??l.filterable,"filter-label":`Filter ${typeof t.header=="string"?t.header:t.key}`,resizable:t.resizable??l.resizable,"min-width":t.minWidth,"max-width":t.maxWidth},{default:(0,e.withCtx)(()=>[t.header!==void 0&&typeof t.header!="string"?((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(d.RenderProp),{key:0,render:()=>t.header},null,8,["render"])):((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:1},[(0,e.createTextVNode)((0,e.toDisplayString)(t.header??t.key),1)],64))]),_:2},1032,["column-key","sortable","filterable","filter-label","resizable","min-width","max-width"]))),128))]),_:1})]),_:1}),(0,e.createVNode)(v.default,null,{default:(0,e.withCtx)(()=>[s.value.length===0&&l.empty?((0,e.openBlock)(),(0,e.createBlock)(V.default,{key:0,"col-span":C.value},{default:(0,e.withCtx)(()=>[(0,e.createTextVNode)((0,e.toDisplayString)(l.empty),1)]),_:1},8,["col-span"])):(0,e.createCommentVNode)("",!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(s.value,(t,n)=>((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:i(t,n)},[(0,e.createVNode)(h.default,{"row-id":l.selectable?i(t,n):void 0},{default:(0,e.withCtx)(()=>[l.selectable?((0,e.openBlock)(),(0,e.createBlock)(y.default,{key:0},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(F.default,{"row-id":i(t,n),"aria-label":`Select ${B(t,n)}`,size:l.size},null,8,["row-id","aria-label","size"])]),_:2},1024)):(0,e.createCommentVNode)("",!0),l.expandable?((0,e.openBlock)(),(0,e.createBlock)(y.default,{key:1},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(E.default,{"row-id":i(t,n),"aria-label":`Details for ${B(t,n)}`},null,8,["row-id","aria-label"])]),_:2},1024)):(0,e.createCommentVNode)("",!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(l.columns,c=>((0,e.openBlock)(),(0,e.createBlock)(y.default,{key:c.key},{default:(0,e.withCtx)(()=>[typeof c.cell=="function"?((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(d.RenderProp),{key:0,render:()=>c.cell(t)},null,8,["render"])):typeof l.renderCell=="function"?((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(d.RenderProp),{key:1,render:()=>o.renderCell(t,c)},null,8,["render"])):((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:2},[(0,e.createTextVNode)((0,e.toDisplayString)(q(t,c)),1)],64))]),_:2},1024))),128))]),_:2},1032,["row-id"]),l.expandable?((0,e.openBlock)(),(0,e.createBlock)(N.default,{key:0,"row-id":i(t,n),"col-span":C.value},{default:(0,e.withCtx)(()=>[typeof l.renderExpanded=="function"?((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(d.RenderProp),{key:0,render:()=>o.renderExpanded(t)},null,8,["render"])):(0,e.createCommentVNode)("",!0)]),_:2},1032,["row-id","col-span"])):(0,e.createCommentVNode)("",!0)],64))),128))]),_:1})],64))}});exports.default=S;
@@ -1 +1 @@
1
- import{injectRequired as e}from"../utils/injectRequired.js";import{RenderProp as l}from"../utils/renderProp.js";import{TABLE_CONTEXT as t,cellValue as a}from"./context.js";import r from"./TableBody.vue.js";import o from"./TableCaption.vue.js";import n from"./TableCell.vue.js";import d from"./TableEmpty.vue.js";import i from"./TableExpandedRow.vue.js";import u from"./TableExpandTrigger.vue.js";import s from"./TableHeader.vue.js";import p from"./TableHeaderCell.vue.js";import c from"./TableRow.vue.js";import f from"./TableRowSelectCheckbox.vue.js";import m from"./TableSelectAllCheckbox.vue.js";import{Fragment as y,computed as b,createBlock as v,createCommentVNode as k,createElementBlock as w,createTextVNode as x,createVNode as T,defineComponent as h,openBlock as j,renderList as g,toDisplayString as _,unref as C,withCtx as z}from"vue";var B=/* @__PURE__ */h({__name:"TableAnatomy",props:{columns:{},data:{},rowId:{type:Function,default:void 0},getRowLabel:{type:Function,default:void 0},sortable:{type:Boolean,default:!1},selectable:{type:Boolean,default:!1},expandable:{type:Boolean,default:!1},resizable:{type:Boolean,default:!1},empty:{default:void 0},caption:{default:void 0},renderCell:{type:Function,default:void 0},renderExpanded:{type:Function,default:void 0},size:{default:void 0}},setup(h){const B=h,E=e(t,"TableAnatomy must be used within SkdxTable.");function R(e){return"string"==typeof e?e:String(e)}function S(e,l){if(B.rowId)return B.rowId(e,l);const t=a(e,"id");return void 0===t?String(l):R(t)}function L(e,l){return B.getRowLabel?B.getRowLabel(e,l):`row ${S(e,l)}`}function F(e,l){const t=a(e,l.key);return null==t?"":R(t)}function A(e,l){return"number"==typeof e&&"number"==typeof l?e-l:R(e??"").localeCompare(R(l??""))}const N=b(()=>{const e=E.sortList.value;return 0===e.length?B.data:[...B.data].sort((l,t)=>{for(const{columnKey:a,direction:r}of e){const e=A(l[a],t[a]);if(0!==e)return"asc"===r?e:-e}return 0})}),V=b(()=>B.columns.length+(B.selectable?1:0)+(B.expandable?1:0)),I=b(()=>N.value.map((e,l)=>S(e,l)));return(e,t)=>(j(),w(y,null,[h.caption?(j(),v(o,{key:0},{default:z(()=>[x(_(h.caption),1)]),_:1})):k("",!0),T(s,null,{default:z(()=>[T(c,null,{default:z(()=>[h.selectable?(j(),v(p,{key:0},{default:z(()=>[T(m,{"row-ids":I.value,scope:"page",size:h.size},null,8,["row-ids","size"])]),_:1})):k("",!0),h.expandable?(j(),v(p,{key:1,"aria-hidden":"true"})):k("",!0),(j(!0),w(y,null,g(h.columns,e=>(j(),v(p,{key:e.key,"column-key":e.key,sortable:e.sortable??h.sortable,resizable:e.resizable??h.resizable,"min-width":e.minWidth,"max-width":e.maxWidth},{default:z(()=>[void 0!==e.header&&"string"!=typeof e.header?(j(),v(C(l),{key:0,render:()=>e.header},null,8,["render"])):(j(),w(y,{key:1},[x(_(e.header??e.key),1)],64))]),_:2},1032,["column-key","sortable","resizable","min-width","max-width"]))),128))]),_:1})]),_:1}),T(r,null,{default:z(()=>[0===N.value.length&&h.empty?(j(),v(d,{key:0,"col-span":V.value},{default:z(()=>[x(_(h.empty),1)]),_:1},8,["col-span"])):k("",!0),(j(!0),w(y,null,g(N.value,(e,t)=>(j(),w(y,{key:S(e,t)},[T(c,{"row-id":h.selectable?S(e,t):void 0},{default:z(()=>[h.selectable?(j(),v(n,{key:0},{default:z(()=>[T(f,{"row-id":S(e,t),"aria-label":`Select ${L(e,t)}`,size:h.size},null,8,["row-id","aria-label","size"])]),_:2},1024)):k("",!0),h.expandable?(j(),v(n,{key:1},{default:z(()=>[T(u,{"row-id":S(e,t),"aria-label":`Details for ${L(e,t)}`},null,8,["row-id","aria-label"])]),_:2},1024)):k("",!0),(j(!0),w(y,null,g(h.columns,t=>(j(),v(n,{key:t.key},{default:z(()=>["function"==typeof t.cell?(j(),v(C(l),{key:0,render:()=>t.cell(e)},null,8,["render"])):"function"==typeof h.renderCell?(j(),v(C(l),{key:1,render:()=>B.renderCell(e,t)},null,8,["render"])):(j(),w(y,{key:2},[x(_(F(e,t)),1)],64))]),_:2},1024))),128))]),_:2},1032,["row-id"]),h.expandable?(j(),v(i,{key:0,"row-id":S(e,t),"col-span":V.value},{default:z(()=>["function"==typeof h.renderExpanded?(j(),v(C(l),{key:0,render:()=>B.renderExpanded(e)},null,8,["render"])):k("",!0)]),_:2},1032,["row-id","col-span"])):k("",!0)],64))),128))]),_:1})],64))}});export{B as default};
1
+ import{injectRequired as e}from"../utils/injectRequired.js";import{RenderProp as l}from"../utils/renderProp.js";import{TABLE_CONTEXT as t,cellValue as a}from"./context.js";import r from"./TableBody.vue.js";import o from"./TableCaption.vue.js";import n from"./TableCell.vue.js";import i from"./TableEmpty.vue.js";import d from"./TableExpandedRow.vue.js";import u from"./TableExpandTrigger.vue.js";import s from"./TableHeader.vue.js";import f from"./TableHeaderCell.vue.js";import p from"./TableRow.vue.js";import c from"./TableRowSelectCheckbox.vue.js";import m from"./TableSelectAllCheckbox.vue.js";import{Fragment as b,computed as y,createBlock as v,createCommentVNode as k,createElementBlock as w,createTextVNode as h,createVNode as x,defineComponent as T,openBlock as g,renderList as j,toDisplayString as C,unref as _,withCtx as z}from"vue";var B=/* @__PURE__ */T({__name:"TableAnatomy",props:{columns:{},data:{},rowId:{type:Function,default:void 0},getRowLabel:{type:Function,default:void 0},sortable:{type:Boolean,default:!1},selectable:{type:Boolean,default:!1},expandable:{type:Boolean,default:!1},resizable:{type:Boolean,default:!1},filterable:{type:Boolean,default:!1},empty:{default:void 0},caption:{default:void 0},renderCell:{type:Function,default:void 0},renderExpanded:{type:Function,default:void 0},size:{default:void 0}},setup(T){const B=T,E=e(t,"TableAnatomy must be used within SkdxTable.");function R(e){return"string"==typeof e?e:String(e)}function L(e,l){if(B.rowId)return B.rowId(e,l);const t=a(e,"id");return void 0===t?String(l):R(t)}function S(e,l){return B.getRowLabel?B.getRowLabel(e,l):`row ${L(e,l)}`}function F(e,l){const t=a(e,l.key);return null==t?"":R(t)}function A(e,l){return"number"==typeof e&&"number"==typeof l?e-l:R(e??"").localeCompare(R(l??""))}const N=y(()=>{const e=Object.entries(E.filterMap.value).filter(([,e])=>""!==e);return 0===e.length?B.data:B.data.filter(l=>e.every(([e,t])=>R(a(l,e)??"").toLowerCase().includes(t.toLowerCase())))}),V=y(()=>{const e=E.sortList.value;return 0===e.length?N.value:[...N.value].sort((l,t)=>{for(const{columnKey:a,direction:r}of e){const e=A(l[a],t[a]);if(0!==e)return"asc"===r?e:-e}return 0})}),$=y(()=>B.columns.length+(B.selectable?1:0)+(B.expandable?1:0)),I=y(()=>V.value.map((e,l)=>L(e,l)));return(e,t)=>(g(),w(b,null,[T.caption?(g(),v(o,{key:0},{default:z(()=>[h(C(T.caption),1)]),_:1})):k("",!0),x(s,null,{default:z(()=>[x(p,null,{default:z(()=>[T.selectable?(g(),v(f,{key:0},{default:z(()=>[x(m,{"row-ids":I.value,scope:"page",size:T.size},null,8,["row-ids","size"])]),_:1})):k("",!0),T.expandable?(g(),v(f,{key:1,"aria-hidden":"true"})):k("",!0),(g(!0),w(b,null,j(T.columns,e=>(g(),v(f,{key:e.key,"column-key":e.key,sortable:e.sortable??T.sortable,filterable:e.filterable??T.filterable,"filter-label":`Filter ${"string"==typeof e.header?e.header:e.key}`,resizable:e.resizable??T.resizable,"min-width":e.minWidth,"max-width":e.maxWidth},{default:z(()=>[void 0!==e.header&&"string"!=typeof e.header?(g(),v(_(l),{key:0,render:()=>e.header},null,8,["render"])):(g(),w(b,{key:1},[h(C(e.header??e.key),1)],64))]),_:2},1032,["column-key","sortable","filterable","filter-label","resizable","min-width","max-width"]))),128))]),_:1})]),_:1}),x(r,null,{default:z(()=>[0===V.value.length&&T.empty?(g(),v(i,{key:0,"col-span":$.value},{default:z(()=>[h(C(T.empty),1)]),_:1},8,["col-span"])):k("",!0),(g(!0),w(b,null,j(V.value,(e,t)=>(g(),w(b,{key:L(e,t)},[x(p,{"row-id":T.selectable?L(e,t):void 0},{default:z(()=>[T.selectable?(g(),v(n,{key:0},{default:z(()=>[x(c,{"row-id":L(e,t),"aria-label":`Select ${S(e,t)}`,size:T.size},null,8,["row-id","aria-label","size"])]),_:2},1024)):k("",!0),T.expandable?(g(),v(n,{key:1},{default:z(()=>[x(u,{"row-id":L(e,t),"aria-label":`Details for ${S(e,t)}`},null,8,["row-id","aria-label"])]),_:2},1024)):k("",!0),(g(!0),w(b,null,j(T.columns,t=>(g(),v(n,{key:t.key},{default:z(()=>["function"==typeof t.cell?(g(),v(_(l),{key:0,render:()=>t.cell(e)},null,8,["render"])):"function"==typeof T.renderCell?(g(),v(_(l),{key:1,render:()=>B.renderCell(e,t)},null,8,["render"])):(g(),w(b,{key:2},[h(C(F(e,t)),1)],64))]),_:2},1024))),128))]),_:2},1032,["row-id"]),T.expandable?(g(),v(d,{key:0,"row-id":L(e,t),"col-span":$.value},{default:z(()=>["function"==typeof T.renderExpanded?(g(),v(_(l),{key:0,render:()=>B.renderExpanded(e)},null,8,["render"])):k("",!0)]),_:2},1032,["row-id","col-span"])):k("",!0)],64))),128))]),_:1})],64))}});export{B as default};
@@ -0,0 +1 @@
1
+ const e=require("./TableColumnHeaderFilterInput.vue_vue_type_script_setup_true_lang.cjs");var u=e.default;exports.default=u;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Search input filtering its column: typing writes the column's entry in the table's filter map, clearing removes it.
3
+ */
4
+ type __VLS_Props = {
5
+ /** Column this input filters, inherited from `SkdxTableHeaderCell`'s `columnKey` when omitted. */
6
+ columnKey?: string | undefined;
7
+ };
8
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
9
+ columnKey: string | undefined;
10
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
11
+ export default _default;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Search input filtering its column: typing writes the column's entry in the table's filter map, clearing removes it.
3
+ */
4
+ type __VLS_Props = {
5
+ /** Column this input filters, inherited from `SkdxTableHeaderCell`'s `columnKey` when omitted. */
6
+ columnKey?: string | undefined;
7
+ };
8
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
9
+ columnKey: string | undefined;
10
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
11
+ export default _default;
@@ -0,0 +1 @@
1
+ import e from"./TableColumnHeaderFilterInput.vue_vue_type_script_setup_true_lang.js";var t=e;export{t as default};
@@ -0,0 +1 @@
1
+ const c=require("../utils/injectRequired.cjs"),n=require("./context.cjs");let e=require("vue");var s=["aria-label","data-filtered","value"],p=(0,e.defineComponent)({inheritAttrs:!1,__name:"TableColumnHeaderFilterInput",props:{columnKey:{default:void 0}},setup(i){const o=i,u=c.injectRequired(n.TABLE_CONTEXT,"SkdxTableColumnHeaderFilterInput must be used within SkdxTable"),l=(0,e.inject)(n.TABLE_HEADER_CELL_CONTEXT,void 0),t=(0,e.computed)(()=>o.columnKey??(l?.filterable?l.columnKey:void 0)),r=(0,e.computed)(()=>t.value===void 0?"":u.filterMap.value[t.value]??"");function d(a){u.setColumnFilter(t.value,a.target.value)}return(a,v)=>t.value!==void 0?((0,e.openBlock)(),(0,e.createElementBlock)("input",(0,e.mergeProps)({key:0,class:"skdx-table__column-header-filter-input","data-part":"column-header-filter-input",type:"search","data-skdx-table-filter-input":"","aria-label":(0,e.unref)(l)?.filterLabel??`Filter ${t.value}`,"data-filtered":r.value===""?void 0:""},a.$attrs,{value:r.value,onInput:d}),null,16,s)):(0,e.createCommentVNode)("",!0)}});exports.default=p;
@@ -0,0 +1 @@
1
+ import{injectRequired as e}from"../utils/injectRequired.js";import{TABLE_CONTEXT as a,TABLE_HEADER_CELL_CONTEXT as t}from"./context.js";import{computed as l,createCommentVNode as r,createElementBlock as u,defineComponent as i,inject as n,mergeProps as o,openBlock as s,unref as d}from"vue";var m=["aria-label","data-filtered","value"],p=/* @__PURE__ */i({inheritAttrs:!1,__name:"TableColumnHeaderFilterInput",props:{columnKey:{default:void 0}},setup(i){const p=i,v=e(a,"SkdxTableColumnHeaderFilterInput must be used within SkdxTable"),c=n(t,void 0),f=l(()=>p.columnKey??(c?.filterable?c.columnKey:void 0)),b=l(()=>void 0===f.value?"":v.filterMap.value[f.value]??"");function T(e){v.setColumnFilter(f.value,e.target.value)}return(e,a)=>void 0!==f.value?(s(),u("input",o({key:0,class:"skdx-table__column-header-filter-input","data-part":"column-header-filter-input",type:"search","data-skdx-table-filter-input":"","aria-label":d(c)?.filterLabel??`Filter ${f.value}`,"data-filtered":""===b.value?void 0:""},e.$attrs,{value:b.value,onInput:T}),null,16,m)):r("",!0)}});export{p as default};
@@ -6,6 +6,10 @@ type __VLS_Props = {
6
6
  columnKey?: string | undefined;
7
7
  /** Whether this column can be sorted, setting `aria-sort` and wrapping content in a sort button. */
8
8
  sortable?: boolean | undefined;
9
+ /** Whether this column can be filtered, rendering a filter input after the content. */
10
+ filterable?: boolean | undefined;
11
+ /** Accessible name for the derived filter input. @default `Filter ${columnKey}` */
12
+ filterLabel?: string | undefined;
9
13
  /** Renders a focusable resize handle driven by pointer drag or Arrow keys (Home/End for bounds). */
10
14
  resizable?: boolean | undefined;
11
15
  /** Smallest width in pixels the column can be resized to. */
@@ -24,11 +28,13 @@ type __VLS_Slots = {} & {
24
28
  default?: (props: typeof __VLS_6) => any;
25
29
  };
26
30
  declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
31
+ filterable: boolean | undefined;
27
32
  minWidth: number | undefined;
28
33
  maxWidth: number | undefined;
29
34
  columnKey: string | undefined;
30
35
  sortable: boolean | undefined;
31
36
  resizeLabel: string;
37
+ filterLabel: string | undefined;
32
38
  resizable: boolean | undefined;
33
39
  resizeStep: number;
34
40
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -6,6 +6,10 @@ type __VLS_Props = {
6
6
  columnKey?: string | undefined;
7
7
  /** Whether this column can be sorted, setting `aria-sort` and wrapping content in a sort button. */
8
8
  sortable?: boolean | undefined;
9
+ /** Whether this column can be filtered, rendering a filter input after the content. */
10
+ filterable?: boolean | undefined;
11
+ /** Accessible name for the derived filter input. @default `Filter ${columnKey}` */
12
+ filterLabel?: string | undefined;
9
13
  /** Renders a focusable resize handle driven by pointer drag or Arrow keys (Home/End for bounds). */
10
14
  resizable?: boolean | undefined;
11
15
  /** Smallest width in pixels the column can be resized to. */
@@ -24,11 +28,13 @@ type __VLS_Slots = {} & {
24
28
  default?: (props: typeof __VLS_6) => any;
25
29
  };
26
30
  declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
31
+ filterable: boolean | undefined;
27
32
  minWidth: number | undefined;
28
33
  maxWidth: number | undefined;
29
34
  columnKey: string | undefined;
30
35
  sortable: boolean | undefined;
31
36
  resizeLabel: string;
37
+ filterLabel: string | undefined;
32
38
  resizable: boolean | undefined;
33
39
  resizeStep: number;
34
40
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -1 +1 @@
1
- const g=require("../utils/injectRequired.cjs"),c=require("./context.cjs"),v=require("./TableColumnHeaderSortTrigger.vue.cjs"),h=require("./TableColumnResizeTrigger.vue.cjs");let e=require("vue");var T=["aria-sort","data-sort-direction","data-resizable"],y=(0,e.defineComponent)({__name:"TableHeaderCell",props:{columnKey:{default:void 0},sortable:{type:Boolean,default:void 0},resizable:{type:Boolean,default:!1},minWidth:{default:40},maxWidth:{default:1e3},resizeLabel:{default:"Resize column"},resizeStep:{default:8}},setup(m){const t=m,u=g.injectRequired(c.TABLE_CONTEXT,"SkdxTableHeaderCell must be used within SkdxTable");(0,e.onScopeDispose)(u.registerHeaderCell());const p=(0,e.useSlots)();function d(l){return(l??[]).some(o=>o.type===v.default?!0:o.type===e.Fragment&&d(o.children))}function f(){return d(p.default?.())}const r=(0,e.computed)(()=>t.columnKey),a=(0,e.computed)(()=>t.sortable&&r.value!==void 0),i=(0,e.computed)(()=>a.value?u.sortList.value.find(l=>l.columnKey===r.value)?.direction:void 0),_=(0,e.computed)(()=>{if(a.value)return i.value==="asc"?"ascending":i.value==="desc"?"descending":"none"}),s=(0,e.computed)(()=>t.resizable&&r.value!==void 0),n=(0,e.computed)(()=>r.value===void 0?void 0:u.columnWidths.value[r.value]),b=(0,e.computed)(()=>n.value===void 0?void 0:{width:`${n.value}px`,"--skdx-table-column-width":`${n.value}px`});return(0,e.provide)(c.TABLE_HEADER_CELL_CONTEXT,{get columnKey(){return r.value},get sortable(){return a.value},get minWidth(){return t.minWidth},get maxWidth(){return t.maxWidth},get resizeLabel(){return t.resizeLabel},get resizeStep(){return t.resizeStep}}),(l,o)=>((0,e.openBlock)(),(0,e.createElementBlock)("th",{class:"skdx-table__header-cell","data-part":"header-cell","aria-sort":_.value,"data-sort-direction":i.value,"data-resizable":s.value?"":void 0,style:(0,e.normalizeStyle)(b.value)},[a.value&&!f()?((0,e.openBlock)(),(0,e.createBlock)(v.default,{key:0},{default:(0,e.withCtx)(()=>[(0,e.renderSlot)(l.$slots,"default")]),_:3})):(0,e.renderSlot)(l.$slots,"default",{key:1}),s.value?((0,e.openBlock)(),(0,e.createBlock)(h.default,{key:2})):(0,e.createCommentVNode)("",!0)],12,T))}});exports.default=y;
1
+ const z=require("../utils/injectRequired.cjs"),p=require("./context.cjs"),m=require("./TableColumnHeaderFilterInput.vue.cjs"),b=require("./TableColumnHeaderSortTrigger.vue.cjs"),C=require("./TableColumnResizeTrigger.vue.cjs");let e=require("vue");var S=["aria-sort","data-sort-direction","data-filterable","data-filtered","data-resizable"],q=(0,e.defineComponent)({__name:"TableHeaderCell",props:{columnKey:{default:void 0},sortable:{type:Boolean,default:void 0},filterable:{type:Boolean,default:void 0},filterLabel:{default:void 0},resizable:{type:Boolean,default:!1},minWidth:{default:40},maxWidth:{default:1e3},resizeLabel:{default:"Resize column"},resizeStep:{default:8}},setup(_){const t=_,a=z.injectRequired(p.TABLE_CONTEXT,"SkdxTableHeaderCell must be used within SkdxTable");(0,e.onScopeDispose)(a.registerHeaderCell());const v=(0,e.useSlots)();function i(r,s){return(r??[]).some(c=>c.type===s?!0:c.type===e.Fragment&&i(c.children,s))}function h(){return i(v.default?.(),b.default)}function g(){return i(v.default?.(),m.default)}const l=(0,e.computed)(()=>t.columnKey),u=(0,e.computed)(()=>t.sortable&&l.value!==void 0),d=(0,e.computed)(()=>u.value?a.sortList.value.find(r=>r.columnKey===l.value)?.direction:void 0),y=(0,e.computed)(()=>{if(u.value)return d.value==="asc"?"ascending":d.value==="desc"?"descending":"none"}),o=(0,e.computed)(()=>t.filterable===!0&&l.value!==void 0),k=(0,e.computed)(()=>o.value&&(a.filterMap.value[l.value]??"")!==""),f=(0,e.computed)(()=>t.resizable&&l.value!==void 0),n=(0,e.computed)(()=>l.value===void 0?void 0:a.columnWidths.value[l.value]),T=(0,e.computed)(()=>n.value===void 0?void 0:{width:`${n.value}px`,"--skdx-table-column-width":`${n.value}px`});return(0,e.provide)(p.TABLE_HEADER_CELL_CONTEXT,{get columnKey(){return l.value},get sortable(){return u.value},get filterable(){return o.value},get filterLabel(){return t.filterLabel},get minWidth(){return t.minWidth},get maxWidth(){return t.maxWidth},get resizeLabel(){return t.resizeLabel},get resizeStep(){return t.resizeStep}}),(r,s)=>((0,e.openBlock)(),(0,e.createElementBlock)("th",{class:"skdx-table__header-cell","data-part":"header-cell","aria-sort":y.value,"data-sort-direction":d.value,"data-filterable":o.value?"":void 0,"data-filtered":k.value?"":void 0,"data-resizable":f.value?"":void 0,style:(0,e.normalizeStyle)(T.value)},[u.value&&!h()?((0,e.openBlock)(),(0,e.createBlock)(b.default,{key:0},{default:(0,e.withCtx)(()=>[(0,e.renderSlot)(r.$slots,"default")]),_:3})):(0,e.renderSlot)(r.$slots,"default",{key:1}),o.value&&!g()?((0,e.openBlock)(),(0,e.createBlock)(m.default,{key:2})):(0,e.createCommentVNode)("",!0),f.value?((0,e.openBlock)(),(0,e.createBlock)(C.default,{key:3})):(0,e.createCommentVNode)("",!0)],12,S))}});exports.default=q;
@@ -1 +1 @@
1
- import{injectRequired as e}from"../utils/injectRequired.js";import{TABLE_CONTEXT as a,TABLE_HEADER_CELL_CONTEXT as t}from"./context.js";import l from"./TableColumnHeaderSortTrigger.vue.js";import r from"./TableColumnResizeTrigger.vue.js";import{Fragment as o,computed as i,createBlock as s,createCommentVNode as u,createElementBlock as d,defineComponent as n,normalizeStyle as v,onScopeDispose as m,openBlock as c,provide as p,renderSlot as f,useSlots as b,withCtx as h}from"vue";var g=["aria-sort","data-sort-direction","data-resizable"],y=/* @__PURE__ */n({__name:"TableHeaderCell",props:{columnKey:{default:void 0},sortable:{type:Boolean,default:void 0},resizable:{type:Boolean,default:!1},minWidth:{default:40},maxWidth:{default:1e3},resizeLabel:{default:"Resize column"},resizeStep:{default:8}},setup(n){const y=n,z=e(a,"SkdxTableHeaderCell must be used within SkdxTable");m(z.registerHeaderCell());const T=b();function x(e){return(e??[]).some(e=>e.type===l||e.type===o&&x(e.children))}function C(){return x(T.default?.())}const k=i(()=>y.columnKey),S=i(()=>y.sortable&&void 0!==k.value),_=i(()=>S.value?z.sortList.value.find(e=>e.columnKey===k.value)?.direction:void 0),E=i(()=>{if(S.value)return"asc"===_.value?"ascending":"desc"===_.value?"descending":"none"}),L=i(()=>y.resizable&&void 0!==k.value),B=i(()=>void 0===k.value?void 0:z.columnWidths.value[k.value]),W=i(()=>void 0===B.value?void 0:{width:`${B.value}px`,"--skdx-table-column-width":`${B.value}px`});return p(t,{get columnKey(){return k.value},get sortable(){return S.value},get minWidth(){return y.minWidth},get maxWidth(){return y.maxWidth},get resizeLabel(){return y.resizeLabel},get resizeStep(){return y.resizeStep}}),(e,a)=>(c(),d("th",{class:"skdx-table__header-cell","data-part":"header-cell","aria-sort":E.value,"data-sort-direction":_.value,"data-resizable":L.value?"":void 0,style:v(W.value)},[S.value&&!C()?(c(),s(l,{key:0},{default:h(()=>[f(e.$slots,"default")]),_:3})):f(e.$slots,"default",{key:1}),L.value?(c(),s(r,{key:2})):u("",!0)],12,g))}});export{y as default};
1
+ import{injectRequired as e}from"../utils/injectRequired.js";import{TABLE_CONTEXT as a,TABLE_HEADER_CELL_CONTEXT as t}from"./context.js";import l from"./TableColumnHeaderFilterInput.vue.js";import r from"./TableColumnHeaderSortTrigger.vue.js";import i from"./TableColumnResizeTrigger.vue.js";import{Fragment as o,computed as u,createBlock as d,createCommentVNode as s,createElementBlock as n,defineComponent as v,normalizeStyle as m,onScopeDispose as f,openBlock as c,provide as p,renderSlot as b,useSlots as g,withCtx as h}from"vue";var y=["aria-sort","data-sort-direction","data-filterable","data-filtered","data-resizable"],T=/* @__PURE__ */v({__name:"TableHeaderCell",props:{columnKey:{default:void 0},sortable:{type:Boolean,default:void 0},filterable:{type:Boolean,default:void 0},filterLabel:{default:void 0},resizable:{type:Boolean,default:!1},minWidth:{default:40},maxWidth:{default:1e3},resizeLabel:{default:"Resize column"},resizeStep:{default:8}},setup(v){const T=v,z=e(a,"SkdxTableHeaderCell must be used within SkdxTable");f(z.registerHeaderCell());const x=g();function C(e,a){return(e??[]).some(e=>e.type===a||e.type===o&&C(e.children,a))}const k=u(()=>T.columnKey),L=u(()=>T.sortable&&void 0!==k.value),S=u(()=>L.value?z.sortList.value.find(e=>e.columnKey===k.value)?.direction:void 0),_=u(()=>{if(L.value)return"asc"===S.value?"ascending":"desc"===S.value?"descending":"none"}),B=u(()=>!0===T.filterable&&void 0!==k.value),E=u(()=>B.value&&""!==(z.filterMap.value[k.value]??"")),j=u(()=>T.resizable&&void 0!==k.value),W=u(()=>void 0===k.value?void 0:z.columnWidths.value[k.value]),H=u(()=>void 0===W.value?void 0:{width:`${W.value}px`,"--skdx-table-column-width":`${W.value}px`});return p(t,{get columnKey(){return k.value},get sortable(){return L.value},get filterable(){return B.value},get filterLabel(){return T.filterLabel},get minWidth(){return T.minWidth},get maxWidth(){return T.maxWidth},get resizeLabel(){return T.resizeLabel},get resizeStep(){return T.resizeStep}}),(e,a)=>(c(),n("th",{class:"skdx-table__header-cell","data-part":"header-cell","aria-sort":_.value,"data-sort-direction":S.value,"data-filterable":B.value?"":void 0,"data-filtered":E.value?"":void 0,"data-resizable":j.value?"":void 0,style:m(H.value)},[L.value&&!C(x.default?.(),r)?(c(),d(r,{key:0},{default:h(()=>[b(e.$slots,"default")]),_:3})):b(e.$slots,"default",{key:1}),B.value&&!C(x.default?.(),l)?(c(),d(l,{key:2})):s("",!0),j.value?(c(),d(i,{key:3})):s("",!0)],12,y))}});export{T as default};
@@ -8,6 +8,8 @@ export interface TableSortState {
8
8
  }
9
9
  /** Table's sort state: sorted columns, most significant first, empty when unsorted. */
10
10
  export type TableSort = TableSortState[];
11
+ /** Active column filters: each key is a `columnKey`, each value the text its rows must contain. */
12
+ export type TableFilterState = Record<string, string>;
11
13
  /** Selection mode: `'single'`, `'multiple'` (with range extension), or `'none'` (default). */
12
14
  export type TableSelectionMode = 'single' | 'multiple' | 'none';
13
15
  /** Select-all scope: `'page'` (visible rows) or `'all'` (entire dataset). */
@@ -26,6 +28,8 @@ export interface TableColumnDef<TRow extends object = object> {
26
28
  sortable?: boolean;
27
29
  /** Whether this column resizes, overriding the root `resizable`. @default the root `resizable` */
28
30
  resizable?: boolean;
31
+ /** Whether this column filters, overriding the root `filterable`. @default the root `filterable` */
32
+ filterable?: boolean;
29
33
  /** Smallest width in pixels a resize drag may reach for this column. @default 40 */
30
34
  minWidth?: number;
31
35
  /** Largest width in pixels a resize drag may reach for this column. @default 1000 */
@@ -47,6 +51,10 @@ export interface TableContext {
47
51
  selectionMode: TableSelectionMode;
48
52
  /** Cycles a column through asc → desc → unsorted; `columnLabel` names it for live-region announcements. */
49
53
  toggleSort(columnKey: string, columnLabel?: string): void;
54
+ /** Active column filters keyed by `columnKey`; a column with no entry is unfiltered. */
55
+ filterMap: Readonly<Ref<TableFilterState>>;
56
+ /** Sets one column's filter text; an empty string clears that column. */
57
+ setColumnFilter(columnKey: string, value: string): void;
50
58
  /** Toggles row selection; `'single'` replaces the current row, `extend` (Shift-click) selects a range in `'multiple'`. */
51
59
  toggleRow(id: string, extend?: boolean): void;
52
60
  isRowSelected(id: string): boolean;
@@ -85,6 +93,9 @@ export interface TableHeaderCellContext {
85
93
  readonly columnKey: string | undefined;
86
94
  /** Whether this column sorts — `sortable`. */
87
95
  readonly sortable: boolean | undefined;
96
+ /** Whether this column filters — `filterable`. */
97
+ readonly filterable: boolean | undefined;
98
+ readonly filterLabel: string | undefined;
88
99
  readonly minWidth: number | undefined;
89
100
  readonly maxWidth: number | undefined;
90
101
  readonly resizeLabel: string | undefined;
@@ -8,6 +8,8 @@ export interface TableSortState {
8
8
  }
9
9
  /** Table's sort state: sorted columns, most significant first, empty when unsorted. */
10
10
  export type TableSort = TableSortState[];
11
+ /** Active column filters: each key is a `columnKey`, each value the text its rows must contain. */
12
+ export type TableFilterState = Record<string, string>;
11
13
  /** Selection mode: `'single'`, `'multiple'` (with range extension), or `'none'` (default). */
12
14
  export type TableSelectionMode = 'single' | 'multiple' | 'none';
13
15
  /** Select-all scope: `'page'` (visible rows) or `'all'` (entire dataset). */
@@ -26,6 +28,8 @@ export interface TableColumnDef<TRow extends object = object> {
26
28
  sortable?: boolean;
27
29
  /** Whether this column resizes, overriding the root `resizable`. @default the root `resizable` */
28
30
  resizable?: boolean;
31
+ /** Whether this column filters, overriding the root `filterable`. @default the root `filterable` */
32
+ filterable?: boolean;
29
33
  /** Smallest width in pixels a resize drag may reach for this column. @default 40 */
30
34
  minWidth?: number;
31
35
  /** Largest width in pixels a resize drag may reach for this column. @default 1000 */
@@ -47,6 +51,10 @@ export interface TableContext {
47
51
  selectionMode: TableSelectionMode;
48
52
  /** Cycles a column through asc → desc → unsorted; `columnLabel` names it for live-region announcements. */
49
53
  toggleSort(columnKey: string, columnLabel?: string): void;
54
+ /** Active column filters keyed by `columnKey`; a column with no entry is unfiltered. */
55
+ filterMap: Readonly<Ref<TableFilterState>>;
56
+ /** Sets one column's filter text; an empty string clears that column. */
57
+ setColumnFilter(columnKey: string, value: string): void;
50
58
  /** Toggles row selection; `'single'` replaces the current row, `extend` (Shift-click) selects a range in `'multiple'`. */
51
59
  toggleRow(id: string, extend?: boolean): void;
52
60
  isRowSelected(id: string): boolean;
@@ -85,6 +93,9 @@ export interface TableHeaderCellContext {
85
93
  readonly columnKey: string | undefined;
86
94
  /** Whether this column sorts — `sortable`. */
87
95
  readonly sortable: boolean | undefined;
96
+ /** Whether this column filters — `filterable`. */
97
+ readonly filterable: boolean | undefined;
98
+ readonly filterLabel: string | undefined;
88
99
  readonly minWidth: number | undefined;
89
100
  readonly maxWidth: number | undefined;
90
101
  readonly resizeLabel: string | undefined;
@@ -2,4 +2,4 @@ export { default as SkdxTable } from './Table.vue.cjs';
2
2
  export { default as SkdxTableRow } from './TableRow.vue.cjs';
3
3
  export { default as SkdxTableCell } from './TableCell.vue.cjs';
4
4
  export { defaultSelectAllLabel, tableDetailRowId } from './context.cjs';
5
- export type { SortDirection, TableSortState, TableSort, TableSelectAllScope, TableSelectionMode, TableColumnWidths, TableColumnDef, } from './context.cjs';
5
+ export type { SortDirection, TableSortState, TableSort, TableFilterState, TableSelectAllScope, TableSelectionMode, TableColumnWidths, TableColumnDef, } from './context.cjs';
@@ -2,4 +2,4 @@ export { default as SkdxTable } from './Table.vue.js';
2
2
  export { default as SkdxTableRow } from './TableRow.vue.js';
3
3
  export { default as SkdxTableCell } from './TableCell.vue.js';
4
4
  export { defaultSelectAllLabel, tableDetailRowId } from './context.js';
5
- export type { SortDirection, TableSortState, TableSort, TableSelectAllScope, TableSelectionMode, TableColumnWidths, TableColumnDef, } from './context.js';
5
+ export type { SortDirection, TableSortState, TableSort, TableFilterState, TableSelectAllScope, TableSelectionMode, TableColumnWidths, TableColumnDef, } from './context.js';
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./context.cjs"),r=require("./TableBody.vue.cjs"),l=require("./TableCaption.vue.cjs"),a=require("./TableCell.vue.cjs"),t=require("./TableEmpty.vue.cjs"),u=require("./TableExpandedRow.vue.cjs"),d=require("./TableExpandTrigger.vue.cjs"),o=require("./TableHeader.vue.cjs"),i=require("./TableColumnHeaderSortTrigger.vue.cjs"),b=require("./TableColumnResizeTrigger.vue.cjs"),T=require("./TableHeaderCell.vue.cjs"),q=require("./TableRow.vue.cjs"),n=require("./TableRowSelectCheckbox.vue.cjs"),c=require("./TableSelectAllCheckbox.vue.cjs"),S=require("./Table.vue.cjs"),x=require("./TableFooter.vue.cjs"),k=require("./TableSortIndicator.vue.cjs");exports.SkdxTable=S.default;exports.SkdxTableBody=r.default;exports.SkdxTableCaption=l.default;exports.SkdxTableCell=a.default;exports.SkdxTableColumnHeaderSortTrigger=i.default;exports.SkdxTableColumnResizeTrigger=b.default;exports.SkdxTableEmpty=t.default;exports.SkdxTableExpandTrigger=d.default;exports.SkdxTableExpandedRow=u.default;exports.SkdxTableFooter=x.default;exports.SkdxTableHeader=o.default;exports.SkdxTableHeaderCell=T.default;exports.SkdxTableRow=q.default;exports.SkdxTableRowSelectCheckbox=n.default;exports.SkdxTableSelectAllCheckbox=c.default;exports.SkdxTableSortIndicator=k.default;exports.defaultSelectAllLabel=e.defaultSelectAllLabel;exports.tableDetailRowId=e.tableDetailRowId;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./context.cjs"),r=require("./TableBody.vue.cjs"),l=require("./TableCaption.vue.cjs"),a=require("./TableCell.vue.cjs"),t=require("./TableEmpty.vue.cjs"),u=require("./TableExpandedRow.vue.cjs"),d=require("./TableExpandTrigger.vue.cjs"),o=require("./TableHeader.vue.cjs"),i=require("./TableColumnHeaderFilterInput.vue.cjs"),b=require("./TableColumnHeaderSortTrigger.vue.cjs"),T=require("./TableColumnResizeTrigger.vue.cjs"),n=require("./TableHeaderCell.vue.cjs"),q=require("./TableRow.vue.cjs"),c=require("./TableRowSelectCheckbox.vue.cjs"),S=require("./TableSelectAllCheckbox.vue.cjs"),x=require("./Table.vue.cjs"),k=require("./TableFooter.vue.cjs"),f=require("./TableSortIndicator.vue.cjs");exports.SkdxTable=x.default;exports.SkdxTableBody=r.default;exports.SkdxTableCaption=l.default;exports.SkdxTableCell=a.default;exports.SkdxTableColumnHeaderFilterInput=i.default;exports.SkdxTableColumnHeaderSortTrigger=b.default;exports.SkdxTableColumnResizeTrigger=T.default;exports.SkdxTableEmpty=t.default;exports.SkdxTableExpandTrigger=d.default;exports.SkdxTableExpandedRow=u.default;exports.SkdxTableFooter=k.default;exports.SkdxTableHeader=o.default;exports.SkdxTableHeaderCell=n.default;exports.SkdxTableRow=q.default;exports.SkdxTableRowSelectCheckbox=c.default;exports.SkdxTableSelectAllCheckbox=S.default;exports.SkdxTableSortIndicator=f.default;exports.defaultSelectAllLabel=e.defaultSelectAllLabel;exports.tableDetailRowId=e.tableDetailRowId;
@@ -33,9 +33,10 @@ export { default as SkdxTableExpandTrigger } from './TableExpandTrigger.vue.cjs'
33
33
  export { default as SkdxTableExpandedRow } from './TableExpandedRow.vue.cjs';
34
34
  export { default as SkdxTableEmpty } from './TableEmpty.vue.cjs';
35
35
  export { default as SkdxTableColumnHeaderSortTrigger } from './TableColumnHeaderSortTrigger.vue.cjs';
36
+ export { default as SkdxTableColumnHeaderFilterInput } from './TableColumnHeaderFilterInput.vue.cjs';
36
37
  export { default as SkdxTableSortIndicator } from './TableSortIndicator.vue.cjs';
37
38
  export { default as SkdxTableSelectAllCheckbox } from './TableSelectAllCheckbox.vue.cjs';
38
39
  export { default as SkdxTableRowSelectCheckbox } from './TableRowSelectCheckbox.vue.cjs';
39
40
  export { default as SkdxTableColumnResizeTrigger } from './TableColumnResizeTrigger.vue.cjs';
40
41
  export { defaultSelectAllLabel, tableDetailRowId } from './context.cjs';
41
- export type { SortDirection, TableSortState, TableSort, TableSelectAllScope, TableSelectionMode, TableColumnWidths, TableColumnDef, } from './context.cjs';
42
+ export type { SortDirection, TableSortState, TableSort, TableFilterState, TableSelectAllScope, TableSelectionMode, TableColumnWidths, TableColumnDef, } from './context.cjs';
@@ -33,9 +33,10 @@ export { default as SkdxTableExpandTrigger } from './TableExpandTrigger.vue.js';
33
33
  export { default as SkdxTableExpandedRow } from './TableExpandedRow.vue.js';
34
34
  export { default as SkdxTableEmpty } from './TableEmpty.vue.js';
35
35
  export { default as SkdxTableColumnHeaderSortTrigger } from './TableColumnHeaderSortTrigger.vue.js';
36
+ export { default as SkdxTableColumnHeaderFilterInput } from './TableColumnHeaderFilterInput.vue.js';
36
37
  export { default as SkdxTableSortIndicator } from './TableSortIndicator.vue.js';
37
38
  export { default as SkdxTableSelectAllCheckbox } from './TableSelectAllCheckbox.vue.js';
38
39
  export { default as SkdxTableRowSelectCheckbox } from './TableRowSelectCheckbox.vue.js';
39
40
  export { default as SkdxTableColumnResizeTrigger } from './TableColumnResizeTrigger.vue.js';
40
41
  export { defaultSelectAllLabel, tableDetailRowId } from './context.js';
41
- export type { SortDirection, TableSortState, TableSort, TableSelectAllScope, TableSelectionMode, TableColumnWidths, TableColumnDef, } from './context.js';
42
+ export type { SortDirection, TableSortState, TableSort, TableFilterState, TableSelectAllScope, TableSelectionMode, TableColumnWidths, TableColumnDef, } from './context.js';
@@ -1 +1 @@
1
- import{defaultSelectAllLabel as e,tableDetailRowId as a}from"./context.js";import l from"./TableBody.vue.js";import o from"./TableCaption.vue.js";import r from"./TableCell.vue.js";import t from"./TableEmpty.vue.js";import b from"./TableExpandedRow.vue.js";import m from"./TableExpandTrigger.vue.js";import s from"./TableHeader.vue.js";import T from"./TableColumnHeaderSortTrigger.vue.js";import d from"./TableColumnResizeTrigger.vue.js";import i from"./TableHeaderCell.vue.js";import p from"./TableRow.vue.js";import x from"./TableRowSelectCheckbox.vue.js";import S from"./TableSelectAllCheckbox.vue.js";import u from"./Table.vue.js";import k from"./TableFooter.vue.js";import f from"./TableSortIndicator.vue.js";export{u as SkdxTable,l as SkdxTableBody,o as SkdxTableCaption,r as SkdxTableCell,T as SkdxTableColumnHeaderSortTrigger,d as SkdxTableColumnResizeTrigger,t as SkdxTableEmpty,m as SkdxTableExpandTrigger,b as SkdxTableExpandedRow,k as SkdxTableFooter,s as SkdxTableHeader,i as SkdxTableHeaderCell,p as SkdxTableRow,x as SkdxTableRowSelectCheckbox,S as SkdxTableSelectAllCheckbox,f as SkdxTableSortIndicator,e as defaultSelectAllLabel,a as tableDetailRowId};
1
+ import{defaultSelectAllLabel as e,tableDetailRowId as a}from"./context.js";import l from"./TableBody.vue.js";import o from"./TableCaption.vue.js";import r from"./TableCell.vue.js";import t from"./TableEmpty.vue.js";import m from"./TableExpandedRow.vue.js";import b from"./TableExpandTrigger.vue.js";import s from"./TableHeader.vue.js";import T from"./TableColumnHeaderFilterInput.vue.js";import d from"./TableColumnHeaderSortTrigger.vue.js";import i from"./TableColumnResizeTrigger.vue.js";import p from"./TableHeaderCell.vue.js";import u from"./TableRow.vue.js";import x from"./TableRowSelectCheckbox.vue.js";import S from"./TableSelectAllCheckbox.vue.js";import k from"./Table.vue.js";import f from"./TableFooter.vue.js";import j from"./TableSortIndicator.vue.js";export{k as SkdxTable,l as SkdxTableBody,o as SkdxTableCaption,r as SkdxTableCell,T as SkdxTableColumnHeaderFilterInput,d as SkdxTableColumnHeaderSortTrigger,i as SkdxTableColumnResizeTrigger,t as SkdxTableEmpty,b as SkdxTableExpandTrigger,m as SkdxTableExpandedRow,f as SkdxTableFooter,s as SkdxTableHeader,p as SkdxTableHeaderCell,u as SkdxTableRow,x as SkdxTableRowSelectCheckbox,S as SkdxTableSelectAllCheckbox,j as SkdxTableSortIndicator,e as defaultSelectAllLabel,a as tableDetailRowId};
@@ -20,6 +20,11 @@ type __VLS_Props = {
20
20
  type __VLS_Slots = {
21
21
  /** Manual composition of `SkdxTimelineItem` subtrees, replacing the derived `items` anatomy. */
22
22
  default?(): unknown;
23
+ /** Opposite metadata of a derived entry, for markup an `items` entry's `opposite` value cannot express. */
24
+ opposite?(props: {
25
+ item: TimelineItem;
26
+ index: number;
27
+ }): unknown;
23
28
  /** Body of a derived entry, for markup an `items` entry's `content` string cannot express. */
24
29
  content?(props: {
25
30
  item: TimelineItem;
@@ -20,6 +20,11 @@ type __VLS_Props = {
20
20
  type __VLS_Slots = {
21
21
  /** Manual composition of `SkdxTimelineItem` subtrees, replacing the derived `items` anatomy. */
22
22
  default?(): unknown;
23
+ /** Opposite metadata of a derived entry, for markup an `items` entry's `opposite` value cannot express. */
24
+ opposite?(props: {
25
+ item: TimelineItem;
26
+ index: number;
27
+ }): unknown;
23
28
  /** Body of a derived entry, for markup an `items` entry's `content` string cannot express. */
24
29
  content?(props: {
25
30
  item: TimelineItem;
@@ -1 +1 @@
1
- const r=require("../utils/appearance.cjs"),i=require("./TimelineAnatomy.vue.cjs");let e=require("vue");var o=["data-orientation"],l=(0,e.defineComponent)({inheritAttrs:!1,__name:"Timeline",props:{orientation:{default:"vertical"},items:{default:void 0},align:{}},setup(a){return(t,s)=>((0,e.openBlock)(),(0,e.createElementBlock)("ol",(0,e.mergeProps)({class:"skdx-timeline","data-part":"root","data-skdx-component":"timeline",role:"list","data-orientation":a.orientation},{...t.$attrs,...(0,e.unref)(r.appearanceAttrs)({align:a.align},t.$attrs)}),[(0,e.renderSlot)(t.$slots,"default",{},()=>[a.items?((0,e.openBlock)(),(0,e.createBlock)(i.default,{key:0,items:a.items},(0,e.createSlots)({_:2},[t.$slots.content?{name:"content",fn:(0,e.withCtx)(n=>[(0,e.renderSlot)(t.$slots,"content",(0,e.normalizeProps)((0,e.guardReactiveProps)(n)))]),key:"0"}:void 0]),1032,["items"])):(0,e.createCommentVNode)("",!0)])],16,o))}});exports.default=l;
1
+ const a=require("../utils/appearance.cjs"),n=require("./TimelineAnatomy.vue.cjs");let e=require("vue");var i=["data-orientation"],l=(0,e.defineComponent)({inheritAttrs:!1,__name:"Timeline",props:{orientation:{default:"vertical"},items:{default:void 0},align:{}},setup(o){return(t,s)=>((0,e.openBlock)(),(0,e.createElementBlock)("ol",(0,e.mergeProps)({class:"skdx-timeline","data-part":"root","data-skdx-component":"timeline",role:"list","data-orientation":o.orientation},{...t.$attrs,...(0,e.unref)(a.appearanceAttrs)({align:o.align},t.$attrs)}),[(0,e.renderSlot)(t.$slots,"default",{},()=>[o.items?((0,e.openBlock)(),(0,e.createBlock)(n.default,{key:0,items:o.items},(0,e.createSlots)({_:2},[t.$slots.opposite?{name:"opposite",fn:(0,e.withCtx)(r=>[(0,e.renderSlot)(t.$slots,"opposite",(0,e.normalizeProps)((0,e.guardReactiveProps)(r)))]),key:"0"}:void 0,t.$slots.content?{name:"content",fn:(0,e.withCtx)(r=>[(0,e.renderSlot)(t.$slots,"content",(0,e.normalizeProps)((0,e.guardReactiveProps)(r)))]),key:"1"}:void 0]),1032,["items"])):(0,e.createCommentVNode)("",!0)])],16,i))}});exports.default=l;