@drivenets/design-system 0.0.4 → 0.1.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 (235) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +51 -0
  3. package/dist/components/ds-alert-banner/ds-alert-banner.d.ts +5 -5
  4. package/dist/components/ds-alert-banner/ds-alert-banner.d.ts.map +1 -1
  5. package/dist/components/ds-button/ds-button.d.cts +2 -2
  6. package/dist/components/ds-button/ds-button.d.cts.map +1 -1
  7. package/dist/components/ds-button/versions/ds-button-new/ds-button-new.module.cjs +18 -18
  8. package/dist/components/ds-button/versions/ds-button-new/ds-button-new.module.js +18 -18
  9. package/dist/components/ds-button/versions/ds-button-new/ds-button-new.module.js.map +1 -1
  10. package/dist/components/ds-confirmation/ds-confirmation.d.cts +8 -8
  11. package/dist/components/ds-confirmation/ds-confirmation.d.ts +8 -8
  12. package/dist/components/ds-date-input/ds-date-input.cjs +352 -0
  13. package/dist/components/ds-date-input/ds-date-input.d.cts +31 -0
  14. package/dist/components/ds-date-input/ds-date-input.d.cts.map +1 -0
  15. package/dist/components/ds-date-input/ds-date-input.d.ts +31 -0
  16. package/dist/components/ds-date-input/ds-date-input.d.ts.map +1 -0
  17. package/dist/components/ds-date-input/ds-date-input.js +351 -0
  18. package/dist/components/ds-date-input/ds-date-input.js.map +1 -0
  19. package/dist/components/ds-date-input/ds-date-input.module.cjs +29 -0
  20. package/dist/components/ds-date-input/ds-date-input.module.js +29 -0
  21. package/dist/components/ds-date-input/ds-date-input.module.js.map +1 -0
  22. package/dist/components/ds-date-input/ds-date-input.types.d.cts +92 -0
  23. package/dist/components/ds-date-input/ds-date-input.types.d.cts.map +1 -0
  24. package/dist/components/ds-date-input/ds-date-input.types.d.ts +92 -0
  25. package/dist/components/ds-date-input/ds-date-input.types.d.ts.map +1 -0
  26. package/dist/components/ds-date-input/ds-date-input.utils.cjs +169 -0
  27. package/dist/components/ds-date-input/ds-date-input.utils.js +164 -0
  28. package/dist/components/ds-date-input/ds-date-input.utils.js.map +1 -0
  29. package/dist/components/ds-date-input/index.cjs +1 -0
  30. package/dist/components/ds-date-input/index.d.ts +2 -0
  31. package/dist/components/ds-date-input/index.js +1 -0
  32. package/dist/components/ds-divider/ds-divider.cjs +47 -0
  33. package/dist/components/ds-divider/ds-divider.d.cts +8 -0
  34. package/dist/components/ds-divider/ds-divider.d.cts.map +1 -0
  35. package/dist/components/ds-divider/ds-divider.d.ts +8 -0
  36. package/dist/components/ds-divider/ds-divider.d.ts.map +1 -0
  37. package/dist/components/ds-divider/ds-divider.js +46 -0
  38. package/dist/components/ds-divider/ds-divider.js.map +1 -0
  39. package/dist/components/ds-divider/ds-divider.module.cjs +10 -0
  40. package/dist/components/ds-divider/ds-divider.module.js +10 -0
  41. package/dist/components/ds-divider/ds-divider.module.js.map +1 -0
  42. package/dist/components/ds-divider/ds-divider.types.d.cts +25 -0
  43. package/dist/components/ds-divider/ds-divider.types.d.cts.map +1 -0
  44. package/dist/components/ds-divider/ds-divider.types.d.ts +25 -0
  45. package/dist/components/ds-divider/ds-divider.types.d.ts.map +1 -0
  46. package/dist/components/ds-divider/index.cjs +1 -0
  47. package/dist/components/ds-divider/index.d.ts +2 -0
  48. package/dist/components/ds-divider/index.js +1 -0
  49. package/dist/components/ds-drawer/ds-drawer.d.cts +9 -9
  50. package/dist/components/ds-drawer/ds-drawer.d.ts +9 -9
  51. package/dist/components/ds-dropdown-menu/ds-dropdown-menu.cjs +80 -24
  52. package/dist/components/ds-dropdown-menu/ds-dropdown-menu.d.cts +1 -0
  53. package/dist/components/ds-dropdown-menu/ds-dropdown-menu.d.cts.map +1 -1
  54. package/dist/components/ds-dropdown-menu/ds-dropdown-menu.d.ts +1 -0
  55. package/dist/components/ds-dropdown-menu/ds-dropdown-menu.d.ts.map +1 -1
  56. package/dist/components/ds-dropdown-menu/ds-dropdown-menu.js +80 -24
  57. package/dist/components/ds-dropdown-menu/ds-dropdown-menu.js.map +1 -1
  58. package/dist/components/ds-dropdown-menu/ds-dropdown-menu.module.cjs +20 -18
  59. package/dist/components/ds-dropdown-menu/ds-dropdown-menu.module.js +20 -18
  60. package/dist/components/ds-dropdown-menu/ds-dropdown-menu.module.js.map +1 -1
  61. package/dist/components/ds-dropdown-menu/ds-dropdown-menu.types.d.cts +5 -1
  62. package/dist/components/ds-dropdown-menu/ds-dropdown-menu.types.d.cts.map +1 -1
  63. package/dist/components/ds-dropdown-menu/ds-dropdown-menu.types.d.ts +5 -1
  64. package/dist/components/ds-dropdown-menu/ds-dropdown-menu.types.d.ts.map +1 -1
  65. package/dist/components/ds-dropdown-menu/index.d.ts +1 -1
  66. package/dist/components/ds-expandable-text-input/ds-expandable-text-input.d.cts +2 -2
  67. package/dist/components/ds-expandable-text-input/ds-expandable-text-input.d.ts +2 -2
  68. package/dist/components/ds-form-control/ds-form-control.cjs +3 -0
  69. package/dist/components/ds-form-control/ds-form-control.d.cts +9 -7
  70. package/dist/components/ds-form-control/ds-form-control.d.cts.map +1 -1
  71. package/dist/components/ds-form-control/ds-form-control.d.ts +10 -7
  72. package/dist/components/ds-form-control/ds-form-control.d.ts.map +1 -1
  73. package/dist/components/ds-form-control/ds-form-control.js +3 -0
  74. package/dist/components/ds-form-control/ds-form-control.js.map +1 -1
  75. package/dist/components/ds-modal/ds-modal.d.cts +8 -8
  76. package/dist/components/ds-modal/ds-modal.d.ts +8 -8
  77. package/dist/components/ds-modal/ds-modal.d.ts.map +1 -1
  78. package/dist/components/ds-panel/ds-panel.d.cts +2 -2
  79. package/dist/components/ds-panel/ds-panel.d.ts +2 -2
  80. package/dist/components/ds-radio-group/ds-radio-group.types.d.cts +1 -1
  81. package/dist/components/ds-radio-group/ds-radio-group.types.d.cts.map +1 -1
  82. package/dist/components/ds-radio-group/ds-radio-group.types.d.ts +1 -1
  83. package/dist/components/ds-radio-group/ds-radio-group.types.d.ts.map +1 -1
  84. package/dist/components/ds-segment-group/ds-segment-group.cjs +215 -0
  85. package/dist/components/ds-segment-group/ds-segment-group.d.cts +26 -0
  86. package/dist/components/ds-segment-group/ds-segment-group.d.cts.map +1 -0
  87. package/dist/components/ds-segment-group/ds-segment-group.d.ts +26 -0
  88. package/dist/components/ds-segment-group/ds-segment-group.d.ts.map +1 -0
  89. package/dist/components/ds-segment-group/ds-segment-group.js +214 -0
  90. package/dist/components/ds-segment-group/ds-segment-group.js.map +1 -0
  91. package/dist/components/ds-segment-group/ds-segment-group.module.cjs +12 -0
  92. package/dist/components/ds-segment-group/ds-segment-group.module.js +12 -0
  93. package/dist/components/ds-segment-group/ds-segment-group.module.js.map +1 -0
  94. package/dist/components/ds-segment-group/ds-segment-group.types.cjs +2 -0
  95. package/dist/components/ds-segment-group/ds-segment-group.types.d.cts +52 -0
  96. package/dist/components/ds-segment-group/ds-segment-group.types.d.cts.map +1 -0
  97. package/dist/components/ds-segment-group/ds-segment-group.types.d.ts +52 -0
  98. package/dist/components/ds-segment-group/ds-segment-group.types.d.ts.map +1 -0
  99. package/dist/components/ds-segment-group/ds-segment-group.types.js +2 -0
  100. package/dist/components/ds-segment-group/index.cjs +2 -0
  101. package/dist/components/ds-segment-group/index.d.ts +2 -0
  102. package/dist/components/ds-segment-group/index.js +2 -0
  103. package/dist/components/ds-select/ds-select.d.cts +2 -2
  104. package/dist/components/ds-select/ds-select.d.ts +2 -2
  105. package/dist/components/ds-smart-tabs/ds-smart-tabs.d.cts +2 -2
  106. package/dist/components/ds-smart-tabs/ds-smart-tabs.d.ts +2 -2
  107. package/dist/components/ds-stepper/components/ds-step-content.d.ts +2 -2
  108. package/dist/components/ds-stepper/components/ds-step-next-button.d.ts +2 -2
  109. package/dist/components/ds-stepper/components/ds-step.d.cts +2 -2
  110. package/dist/components/ds-stepper/components/ds-step.d.ts +2 -2
  111. package/dist/components/ds-stepper/ds-stepper.d.cts +2 -2
  112. package/dist/components/ds-stepper/ds-stepper.d.ts +2 -2
  113. package/dist/components/ds-table/components/ds-table-cell/ds-table-cell.types.d.cts +1 -0
  114. package/dist/components/ds-table/components/ds-table-cell/ds-table-cell.types.d.cts.map +1 -1
  115. package/dist/components/ds-table/components/ds-table-cell/ds-table-cell.types.d.ts +1 -1
  116. package/dist/components/ds-table/ds-table.d.cts +2 -2
  117. package/dist/components/ds-table/ds-table.d.ts +2 -2
  118. package/dist/components/ds-table/filters/adapters/create-checkbox-filter-adapter.cjs +55 -0
  119. package/dist/components/ds-table/filters/adapters/create-checkbox-filter-adapter.d.cts +49 -0
  120. package/dist/components/ds-table/filters/adapters/create-checkbox-filter-adapter.d.cts.map +1 -0
  121. package/dist/components/ds-table/filters/adapters/create-checkbox-filter-adapter.d.ts +50 -0
  122. package/dist/components/ds-table/filters/adapters/create-checkbox-filter-adapter.d.ts.map +1 -0
  123. package/dist/components/ds-table/filters/adapters/create-checkbox-filter-adapter.js +55 -0
  124. package/dist/components/ds-table/filters/adapters/create-checkbox-filter-adapter.js.map +1 -0
  125. package/dist/components/ds-table/filters/adapters/create-dual-range-filter-adapter.cjs +87 -0
  126. package/dist/components/ds-table/filters/adapters/create-dual-range-filter-adapter.d.cts +44 -0
  127. package/dist/components/ds-table/filters/adapters/create-dual-range-filter-adapter.d.cts.map +1 -0
  128. package/dist/components/ds-table/filters/adapters/create-dual-range-filter-adapter.d.ts +44 -0
  129. package/dist/components/ds-table/filters/adapters/create-dual-range-filter-adapter.d.ts.map +1 -0
  130. package/dist/components/ds-table/filters/adapters/create-dual-range-filter-adapter.js +87 -0
  131. package/dist/components/ds-table/filters/adapters/create-dual-range-filter-adapter.js.map +1 -0
  132. package/dist/components/ds-table/filters/adapters/create-filter-adapter.cjs +83 -0
  133. package/dist/components/ds-table/filters/adapters/create-filter-adapter.d.cts +111 -0
  134. package/dist/components/ds-table/filters/adapters/create-filter-adapter.d.cts.map +1 -0
  135. package/dist/components/ds-table/filters/adapters/create-filter-adapter.d.ts +111 -0
  136. package/dist/components/ds-table/filters/adapters/create-filter-adapter.d.ts.map +1 -0
  137. package/dist/components/ds-table/filters/adapters/create-filter-adapter.js +83 -0
  138. package/dist/components/ds-table/filters/adapters/create-filter-adapter.js.map +1 -0
  139. package/dist/components/ds-table/filters/adapters/index.cjs +3 -0
  140. package/dist/components/ds-table/filters/adapters/index.d.ts +3 -0
  141. package/dist/components/ds-table/filters/adapters/index.js +3 -0
  142. package/dist/components/ds-table/filters/components/checkbox-filter/checkbox-filter.cjs +22 -0
  143. package/dist/components/ds-table/filters/components/checkbox-filter/checkbox-filter.d.cts +17 -0
  144. package/dist/components/ds-table/filters/components/checkbox-filter/checkbox-filter.d.cts.map +1 -0
  145. package/dist/components/ds-table/filters/components/checkbox-filter/checkbox-filter.d.ts +18 -0
  146. package/dist/components/ds-table/filters/components/checkbox-filter/checkbox-filter.d.ts.map +1 -0
  147. package/dist/components/ds-table/filters/components/checkbox-filter/checkbox-filter.js +22 -0
  148. package/dist/components/ds-table/filters/components/checkbox-filter/checkbox-filter.js.map +1 -0
  149. package/dist/components/ds-table/filters/components/checkbox-filter/index.cjs +1 -0
  150. package/dist/components/ds-table/filters/components/checkbox-filter/index.d.ts +1 -0
  151. package/dist/components/ds-table/filters/components/checkbox-filter/index.js +1 -0
  152. package/dist/components/ds-table/filters/components/range-filter/index.cjs +1 -0
  153. package/dist/components/ds-table/filters/components/range-filter/index.d.ts +1 -0
  154. package/dist/components/ds-table/filters/components/range-filter/index.js +1 -0
  155. package/dist/components/ds-table/filters/components/range-filter/range-filter.cjs +177 -0
  156. package/dist/components/ds-table/filters/components/range-filter/range-filter.d.cts +14 -0
  157. package/dist/components/ds-table/filters/components/range-filter/range-filter.d.cts.map +1 -0
  158. package/dist/components/ds-table/filters/components/range-filter/range-filter.d.ts +16 -0
  159. package/dist/components/ds-table/filters/components/range-filter/range-filter.d.ts.map +1 -0
  160. package/dist/components/ds-table/filters/components/range-filter/range-filter.js +177 -0
  161. package/dist/components/ds-table/filters/components/range-filter/range-filter.js.map +1 -0
  162. package/dist/components/ds-table/filters/components/range-filter/range-filter.module.cjs +11 -0
  163. package/dist/components/ds-table/filters/components/range-filter/range-filter.module.js +11 -0
  164. package/dist/components/ds-table/filters/components/range-filter/range-filter.module.js.map +1 -0
  165. package/dist/components/ds-table/filters/hooks/index.cjs +1 -0
  166. package/dist/components/ds-table/filters/hooks/index.d.ts +1 -0
  167. package/dist/components/ds-table/filters/hooks/index.js +1 -0
  168. package/dist/components/ds-table/filters/hooks/use-table-filters.cjs +211 -0
  169. package/dist/components/ds-table/filters/hooks/use-table-filters.d.cts +65 -0
  170. package/dist/components/ds-table/filters/hooks/use-table-filters.d.cts.map +1 -0
  171. package/dist/components/ds-table/filters/hooks/use-table-filters.d.ts +66 -0
  172. package/dist/components/ds-table/filters/hooks/use-table-filters.d.ts.map +1 -0
  173. package/dist/components/ds-table/filters/hooks/use-table-filters.js +211 -0
  174. package/dist/components/ds-table/filters/hooks/use-table-filters.js.map +1 -0
  175. package/dist/components/ds-table/filters/index.cjs +6 -0
  176. package/dist/components/ds-table/filters/index.d.ts +11 -0
  177. package/dist/components/ds-table/filters/index.js +6 -0
  178. package/dist/components/ds-table/filters/types/filter-adapter.types.d.cts +101 -0
  179. package/dist/components/ds-table/filters/types/filter-adapter.types.d.cts.map +1 -0
  180. package/dist/components/ds-table/filters/types/filter-adapter.types.d.ts +102 -0
  181. package/dist/components/ds-table/filters/types/filter-adapter.types.d.ts.map +1 -0
  182. package/dist/components/ds-table/index.cjs +5 -0
  183. package/dist/components/ds-table/index.d.ts +8 -0
  184. package/dist/components/ds-table/index.js +5 -0
  185. package/dist/components/ds-toggle/ds-toggle.cjs +192 -0
  186. package/dist/components/ds-toggle/ds-toggle.d.cts +24 -0
  187. package/dist/components/ds-toggle/ds-toggle.d.cts.map +1 -0
  188. package/dist/components/ds-toggle/ds-toggle.d.ts +24 -0
  189. package/dist/components/ds-toggle/ds-toggle.d.ts.map +1 -0
  190. package/dist/components/ds-toggle/ds-toggle.js +191 -0
  191. package/dist/components/ds-toggle/ds-toggle.js.map +1 -0
  192. package/dist/components/ds-toggle/ds-toggle.module.cjs +13 -0
  193. package/dist/components/ds-toggle/ds-toggle.module.js +13 -0
  194. package/dist/components/ds-toggle/ds-toggle.module.js.map +1 -0
  195. package/dist/components/ds-toggle/ds-toggle.types.d.cts +67 -0
  196. package/dist/components/ds-toggle/ds-toggle.types.d.cts.map +1 -0
  197. package/dist/components/ds-toggle/ds-toggle.types.d.ts +67 -0
  198. package/dist/components/ds-toggle/ds-toggle.types.d.ts.map +1 -0
  199. package/dist/components/ds-toggle/index.cjs +1 -0
  200. package/dist/components/ds-toggle/index.d.ts +2 -0
  201. package/dist/components/ds-toggle/index.js +1 -0
  202. package/dist/components/ds-vertical-tabs/ds-vertical-tabs.d.cts +5 -5
  203. package/dist/components/ds-vertical-tabs/ds-vertical-tabs.d.ts +5 -5
  204. package/dist/index.cjs +20 -0
  205. package/dist/index.d.cts +17 -2
  206. package/dist/index.d.ts +21 -2
  207. package/dist/index.js +13 -1
  208. package/dist/index.min.css +1 -1
  209. package/package.json +3 -2
  210. package/src/components/ds-button/versions/ds-button-new/ds-button-new.module.scss +0 -1
  211. package/src/components/ds-date-input/ds-date-input.module.scss +246 -0
  212. package/src/components/ds-date-input/ds-date-input.tsx +309 -0
  213. package/src/components/ds-date-input/ds-date-input.types.tsx +104 -0
  214. package/src/components/ds-date-input/ds-date-input.utils.ts +242 -0
  215. package/src/components/ds-date-input/index.ts +2 -0
  216. package/src/components/ds-divider/ds-divider.module.scss +21 -0
  217. package/src/components/ds-divider/ds-divider.tsx +22 -0
  218. package/src/components/ds-divider/ds-divider.types.ts +21 -0
  219. package/src/components/ds-divider/index.ts +2 -0
  220. package/src/components/ds-dropdown-menu/ds-dropdown-menu.module.scss +11 -3
  221. package/src/components/ds-dropdown-menu/ds-dropdown-menu.tsx +17 -1
  222. package/src/components/ds-dropdown-menu/ds-dropdown-menu.types.tsx +5 -0
  223. package/src/components/ds-form-control/ds-form-control.tsx +2 -0
  224. package/src/components/ds-radio-group/ds-radio-group.types.tsx +1 -1
  225. package/src/components/ds-segment-group/ds-segment-group.module.scss +99 -0
  226. package/src/components/ds-segment-group/ds-segment-group.tsx +76 -0
  227. package/src/components/ds-segment-group/ds-segment-group.types.tsx +64 -0
  228. package/src/components/ds-segment-group/index.tsx +2 -0
  229. package/src/components/ds-table/filters/hooks/index.ts +1 -0
  230. package/src/components/ds-table/index.ts +2 -0
  231. package/src/components/ds-toggle/ds-toggle.module.scss +154 -0
  232. package/src/components/ds-toggle/ds-toggle.tsx +78 -0
  233. package/src/components/ds-toggle/ds-toggle.types.tsx +76 -0
  234. package/src/components/ds-toggle/index.tsx +2 -0
  235. package/src/index.ts +4 -0
@@ -0,0 +1,111 @@
1
+ import { FilterAdapter } from "../types/filter-adapter.types.cjs";
2
+ import { ReactNode } from "react";
3
+
4
+ //#region src/components/ds-table/filters/adapters/create-filter-adapter.d.ts
5
+ interface FilterAdapterConfig<TData, TFilterValue, TCellValue = unknown> {
6
+ /**
7
+ * Unique identifier (should match column accessorKey)
8
+ */
9
+ id: string;
10
+ /**
11
+ * Display label for filter navigation
12
+ */
13
+ label: string;
14
+ /**
15
+ * Initial/default value for the filter
16
+ */
17
+ initialValue: TFilterValue;
18
+ /**
19
+ * Filter function - determines if row matches filter value
20
+ */
21
+ filterFn: FilterAdapter<TData, TFilterValue, TCellValue>['columnFilterFn'];
22
+ /**
23
+ * Convert filter value to display chips
24
+ */
25
+ toChips: FilterAdapter<TData, TFilterValue, TCellValue>['toChips'];
26
+ /**
27
+ * Remove chip effect from filter value
28
+ */
29
+ fromChip: FilterAdapter<TData, TFilterValue, TCellValue>['fromChip'];
30
+ /**
31
+ * Calculate active filter count
32
+ */
33
+ getActiveFiltersCount: FilterAdapter<TData, TFilterValue, TCellValue>['getActiveFiltersCount'];
34
+ /**
35
+ * Render the filter UI
36
+ */
37
+ renderFilter: (value: TFilterValue, onChange: (value: TFilterValue) => void) => ReactNode;
38
+ /**
39
+ * Optional custom cell renderer for table cells
40
+ * Note: This receives the cell value from the table, not the filter value
41
+ */
42
+ cellRenderer?: (value: TCellValue) => ReactNode;
43
+ }
44
+ /**
45
+ * Base factory function to create a filter adapter
46
+ *
47
+ * This is the core function that all specialized filter adapters use internally.
48
+ * Use this when checkbox or dual-range adapters don't fit your requirements.
49
+ *
50
+ * ## When to use directly:
51
+ * - Complex filtering logic (e.g., editor + date range)
52
+ * - Unique UI that doesn't fit generic patterns
53
+ * - Combining multiple sub-filters
54
+ * - Special chip generation requirements
55
+ *
56
+ * ## When to use specialized helpers instead:
57
+ * - **Checkbox filters**: Use `createCheckboxFilterAdapter` for multi-select
58
+ * - **Range filters**: Use `createDualRangeFilterAdapter` for numeric ranges
59
+ *
60
+ * ## Example:
61
+ * ```typescript
62
+ * interface MyFilterValue {
63
+ * users: string[];
64
+ * dateRange: { from?: Date; to?: Date };
65
+ * }
66
+ *
67
+ * const myFilter = createFilterAdapter<DataType, MyFilterValue>({
68
+ * id: 'myColumn',
69
+ * label: 'My Filter',
70
+ * initialValue: { users: [], dateRange: {} },
71
+ *
72
+ * filterFn: (row, columnId, filterValue) => {
73
+ * // Your custom logic
74
+ * return matchesUsers && matchesDateRange;
75
+ * },
76
+ *
77
+ * toChips: (value) => {
78
+ * // Generate chips from your filter value
79
+ * return chips;
80
+ * },
81
+ *
82
+ * fromChip: (chip, currentValue) => {
83
+ * // Remove chip's effect from value
84
+ * return updatedValue;
85
+ * },
86
+ *
87
+ * getActiveFiltersCount: (value) => {
88
+ * // Count active filters (0 means none active)
89
+ * return count;
90
+ * },
91
+ *
92
+ * renderFilter: (value, onChange) => (
93
+ * <YourCustomFilterComponent
94
+ * value={value}
95
+ * onChange={onChange}
96
+ * />
97
+ * ),
98
+ * });
99
+ * ```
100
+ *
101
+ * ## Reference Implementation:
102
+ * See `workflow-filters.config.tsx` for a complete example (lastEditedFilterAdapter).
103
+ *
104
+ * ## Note:
105
+ * Most use cases are covered by `createCheckboxFilterAdapter` or `createDualRangeFilterAdapter`.
106
+ * Only use this base function directly when you need completely custom filter logic.
107
+ */
108
+ declare function createFilterAdapter<TData, TFilterValue, TCellValue = unknown>(config: FilterAdapterConfig<TData, TFilterValue, TCellValue>): FilterAdapter<TData, TFilterValue, TCellValue>;
109
+ //#endregion
110
+ export { FilterAdapterConfig, createFilterAdapter };
111
+ //# sourceMappingURL=create-filter-adapter.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-filter-adapter.d.cts","names":[],"sources":["../../../../../src/components/ds-table/filters/adapters/create-filter-adapter.ts"],"sourcesContent":[],"mappings":";;;;UAGiB;;AAAjB;;EAmByB,EAAA,EAAA,MAAA;EAAO;;;EAKR,KAAA,EAAA,MAAA;EAAO;;;EAKN,YAAA,EAfV,YAeU;EAAO;;;EAKM,QAAA,EAf3B,aAe2B,CAfb,KAea,EAfN,YAeM,EAfQ,UAeR,CAAA,CAAA,gBAAA,CAAA;EAAO;;;EAKtB,OAAA,EAfb,aAea,CAfC,KAeD,EAfQ,YAeR,EAfsB,UAetB,CAAA,CAAA,SAAA,CAAA;EAAgC;;;EAMhB,QAAA,EAhB5B,aAgB4B,CAhBd,KAgBc,EAhBP,YAgBO,EAhBO,UAgBP,CAAA,CAAA,UAAA,CAAA;EAAS;AAmEhD;;EACoC,qBAAA,EA/EZ,aA+EY,CA/EE,KA+EF,EA/ES,YA+ET,EA/EuB,UA+EvB,CAAA,CAAA,uBAAA,CAAA;EAAc;;;EAC1B,YAAA,EAAA,CAAA,KAAA,EA3ED,YA2EC,EAAA,QAAA,EAAA,CAAA,KAAA,EA3E+B,YA2E/B,EAAA,GAAA,IAAA,EAAA,GA3EyD,SA2EzD;EAAc;;;;yBArEd,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmEvB,uEACP,oBAAoB,OAAO,cAAc,cAC/C,cAAc,OAAO,cAAc"}
@@ -0,0 +1,111 @@
1
+ import { FilterAdapter } from "../types/filter-adapter.types.js";
2
+ import { ReactNode } from "react";
3
+
4
+ //#region src/components/ds-table/filters/adapters/create-filter-adapter.d.ts
5
+ interface FilterAdapterConfig<TData, TFilterValue, TCellValue = unknown> {
6
+ /**
7
+ * Unique identifier (should match column accessorKey)
8
+ */
9
+ id: string;
10
+ /**
11
+ * Display label for filter navigation
12
+ */
13
+ label: string;
14
+ /**
15
+ * Initial/default value for the filter
16
+ */
17
+ initialValue: TFilterValue;
18
+ /**
19
+ * Filter function - determines if row matches filter value
20
+ */
21
+ filterFn: FilterAdapter<TData, TFilterValue, TCellValue>['columnFilterFn'];
22
+ /**
23
+ * Convert filter value to display chips
24
+ */
25
+ toChips: FilterAdapter<TData, TFilterValue, TCellValue>['toChips'];
26
+ /**
27
+ * Remove chip effect from filter value
28
+ */
29
+ fromChip: FilterAdapter<TData, TFilterValue, TCellValue>['fromChip'];
30
+ /**
31
+ * Calculate active filter count
32
+ */
33
+ getActiveFiltersCount: FilterAdapter<TData, TFilterValue, TCellValue>['getActiveFiltersCount'];
34
+ /**
35
+ * Render the filter UI
36
+ */
37
+ renderFilter: (value: TFilterValue, onChange: (value: TFilterValue) => void) => ReactNode;
38
+ /**
39
+ * Optional custom cell renderer for table cells
40
+ * Note: This receives the cell value from the table, not the filter value
41
+ */
42
+ cellRenderer?: (value: TCellValue) => ReactNode;
43
+ }
44
+ /**
45
+ * Base factory function to create a filter adapter
46
+ *
47
+ * This is the core function that all specialized filter adapters use internally.
48
+ * Use this when checkbox or dual-range adapters don't fit your requirements.
49
+ *
50
+ * ## When to use directly:
51
+ * - Complex filtering logic (e.g., editor + date range)
52
+ * - Unique UI that doesn't fit generic patterns
53
+ * - Combining multiple sub-filters
54
+ * - Special chip generation requirements
55
+ *
56
+ * ## When to use specialized helpers instead:
57
+ * - **Checkbox filters**: Use `createCheckboxFilterAdapter` for multi-select
58
+ * - **Range filters**: Use `createDualRangeFilterAdapter` for numeric ranges
59
+ *
60
+ * ## Example:
61
+ * ```typescript
62
+ * interface MyFilterValue {
63
+ * users: string[];
64
+ * dateRange: { from?: Date; to?: Date };
65
+ * }
66
+ *
67
+ * const myFilter = createFilterAdapter<DataType, MyFilterValue>({
68
+ * id: 'myColumn',
69
+ * label: 'My Filter',
70
+ * initialValue: { users: [], dateRange: {} },
71
+ *
72
+ * filterFn: (row, columnId, filterValue) => {
73
+ * // Your custom logic
74
+ * return matchesUsers && matchesDateRange;
75
+ * },
76
+ *
77
+ * toChips: (value) => {
78
+ * // Generate chips from your filter value
79
+ * return chips;
80
+ * },
81
+ *
82
+ * fromChip: (chip, currentValue) => {
83
+ * // Remove chip's effect from value
84
+ * return updatedValue;
85
+ * },
86
+ *
87
+ * getActiveFiltersCount: (value) => {
88
+ * // Count active filters (0 means none active)
89
+ * return count;
90
+ * },
91
+ *
92
+ * renderFilter: (value, onChange) => (
93
+ * <YourCustomFilterComponent
94
+ * value={value}
95
+ * onChange={onChange}
96
+ * />
97
+ * ),
98
+ * });
99
+ * ```
100
+ *
101
+ * ## Reference Implementation:
102
+ * See `workflow-filters.config.tsx` for a complete example (lastEditedFilterAdapter).
103
+ *
104
+ * ## Note:
105
+ * Most use cases are covered by `createCheckboxFilterAdapter` or `createDualRangeFilterAdapter`.
106
+ * Only use this base function directly when you need completely custom filter logic.
107
+ */
108
+ declare function createFilterAdapter<TData, TFilterValue, TCellValue = unknown>(config: FilterAdapterConfig<TData, TFilterValue, TCellValue>): FilterAdapter<TData, TFilterValue, TCellValue>;
109
+ //#endregion
110
+ export { FilterAdapterConfig, createFilterAdapter };
111
+ //# sourceMappingURL=create-filter-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-filter-adapter.d.ts","names":[],"sources":["../../../../../src/components/ds-table/filters/adapters/create-filter-adapter.ts"],"sourcesContent":[],"mappings":";;;;UAGiB;;AAAjB;;EAmByB,EAAA,EAAA,MAAA;EAAO;;;EAKR,KAAA,EAAA,MAAA;EAAO;;;EAKN,YAAA,EAfV,YAeU;EAAO;;;EAKM,QAAA,EAf3B,aAe2B,CAfb,KAea,EAfN,YAeM,EAfQ,UAeR,CAAA,CAAA,gBAAA,CAAA;EAAO;;;EAKtB,OAAA,EAfb,aAea,CAfC,KAeD,EAfQ,YAeR,EAfsB,UAetB,CAAA,CAAA,SAAA,CAAA;EAAgC;;;EAMhB,QAAA,EAhB5B,aAgB4B,CAhBd,KAgBc,EAhBP,YAgBO,EAhBO,UAgBP,CAAA,CAAA,UAAA,CAAA;EAAS;AAmEhD;;EACoC,qBAAA,EA/EZ,aA+EY,CA/EE,KA+EF,EA/ES,YA+ET,EA/EuB,UA+EvB,CAAA,CAAA,uBAAA,CAAA;EAAc;;;EAC1B,YAAA,EAAA,CAAA,KAAA,EA3ED,YA2EC,EAAA,QAAA,EAAA,CAAA,KAAA,EA3E+B,YA2E/B,EAAA,GAAA,IAAA,EAAA,GA3EyD,SA2EzD;EAAc;;;;yBArEd,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmEvB,uEACP,oBAAoB,OAAO,cAAc,cAC/C,cAAc,OAAO,cAAc"}
@@ -0,0 +1,83 @@
1
+ //#region src/components/ds-table/filters/adapters/create-filter-adapter.ts
2
+ /**
3
+ * Base factory function to create a filter adapter
4
+ *
5
+ * This is the core function that all specialized filter adapters use internally.
6
+ * Use this when checkbox or dual-range adapters don't fit your requirements.
7
+ *
8
+ * ## When to use directly:
9
+ * - Complex filtering logic (e.g., editor + date range)
10
+ * - Unique UI that doesn't fit generic patterns
11
+ * - Combining multiple sub-filters
12
+ * - Special chip generation requirements
13
+ *
14
+ * ## When to use specialized helpers instead:
15
+ * - **Checkbox filters**: Use `createCheckboxFilterAdapter` for multi-select
16
+ * - **Range filters**: Use `createDualRangeFilterAdapter` for numeric ranges
17
+ *
18
+ * ## Example:
19
+ * ```typescript
20
+ * interface MyFilterValue {
21
+ * users: string[];
22
+ * dateRange: { from?: Date; to?: Date };
23
+ * }
24
+ *
25
+ * const myFilter = createFilterAdapter<DataType, MyFilterValue>({
26
+ * id: 'myColumn',
27
+ * label: 'My Filter',
28
+ * initialValue: { users: [], dateRange: {} },
29
+ *
30
+ * filterFn: (row, columnId, filterValue) => {
31
+ * // Your custom logic
32
+ * return matchesUsers && matchesDateRange;
33
+ * },
34
+ *
35
+ * toChips: (value) => {
36
+ * // Generate chips from your filter value
37
+ * return chips;
38
+ * },
39
+ *
40
+ * fromChip: (chip, currentValue) => {
41
+ * // Remove chip's effect from value
42
+ * return updatedValue;
43
+ * },
44
+ *
45
+ * getActiveFiltersCount: (value) => {
46
+ * // Count active filters (0 means none active)
47
+ * return count;
48
+ * },
49
+ *
50
+ * renderFilter: (value, onChange) => (
51
+ * <YourCustomFilterComponent
52
+ * value={value}
53
+ * onChange={onChange}
54
+ * />
55
+ * ),
56
+ * });
57
+ * ```
58
+ *
59
+ * ## Reference Implementation:
60
+ * See `workflow-filters.config.tsx` for a complete example (lastEditedFilterAdapter).
61
+ *
62
+ * ## Note:
63
+ * Most use cases are covered by `createCheckboxFilterAdapter` or `createDualRangeFilterAdapter`.
64
+ * Only use this base function directly when you need completely custom filter logic.
65
+ */
66
+ function createFilterAdapter(config) {
67
+ return {
68
+ id: config.id,
69
+ label: config.label,
70
+ initialValue: config.initialValue,
71
+ columnFilterFn: config.filterFn,
72
+ cellRenderer: config.cellRenderer,
73
+ toChips: config.toChips,
74
+ fromChip: config.fromChip,
75
+ getActiveFiltersCount: config.getActiveFiltersCount,
76
+ reset: () => config.initialValue,
77
+ renderFilter: config.renderFilter
78
+ };
79
+ }
80
+
81
+ //#endregion
82
+ export { createFilterAdapter };
83
+ //# sourceMappingURL=create-filter-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-filter-adapter.js","names":["ReactNode","FilterAdapter","FilterAdapterConfig","id","label","initialValue","TFilterValue","filterFn","TData","TCellValue","toChips","fromChip","getActiveFiltersCount","renderFilter","value","onChange","cellRenderer","createFilterAdapter","config","columnFilterFn","reset"],"sources":["../../../../../src/components/ds-table/filters/adapters/create-filter-adapter.ts"],"sourcesContent":["import type { ReactNode } from 'react';\nimport type { FilterAdapter } from '../types/filter-adapter.types';\n\nexport interface FilterAdapterConfig<TData, TFilterValue, TCellValue = unknown> {\n\t/**\n\t * Unique identifier (should match column accessorKey)\n\t */\n\tid: string;\n\n\t/**\n\t * Display label for filter navigation\n\t */\n\tlabel: string;\n\n\t/**\n\t * Initial/default value for the filter\n\t */\n\tinitialValue: TFilterValue;\n\n\t/**\n\t * Filter function - determines if row matches filter value\n\t */\n\tfilterFn: FilterAdapter<TData, TFilterValue, TCellValue>['columnFilterFn'];\n\n\t/**\n\t * Convert filter value to display chips\n\t */\n\ttoChips: FilterAdapter<TData, TFilterValue, TCellValue>['toChips'];\n\n\t/**\n\t * Remove chip effect from filter value\n\t */\n\tfromChip: FilterAdapter<TData, TFilterValue, TCellValue>['fromChip'];\n\n\t/**\n\t * Calculate active filter count\n\t */\n\tgetActiveFiltersCount: FilterAdapter<TData, TFilterValue, TCellValue>['getActiveFiltersCount'];\n\n\t/**\n\t * Render the filter UI\n\t */\n\trenderFilter: (value: TFilterValue, onChange: (value: TFilterValue) => void) => ReactNode;\n\n\t/**\n\t * Optional custom cell renderer for table cells\n\t * Note: This receives the cell value from the table, not the filter value\n\t */\n\tcellRenderer?: (value: TCellValue) => ReactNode;\n}\n\n/**\n * Base factory function to create a filter adapter\n *\n * This is the core function that all specialized filter adapters use internally.\n * Use this when checkbox or dual-range adapters don't fit your requirements.\n *\n * ## When to use directly:\n * - Complex filtering logic (e.g., editor + date range)\n * - Unique UI that doesn't fit generic patterns\n * - Combining multiple sub-filters\n * - Special chip generation requirements\n *\n * ## When to use specialized helpers instead:\n * - **Checkbox filters**: Use `createCheckboxFilterAdapter` for multi-select\n * - **Range filters**: Use `createDualRangeFilterAdapter` for numeric ranges\n *\n * ## Example:\n * ```typescript\n * interface MyFilterValue {\n * users: string[];\n * dateRange: { from?: Date; to?: Date };\n * }\n *\n * const myFilter = createFilterAdapter<DataType, MyFilterValue>({\n * id: 'myColumn',\n * label: 'My Filter',\n * initialValue: { users: [], dateRange: {} },\n *\n * filterFn: (row, columnId, filterValue) => {\n * // Your custom logic\n * return matchesUsers && matchesDateRange;\n * },\n *\n * toChips: (value) => {\n * // Generate chips from your filter value\n * return chips;\n * },\n *\n * fromChip: (chip, currentValue) => {\n * // Remove chip's effect from value\n * return updatedValue;\n * },\n *\n * getActiveFiltersCount: (value) => {\n * // Count active filters (0 means none active)\n * return count;\n * },\n *\n * renderFilter: (value, onChange) => (\n * <YourCustomFilterComponent\n * value={value}\n * onChange={onChange}\n * />\n * ),\n * });\n * ```\n *\n * ## Reference Implementation:\n * See `workflow-filters.config.tsx` for a complete example (lastEditedFilterAdapter).\n *\n * ## Note:\n * Most use cases are covered by `createCheckboxFilterAdapter` or `createDualRangeFilterAdapter`.\n * Only use this base function directly when you need completely custom filter logic.\n */\nexport function createFilterAdapter<TData, TFilterValue, TCellValue = unknown>(\n\tconfig: FilterAdapterConfig<TData, TFilterValue, TCellValue>,\n): FilterAdapter<TData, TFilterValue, TCellValue> {\n\treturn {\n\t\tid: config.id,\n\t\tlabel: config.label,\n\t\tinitialValue: config.initialValue,\n\t\tcolumnFilterFn: config.filterFn,\n\t\tcellRenderer: config.cellRenderer,\n\t\ttoChips: config.toChips,\n\t\tfromChip: config.fromChip,\n\t\tgetActiveFiltersCount: config.getActiveFiltersCount,\n\t\treset: () => config.initialValue,\n\t\trenderFilter: config.renderFilter,\n\t};\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmHA,SAAgBiB,oBACfC,QACiD;AACjD,QAAO;EACNf,IAAIe,OAAOf;EACXC,OAAOc,OAAOd;EACdC,cAAca,OAAOb;EACrBc,gBAAgBD,OAAOX;EACvBS,cAAcE,OAAOF;EACrBN,SAASQ,OAAOR;EAChBC,UAAUO,OAAOP;EACjBC,uBAAuBM,OAAON;EAC9BQ,aAAaF,OAAOb;EACpBQ,cAAcK,OAAOL;EACrB"}
@@ -0,0 +1,3 @@
1
+ const require_create_filter_adapter = require('./create-filter-adapter.cjs');
2
+ const require_create_checkbox_filter_adapter = require('./create-checkbox-filter-adapter.cjs');
3
+ const require_create_dual_range_filter_adapter = require('./create-dual-range-filter-adapter.cjs');
@@ -0,0 +1,3 @@
1
+ import { FilterAdapterConfig, createFilterAdapter } from "./create-filter-adapter.js";
2
+ import { CheckboxFilterAdapterConfig, createCheckboxFilterAdapter } from "./create-checkbox-filter-adapter.js";
3
+ import { DualRangeFilterAdapterConfig, DualRangeFilterValue, RangeValue, createDualRangeFilterAdapter } from "./create-dual-range-filter-adapter.js";
@@ -0,0 +1,3 @@
1
+ import { createFilterAdapter } from "./create-filter-adapter.js";
2
+ import { createCheckboxFilterAdapter } from "./create-checkbox-filter-adapter.js";
3
+ import { createDualRangeFilterAdapter } from "./create-dual-range-filter-adapter.js";
@@ -0,0 +1,22 @@
1
+ const require_rolldown_runtime = require('../../../../../_virtual/rolldown_runtime.cjs');
2
+ const require_ds_checkbox = require('../../../../ds-checkbox/ds-checkbox.cjs');
3
+ require('../../../../ds-checkbox/index.cjs');
4
+ let react_jsx_runtime = require("react/jsx-runtime");
5
+
6
+ //#region src/components/ds-table/filters/components/checkbox-filter/checkbox-filter.tsx
7
+ const CheckboxFilter = ({ items, renderer, selectedItems, onSelectionChange }) => {
8
+ const handleCheckedChange = (selected, checked) => {
9
+ if (checked) onSelectionChange([...selectedItems, selected]);
10
+ else onSelectionChange(selectedItems.filter((item) => item.value !== selected.value));
11
+ };
12
+ return items.map((item) => {
13
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ds_checkbox.default, {
14
+ label: renderer ? renderer(item) : item.label,
15
+ checked: selectedItems.findIndex((selectedItem) => selectedItem.value === item.value) > -1,
16
+ onCheckedChange: (newState) => handleCheckedChange(item, newState === true)
17
+ }, JSON.stringify(item.value));
18
+ });
19
+ };
20
+
21
+ //#endregion
22
+ exports.CheckboxFilter = CheckboxFilter;
@@ -0,0 +1,17 @@
1
+ import { ReactNode } from "react";
2
+
3
+ //#region src/components/ds-table/filters/components/checkbox-filter/checkbox-filter.d.ts
4
+ interface CheckboxFilterItem<TValue = string> {
5
+ value: TValue;
6
+ label: string;
7
+ metadata?: Record<string, unknown>;
8
+ }
9
+ interface CheckboxFilterProps<TValue> {
10
+ items: CheckboxFilterItem<TValue>[];
11
+ renderer?: (item: CheckboxFilterItem<TValue>) => ReactNode;
12
+ selectedItems: CheckboxFilterItem<TValue>[];
13
+ onSelectionChange: (selectedItems: CheckboxFilterItem<TValue>[]) => void;
14
+ }
15
+ //#endregion
16
+ export { CheckboxFilterItem, CheckboxFilterProps };
17
+ //# sourceMappingURL=checkbox-filter.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkbox-filter.d.cts","names":[],"sources":["../../../../../../src/components/ds-table/filters/components/checkbox-filter/checkbox-filter.tsx"],"sourcesContent":[],"mappings":";;;UAGiB;SACT;EADS,KAAA,EAAA,MAAA;EAMA,QAAA,CAAA,EAHL,MAGK,CAAA,MAAmB,EAAA,OAAA,CAAA;;AAC5B,UADS,mBACT,CAAA,MAAA,CAAA,CAAA;EAC8B,KAAA,EAD9B,kBAC8B,CADX,MACW,CAAA,EAAA;EAAnB,QAAA,CAAA,EAAA,CAAA,IAAA,EAAA,kBAAA,CAAmB,MAAnB,CAAA,EAAA,GAA+B,SAA/B;EAA+B,aAAA,EAClC,kBADkC,CACf,MADe,CAAA,EAAA;EACf,iBAAA,EAAA,CAAA,aAAA,EACC,kBADD,CACoB,MADpB,CAAA,EAAA,EAAA,GAAA,IAAA"}
@@ -0,0 +1,18 @@
1
+ import "react/jsx-runtime";
2
+ import { ReactNode } from "react";
3
+
4
+ //#region src/components/ds-table/filters/components/checkbox-filter/checkbox-filter.d.ts
5
+ interface CheckboxFilterItem<TValue = string> {
6
+ value: TValue;
7
+ label: string;
8
+ metadata?: Record<string, unknown>;
9
+ }
10
+ interface CheckboxFilterProps<TValue> {
11
+ items: CheckboxFilterItem<TValue>[];
12
+ renderer?: (item: CheckboxFilterItem<TValue>) => ReactNode;
13
+ selectedItems: CheckboxFilterItem<TValue>[];
14
+ onSelectionChange: (selectedItems: CheckboxFilterItem<TValue>[]) => void;
15
+ }
16
+ //#endregion
17
+ export { CheckboxFilterItem, CheckboxFilterProps };
18
+ //# sourceMappingURL=checkbox-filter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkbox-filter.d.ts","names":[],"sources":["../../../../../../src/components/ds-table/filters/components/checkbox-filter/checkbox-filter.tsx"],"sourcesContent":[],"mappings":";;;;UAGiB;SACT;;EADS,QAAA,CAAA,EAGL,MAHK,CAAA,MAAkB,EAAA,OAAA,CAAA;AAMnC;AAC2B,UADV,mBACU,CAAA,MAAA,CAAA,CAAA;EAAnB,KAAA,EAAA,kBAAA,CAAmB,MAAnB,CAAA,EAAA;EAC8B,QAAA,CAAA,EAAA,CAAA,IAAA,EAAnB,kBAAmB,CAAA,MAAA,CAAA,EAAA,GAAY,SAAZ;EAAnB,aAAA,EACH,kBADG,CACgB,MADhB,CAAA,EAAA;EAA+B,iBAAA,EAAA,CAAA,aAAA,EAEd,kBAFc,CAEK,MAFL,CAAA,EAAA,EAAA,GAAA,IAAA"}
@@ -0,0 +1,22 @@
1
+ import ds_checkbox_default from "../../../../ds-checkbox/ds-checkbox.js";
2
+ import "../../../../ds-checkbox/index.js";
3
+ import { jsx } from "react/jsx-runtime";
4
+
5
+ //#region src/components/ds-table/filters/components/checkbox-filter/checkbox-filter.tsx
6
+ const CheckboxFilter = ({ items, renderer, selectedItems, onSelectionChange }) => {
7
+ const handleCheckedChange = (selected, checked) => {
8
+ if (checked) onSelectionChange([...selectedItems, selected]);
9
+ else onSelectionChange(selectedItems.filter((item) => item.value !== selected.value));
10
+ };
11
+ return items.map((item) => {
12
+ return /* @__PURE__ */ jsx(ds_checkbox_default, {
13
+ label: renderer ? renderer(item) : item.label,
14
+ checked: selectedItems.findIndex((selectedItem) => selectedItem.value === item.value) > -1,
15
+ onCheckedChange: (newState) => handleCheckedChange(item, newState === true)
16
+ }, JSON.stringify(item.value));
17
+ });
18
+ };
19
+
20
+ //#endregion
21
+ export { CheckboxFilter };
22
+ //# sourceMappingURL=checkbox-filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkbox-filter.js","names":["ReactNode","DsCheckbox","CheckboxFilterItem","value","TValue","label","metadata","Record","CheckboxFilterProps","items","renderer","item","selectedItems","onSelectionChange","CheckboxFilter","handleCheckedChange","selected","checked","filter","map","findIndex","selectedItem","JSON","stringify","newState"],"sources":["../../../../../../src/components/ds-table/filters/components/checkbox-filter/checkbox-filter.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { DsCheckbox } from '../../../../ds-checkbox';\n\nexport interface CheckboxFilterItem<TValue = string> {\n\tvalue: TValue;\n\tlabel: string;\n\tmetadata?: Record<string, unknown>;\n}\n\nexport interface CheckboxFilterProps<TValue> {\n\titems: CheckboxFilterItem<TValue>[];\n\trenderer?: (item: CheckboxFilterItem<TValue>) => ReactNode;\n\tselectedItems: CheckboxFilterItem<TValue>[];\n\tonSelectionChange: (selectedItems: CheckboxFilterItem<TValue>[]) => void;\n}\n\nexport const CheckboxFilter = <TValue,>({\n\titems,\n\trenderer,\n\tselectedItems,\n\tonSelectionChange,\n}: CheckboxFilterProps<TValue>) => {\n\tconst handleCheckedChange = (selected: CheckboxFilterItem<TValue>, checked: boolean) => {\n\t\tif (checked) {\n\t\t\tonSelectionChange([...selectedItems, selected]);\n\t\t} else {\n\t\t\tonSelectionChange(selectedItems.filter((item) => item.value !== selected.value));\n\t\t}\n\t};\n\n\treturn items.map((item) => {\n\t\tconst label = renderer ? renderer(item) : item.label;\n\t\tconst checked = selectedItems.findIndex((selectedItem) => selectedItem.value === item.value) > -1;\n\t\treturn (\n\t\t\t<DsCheckbox\n\t\t\t\tkey={JSON.stringify(item.value)}\n\t\t\t\tlabel={label}\n\t\t\t\tchecked={checked}\n\t\t\t\tonCheckedChange={(newState) => handleCheckedChange(item, newState === true)}\n\t\t\t/>\n\t\t);\n\t});\n};\n"],"mappings":";;;;;AAgBA,MAAac,kBAA2B,EACvCL,OACAC,UACAE,eACAC,wBACkC;CAClC,MAAME,uBAAuBC,UAAsCC,YAAqB;AACvF,MAAIA,QACHJ,mBAAkB,CAAC,GAAGD,eAAeI,SAAS,CAAC;MAE/CH,mBAAkBD,cAAcM,QAAQP,SAASA,KAAKR,UAAUa,SAASb,MAAM,CAAC;;AAIlF,QAAOM,MAAMU,KAAKR,SAAS;AAG1B,SACC,oBAAC;GAEA,OALYD,WAAWA,SAASC,KAAK,GAAGA,KAAKN;GAM7C,SALcO,cAAcQ,WAAWC,iBAAiBA,aAAalB,UAAUQ,KAAKR,MAAM,GAAG;GAM7F,kBAAkBqB,aAAaT,oBAAoBJ,MAAMa,aAAa,KAAK;KAHtEF,KAAKC,UAAUZ,KAAKR,MAAM,CAI9B;GAEF"}
@@ -0,0 +1 @@
1
+ const require_checkbox_filter = require('./checkbox-filter.cjs');
@@ -0,0 +1 @@
1
+ import { CheckboxFilterItem, CheckboxFilterProps } from "./checkbox-filter.js";
@@ -0,0 +1 @@
1
+ import { CheckboxFilter } from "./checkbox-filter.js";
@@ -0,0 +1 @@
1
+ const require_range_filter = require('./range-filter.cjs');
@@ -0,0 +1 @@
1
+ import { RangeFilterProps, RangeFilterValue } from "./range-filter.js";
@@ -0,0 +1 @@
1
+ import { RangeFilter } from "./range-filter.js";
@@ -0,0 +1,177 @@
1
+ const require_rolldown_runtime = require('../../../../../_virtual/rolldown_runtime.cjs');
2
+ const require_ds_typography = require('../../../../ds-typography/ds-typography.cjs');
3
+ require('../../../../ds-typography/index.cjs');
4
+ const require_ds_text_input = require('../../../../ds-text-input/ds-text-input.cjs');
5
+ require('../../../../ds-text-input/index.cjs');
6
+ const require_ds_button = require('../../../../ds-button/ds-button.cjs');
7
+ require('../../../../ds-button/index.cjs');
8
+ const require_range_filter_module = require('./range-filter.module.cjs');
9
+ let react_compiler_runtime = require("react/compiler-runtime");
10
+ let react_jsx_runtime = require("react/jsx-runtime");
11
+ let react = require("react");
12
+
13
+ //#region src/components/ds-table/filters/components/range-filter/range-filter.tsx
14
+ const RangeFilter = (t0) => {
15
+ const $ = (0, react_compiler_runtime.c)(35);
16
+ const { label, value, onChange, onClear } = t0;
17
+ let t1;
18
+ if ($[0] !== value.from) {
19
+ t1 = value.from?.toString() || "";
20
+ $[0] = value.from;
21
+ $[1] = t1;
22
+ } else t1 = $[1];
23
+ const [localFrom, setLocalFrom] = (0, react.useState)(t1);
24
+ let t2;
25
+ if ($[2] !== value.to) {
26
+ t2 = value.to?.toString() || "";
27
+ $[2] = value.to;
28
+ $[3] = t2;
29
+ } else t2 = $[3];
30
+ const [localTo, setLocalTo] = (0, react.useState)(t2);
31
+ let t3;
32
+ if ($[4] !== onChange || $[5] !== value.to) {
33
+ t3 = (val) => {
34
+ setLocalFrom(val);
35
+ onChange({
36
+ from: val ? parseInt(val, 10) : void 0,
37
+ to: value.to
38
+ });
39
+ };
40
+ $[4] = onChange;
41
+ $[5] = value.to;
42
+ $[6] = t3;
43
+ } else t3 = $[6];
44
+ const handleFromChange = t3;
45
+ let t4;
46
+ if ($[7] !== onChange || $[8] !== value.from) {
47
+ t4 = (val_0) => {
48
+ setLocalTo(val_0);
49
+ const numVal_0 = val_0 ? parseInt(val_0, 10) : void 0;
50
+ onChange({
51
+ from: value.from,
52
+ to: numVal_0
53
+ });
54
+ };
55
+ $[7] = onChange;
56
+ $[8] = value.from;
57
+ $[9] = t4;
58
+ } else t4 = $[9];
59
+ const handleToChange = t4;
60
+ let t5;
61
+ if ($[10] !== onClear) {
62
+ t5 = () => {
63
+ setLocalFrom("");
64
+ setLocalTo("");
65
+ if (onClear) onClear();
66
+ };
67
+ $[10] = onClear;
68
+ $[11] = t5;
69
+ } else t5 = $[11];
70
+ const handleClear = t5;
71
+ const hasValue = value.from !== void 0 || value.to !== void 0;
72
+ let t6;
73
+ if ($[12] !== label) {
74
+ t6 = /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ds_typography.default, {
75
+ variant: "body-md-md",
76
+ children: label
77
+ });
78
+ $[12] = label;
79
+ $[13] = t6;
80
+ } else t6 = $[13];
81
+ let t7;
82
+ if ($[14] !== handleClear || $[15] !== hasValue || $[16] !== onClear) {
83
+ t7 = hasValue && onClear && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ds_button.default, {
84
+ design: "v1.2",
85
+ buttonType: "tertiary",
86
+ size: "small",
87
+ onClick: handleClear,
88
+ children: "Clear"
89
+ });
90
+ $[14] = handleClear;
91
+ $[15] = hasValue;
92
+ $[16] = onClear;
93
+ $[17] = t7;
94
+ } else t7 = $[17];
95
+ let t8;
96
+ if ($[18] !== t6 || $[19] !== t7) {
97
+ t8 = /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
98
+ className: require_range_filter_module.default.header,
99
+ children: [t6, t7]
100
+ });
101
+ $[18] = t6;
102
+ $[19] = t7;
103
+ $[20] = t8;
104
+ } else t8 = $[20];
105
+ let t9;
106
+ if ($[21] === Symbol.for("react.memo_cache_sentinel")) {
107
+ t9 = /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ds_typography.default, {
108
+ variant: "body-sm-reg",
109
+ children: "From"
110
+ });
111
+ $[21] = t9;
112
+ } else t9 = $[21];
113
+ let t10;
114
+ if ($[22] !== handleFromChange || $[23] !== localFrom) {
115
+ t10 = /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
116
+ className: require_range_filter_module.default.inputGroup,
117
+ children: [t9, /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ds_text_input.default, {
118
+ type: "number",
119
+ placeholder: "",
120
+ value: localFrom,
121
+ onValueChange: handleFromChange,
122
+ size: "default"
123
+ })]
124
+ });
125
+ $[22] = handleFromChange;
126
+ $[23] = localFrom;
127
+ $[24] = t10;
128
+ } else t10 = $[24];
129
+ let t11;
130
+ if ($[25] === Symbol.for("react.memo_cache_sentinel")) {
131
+ t11 = /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ds_typography.default, {
132
+ variant: "body-sm-reg",
133
+ children: "To"
134
+ });
135
+ $[25] = t11;
136
+ } else t11 = $[25];
137
+ let t12;
138
+ if ($[26] !== handleToChange || $[27] !== localTo) {
139
+ t12 = /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
140
+ className: require_range_filter_module.default.inputGroup,
141
+ children: [t11, /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ds_text_input.default, {
142
+ type: "number",
143
+ placeholder: "",
144
+ value: localTo,
145
+ onValueChange: handleToChange,
146
+ size: "default"
147
+ })]
148
+ });
149
+ $[26] = handleToChange;
150
+ $[27] = localTo;
151
+ $[28] = t12;
152
+ } else t12 = $[28];
153
+ let t13;
154
+ if ($[29] !== t10 || $[30] !== t12) {
155
+ t13 = /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
156
+ className: require_range_filter_module.default.inputs,
157
+ children: [t10, t12]
158
+ });
159
+ $[29] = t10;
160
+ $[30] = t12;
161
+ $[31] = t13;
162
+ } else t13 = $[31];
163
+ let t14;
164
+ if ($[32] !== t13 || $[33] !== t8) {
165
+ t14 = /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
166
+ className: require_range_filter_module.default.container,
167
+ children: [t8, t13]
168
+ });
169
+ $[32] = t13;
170
+ $[33] = t8;
171
+ $[34] = t14;
172
+ } else t14 = $[34];
173
+ return t14;
174
+ };
175
+
176
+ //#endregion
177
+ exports.RangeFilter = RangeFilter;
@@ -0,0 +1,14 @@
1
+ //#region src/components/ds-table/filters/components/range-filter/range-filter.d.ts
2
+ interface RangeFilterValue {
3
+ from?: number;
4
+ to?: number;
5
+ }
6
+ interface RangeFilterProps {
7
+ label: string;
8
+ value: RangeFilterValue;
9
+ onChange: (value: RangeFilterValue) => void;
10
+ onClear?: () => void;
11
+ }
12
+ //#endregion
13
+ export { RangeFilterProps, RangeFilterValue };
14
+ //# sourceMappingURL=range-filter.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"range-filter.d.cts","names":[],"sources":["../../../../../../src/components/ds-table/filters/components/range-filter/range-filter.tsx"],"sourcesContent":[],"mappings":";UAMiB,gBAAA;EAAA,IAAA,CAAA,EAAA,MAAA;EAKA,EAAA,CAAA,EAAA,MAAA;;UAAA,gBAAA;;SAET;oBACW"}