@keenthemes/ktui 1.2.5 → 1.2.7

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 (196) hide show
  1. package/README.md +14 -5
  2. package/dist/ktui.js +1538 -786
  3. package/dist/ktui.min.js +1 -1
  4. package/dist/ktui.min.js.map +1 -1
  5. package/dist/styles.css +85 -5
  6. package/lib/cjs/components/datatable/datatable-checkbox.d.ts +37 -1
  7. package/lib/cjs/components/datatable/datatable-checkbox.d.ts.map +1 -1
  8. package/lib/cjs/components/datatable/datatable-checkbox.js +143 -156
  9. package/lib/cjs/components/datatable/datatable-checkbox.js.map +1 -1
  10. package/lib/cjs/components/datatable/datatable-column-utils.d.ts +30 -0
  11. package/lib/cjs/components/datatable/datatable-column-utils.d.ts.map +1 -0
  12. package/lib/cjs/components/datatable/datatable-column-utils.js +42 -0
  13. package/lib/cjs/components/datatable/datatable-column-utils.js.map +1 -0
  14. package/lib/cjs/components/datatable/datatable-contracts.d.ts +2 -4
  15. package/lib/cjs/components/datatable/datatable-contracts.d.ts.map +1 -1
  16. package/lib/cjs/components/datatable/datatable-defaults.d.ts +20 -0
  17. package/lib/cjs/components/datatable/datatable-defaults.d.ts.map +1 -0
  18. package/lib/cjs/components/datatable/datatable-defaults.js +193 -0
  19. package/lib/cjs/components/datatable/datatable-defaults.js.map +1 -0
  20. package/lib/cjs/components/datatable/datatable-layout-plugin.d.ts +7 -0
  21. package/lib/cjs/components/datatable/datatable-layout-plugin.d.ts.map +1 -0
  22. package/lib/cjs/components/datatable/datatable-layout-plugin.js +338 -0
  23. package/lib/cjs/components/datatable/datatable-layout-plugin.js.map +1 -0
  24. package/lib/cjs/components/datatable/datatable-local-provider.d.ts +2 -2
  25. package/lib/cjs/components/datatable/datatable-local-provider.d.ts.map +1 -1
  26. package/lib/cjs/components/datatable/datatable-local-provider.js +85 -27
  27. package/lib/cjs/components/datatable/datatable-local-provider.js.map +1 -1
  28. package/lib/cjs/components/datatable/datatable-pagination-renderer.d.ts.map +1 -1
  29. package/lib/cjs/components/datatable/datatable-pagination-renderer.js +13 -13
  30. package/lib/cjs/components/datatable/datatable-pagination-renderer.js.map +1 -1
  31. package/lib/cjs/components/datatable/datatable-registry.d.ts +18 -0
  32. package/lib/cjs/components/datatable/datatable-registry.d.ts.map +1 -0
  33. package/lib/cjs/components/datatable/datatable-registry.js +66 -0
  34. package/lib/cjs/components/datatable/datatable-registry.js.map +1 -0
  35. package/lib/cjs/components/datatable/datatable-remote-provider.d.ts.map +1 -1
  36. package/lib/cjs/components/datatable/datatable-remote-provider.js +1 -2
  37. package/lib/cjs/components/datatable/datatable-remote-provider.js.map +1 -1
  38. package/lib/cjs/components/datatable/datatable-search-handler.d.ts +10 -0
  39. package/lib/cjs/components/datatable/datatable-search-handler.d.ts.map +1 -0
  40. package/lib/cjs/components/datatable/datatable-search-handler.js +65 -0
  41. package/lib/cjs/components/datatable/datatable-search-handler.js.map +1 -0
  42. package/lib/cjs/components/datatable/datatable-sort.d.ts +31 -4
  43. package/lib/cjs/components/datatable/datatable-sort.d.ts.map +1 -1
  44. package/lib/cjs/components/datatable/datatable-sort.js +86 -58
  45. package/lib/cjs/components/datatable/datatable-sort.js.map +1 -1
  46. package/lib/cjs/components/datatable/datatable-spinner.d.ts +30 -0
  47. package/lib/cjs/components/datatable/datatable-spinner.d.ts.map +1 -0
  48. package/lib/cjs/components/datatable/datatable-spinner.js +54 -0
  49. package/lib/cjs/components/datatable/datatable-spinner.js.map +1 -0
  50. package/lib/cjs/components/datatable/datatable-state-persistence.d.ts +19 -0
  51. package/lib/cjs/components/datatable/datatable-state-persistence.d.ts.map +1 -0
  52. package/lib/cjs/components/datatable/datatable-state-persistence.js +59 -0
  53. package/lib/cjs/components/datatable/datatable-state-persistence.js.map +1 -0
  54. package/lib/cjs/components/datatable/datatable-table-renderer.d.ts +2 -0
  55. package/lib/cjs/components/datatable/datatable-table-renderer.d.ts.map +1 -1
  56. package/lib/cjs/components/datatable/datatable-table-renderer.js +75 -16
  57. package/lib/cjs/components/datatable/datatable-table-renderer.js.map +1 -1
  58. package/lib/cjs/components/datatable/datatable-utils.d.ts +10 -0
  59. package/lib/cjs/components/datatable/datatable-utils.d.ts.map +1 -0
  60. package/lib/cjs/components/datatable/datatable-utils.js +15 -0
  61. package/lib/cjs/components/datatable/datatable-utils.js.map +1 -0
  62. package/lib/cjs/components/datatable/datatable.d.ts +35 -34
  63. package/lib/cjs/components/datatable/datatable.d.ts.map +1 -1
  64. package/lib/cjs/components/datatable/datatable.js +233 -497
  65. package/lib/cjs/components/datatable/datatable.js.map +1 -1
  66. package/lib/cjs/components/datatable/index.d.ts +1 -1
  67. package/lib/cjs/components/datatable/index.d.ts.map +1 -1
  68. package/lib/cjs/components/datatable/types.d.ts +127 -11
  69. package/lib/cjs/components/datatable/types.d.ts.map +1 -1
  70. package/lib/cjs/index.d.ts +1 -1
  71. package/lib/cjs/index.d.ts.map +1 -1
  72. package/lib/cjs/index.js +6 -0
  73. package/lib/cjs/index.js.map +1 -1
  74. package/lib/esm/components/datatable/datatable-checkbox.d.ts +37 -1
  75. package/lib/esm/components/datatable/datatable-checkbox.d.ts.map +1 -1
  76. package/lib/esm/components/datatable/datatable-checkbox.js +142 -155
  77. package/lib/esm/components/datatable/datatable-checkbox.js.map +1 -1
  78. package/lib/esm/components/datatable/datatable-column-utils.d.ts +30 -0
  79. package/lib/esm/components/datatable/datatable-column-utils.d.ts.map +1 -0
  80. package/lib/esm/components/datatable/datatable-column-utils.js +38 -0
  81. package/lib/esm/components/datatable/datatable-column-utils.js.map +1 -0
  82. package/lib/esm/components/datatable/datatable-contracts.d.ts +2 -4
  83. package/lib/esm/components/datatable/datatable-contracts.d.ts.map +1 -1
  84. package/lib/esm/components/datatable/datatable-defaults.d.ts +20 -0
  85. package/lib/esm/components/datatable/datatable-defaults.d.ts.map +1 -0
  86. package/lib/esm/components/datatable/datatable-defaults.js +190 -0
  87. package/lib/esm/components/datatable/datatable-defaults.js.map +1 -0
  88. package/lib/esm/components/datatable/datatable-layout-plugin.d.ts +7 -0
  89. package/lib/esm/components/datatable/datatable-layout-plugin.d.ts.map +1 -0
  90. package/lib/esm/components/datatable/datatable-layout-plugin.js +334 -0
  91. package/lib/esm/components/datatable/datatable-layout-plugin.js.map +1 -0
  92. package/lib/esm/components/datatable/datatable-local-provider.d.ts +2 -2
  93. package/lib/esm/components/datatable/datatable-local-provider.d.ts.map +1 -1
  94. package/lib/esm/components/datatable/datatable-local-provider.js +85 -27
  95. package/lib/esm/components/datatable/datatable-local-provider.js.map +1 -1
  96. package/lib/esm/components/datatable/datatable-pagination-renderer.d.ts.map +1 -1
  97. package/lib/esm/components/datatable/datatable-pagination-renderer.js +13 -13
  98. package/lib/esm/components/datatable/datatable-pagination-renderer.js.map +1 -1
  99. package/lib/esm/components/datatable/datatable-registry.d.ts +18 -0
  100. package/lib/esm/components/datatable/datatable-registry.d.ts.map +1 -0
  101. package/lib/esm/components/datatable/datatable-registry.js +63 -0
  102. package/lib/esm/components/datatable/datatable-registry.js.map +1 -0
  103. package/lib/esm/components/datatable/datatable-remote-provider.d.ts.map +1 -1
  104. package/lib/esm/components/datatable/datatable-remote-provider.js +1 -2
  105. package/lib/esm/components/datatable/datatable-remote-provider.js.map +1 -1
  106. package/lib/esm/components/datatable/datatable-search-handler.d.ts +10 -0
  107. package/lib/esm/components/datatable/datatable-search-handler.d.ts.map +1 -0
  108. package/lib/esm/components/datatable/datatable-search-handler.js +62 -0
  109. package/lib/esm/components/datatable/datatable-search-handler.js.map +1 -0
  110. package/lib/esm/components/datatable/datatable-sort.d.ts +31 -4
  111. package/lib/esm/components/datatable/datatable-sort.d.ts.map +1 -1
  112. package/lib/esm/components/datatable/datatable-sort.js +85 -57
  113. package/lib/esm/components/datatable/datatable-sort.js.map +1 -1
  114. package/lib/esm/components/datatable/datatable-spinner.d.ts +30 -0
  115. package/lib/esm/components/datatable/datatable-spinner.d.ts.map +1 -0
  116. package/lib/esm/components/datatable/datatable-spinner.js +51 -0
  117. package/lib/esm/components/datatable/datatable-spinner.js.map +1 -0
  118. package/lib/esm/components/datatable/datatable-state-persistence.d.ts +19 -0
  119. package/lib/esm/components/datatable/datatable-state-persistence.d.ts.map +1 -0
  120. package/lib/esm/components/datatable/datatable-state-persistence.js +55 -0
  121. package/lib/esm/components/datatable/datatable-state-persistence.js.map +1 -0
  122. package/lib/esm/components/datatable/datatable-table-renderer.d.ts +2 -0
  123. package/lib/esm/components/datatable/datatable-table-renderer.d.ts.map +1 -1
  124. package/lib/esm/components/datatable/datatable-table-renderer.js +75 -16
  125. package/lib/esm/components/datatable/datatable-table-renderer.js.map +1 -1
  126. package/lib/esm/components/datatable/datatable-utils.d.ts +10 -0
  127. package/lib/esm/components/datatable/datatable-utils.d.ts.map +1 -0
  128. package/lib/esm/components/datatable/datatable-utils.js +12 -0
  129. package/lib/esm/components/datatable/datatable-utils.js.map +1 -0
  130. package/lib/esm/components/datatable/datatable.d.ts +35 -34
  131. package/lib/esm/components/datatable/datatable.d.ts.map +1 -1
  132. package/lib/esm/components/datatable/datatable.js +235 -499
  133. package/lib/esm/components/datatable/datatable.js.map +1 -1
  134. package/lib/esm/components/datatable/index.d.ts +1 -1
  135. package/lib/esm/components/datatable/index.d.ts.map +1 -1
  136. package/lib/esm/components/datatable/types.d.ts +127 -11
  137. package/lib/esm/components/datatable/types.d.ts.map +1 -1
  138. package/lib/esm/index.d.ts +1 -1
  139. package/lib/esm/index.d.ts.map +1 -1
  140. package/lib/esm/index.js +6 -0
  141. package/lib/esm/index.js.map +1 -1
  142. package/package.json +5 -1
  143. package/skills/ktui/SKILL.md +711 -0
  144. package/skills/ktui-datatable/SKILL.md +302 -0
  145. package/skills/ktui-install/SKILL.md +150 -0
  146. package/skills/ktui-select/SKILL.md +271 -0
  147. package/src/components/__tests__/component.test.ts +347 -0
  148. package/src/components/collapse/collapse.css +2 -2
  149. package/src/components/datatable/__tests__/architecture-boundaries.test.ts +56 -8
  150. package/src/components/datatable/__tests__/currency-sort.test.ts +25 -28
  151. package/src/components/datatable/__tests__/datatable-checkbox.test.ts +527 -0
  152. package/src/components/datatable/__tests__/datatable-column-utils.test.ts +117 -0
  153. package/src/components/datatable/__tests__/datatable-defaults.test.ts +57 -0
  154. package/src/components/datatable/__tests__/datatable-finalize-extended.test.ts +361 -0
  155. package/src/components/datatable/__tests__/datatable-fixed-layout.test.ts +427 -0
  156. package/src/components/datatable/__tests__/datatable-improvements.test.ts +484 -0
  157. package/src/components/datatable/__tests__/datatable-pagination-extended.test.ts +508 -0
  158. package/src/components/datatable/__tests__/datatable-public-api.test.ts +269 -0
  159. package/src/components/datatable/__tests__/datatable-registry.test.ts +172 -0
  160. package/src/components/datatable/__tests__/datatable-remote-provider.test.ts +468 -0
  161. package/src/components/datatable/__tests__/datatable-search-handler.test.ts +124 -0
  162. package/src/components/datatable/__tests__/datatable-sort-extended.test.ts +417 -0
  163. package/src/components/datatable/__tests__/datatable-spinner.test.ts +95 -0
  164. package/src/components/datatable/__tests__/datatable-table-renderer-extended.test.ts +425 -0
  165. package/src/components/datatable/__tests__/datatable-types.test.ts +117 -0
  166. package/src/components/datatable/__tests__/datatable-utils.test.ts +52 -0
  167. package/src/components/datatable/__tests__/locked-layout.test.ts +257 -0
  168. package/src/components/datatable/__tests__/multi-row-headers.test.ts +7 -7
  169. package/src/components/datatable/__tests__/pagination-reset.test.ts +147 -6
  170. package/src/components/datatable/__tests__/race-conditions.test.ts +11 -11
  171. package/src/components/datatable/__tests__/setup.ts +12 -4
  172. package/src/components/datatable/datatable-checkbox.ts +139 -143
  173. package/src/components/datatable/datatable-column-utils.ts +63 -0
  174. package/src/components/datatable/datatable-contracts.ts +2 -3
  175. package/src/components/datatable/datatable-defaults.ts +204 -0
  176. package/src/components/datatable/datatable-layout-plugin.ts +459 -0
  177. package/src/components/datatable/datatable-local-provider.ts +106 -35
  178. package/src/components/datatable/datatable-pagination-renderer.ts +13 -15
  179. package/src/components/datatable/datatable-registry.ts +89 -0
  180. package/src/components/datatable/datatable-remote-provider.ts +1 -3
  181. package/src/components/datatable/datatable-search-handler.ts +97 -0
  182. package/src/components/datatable/datatable-sort.ts +111 -66
  183. package/src/components/datatable/datatable-spinner.ts +103 -0
  184. package/src/components/datatable/datatable-state-persistence.ts +67 -0
  185. package/src/components/datatable/datatable-table-renderer.ts +81 -18
  186. package/src/components/datatable/datatable-utils.ts +12 -0
  187. package/src/components/datatable/datatable.css +98 -0
  188. package/src/components/datatable/datatable.ts +288 -583
  189. package/src/components/datatable/index.ts +8 -0
  190. package/src/components/datatable/types.ts +157 -23
  191. package/src/helpers/__tests__/dom.test.ts +776 -0
  192. package/src/helpers/__tests__/utils.test.ts +332 -0
  193. package/src/index.ts +15 -0
  194. package/skills/ktui-components/SKILL.md +0 -41
  195. package/skills/ktui-theming/SKILL.md +0 -50
  196. package/src/components/datatable/datatable-event-adapter.ts +0 -21
@@ -13,7 +13,15 @@ export type {
13
13
  KTDataTableConfigInterface,
14
14
  KTDataTableColumnFilterTypeInterface,
15
15
  KTDataTableColumnFilterInterface,
16
+ KTDataTableTextFilterInterface,
17
+ KTDataTableNumericFilterInterface,
18
+ KTDataTableDateRangeFilterInterface,
16
19
  KTDataTableCheckConfigInterface,
17
20
  KTDataTableCheckInterface,
18
21
  KTDataTableCheckChangePayloadInterface,
22
+ KTDataTableLockedRowsConfigInterface,
23
+ KTDataTableLockedColumnsConfigInterface,
24
+ KTDataTableLockedLayoutConfigInterface,
25
+ KTDataTableLayoutPluginContextInterface,
26
+ KTDataTableLayoutPluginInterface,
19
27
  } from './types';
@@ -62,6 +62,69 @@ export interface KTDataTableInterface {
62
62
  showSpinner(): void;
63
63
 
64
64
  hideSpinner(): void;
65
+
66
+ /**
67
+ * Redraw the table, optionally navigating to a specific page.
68
+ * @param page The page number to navigate to (defaults to 1)
69
+ */
70
+ redraw(page?: number): void;
71
+
72
+ /**
73
+ * Search the data using a string query or object.
74
+ * @param query The search query
75
+ */
76
+ search(query: string | object): void;
77
+
78
+ /**
79
+ * Set or replace a column filter.
80
+ * @param filter The filter to apply
81
+ */
82
+ setFilter(filter: KTDataTableColumnFilterInterface): void;
83
+
84
+ /**
85
+ * Get the current state of the datatable.
86
+ */
87
+ getState(): KTDataTableStateInterface;
88
+
89
+ /**
90
+ * Dispose of the datatable instance, cleaning up event listeners and DOM nodes.
91
+ */
92
+ dispose(): void;
93
+
94
+ /**
95
+ * Check if all visible rows are checked (header checkbox state).
96
+ */
97
+ isChecked(): boolean;
98
+
99
+ /**
100
+ * Toggle all visible row checkboxes.
101
+ */
102
+ toggle(): void;
103
+
104
+ /**
105
+ * Check all visible row checkboxes.
106
+ */
107
+ check(): void;
108
+
109
+ /**
110
+ * Uncheck all visible row checkboxes.
111
+ */
112
+ uncheck(): void;
113
+
114
+ /**
115
+ * Get all checked row IDs.
116
+ */
117
+ getChecked(): string[];
118
+
119
+ /**
120
+ * Re-apply checkbox checked states to visible rows after a redraw or pagination change.
121
+ */
122
+ refreshCheckboxes(): void;
123
+
124
+ /**
125
+ * @deprecated Use {@link refreshCheckboxes} instead.
126
+ */
127
+ update(): void;
65
128
  }
66
129
 
67
130
  export interface KTDataTableResponseDataInterface {
@@ -69,8 +132,40 @@ export interface KTDataTableResponseDataInterface {
69
132
  totalCount: number;
70
133
  }
71
134
 
135
+ export interface KTDataTableLockedRowsConfigInterface {
136
+ top?: number;
137
+ bottom?: number;
138
+ }
139
+
140
+ export interface KTDataTableLockedColumnsConfigInterface {
141
+ left?: string[];
142
+ right?: string[];
143
+ }
144
+
145
+ export interface KTDataTableLockedLayoutConfigInterface {
146
+ stickyHeader?: boolean;
147
+ stickyRows?: KTDataTableLockedRowsConfigInterface;
148
+ stickyColumns?: KTDataTableLockedColumnsConfigInterface;
149
+ }
150
+
151
+ export interface KTDataTableLayoutPluginContextInterface {
152
+ rootElement: HTMLElement;
153
+ tableElement: HTMLTableElement;
154
+ theadElement: HTMLTableSectionElement;
155
+ tbodyElement: HTMLTableSectionElement;
156
+ config: KTDataTableConfigInterface;
157
+ }
158
+
159
+ export interface KTDataTableLayoutPluginInterface {
160
+ beforeDraw?: (ctx: KTDataTableLayoutPluginContextInterface) => void;
161
+ afterDraw?: (ctx: KTDataTableLayoutPluginContextInterface) => void;
162
+ dispose?: (ctx: KTDataTableLayoutPluginContextInterface) => void;
163
+ }
164
+
72
165
  // Define the DataTable options type
73
- export interface KTDataTableConfigInterface {
166
+ export interface KTDataTableConfigInterface<
167
+ T extends KTDataTableDataInterface = KTDataTableDataInterface,
168
+ > {
74
169
  requestMethod?: string;
75
170
  requestHeaders?: { [key: string]: string };
76
171
  requestCredentials?: RequestCredentials;
@@ -87,20 +182,18 @@ export interface KTDataTableConfigInterface {
87
182
  stateNamespace?: string;
88
183
  pageSizes?: number[];
89
184
  columns?: {
90
- [key: keyof KTDataTableDataInterface | string]: {
185
+ [key: string]: {
91
186
  title?: string;
92
187
  render?: (
93
- item: KTDataTableDataInterface[keyof KTDataTableDataInterface] | string,
94
- data: KTDataTableDataInterface,
188
+ item: T[keyof T] | string,
189
+ data: T,
95
190
  context: KTDataTableInterface,
96
191
  ) => string | HTMLElement | DocumentFragment;
97
192
  checkbox?: boolean;
98
193
  createdCell?: (
99
194
  cell: HTMLTableCellElement,
100
- cellData:
101
- | KTDataTableDataInterface[keyof KTDataTableDataInterface]
102
- | string,
103
- rowData: KTDataTableDataInterface,
195
+ cellData: T[keyof T] | string,
196
+ rowData: T,
104
197
  row: HTMLTableRowElement,
105
198
  ) => void;
106
199
  /**
@@ -114,11 +207,14 @@ export interface KTDataTableConfigInterface {
114
207
  * Use for custom formats (e.g. dates, combined fields, custom parsing).
115
208
  */
116
209
  sortValue?: (
117
- cellValue:
118
- | KTDataTableDataInterface[keyof KTDataTableDataInterface]
119
- | string,
120
- rowData: KTDataTableDataInterface,
210
+ cellValue: T[keyof T] | string,
211
+ rowData: T,
121
212
  ) => number | string;
213
+ /**
214
+ * Fixed width for this column when tableLayout is 'fixed'.
215
+ * Accepts any CSS length value (e.g. '120px', '20%', '10rem').
216
+ */
217
+ width?: string;
122
218
  };
123
219
  };
124
220
 
@@ -139,18 +235,15 @@ export interface KTDataTableConfigInterface {
139
235
  };
140
236
  // local data sort callback
141
237
  callback?: (
142
- data: KTDataTableDataInterface[],
143
- sortField: keyof KTDataTableDataInterface | number,
238
+ data: T[],
239
+ sortField: keyof T | number,
144
240
  sortOrder: KTDataTableSortOrderInterface,
145
- ) => KTDataTableDataInterface[];
241
+ ) => T[];
146
242
  };
147
243
 
148
244
  search?: {
149
245
  delay?: number; // delay in milliseconds
150
- callback?: (
151
- data: KTDataTableDataInterface[],
152
- search: string,
153
- ) => KTDataTableDataInterface[]; // search callback
246
+ callback?: (data: T[], search: string) => T[]; // search callback
154
247
  };
155
248
 
156
249
  pagination?: {
@@ -187,8 +280,20 @@ export interface KTDataTableConfigInterface {
187
280
  preserveSelection?: boolean;
188
281
  };
189
282
 
283
+ /**
284
+ * Table layout algorithm. When 'fixed', the table uses `table-layout: fixed`
285
+ * and generates a `<colgroup>` to keep column widths consistent across pagination.
286
+ * Column widths are read from `columns[key].width` (configured mode) or from
287
+ * `data-kt-datatable-column-width` attribute on `<th>` elements (implicit mode).
288
+ * @default 'auto'
289
+ */
290
+ tableLayout?: 'auto' | 'fixed';
291
+
292
+ lockedLayout?: KTDataTableLockedLayoutConfigInterface;
293
+ layoutPlugin?: KTDataTableLayoutPluginInterface;
294
+
190
295
  _state?: KTDataTableStateInterface;
191
- _data?: KTDataTableDataInterface[];
296
+ _data?: T[];
192
297
 
193
298
  loadingClass?: string;
194
299
  }
@@ -198,11 +303,28 @@ export type KTDataTableColumnFilterTypeInterface =
198
303
  | 'numeric'
199
304
  | 'dateRange';
200
305
 
201
- export type KTDataTableColumnFilterInterface = {
306
+ export interface KTDataTableTextFilterInterface {
202
307
  column: keyof KTDataTableDataInterface;
203
- type: KTDataTableColumnFilterTypeInterface;
308
+ type: 'text';
204
309
  value: string;
205
- };
310
+ }
311
+
312
+ export interface KTDataTableNumericFilterInterface {
313
+ column: keyof KTDataTableDataInterface;
314
+ type: 'numeric';
315
+ value: number;
316
+ }
317
+
318
+ export interface KTDataTableDateRangeFilterInterface {
319
+ column: keyof KTDataTableDataInterface;
320
+ type: 'dateRange';
321
+ value: { from: string; to: string };
322
+ }
323
+
324
+ export type KTDataTableColumnFilterInterface =
325
+ | KTDataTableTextFilterInterface
326
+ | KTDataTableNumericFilterInterface
327
+ | KTDataTableDateRangeFilterInterface;
206
328
 
207
329
  export interface KTDataTableCheckConfigInterface {
208
330
  target: string;
@@ -224,3 +346,15 @@ export interface KTDataTableCheckInterface {
224
346
  export interface KTDataTableCheckChangePayloadInterface {
225
347
  cancel?: boolean;
226
348
  }
349
+
350
+ /**
351
+ * Stores original CSS classes from the server-rendered table,
352
+ * used to preserve styling after datatable redraws.
353
+ */
354
+ export interface OriginalTableClasses {
355
+ tbody: string;
356
+ thead: string;
357
+ tr: string[];
358
+ td: string[][];
359
+ th: string[];
360
+ }