@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
@@ -2,11 +2,20 @@
2
2
  * KTUI - Free & Open-Source Tailwind UI Components by Keenthemes
3
3
  * Copyright 2025 by Keenthemes Inc
4
4
  */
5
- export function createSortHandler(config, theadElement, getState, setState, fireEvent, dispatchEvent, updateData) {
6
- // Helper to compare values for sorting (string)
7
- function compareValues(a, b, sortOrder) {
8
- var aText = String(a).replace(/<[^>]*>|&nbsp;/g, '');
9
- var bText = String(b).replace(/<[^>]*>|&nbsp;/g, '');
5
+ import { stripHtml } from './datatable-utils';
6
+ var KTDataTableSortHandler = /** @class */ (function () {
7
+ function KTDataTableSortHandler(deps) {
8
+ this._sortAbortController = null;
9
+ this._config = deps.config;
10
+ this._theadElement = deps.theadElement;
11
+ this._getState = deps.getState;
12
+ this._setState = deps.setState;
13
+ this._emit = deps.emit;
14
+ this._updateData = deps.updateData;
15
+ }
16
+ KTDataTableSortHandler._compareValues = function (a, b, sortOrder) {
17
+ var aText = stripHtml(a);
18
+ var bText = stripHtml(b);
10
19
  return aText > bText
11
20
  ? sortOrder === 'asc'
12
21
  ? 1
@@ -16,18 +25,16 @@ export function createSortHandler(config, theadElement, getState, setState, fire
16
25
  ? -1
17
26
  : 1
18
27
  : 0;
19
- }
20
- // Parse value for numeric sort: strip currency/commas, then parseFloat
21
- function parseNumeric(value) {
28
+ };
29
+ KTDataTableSortHandler._parseNumeric = function (value) {
22
30
  if (value === null || value === undefined || value === '') {
23
31
  return Number.NaN;
24
32
  }
25
33
  var s = String(value).replace(/[^0-9.-]/g, '');
26
34
  var n = parseFloat(s);
27
35
  return Number.isNaN(n) ? Number.NaN : n;
28
- }
29
- // Compare two numbers; NaN sorts to the end for both asc and desc
30
- function compareNumeric(aNum, bNum, sortOrder) {
36
+ };
37
+ KTDataTableSortHandler._compareNumeric = function (aNum, bNum, sortOrder) {
31
38
  var aNaN = Number.isNaN(aNum);
32
39
  var bNaN = Number.isNaN(bNum);
33
40
  if (aNaN && bNaN)
@@ -41,42 +48,56 @@ export function createSortHandler(config, theadElement, getState, setState, fire
41
48
  if (aNum > bNum)
42
49
  return sortOrder === 'asc' ? 1 : -1;
43
50
  return 0;
44
- }
45
- function getColumnDef(sortField) {
46
- var columns = config.columns;
51
+ };
52
+ KTDataTableSortHandler.prototype._getColumnDef = function (sortField) {
53
+ var columns = this._config.columns;
47
54
  if (!columns)
48
55
  return undefined;
49
56
  var key = typeof sortField === 'number'
50
57
  ? Object.keys(columns)[sortField]
51
58
  : sortField;
52
59
  return key !== undefined ? columns[key] : undefined;
53
- }
54
- function sortData(data, sortField, sortOrder) {
55
- var columnDef = getColumnDef(sortField);
60
+ };
61
+ KTDataTableSortHandler.prototype.sortData = function (data, sortField, sortOrder) {
62
+ var columnDef = this._getColumnDef(sortField);
56
63
  var sortValueFn = columnDef === null || columnDef === void 0 ? void 0 : columnDef.sortValue;
57
64
  var useNumeric = !sortValueFn && (columnDef === null || columnDef === void 0 ? void 0 : columnDef.sortType) === 'numeric';
65
+ // Pre-strip HTML from cell values once (instead of on every comparison).
66
+ // For N rows this runs N regex replacements instead of N*log(N).
67
+ var strippedCache = new Map();
68
+ if (!sortValueFn) {
69
+ for (var _i = 0, data_1 = data; _i < data_1.length; _i++) {
70
+ var item = data_1[_i];
71
+ strippedCache.set(item, stripHtml(item[sortField]));
72
+ }
73
+ }
58
74
  return data.sort(function (a, b) {
75
+ var _a, _b, _c, _d;
59
76
  var aRaw = a[sortField];
60
77
  var bRaw = b[sortField];
61
78
  if (typeof sortValueFn === 'function') {
62
79
  var aVal = sortValueFn(aRaw, a);
63
80
  var bVal = sortValueFn(bRaw, b);
64
- var aNum = typeof aVal === 'number' ? aVal : parseNumeric(aVal);
65
- var bNum = typeof bVal === 'number' ? bVal : parseNumeric(bVal);
81
+ var aNum = typeof aVal === 'number'
82
+ ? aVal
83
+ : KTDataTableSortHandler._parseNumeric(aVal);
84
+ var bNum = typeof bVal === 'number'
85
+ ? bVal
86
+ : KTDataTableSortHandler._parseNumeric(bVal);
66
87
  if (typeof aVal === 'number' && typeof bVal === 'number') {
67
- return compareNumeric(aNum, bNum, sortOrder);
88
+ return KTDataTableSortHandler._compareNumeric(aNum, bNum, sortOrder);
68
89
  }
69
- return compareValues(aVal, bVal, sortOrder);
90
+ return KTDataTableSortHandler._compareValues(aVal, bVal, sortOrder);
70
91
  }
71
92
  if (useNumeric) {
72
- var aNum = parseNumeric(aRaw);
73
- var bNum = parseNumeric(bRaw);
74
- return compareNumeric(aNum, bNum, sortOrder);
93
+ var aNum = KTDataTableSortHandler._parseNumeric((_a = strippedCache.get(a)) !== null && _a !== void 0 ? _a : aRaw);
94
+ var bNum = KTDataTableSortHandler._parseNumeric((_b = strippedCache.get(b)) !== null && _b !== void 0 ? _b : bRaw);
95
+ return KTDataTableSortHandler._compareNumeric(aNum, bNum, sortOrder);
75
96
  }
76
- return compareValues(aRaw, bRaw, sortOrder);
97
+ return KTDataTableSortHandler._compareValues((_c = strippedCache.get(a)) !== null && _c !== void 0 ? _c : aRaw, (_d = strippedCache.get(b)) !== null && _d !== void 0 ? _d : bRaw, sortOrder);
77
98
  });
78
- }
79
- function toggleSortOrder(currentField, currentOrder, newField) {
99
+ };
100
+ KTDataTableSortHandler.prototype.toggleSortOrder = function (currentField, currentOrder, newField) {
80
101
  if (currentField === newField) {
81
102
  switch (currentOrder) {
82
103
  case 'asc':
@@ -88,17 +109,16 @@ export function createSortHandler(config, theadElement, getState, setState, fire
88
109
  }
89
110
  }
90
111
  return 'asc';
91
- }
92
- function setSortIcon(sortField, sortOrder) {
112
+ };
113
+ KTDataTableSortHandler.prototype.setSortIcon = function (sortField, sortOrder) {
93
114
  var _a, _b, _c, _d, _e, _f;
94
- var baseClass = ((_b = (_a = config.sort) === null || _a === void 0 ? void 0 : _a.classes) === null || _b === void 0 ? void 0 : _b.base) || '';
115
+ var baseClass = ((_b = (_a = this._config.sort) === null || _a === void 0 ? void 0 : _a.classes) === null || _b === void 0 ? void 0 : _b.base) || '';
95
116
  var sortClass = sortOrder
96
117
  ? sortOrder === 'asc'
97
- ? ((_d = (_c = config.sort) === null || _c === void 0 ? void 0 : _c.classes) === null || _d === void 0 ? void 0 : _d.asc) || ''
98
- : ((_f = (_e = config.sort) === null || _e === void 0 ? void 0 : _e.classes) === null || _f === void 0 ? void 0 : _f.desc) || ''
118
+ ? ((_d = (_c = this._config.sort) === null || _c === void 0 ? void 0 : _c.classes) === null || _d === void 0 ? void 0 : _d.asc) || ''
119
+ : ((_f = (_e = this._config.sort) === null || _e === void 0 ? void 0 : _e.classes) === null || _f === void 0 ? void 0 : _f.desc) || ''
99
120
  : '';
100
- // Clear all headers: remove sort state so only the active column shows highlighted arrow
101
- var allTh = theadElement.querySelectorAll('th');
121
+ var allTh = this._theadElement.querySelectorAll('th');
102
122
  allTh.forEach(function (header) {
103
123
  var el = header;
104
124
  el.setAttribute('aria-sort', 'none');
@@ -107,10 +127,9 @@ export function createSortHandler(config, theadElement, getState, setState, fire
107
127
  sortElement.className = baseClass;
108
128
  }
109
129
  });
110
- // Apply sort state to the active column so table.css [aria-sort='asc'] / [aria-sort='desc'] can highlight the arrow
111
130
  var th = typeof sortField === 'number'
112
131
  ? allTh[sortField]
113
- : theadElement.querySelector("th[data-kt-datatable-column=\"".concat(String(sortField), "\"], th[data-kt-datatable-column-sort=\"").concat(String(sortField), "\"]"));
132
+ : this._theadElement.querySelector("th[data-kt-datatable-column=\"".concat(String(sortField), "\"], th[data-kt-datatable-column-sort=\"").concat(String(sortField), "\"]"));
114
133
  if (th) {
115
134
  var sortElement = th.querySelector(".".concat(baseClass));
116
135
  if (sortElement) {
@@ -123,20 +142,23 @@ export function createSortHandler(config, theadElement, getState, setState, fire
123
142
  th.setAttribute('aria-sort', 'none');
124
143
  }
125
144
  }
126
- }
127
- function initSort() {
128
- if (!theadElement)
145
+ };
146
+ KTDataTableSortHandler.prototype.initSort = function () {
147
+ var _this = this;
148
+ if (!this._theadElement)
129
149
  return;
130
- // Set the initial sort icon
131
- setSortIcon(getState().sortField, getState().sortOrder);
132
- // Get all the table headers
133
- var headers = Array.from(theadElement.querySelectorAll('th'));
150
+ // Abort previous sort listeners before attaching new ones
151
+ if (this._sortAbortController) {
152
+ this._sortAbortController.abort();
153
+ }
154
+ this._sortAbortController = new AbortController();
155
+ var signal = this._sortAbortController.signal;
156
+ this.setSortIcon(this._getState().sortField, this._getState().sortOrder);
157
+ var headers = Array.from(this._theadElement.querySelectorAll('th'));
134
158
  headers.forEach(function (header) {
135
159
  var _a, _b;
136
- // If the sort class is not found, it's not a sortable column
137
- if (!header.querySelector(".".concat((_b = (_a = config.sort) === null || _a === void 0 ? void 0 : _a.classes) === null || _b === void 0 ? void 0 : _b.base)))
160
+ if (!header.querySelector(".".concat((_b = (_a = _this._config.sort) === null || _a === void 0 ? void 0 : _a.classes) === null || _b === void 0 ? void 0 : _b.base)))
138
161
  return;
139
- // Check if sorting is disabled for this column
140
162
  var sortDisabled = header.getAttribute('data-kt-datatable-column-sort') === 'false';
141
163
  if (sortDisabled)
142
164
  return;
@@ -146,16 +168,22 @@ export function createSortHandler(config, theadElement, getState, setState, fire
146
168
  ? sortAttribute
147
169
  : header.cellIndex;
148
170
  header.addEventListener('click', function () {
149
- var state = getState();
150
- var sortOrder = toggleSortOrder(state.sortField, state.sortOrder, sortField);
151
- setSortIcon(sortField, sortOrder);
152
- setState(sortField, sortOrder);
153
- fireEvent('sort', { field: sortField, order: sortOrder });
154
- dispatchEvent('sort', { field: sortField, order: sortOrder });
155
- updateData();
156
- });
171
+ var state = _this._getState();
172
+ var sortOrder = _this.toggleSortOrder(state.sortField, state.sortOrder, sortField);
173
+ _this.setSortIcon(sortField, sortOrder);
174
+ _this._setState(sortField, sortOrder);
175
+ _this._emit('sort', { field: sortField, order: sortOrder });
176
+ _this._updateData();
177
+ }, { signal: signal });
157
178
  });
158
- }
159
- return { initSort: initSort, sortData: sortData, toggleSortOrder: toggleSortOrder, setSortIcon: setSortIcon };
160
- }
179
+ };
180
+ KTDataTableSortHandler.prototype.dispose = function () {
181
+ if (this._sortAbortController) {
182
+ this._sortAbortController.abort();
183
+ this._sortAbortController = null;
184
+ }
185
+ };
186
+ return KTDataTableSortHandler;
187
+ }());
188
+ export { KTDataTableSortHandler };
161
189
  //# sourceMappingURL=datatable-sort.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"datatable-sort.js","sourceRoot":"","sources":["../../../../src/components/datatable/datatable-sort.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"datatable-sort.js","sourceRoot":"","sources":["../../../../src/components/datatable/datatable-sort.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * KTUI - Free & Open-Source Tailwind UI Components by Keenthemes
3
+ * Copyright 2025 by Keenthemes Inc
4
+ */
5
+ export interface KTDataTableSpinner {
6
+ show(root: HTMLElement | null, config: {
7
+ attributes?: {
8
+ spinner?: string;
9
+ };
10
+ loadingClass?: string;
11
+ loading?: {
12
+ template: string;
13
+ content: string;
14
+ };
15
+ }, tableElement: HTMLTableElement): void;
16
+ hide(root: HTMLElement | null, config: {
17
+ attributes?: {
18
+ spinner?: string;
19
+ };
20
+ loadingClass?: string;
21
+ }): void;
22
+ remove(root: HTMLElement | null, config: {
23
+ attributes?: {
24
+ spinner?: string;
25
+ };
26
+ loadingClass?: string;
27
+ }): void;
28
+ }
29
+ export declare function createSpinner(): KTDataTableSpinner;
30
+ //# sourceMappingURL=datatable-spinner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datatable-spinner.d.ts","sourceRoot":"","sources":["../../../../src/components/datatable/datatable-spinner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,kBAAkB;IAClC,IAAI,CACH,IAAI,EAAE,WAAW,GAAG,IAAI,EACxB,MAAM,EAAE;QACP,UAAU,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAClC,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,OAAO,CAAC,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;KAChD,EACD,YAAY,EAAE,gBAAgB,GAC5B,IAAI,CAAC;IACR,IAAI,CACH,IAAI,EAAE,WAAW,GAAG,IAAI,EACxB,MAAM,EAAE;QACP,UAAU,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAClC,YAAY,CAAC,EAAE,MAAM,CAAC;KACtB,GACC,IAAI,CAAC;IACR,MAAM,CACL,IAAI,EAAE,WAAW,GAAG,IAAI,EACxB,MAAM,EAAE;QACP,UAAU,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAClC,YAAY,CAAC,EAAE,MAAM,CAAC;KACtB,GACC,IAAI,CAAC;CACR;AAED,wBAAgB,aAAa,IAAI,kBAAkB,CAuElD"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * KTUI - Free & Open-Source Tailwind UI Components by Keenthemes
3
+ * Copyright 2025 by Keenthemes Inc
4
+ */
5
+ export function createSpinner() {
6
+ function findSpinner(root, spinnerSel) {
7
+ return root && spinnerSel
8
+ ? root.querySelector(spinnerSel)
9
+ : null;
10
+ }
11
+ function createSpinnerElement(tableElement, loading) {
12
+ var template = document.createElement('template');
13
+ template.innerHTML = loading.template
14
+ .trim()
15
+ .replace('{content}', loading.content);
16
+ var first = template.content.firstChild;
17
+ if (!first || !(first instanceof HTMLElement))
18
+ return null;
19
+ var spinner = first;
20
+ spinner.setAttribute('data-kt-datatable-spinner', 'true');
21
+ tableElement.appendChild(spinner);
22
+ return spinner;
23
+ }
24
+ function show(root, config, tableElement) {
25
+ var _a, _b;
26
+ var spinnerSel = (_a = config.attributes) === null || _a === void 0 ? void 0 : _a.spinner;
27
+ var fromDom = findSpinner(root, spinnerSel);
28
+ var spinner = fromDom !== null && fromDom !== void 0 ? fromDom : (config.loading
29
+ ? createSpinnerElement(tableElement, config.loading)
30
+ : null);
31
+ if (spinner)
32
+ spinner.style.display = 'block';
33
+ root === null || root === void 0 ? void 0 : root.classList.add((_b = config.loadingClass) !== null && _b !== void 0 ? _b : 'loading');
34
+ }
35
+ function hide(root, config) {
36
+ var _a, _b;
37
+ var spinner = findSpinner(root, (_a = config.attributes) === null || _a === void 0 ? void 0 : _a.spinner);
38
+ if (spinner)
39
+ spinner.style.display = 'none';
40
+ root === null || root === void 0 ? void 0 : root.classList.remove((_b = config.loadingClass) !== null && _b !== void 0 ? _b : 'loading');
41
+ }
42
+ function remove(root, config) {
43
+ var _a, _b;
44
+ var spinner = findSpinner(root, (_a = config.attributes) === null || _a === void 0 ? void 0 : _a.spinner);
45
+ if (spinner === null || spinner === void 0 ? void 0 : spinner.parentNode)
46
+ spinner.parentNode.removeChild(spinner);
47
+ root === null || root === void 0 ? void 0 : root.classList.remove((_b = config.loadingClass) !== null && _b !== void 0 ? _b : 'loading');
48
+ }
49
+ return { show: show, hide: hide, remove: remove };
50
+ }
51
+ //# sourceMappingURL=datatable-spinner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datatable-spinner.js","sourceRoot":"","sources":["../../../../src/components/datatable/datatable-spinner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA4BH,MAAM,UAAU,aAAa;IAC5B,SAAS,WAAW,CACnB,IAAwB,EACxB,UAA8B;QAE9B,OAAO,IAAI,IAAI,UAAU;YACxB,CAAC,CAAC,IAAI,CAAC,aAAa,CAAc,UAAU,CAAC;YAC7C,CAAC,CAAC,IAAI,CAAC;IACT,CAAC;IAED,SAAS,oBAAoB,CAC5B,YAA8B,EAC9B,OAA8C;QAE9C,IAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACpD,QAAQ,CAAC,SAAS,GAAG,OAAO,CAAC,QAAQ;aACnC,IAAI,EAAE;aACN,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACxC,IAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC;QAC1C,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,YAAY,WAAW,CAAC;YAAE,OAAO,IAAI,CAAC;QAC3D,IAAM,OAAO,GAAG,KAAK,CAAC;QACtB,OAAO,CAAC,YAAY,CAAC,2BAA2B,EAAE,MAAM,CAAC,CAAC;QAC1D,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAClC,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,SAAS,IAAI,CACZ,IAAwB,EACxB,MAIC,EACD,YAA8B;;QAE9B,IAAM,UAAU,GAAG,MAAA,MAAM,CAAC,UAAU,0CAAE,OAAO,CAAC;QAC9C,IAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC9C,IAAM,OAAO,GACZ,OAAO,aAAP,OAAO,cAAP,OAAO,GACP,CAAC,MAAM,CAAC,OAAO;YACd,CAAC,CAAC,oBAAoB,CAAC,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC;YACpD,CAAC,CAAC,IAAI,CAAC,CAAC;QACV,IAAI,OAAO;YAAE,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QAC7C,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,SAAS,CAAC,GAAG,CAAC,MAAA,MAAM,CAAC,YAAY,mCAAI,SAAS,CAAC,CAAC;IACvD,CAAC;IAED,SAAS,IAAI,CACZ,IAAwB,EACxB,MAGC;;QAED,IAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,MAAA,MAAM,CAAC,UAAU,0CAAE,OAAO,CAAC,CAAC;QAC9D,IAAI,OAAO;YAAE,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QAC5C,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,SAAS,CAAC,MAAM,CAAC,MAAA,MAAM,CAAC,YAAY,mCAAI,SAAS,CAAC,CAAC;IAC1D,CAAC;IAED,SAAS,MAAM,CACd,IAAwB,EACxB,MAGC;;QAED,IAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,MAAA,MAAM,CAAC,UAAU,0CAAE,OAAO,CAAC,CAAC;QAC9D,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU;YAAE,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACjE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,SAAS,CAAC,MAAM,CAAC,MAAA,MAAM,CAAC,YAAY,mCAAI,SAAS,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,EAAE,IAAI,MAAA,EAAE,IAAI,MAAA,EAAE,MAAM,QAAA,EAAE,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * KTUI - Free & Open-Source Tailwind UI Components by Keenthemes
3
+ * Copyright 2025 by Keenthemes Inc
4
+ */
5
+ import { KTDataTableStateInterface } from './types';
6
+ export interface KTDataTableStatePersistence {
7
+ save(namespace: string, state: KTDataTableStateInterface): void;
8
+ load(namespace: string): KTDataTableStateInterface | null;
9
+ remove(namespace: string): void;
10
+ }
11
+ export declare function createStatePersistence(): KTDataTableStatePersistence;
12
+ /**
13
+ * Resolve the namespace for a datatable state key.
14
+ * Priority: config.stateNamespace > table element ID > root element ID > fallback name.
15
+ */
16
+ export declare function resolveTableNamespace(config: {
17
+ stateNamespace?: string;
18
+ }, tableElement: HTMLTableElement | null, rootElement: HTMLElement | null, fallbackName: string): string;
19
+ //# sourceMappingURL=datatable-state-persistence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datatable-state-persistence.d.ts","sourceRoot":"","sources":["../../../../src/components/datatable/datatable-state-persistence.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAEpD,MAAM,WAAW,2BAA2B;IAC3C,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,yBAAyB,GAAG,IAAI,CAAC;IAChE,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,yBAAyB,GAAG,IAAI,CAAC;IAC1D,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,wBAAgB,sBAAsB,IAAI,2BAA2B,CAiCpE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACpC,MAAM,EAAE;IAAE,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,EACnC,YAAY,EAAE,gBAAgB,GAAG,IAAI,EACrC,WAAW,EAAE,WAAW,GAAG,IAAI,EAC/B,YAAY,EAAE,MAAM,GAClB,MAAM,CASR"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * KTUI - Free & Open-Source Tailwind UI Components by Keenthemes
3
+ * Copyright 2025 by Keenthemes Inc
4
+ */
5
+ export function createStatePersistence() {
6
+ function save(namespace, state) {
7
+ if (namespace) {
8
+ try {
9
+ localStorage.setItem(namespace, JSON.stringify(state));
10
+ }
11
+ catch (_a) {
12
+ // localStorage unavailable (e.g. Node.js without --localstorage-file)
13
+ }
14
+ }
15
+ }
16
+ function load(namespace) {
17
+ try {
18
+ var stateString = localStorage.getItem(namespace);
19
+ if (!stateString)
20
+ return null;
21
+ return JSON.parse(stateString);
22
+ }
23
+ catch (_a) {
24
+ return null;
25
+ }
26
+ }
27
+ function remove(namespace) {
28
+ if (namespace) {
29
+ try {
30
+ localStorage.removeItem(namespace);
31
+ }
32
+ catch (_a) {
33
+ // localStorage unavailable
34
+ }
35
+ }
36
+ }
37
+ return { save: save, load: load, remove: remove };
38
+ }
39
+ /**
40
+ * Resolve the namespace for a datatable state key.
41
+ * Priority: config.stateNamespace > table element ID > root element ID > fallback name.
42
+ */
43
+ export function resolveTableNamespace(config, tableElement, rootElement, fallbackName) {
44
+ if (config.stateNamespace) {
45
+ return config.stateNamespace;
46
+ }
47
+ var tableIdAttr = tableElement === null || tableElement === void 0 ? void 0 : tableElement.getAttribute('id');
48
+ if (tableIdAttr)
49
+ return tableIdAttr;
50
+ var rootIdAttr = rootElement === null || rootElement === void 0 ? void 0 : rootElement.getAttribute('id');
51
+ if (rootIdAttr)
52
+ return rootIdAttr;
53
+ return fallbackName;
54
+ }
55
+ //# sourceMappingURL=datatable-state-persistence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datatable-state-persistence.js","sourceRoot":"","sources":["../../../../src/components/datatable/datatable-state-persistence.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,MAAM,UAAU,sBAAsB;IACrC,SAAS,IAAI,CAAC,SAAiB,EAAE,KAAgC;QAChE,IAAI,SAAS,EAAE,CAAC;YACf,IAAI,CAAC;gBACJ,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;YACxD,CAAC;YAAC,WAAM,CAAC;gBACR,sEAAsE;YACvE,CAAC;QACF,CAAC;IACF,CAAC;IAED,SAAS,IAAI,CAAC,SAAiB;QAC9B,IAAI,CAAC;YACJ,IAAM,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACpD,IAAI,CAAC,WAAW;gBAAE,OAAO,IAAI,CAAC;YAE9B,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAA8B,CAAC;QAC7D,CAAC;QAAC,WAAM,CAAC;YACR,OAAO,IAAI,CAAC;QACb,CAAC;IACF,CAAC;IAED,SAAS,MAAM,CAAC,SAAiB;QAChC,IAAI,SAAS,EAAE,CAAC;YACf,IAAI,CAAC;gBACJ,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YACpC,CAAC;YAAC,WAAM,CAAC;gBACR,2BAA2B;YAC5B,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO,EAAE,IAAI,MAAA,EAAE,IAAI,MAAA,EAAE,MAAM,QAAA,EAAE,CAAC;AAC/B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACpC,MAAmC,EACnC,YAAqC,EACrC,WAA+B,EAC/B,YAAoB;IAEpB,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;QAC3B,OAAO,MAAM,CAAC,cAAc,CAAC;IAC9B,CAAC;IACD,IAAM,WAAW,GAAG,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IACrD,IAAI,WAAW;QAAE,OAAO,WAAW,CAAC;IACpC,IAAM,UAAU,GAAG,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,UAAU;QAAE,OAAO,UAAU,CAAC;IAClC,OAAO,YAAY,CAAC;AACrB,CAAC"}
@@ -7,6 +7,8 @@ import { KTDataTableTableRenderer, KTDataTableTableRendererInput } from './datat
7
7
  export declare class KTDataTableDomTableRenderer<T extends KTDataTableDataInterface> implements KTDataTableTableRenderer<T> {
8
8
  render(input: KTDataTableTableRendererInput<T>): HTMLTableSectionElement;
9
9
  notice(tableElement: HTMLTableElement, getLogicalColumnCount: () => number, message?: string): void;
10
+ private applyTableLayout;
11
+ private updateColgroup;
10
12
  private renderContent;
11
13
  private renderImplicitColumns;
12
14
  private renderConfiguredColumns;
@@ -1 +1 @@
1
- {"version":3,"file":"datatable-table-renderer.d.ts","sourceRoot":"","sources":["../../../../src/components/datatable/datatable-table-renderer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACN,wBAAwB,EAExB,MAAM,SAAS,CAAC;AACjB,OAAO,EACN,wBAAwB,EACxB,6BAA6B,EAC7B,MAAM,uBAAuB,CAAC;AAE/B,qBAAa,2BAA2B,CACvC,CAAC,SAAS,wBAAwB,CACjC,YAAW,wBAAwB,CAAC,CAAC,CAAC;IAChC,MAAM,CACZ,KAAK,EAAE,6BAA6B,CAAC,CAAC,CAAC,GACrC,uBAAuB;IAiBnB,MAAM,CACZ,YAAY,EAAE,gBAAgB,EAC9B,qBAAqB,EAAE,MAAM,MAAM,EACnC,OAAO,GAAE,MAAW,GAClB,IAAI;IAQP,OAAO,CAAC,aAAa;IAsDrB,OAAO,CAAC,qBAAqB;IAmC7B,OAAO,CAAC,uBAAuB;IAiD/B,OAAO,CAAC,oBAAoB;IAe5B,OAAO,CAAC,sBAAsB;CAW9B"}
1
+ {"version":3,"file":"datatable-table-renderer.d.ts","sourceRoot":"","sources":["../../../../src/components/datatable/datatable-table-renderer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACN,wBAAwB,EAExB,MAAM,SAAS,CAAC;AACjB,OAAO,EACN,wBAAwB,EACxB,6BAA6B,EAC7B,MAAM,uBAAuB,CAAC;AAG/B,qBAAa,2BAA2B,CACvC,CAAC,SAAS,wBAAwB,CACjC,YAAW,wBAAwB,CAAC,CAAC,CAAC;IAChC,MAAM,CACZ,KAAK,EAAE,6BAA6B,CAAC,CAAC,CAAC,GACrC,uBAAuB;IAmBnB,MAAM,CACZ,YAAY,EAAE,gBAAgB,EAC9B,qBAAqB,EAAE,MAAM,MAAM,EACnC,OAAO,GAAE,MAAW,GAClB,IAAI;IASP,OAAO,CAAC,gBAAgB;IAqBxB,OAAO,CAAC,cAAc;IAwCtB,OAAO,CAAC,aAAa;IA8CrB,OAAO,CAAC,qBAAqB;IAmC7B,OAAO,CAAC,uBAAuB;IAuD/B,OAAO,CAAC,oBAAoB;IAe5B,OAAO,CAAC,sBAAsB;CAW9B"}
@@ -2,6 +2,7 @@
2
2
  * KTUI - Free & Open-Source Tailwind UI Components by Keenthemes
3
3
  * Copyright 2025 by Keenthemes Inc
4
4
  */
5
+ import { resolveColumns } from './datatable-column-utils';
5
6
  var KTDataTableDomTableRenderer = /** @class */ (function () {
6
7
  function KTDataTableDomTableRenderer() {
7
8
  }
@@ -10,9 +11,10 @@ var KTDataTableDomTableRenderer = /** @class */ (function () {
10
11
  input.tableElement.removeChild(input.tableElement.tBodies[0]);
11
12
  }
12
13
  var tbodyElement = input.tableElement.createTBody();
13
- if (input.originalTbodyClass) {
14
- tbodyElement.className = input.originalTbodyClass;
14
+ if (input.originalClasses.tbody) {
15
+ tbodyElement.className = input.originalClasses.tbody;
15
16
  }
17
+ this.applyTableLayout(input);
16
18
  this.renderContent(input, tbodyElement);
17
19
  return tbodyElement;
18
20
  };
@@ -22,8 +24,64 @@ var KTDataTableDomTableRenderer = /** @class */ (function () {
22
24
  var cell = row.insertCell();
23
25
  var logicalCount = getLogicalColumnCount();
24
26
  cell.colSpan = logicalCount > 0 ? logicalCount : 1;
27
+ cell.style.textAlign = 'center';
25
28
  cell.innerHTML = message;
26
29
  };
30
+ KTDataTableDomTableRenderer.prototype.applyTableLayout = function (input) {
31
+ var tableLayout = input.config.tableLayout || 'auto';
32
+ var tableElement = input.tableElement;
33
+ tableElement.style.tableLayout = tableLayout;
34
+ if (tableLayout === 'fixed') {
35
+ if (!tableElement.style.width) {
36
+ tableElement.style.width = '100%';
37
+ }
38
+ this.updateColgroup(input);
39
+ }
40
+ else {
41
+ var existingColgroup = tableElement.querySelector('colgroup');
42
+ if (existingColgroup) {
43
+ tableElement.removeChild(existingColgroup);
44
+ }
45
+ }
46
+ };
47
+ KTDataTableDomTableRenderer.prototype.updateColgroup = function (input) {
48
+ var tableElement = input.tableElement;
49
+ var existingColgroup = tableElement.querySelector('colgroup');
50
+ if (existingColgroup) {
51
+ tableElement.removeChild(existingColgroup);
52
+ }
53
+ var colgroup = document.createElement('colgroup');
54
+ if (input.config.columns) {
55
+ var columns = input.config.columns;
56
+ for (var _i = 0, _a = Object.keys(columns); _i < _a.length; _i++) {
57
+ var key = _a[_i];
58
+ var col = document.createElement('col');
59
+ if (columns[key].width) {
60
+ col.style.width = columns[key].width;
61
+ }
62
+ colgroup.appendChild(col);
63
+ }
64
+ }
65
+ else {
66
+ var columnsByIndex = resolveColumns(input.theadElement).columnsByIndex;
67
+ for (var _b = 0, columnsByIndex_1 = columnsByIndex; _b < columnsByIndex_1.length; _b++) {
68
+ var th = columnsByIndex_1[_b];
69
+ var col = document.createElement('col');
70
+ var width = th.getAttribute('data-kt-datatable-column-width');
71
+ if (width) {
72
+ col.style.width = width;
73
+ }
74
+ colgroup.appendChild(col);
75
+ }
76
+ }
77
+ var thead = tableElement.querySelector('thead');
78
+ if (thead) {
79
+ tableElement.insertBefore(colgroup, thead);
80
+ }
81
+ else {
82
+ tableElement.appendChild(colgroup);
83
+ }
84
+ };
27
85
  KTDataTableDomTableRenderer.prototype.renderContent = function (input, tbodyElement) {
28
86
  var _this = this;
29
87
  var fragment = document.createDocumentFragment();
@@ -32,20 +90,14 @@ var KTDataTableDomTableRenderer = /** @class */ (function () {
32
90
  this.notice(input.tableElement, input.getLogicalColumnCount, input.config.infoEmpty || '');
33
91
  return tbodyElement;
34
92
  }
35
- var allThs = input.theadElement
36
- ? input.theadElement.querySelectorAll('th')
37
- : [];
38
- var ths = Array.from(allThs).filter(function (th) {
39
- return th.hasAttribute('data-kt-datatable-column');
40
- });
41
- var columnsToRender = ths.length > 0 && ths.length !== allThs.length ? Array.from(allThs) : ths;
93
+ var columnsToRender = resolveColumns(input.theadElement).columnsByIndex;
42
94
  var logicalColumnCount = columnsToRender.length > 0
43
95
  ? columnsToRender.length
44
96
  : input.getLogicalColumnCount();
45
97
  input.data.forEach(function (item, rowIndex) {
46
98
  var row = document.createElement('tr');
47
- if (input.originalTrClasses && input.originalTrClasses[rowIndex]) {
48
- row.className = input.originalTrClasses[rowIndex];
99
+ if (input.originalClasses.tr && input.originalClasses.tr[rowIndex]) {
100
+ row.className = input.originalClasses.tr[rowIndex];
49
101
  }
50
102
  if (!input.config.columns) {
51
103
  _this.renderImplicitColumns(input, row, item, rowIndex, {
@@ -110,7 +162,14 @@ var KTDataTableDomTableRenderer = /** @class */ (function () {
110
162
  }
111
163
  }
112
164
  else {
113
- td.textContent = item[colKey];
165
+ var cellValue = item[colKey];
166
+ if (cellValue === null || cellValue === undefined) {
167
+ td.textContent = '';
168
+ }
169
+ else {
170
+ // Match implicit column rendering: preserve HTML from DOM extraction.
171
+ td.innerHTML = String(cellValue);
172
+ }
114
173
  }
115
174
  if (typeof columnDef.createdCell === 'function') {
116
175
  columnDef.createdCell.call(input.context, td, item[colKey], item, row);
@@ -119,10 +178,10 @@ var KTDataTableDomTableRenderer = /** @class */ (function () {
119
178
  });
120
179
  };
121
180
  KTDataTableDomTableRenderer.prototype.applyOriginalTdClass = function (input, td, rowIndex, colIndex) {
122
- if (input.originalTdClasses &&
123
- input.originalTdClasses[rowIndex] &&
124
- input.originalTdClasses[rowIndex][colIndex]) {
125
- td.className = input.originalTdClasses[rowIndex][colIndex];
181
+ if (input.originalClasses.td &&
182
+ input.originalClasses.td[rowIndex] &&
183
+ input.originalClasses.td[rowIndex][colIndex]) {
184
+ td.className = input.originalClasses.td[rowIndex][colIndex];
126
185
  }
127
186
  };
128
187
  KTDataTableDomTableRenderer.prototype.applyDataRowAttributes = function (td, dataRowAttributes, colIndex) {