@multiplatform.one/table 6.1.0 → 6.3.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 (1104) hide show
  1. package/README.md +125 -65
  2. package/dist/cjs/components/ChildTable/index.cjs +44 -9
  3. package/dist/cjs/components/ChildTable/index.native.js +56 -13
  4. package/dist/cjs/components/ChildTable/index.native.js.map +1 -1
  5. package/dist/cjs/components/ColumnHeaderFilter/index.cjs +27 -110
  6. package/dist/cjs/components/ColumnHeaderFilter/index.native.js +27 -119
  7. package/dist/cjs/components/ColumnHeaderFilter/index.native.js.map +1 -1
  8. package/dist/cjs/components/DataTable/DataTableCardControls.cjs +133 -0
  9. package/dist/cjs/components/DataTable/DataTableCardControls.native.js +140 -0
  10. package/dist/cjs/components/DataTable/DataTableCardControls.native.js.map +1 -0
  11. package/dist/cjs/components/DataTable/DataTableMobileCards.cjs +125 -59
  12. package/dist/cjs/components/DataTable/DataTableMobileCards.native.js +114 -49
  13. package/dist/cjs/components/DataTable/DataTableMobileCards.native.js.map +1 -1
  14. package/dist/cjs/components/DataTable/DataTableRoot.cjs +574 -170
  15. package/dist/cjs/components/DataTable/DataTableRoot.native.js +699 -178
  16. package/dist/cjs/components/DataTable/DataTableRoot.native.js.map +1 -1
  17. package/dist/cjs/components/DataTable/DataTableStateContext.native.js.map +1 -1
  18. package/dist/cjs/components/DataTable/DataTableVirtualized.cjs +78 -3
  19. package/dist/cjs/components/DataTable/DataTableVirtualized.native.js +86 -3
  20. package/dist/cjs/components/DataTable/DataTableVirtualized.native.js.map +1 -1
  21. package/dist/cjs/components/DataTable/index.cjs +2 -0
  22. package/dist/cjs/components/DataTable/index.native.js +170 -72
  23. package/dist/cjs/components/DataTable/index.native.js.map +1 -1
  24. package/dist/cjs/components/DataTableBulkActions/index.cjs +62 -146
  25. package/dist/cjs/components/DataTableBulkActions/index.native.js +77 -153
  26. package/dist/cjs/components/DataTableBulkActions/index.native.js.map +1 -1
  27. package/dist/cjs/components/DataTableCell/CellModalEditor.cjs +61 -8
  28. package/dist/cjs/components/DataTableCell/CellModalEditor.native.js +73 -66
  29. package/dist/cjs/components/DataTableCell/CellModalEditor.native.js.map +1 -1
  30. package/dist/cjs/components/DataTableCell/CellOptionsEditor.cjs +87 -0
  31. package/dist/cjs/components/DataTableCell/CellOptionsEditor.native.js +100 -0
  32. package/dist/cjs/components/DataTableCell/CellOptionsEditor.native.js.map +1 -0
  33. package/dist/cjs/components/DataTableCell/index.cjs +524 -147
  34. package/dist/cjs/components/DataTableCell/index.native.js +666 -210
  35. package/dist/cjs/components/DataTableCell/index.native.js.map +1 -1
  36. package/dist/cjs/components/DataTableColumnPinning/index.cjs +95 -24
  37. package/dist/cjs/components/DataTableColumnPinning/index.native.js +101 -25
  38. package/dist/cjs/components/DataTableColumnPinning/index.native.js.map +1 -1
  39. package/dist/cjs/components/DataTableDateFilter/index.cjs +385 -197
  40. package/dist/cjs/components/DataTableDateFilter/index.native.js +414 -213
  41. package/dist/cjs/components/DataTableDateFilter/index.native.js.map +1 -1
  42. package/dist/cjs/components/DataTableExport/index.cjs +223 -195
  43. package/dist/cjs/components/DataTableExport/index.native.js +318 -217
  44. package/dist/cjs/components/DataTableExport/index.native.js.map +1 -1
  45. package/dist/cjs/components/DataTableFilterButton/index.cjs +349 -0
  46. package/dist/cjs/components/DataTableFilterButton/index.native.js +402 -0
  47. package/dist/cjs/components/DataTableFilterButton/index.native.js.map +1 -0
  48. package/dist/cjs/components/DataTableFilterChips/index.cjs +120 -0
  49. package/dist/cjs/components/DataTableFilterChips/index.native.js +187 -0
  50. package/dist/cjs/components/DataTableFilterChips/index.native.js.map +1 -0
  51. package/dist/cjs/components/DataTableFilters/index.cjs +36 -31
  52. package/dist/cjs/components/DataTableFilters/index.native.js +36 -31
  53. package/dist/cjs/components/DataTableFilters/index.native.js.map +1 -1
  54. package/dist/cjs/components/DataTableGrouping/index.cjs +246 -189
  55. package/dist/cjs/components/DataTableGrouping/index.native.js +283 -203
  56. package/dist/cjs/components/DataTableGrouping/index.native.js.map +1 -1
  57. package/dist/cjs/components/DataTablePagination/index.cjs +103 -329
  58. package/dist/cjs/components/DataTablePagination/index.native.js +115 -377
  59. package/dist/cjs/components/DataTablePagination/index.native.js.map +1 -1
  60. package/dist/cjs/components/DataTableSearch/index.cjs +132 -155
  61. package/dist/cjs/components/DataTableSearch/index.native.js +164 -170
  62. package/dist/cjs/components/DataTableSearch/index.native.js.map +1 -1
  63. package/dist/cjs/components/DataTableToolbar/index.cjs +71 -116
  64. package/dist/cjs/components/DataTableToolbar/index.native.js +98 -123
  65. package/dist/cjs/components/DataTableToolbar/index.native.js.map +1 -1
  66. package/dist/cjs/components/DataTableViewOptions/index.cjs +73 -169
  67. package/dist/cjs/components/DataTableViewOptions/index.native.js +88 -184
  68. package/dist/cjs/components/DataTableViewOptions/index.native.js.map +1 -1
  69. package/dist/cjs/components/FilterManager.cjs +7 -5
  70. package/dist/cjs/components/FilterManager.native.js +21 -8
  71. package/dist/cjs/components/FilterManager.native.js.map +1 -1
  72. package/dist/cjs/components/FilterOperatorValueEditor/index.cjs +109 -0
  73. package/dist/cjs/components/FilterOperatorValueEditor/index.native.js +121 -0
  74. package/dist/cjs/components/FilterOperatorValueEditor/index.native.js.map +1 -0
  75. package/dist/cjs/components/SavedFilterDropdown.cjs +3 -3
  76. package/dist/cjs/components/SavedFilterDropdown.native.js +3 -3
  77. package/dist/cjs/components/SavedFilterDropdown.native.js.map +1 -1
  78. package/dist/cjs/components/SimpleTable/index.cjs +22 -15
  79. package/dist/cjs/components/SimpleTable/index.native.js +31 -19
  80. package/dist/cjs/components/SimpleTable/index.native.js.map +1 -1
  81. package/dist/cjs/components/TableInput/index.cjs +149 -49
  82. package/dist/cjs/components/TableInput/index.native.js +181 -71
  83. package/dist/cjs/components/TableInput/index.native.js.map +1 -1
  84. package/dist/cjs/components/TableInput/shared.cjs +36 -0
  85. package/dist/cjs/components/TableInput/shared.native.js +41 -0
  86. package/dist/cjs/components/TableInput/shared.native.js.map +1 -0
  87. package/dist/cjs/hooks/useDataTable.cjs +114 -21
  88. package/dist/cjs/hooks/useDataTable.native.js +126 -25
  89. package/dist/cjs/hooks/useDataTable.native.js.map +1 -1
  90. package/dist/cjs/hooks/useInfiniteRows.cjs +193 -0
  91. package/dist/cjs/hooks/useInfiniteRows.native.js +203 -0
  92. package/dist/cjs/hooks/useInfiniteRows.native.js.map +1 -0
  93. package/dist/cjs/hooks/useTableFiltering.cjs +14 -18
  94. package/dist/cjs/hooks/useTableFiltering.native.js +17 -23
  95. package/dist/cjs/hooks/useTableFiltering.native.js.map +1 -1
  96. package/dist/cjs/hooks/useTablePagination.cjs +2 -2
  97. package/dist/cjs/hooks/useTablePagination.native.js +2 -2
  98. package/dist/cjs/hooks/useTablePagination.native.js.map +1 -1
  99. package/dist/cjs/index.cjs +26 -1
  100. package/dist/cjs/index.native.js +25 -0
  101. package/dist/cjs/index.native.js.map +1 -1
  102. package/dist/cjs/shared/t.cjs +50 -0
  103. package/dist/cjs/shared/t.native.js +55 -0
  104. package/dist/cjs/shared/t.native.js.map +1 -0
  105. package/dist/cjs/utils/columnAlign.cjs +60 -0
  106. package/dist/cjs/utils/columnAlign.native.js +67 -0
  107. package/dist/cjs/utils/columnAlign.native.js.map +1 -0
  108. package/dist/cjs/utils/filterFields.cjs +185 -0
  109. package/dist/cjs/utils/filterFields.native.js +247 -0
  110. package/dist/cjs/utils/filterFields.native.js.map +1 -0
  111. package/dist/cjs/utils/filterUtils.cjs +39 -20
  112. package/dist/cjs/utils/filterUtils.native.js +39 -20
  113. package/dist/cjs/utils/filterUtils.native.js.map +1 -1
  114. package/dist/cjs/utils/paginationDefaults.cjs +32 -0
  115. package/dist/cjs/utils/paginationDefaults.native.js +35 -0
  116. package/dist/cjs/utils/paginationDefaults.native.js.map +1 -0
  117. package/dist/cjs/utils/urlStateUtils.cjs +2 -1
  118. package/dist/cjs/utils/urlStateUtils.native.js +2 -1
  119. package/dist/cjs/utils/urlStateUtils.native.js.map +1 -1
  120. package/dist/cjs/utils/viewData.cjs +45 -0
  121. package/dist/cjs/utils/viewData.native.js +69 -0
  122. package/dist/cjs/utils/viewData.native.js.map +1 -0
  123. package/dist/cjs/utils/withInterp.cjs +39 -0
  124. package/dist/cjs/utils/withInterp.native.js +42 -0
  125. package/dist/cjs/utils/withInterp.native.js.map +1 -0
  126. package/dist/esm/components/ChildTable/index.mjs +45 -10
  127. package/dist/esm/components/ChildTable/index.mjs.map +1 -1
  128. package/dist/esm/components/ChildTable/index.native.js +57 -14
  129. package/dist/esm/components/ChildTable/index.native.js.map +1 -1
  130. package/dist/esm/components/ColumnHeaderFilter/index.mjs +29 -111
  131. package/dist/esm/components/ColumnHeaderFilter/index.mjs.map +1 -1
  132. package/dist/esm/components/ColumnHeaderFilter/index.native.js +30 -121
  133. package/dist/esm/components/ColumnHeaderFilter/index.native.js.map +1 -1
  134. package/dist/esm/components/DataTable/DataTableCardControls.mjs +108 -0
  135. package/dist/esm/components/DataTable/DataTableCardControls.mjs.map +1 -0
  136. package/dist/esm/components/DataTable/DataTableCardControls.native.js +112 -0
  137. package/dist/esm/components/DataTable/DataTableCardControls.native.js.map +1 -0
  138. package/dist/esm/components/DataTable/DataTableMobileCards.mjs +128 -62
  139. package/dist/esm/components/DataTable/DataTableMobileCards.mjs.map +1 -1
  140. package/dist/esm/components/DataTable/DataTableMobileCards.native.js +117 -52
  141. package/dist/esm/components/DataTable/DataTableMobileCards.native.js.map +1 -1
  142. package/dist/esm/components/DataTable/DataTableRoot.mjs +578 -174
  143. package/dist/esm/components/DataTable/DataTableRoot.mjs.map +1 -1
  144. package/dist/esm/components/DataTable/DataTableRoot.native.js +703 -182
  145. package/dist/esm/components/DataTable/DataTableRoot.native.js.map +1 -1
  146. package/dist/esm/components/DataTable/DataTableStateContext.mjs.map +1 -1
  147. package/dist/esm/components/DataTable/DataTableStateContext.native.js.map +1 -1
  148. package/dist/esm/components/DataTable/DataTableVirtualized.mjs +79 -4
  149. package/dist/esm/components/DataTable/DataTableVirtualized.mjs.map +1 -1
  150. package/dist/esm/components/DataTable/DataTableVirtualized.native.js +87 -4
  151. package/dist/esm/components/DataTable/DataTableVirtualized.native.js.map +1 -1
  152. package/dist/esm/components/DataTable/index.mjs +2 -0
  153. package/dist/esm/components/DataTable/index.mjs.map +1 -1
  154. package/dist/esm/components/DataTable/index.native.js +172 -74
  155. package/dist/esm/components/DataTable/index.native.js.map +1 -1
  156. package/dist/esm/components/DataTableBulkActions/index.mjs +65 -147
  157. package/dist/esm/components/DataTableBulkActions/index.mjs.map +1 -1
  158. package/dist/esm/components/DataTableBulkActions/index.native.js +80 -154
  159. package/dist/esm/components/DataTableBulkActions/index.native.js.map +1 -1
  160. package/dist/esm/components/DataTableCell/CellModalEditor.mjs +62 -9
  161. package/dist/esm/components/DataTableCell/CellModalEditor.mjs.map +1 -1
  162. package/dist/esm/components/DataTableCell/CellModalEditor.native.js +74 -67
  163. package/dist/esm/components/DataTableCell/CellModalEditor.native.js.map +1 -1
  164. package/dist/esm/components/DataTableCell/CellOptionsEditor.mjs +62 -0
  165. package/dist/esm/components/DataTableCell/CellOptionsEditor.mjs.map +1 -0
  166. package/dist/esm/components/DataTableCell/CellOptionsEditor.native.js +72 -0
  167. package/dist/esm/components/DataTableCell/CellOptionsEditor.native.js.map +1 -0
  168. package/dist/esm/components/DataTableCell/index.mjs +527 -149
  169. package/dist/esm/components/DataTableCell/index.mjs.map +1 -1
  170. package/dist/esm/components/DataTableCell/index.native.js +670 -213
  171. package/dist/esm/components/DataTableCell/index.native.js.map +1 -1
  172. package/dist/esm/components/DataTableColumnPinning/index.mjs +99 -28
  173. package/dist/esm/components/DataTableColumnPinning/index.mjs.map +1 -1
  174. package/dist/esm/components/DataTableColumnPinning/index.native.js +105 -29
  175. package/dist/esm/components/DataTableColumnPinning/index.native.js.map +1 -1
  176. package/dist/esm/components/DataTableDateFilter/index.mjs +387 -200
  177. package/dist/esm/components/DataTableDateFilter/index.mjs.map +1 -1
  178. package/dist/esm/components/DataTableDateFilter/index.native.js +416 -216
  179. package/dist/esm/components/DataTableDateFilter/index.native.js.map +1 -1
  180. package/dist/esm/components/DataTableExport/index.mjs +223 -195
  181. package/dist/esm/components/DataTableExport/index.mjs.map +1 -1
  182. package/dist/esm/components/DataTableExport/index.native.js +318 -217
  183. package/dist/esm/components/DataTableExport/index.native.js.map +1 -1
  184. package/dist/esm/components/DataTableFilterButton/index.mjs +324 -0
  185. package/dist/esm/components/DataTableFilterButton/index.mjs.map +1 -0
  186. package/dist/esm/components/DataTableFilterButton/index.native.js +374 -0
  187. package/dist/esm/components/DataTableFilterButton/index.native.js.map +1 -0
  188. package/dist/esm/components/DataTableFilterChips/index.mjs +95 -0
  189. package/dist/esm/components/DataTableFilterChips/index.mjs.map +1 -0
  190. package/dist/esm/components/DataTableFilterChips/index.native.js +159 -0
  191. package/dist/esm/components/DataTableFilterChips/index.native.js.map +1 -0
  192. package/dist/esm/components/DataTableFilters/index.mjs +36 -31
  193. package/dist/esm/components/DataTableFilters/index.mjs.map +1 -1
  194. package/dist/esm/components/DataTableFilters/index.native.js +36 -31
  195. package/dist/esm/components/DataTableFilters/index.native.js.map +1 -1
  196. package/dist/esm/components/DataTableGrouping/index.mjs +248 -191
  197. package/dist/esm/components/DataTableGrouping/index.mjs.map +1 -1
  198. package/dist/esm/components/DataTableGrouping/index.native.js +285 -205
  199. package/dist/esm/components/DataTableGrouping/index.native.js.map +1 -1
  200. package/dist/esm/components/DataTablePagination/index.mjs +105 -329
  201. package/dist/esm/components/DataTablePagination/index.mjs.map +1 -1
  202. package/dist/esm/components/DataTablePagination/index.native.js +117 -366
  203. package/dist/esm/components/DataTablePagination/index.native.js.map +1 -1
  204. package/dist/esm/components/DataTableSearch/index.mjs +135 -156
  205. package/dist/esm/components/DataTableSearch/index.mjs.map +1 -1
  206. package/dist/esm/components/DataTableSearch/index.native.js +167 -171
  207. package/dist/esm/components/DataTableSearch/index.native.js.map +1 -1
  208. package/dist/esm/components/DataTableToolbar/index.mjs +75 -118
  209. package/dist/esm/components/DataTableToolbar/index.mjs.map +1 -1
  210. package/dist/esm/components/DataTableToolbar/index.native.js +102 -125
  211. package/dist/esm/components/DataTableToolbar/index.native.js.map +1 -1
  212. package/dist/esm/components/DataTableViewOptions/index.mjs +75 -171
  213. package/dist/esm/components/DataTableViewOptions/index.mjs.map +1 -1
  214. package/dist/esm/components/DataTableViewOptions/index.native.js +90 -186
  215. package/dist/esm/components/DataTableViewOptions/index.native.js.map +1 -1
  216. package/dist/esm/components/FilterManager.mjs +7 -5
  217. package/dist/esm/components/FilterManager.mjs.map +1 -1
  218. package/dist/esm/components/FilterManager.native.js +21 -8
  219. package/dist/esm/components/FilterManager.native.js.map +1 -1
  220. package/dist/esm/components/FilterOperatorValueEditor/index.mjs +84 -0
  221. package/dist/esm/components/FilterOperatorValueEditor/index.mjs.map +1 -0
  222. package/dist/esm/components/FilterOperatorValueEditor/index.native.js +93 -0
  223. package/dist/esm/components/FilterOperatorValueEditor/index.native.js.map +1 -0
  224. package/dist/esm/components/SavedFilterDropdown.mjs +3 -3
  225. package/dist/esm/components/SavedFilterDropdown.mjs.map +1 -1
  226. package/dist/esm/components/SavedFilterDropdown.native.js +3 -3
  227. package/dist/esm/components/SavedFilterDropdown.native.js.map +1 -1
  228. package/dist/esm/components/SimpleTable/index.mjs +22 -15
  229. package/dist/esm/components/SimpleTable/index.mjs.map +1 -1
  230. package/dist/esm/components/SimpleTable/index.native.js +31 -19
  231. package/dist/esm/components/SimpleTable/index.native.js.map +1 -1
  232. package/dist/esm/components/TableInput/index.mjs +149 -49
  233. package/dist/esm/components/TableInput/index.mjs.map +1 -1
  234. package/dist/esm/components/TableInput/index.native.js +181 -71
  235. package/dist/esm/components/TableInput/index.native.js.map +1 -1
  236. package/dist/esm/components/TableInput/shared.mjs +9 -0
  237. package/dist/esm/components/TableInput/shared.mjs.map +1 -0
  238. package/dist/esm/components/TableInput/shared.native.js +11 -0
  239. package/dist/esm/components/TableInput/shared.native.js.map +1 -0
  240. package/dist/esm/hooks/useDataTable.mjs +115 -22
  241. package/dist/esm/hooks/useDataTable.mjs.map +1 -1
  242. package/dist/esm/hooks/useDataTable.native.js +127 -26
  243. package/dist/esm/hooks/useDataTable.native.js.map +1 -1
  244. package/dist/esm/hooks/useInfiniteRows.mjs +168 -0
  245. package/dist/esm/hooks/useInfiniteRows.mjs.map +1 -0
  246. package/dist/esm/hooks/useInfiniteRows.native.js +175 -0
  247. package/dist/esm/hooks/useInfiniteRows.native.js.map +1 -0
  248. package/dist/esm/hooks/useTableFiltering.mjs +14 -18
  249. package/dist/esm/hooks/useTableFiltering.mjs.map +1 -1
  250. package/dist/esm/hooks/useTableFiltering.native.js +17 -23
  251. package/dist/esm/hooks/useTableFiltering.native.js.map +1 -1
  252. package/dist/esm/hooks/useTablePagination.mjs +2 -2
  253. package/dist/esm/hooks/useTablePagination.mjs.map +1 -1
  254. package/dist/esm/hooks/useTablePagination.native.js +2 -2
  255. package/dist/esm/hooks/useTablePagination.native.js.map +1 -1
  256. package/dist/esm/index.mjs +8 -1
  257. package/dist/esm/index.mjs.map +1 -1
  258. package/dist/esm/index.native.js +8 -1
  259. package/dist/esm/index.native.js.map +1 -1
  260. package/dist/esm/shared/t.mjs +14 -0
  261. package/dist/esm/shared/t.mjs.map +1 -0
  262. package/dist/esm/shared/t.native.js +16 -0
  263. package/dist/esm/shared/t.native.js.map +1 -0
  264. package/dist/esm/utils/columnAlign.mjs +34 -0
  265. package/dist/esm/utils/columnAlign.mjs.map +1 -0
  266. package/dist/esm/utils/columnAlign.native.js +38 -0
  267. package/dist/esm/utils/columnAlign.native.js.map +1 -0
  268. package/dist/esm/utils/filterFields.mjs +149 -0
  269. package/dist/esm/utils/filterFields.mjs.map +1 -0
  270. package/dist/esm/utils/filterFields.native.js +208 -0
  271. package/dist/esm/utils/filterFields.native.js.map +1 -0
  272. package/dist/esm/utils/filterUtils.mjs +39 -20
  273. package/dist/esm/utils/filterUtils.mjs.map +1 -1
  274. package/dist/esm/utils/filterUtils.native.js +39 -20
  275. package/dist/esm/utils/filterUtils.native.js.map +1 -1
  276. package/dist/esm/utils/paginationDefaults.mjs +5 -0
  277. package/dist/esm/utils/paginationDefaults.mjs.map +1 -0
  278. package/dist/esm/utils/paginationDefaults.native.js +5 -0
  279. package/dist/esm/utils/paginationDefaults.native.js.map +1 -0
  280. package/dist/esm/utils/urlStateUtils.mjs +2 -1
  281. package/dist/esm/utils/urlStateUtils.mjs.map +1 -1
  282. package/dist/esm/utils/urlStateUtils.native.js +2 -1
  283. package/dist/esm/utils/urlStateUtils.native.js.map +1 -1
  284. package/dist/esm/utils/viewData.mjs +20 -0
  285. package/dist/esm/utils/viewData.mjs.map +1 -0
  286. package/dist/esm/utils/viewData.native.js +41 -0
  287. package/dist/esm/utils/viewData.native.js.map +1 -0
  288. package/dist/esm/utils/withInterp.mjs +13 -0
  289. package/dist/esm/utils/withInterp.mjs.map +1 -0
  290. package/dist/esm/utils/withInterp.native.js +13 -0
  291. package/dist/esm/utils/withInterp.native.js.map +1 -0
  292. package/dist/jsx/components/ChildTable/index.mjs +45 -10
  293. package/dist/jsx/components/ChildTable/index.mjs.map +1 -1
  294. package/dist/jsx/components/ChildTable/index.native.js +56 -13
  295. package/dist/jsx/components/ChildTable/index.native.js.map +1 -1
  296. package/dist/jsx/components/ColumnHeaderFilter/index.mjs +29 -111
  297. package/dist/jsx/components/ColumnHeaderFilter/index.mjs.map +1 -1
  298. package/dist/jsx/components/ColumnHeaderFilter/index.native.js +27 -119
  299. package/dist/jsx/components/ColumnHeaderFilter/index.native.js.map +1 -1
  300. package/dist/jsx/components/DataTable/DataTableCardControls.mjs +108 -0
  301. package/dist/jsx/components/DataTable/DataTableCardControls.mjs.map +1 -0
  302. package/dist/jsx/components/DataTable/DataTableCardControls.native.js +140 -0
  303. package/dist/jsx/components/DataTable/DataTableCardControls.native.js.map +1 -0
  304. package/dist/jsx/components/DataTable/DataTableMobileCards.mjs +128 -62
  305. package/dist/jsx/components/DataTable/DataTableMobileCards.mjs.map +1 -1
  306. package/dist/jsx/components/DataTable/DataTableMobileCards.native.js +114 -49
  307. package/dist/jsx/components/DataTable/DataTableMobileCards.native.js.map +1 -1
  308. package/dist/jsx/components/DataTable/DataTableRoot.mjs +578 -174
  309. package/dist/jsx/components/DataTable/DataTableRoot.mjs.map +1 -1
  310. package/dist/jsx/components/DataTable/DataTableRoot.native.js +699 -178
  311. package/dist/jsx/components/DataTable/DataTableRoot.native.js.map +1 -1
  312. package/dist/jsx/components/DataTable/DataTableStateContext.mjs.map +1 -1
  313. package/dist/jsx/components/DataTable/DataTableStateContext.native.js.map +1 -1
  314. package/dist/jsx/components/DataTable/DataTableVirtualized.mjs +79 -4
  315. package/dist/jsx/components/DataTable/DataTableVirtualized.mjs.map +1 -1
  316. package/dist/jsx/components/DataTable/DataTableVirtualized.native.js +86 -3
  317. package/dist/jsx/components/DataTable/DataTableVirtualized.native.js.map +1 -1
  318. package/dist/jsx/components/DataTable/index.mjs +2 -0
  319. package/dist/jsx/components/DataTable/index.mjs.map +1 -1
  320. package/dist/jsx/components/DataTable/index.native.js +170 -72
  321. package/dist/jsx/components/DataTable/index.native.js.map +1 -1
  322. package/dist/jsx/components/DataTableBulkActions/index.mjs +65 -147
  323. package/dist/jsx/components/DataTableBulkActions/index.mjs.map +1 -1
  324. package/dist/jsx/components/DataTableBulkActions/index.native.js +77 -153
  325. package/dist/jsx/components/DataTableBulkActions/index.native.js.map +1 -1
  326. package/dist/jsx/components/DataTableCell/CellModalEditor.mjs +62 -9
  327. package/dist/jsx/components/DataTableCell/CellModalEditor.mjs.map +1 -1
  328. package/dist/jsx/components/DataTableCell/CellModalEditor.native.js +73 -66
  329. package/dist/jsx/components/DataTableCell/CellModalEditor.native.js.map +1 -1
  330. package/dist/jsx/components/DataTableCell/CellOptionsEditor.mjs +62 -0
  331. package/dist/jsx/components/DataTableCell/CellOptionsEditor.mjs.map +1 -0
  332. package/dist/jsx/components/DataTableCell/CellOptionsEditor.native.js +100 -0
  333. package/dist/jsx/components/DataTableCell/CellOptionsEditor.native.js.map +1 -0
  334. package/dist/jsx/components/DataTableCell/index.mjs +527 -149
  335. package/dist/jsx/components/DataTableCell/index.mjs.map +1 -1
  336. package/dist/jsx/components/DataTableCell/index.native.js +666 -210
  337. package/dist/jsx/components/DataTableCell/index.native.js.map +1 -1
  338. package/dist/jsx/components/DataTableColumnPinning/index.mjs +99 -28
  339. package/dist/jsx/components/DataTableColumnPinning/index.mjs.map +1 -1
  340. package/dist/jsx/components/DataTableColumnPinning/index.native.js +101 -25
  341. package/dist/jsx/components/DataTableColumnPinning/index.native.js.map +1 -1
  342. package/dist/jsx/components/DataTableDateFilter/index.mjs +387 -200
  343. package/dist/jsx/components/DataTableDateFilter/index.mjs.map +1 -1
  344. package/dist/jsx/components/DataTableDateFilter/index.native.js +414 -213
  345. package/dist/jsx/components/DataTableDateFilter/index.native.js.map +1 -1
  346. package/dist/jsx/components/DataTableExport/index.mjs +223 -195
  347. package/dist/jsx/components/DataTableExport/index.mjs.map +1 -1
  348. package/dist/jsx/components/DataTableExport/index.native.js +318 -217
  349. package/dist/jsx/components/DataTableExport/index.native.js.map +1 -1
  350. package/dist/jsx/components/DataTableFilterButton/index.mjs +324 -0
  351. package/dist/jsx/components/DataTableFilterButton/index.mjs.map +1 -0
  352. package/dist/jsx/components/DataTableFilterButton/index.native.js +402 -0
  353. package/dist/jsx/components/DataTableFilterButton/index.native.js.map +1 -0
  354. package/dist/jsx/components/DataTableFilterChips/index.mjs +95 -0
  355. package/dist/jsx/components/DataTableFilterChips/index.mjs.map +1 -0
  356. package/dist/jsx/components/DataTableFilterChips/index.native.js +187 -0
  357. package/dist/jsx/components/DataTableFilterChips/index.native.js.map +1 -0
  358. package/dist/jsx/components/DataTableFilters/index.mjs +36 -31
  359. package/dist/jsx/components/DataTableFilters/index.mjs.map +1 -1
  360. package/dist/jsx/components/DataTableFilters/index.native.js +36 -31
  361. package/dist/jsx/components/DataTableFilters/index.native.js.map +1 -1
  362. package/dist/jsx/components/DataTableGrouping/index.mjs +248 -191
  363. package/dist/jsx/components/DataTableGrouping/index.mjs.map +1 -1
  364. package/dist/jsx/components/DataTableGrouping/index.native.js +283 -203
  365. package/dist/jsx/components/DataTableGrouping/index.native.js.map +1 -1
  366. package/dist/jsx/components/DataTablePagination/index.mjs +105 -329
  367. package/dist/jsx/components/DataTablePagination/index.mjs.map +1 -1
  368. package/dist/jsx/components/DataTablePagination/index.native.js +115 -377
  369. package/dist/jsx/components/DataTablePagination/index.native.js.map +1 -1
  370. package/dist/jsx/components/DataTableSearch/index.mjs +135 -156
  371. package/dist/jsx/components/DataTableSearch/index.mjs.map +1 -1
  372. package/dist/jsx/components/DataTableSearch/index.native.js +164 -170
  373. package/dist/jsx/components/DataTableSearch/index.native.js.map +1 -1
  374. package/dist/jsx/components/DataTableToolbar/index.mjs +75 -118
  375. package/dist/jsx/components/DataTableToolbar/index.mjs.map +1 -1
  376. package/dist/jsx/components/DataTableToolbar/index.native.js +98 -123
  377. package/dist/jsx/components/DataTableToolbar/index.native.js.map +1 -1
  378. package/dist/jsx/components/DataTableViewOptions/index.mjs +75 -171
  379. package/dist/jsx/components/DataTableViewOptions/index.mjs.map +1 -1
  380. package/dist/jsx/components/DataTableViewOptions/index.native.js +88 -184
  381. package/dist/jsx/components/DataTableViewOptions/index.native.js.map +1 -1
  382. package/dist/jsx/components/FilterManager.mjs +7 -5
  383. package/dist/jsx/components/FilterManager.mjs.map +1 -1
  384. package/dist/jsx/components/FilterManager.native.js +21 -8
  385. package/dist/jsx/components/FilterManager.native.js.map +1 -1
  386. package/dist/jsx/components/FilterOperatorValueEditor/index.mjs +84 -0
  387. package/dist/jsx/components/FilterOperatorValueEditor/index.mjs.map +1 -0
  388. package/dist/jsx/components/FilterOperatorValueEditor/index.native.js +121 -0
  389. package/dist/jsx/components/FilterOperatorValueEditor/index.native.js.map +1 -0
  390. package/dist/jsx/components/SavedFilterDropdown.mjs +3 -3
  391. package/dist/jsx/components/SavedFilterDropdown.mjs.map +1 -1
  392. package/dist/jsx/components/SavedFilterDropdown.native.js +3 -3
  393. package/dist/jsx/components/SavedFilterDropdown.native.js.map +1 -1
  394. package/dist/jsx/components/SimpleTable/index.mjs +22 -15
  395. package/dist/jsx/components/SimpleTable/index.mjs.map +1 -1
  396. package/dist/jsx/components/SimpleTable/index.native.js +31 -19
  397. package/dist/jsx/components/SimpleTable/index.native.js.map +1 -1
  398. package/dist/jsx/components/TableInput/index.mjs +149 -49
  399. package/dist/jsx/components/TableInput/index.mjs.map +1 -1
  400. package/dist/jsx/components/TableInput/index.native.js +181 -71
  401. package/dist/jsx/components/TableInput/index.native.js.map +1 -1
  402. package/dist/jsx/components/TableInput/shared.mjs +9 -0
  403. package/dist/jsx/components/TableInput/shared.mjs.map +1 -0
  404. package/dist/jsx/components/TableInput/shared.native.js +41 -0
  405. package/dist/jsx/components/TableInput/shared.native.js.map +1 -0
  406. package/dist/jsx/hooks/useDataTable.mjs +115 -22
  407. package/dist/jsx/hooks/useDataTable.mjs.map +1 -1
  408. package/dist/jsx/hooks/useDataTable.native.js +126 -25
  409. package/dist/jsx/hooks/useDataTable.native.js.map +1 -1
  410. package/dist/jsx/hooks/useInfiniteRows.mjs +168 -0
  411. package/dist/jsx/hooks/useInfiniteRows.mjs.map +1 -0
  412. package/dist/jsx/hooks/useInfiniteRows.native.js +203 -0
  413. package/dist/jsx/hooks/useInfiniteRows.native.js.map +1 -0
  414. package/dist/jsx/hooks/useTableFiltering.mjs +14 -18
  415. package/dist/jsx/hooks/useTableFiltering.mjs.map +1 -1
  416. package/dist/jsx/hooks/useTableFiltering.native.js +17 -23
  417. package/dist/jsx/hooks/useTableFiltering.native.js.map +1 -1
  418. package/dist/jsx/hooks/useTablePagination.mjs +2 -2
  419. package/dist/jsx/hooks/useTablePagination.mjs.map +1 -1
  420. package/dist/jsx/hooks/useTablePagination.native.js +2 -2
  421. package/dist/jsx/hooks/useTablePagination.native.js.map +1 -1
  422. package/dist/jsx/index.js +8 -1
  423. package/dist/jsx/index.js.map +1 -1
  424. package/dist/jsx/index.mjs +8 -1
  425. package/dist/jsx/index.mjs.map +1 -1
  426. package/dist/jsx/index.native.js +25 -0
  427. package/dist/jsx/index.native.js.map +1 -1
  428. package/dist/jsx/shared/t.mjs +14 -0
  429. package/dist/jsx/shared/t.mjs.map +1 -0
  430. package/dist/jsx/shared/t.native.js +55 -0
  431. package/dist/jsx/shared/t.native.js.map +1 -0
  432. package/dist/jsx/utils/columnAlign.mjs +34 -0
  433. package/dist/jsx/utils/columnAlign.mjs.map +1 -0
  434. package/dist/jsx/utils/columnAlign.native.js +67 -0
  435. package/dist/jsx/utils/columnAlign.native.js.map +1 -0
  436. package/dist/jsx/utils/filterFields.mjs +149 -0
  437. package/dist/jsx/utils/filterFields.mjs.map +1 -0
  438. package/dist/jsx/utils/filterFields.native.js +247 -0
  439. package/dist/jsx/utils/filterFields.native.js.map +1 -0
  440. package/dist/jsx/utils/filterUtils.mjs +39 -20
  441. package/dist/jsx/utils/filterUtils.mjs.map +1 -1
  442. package/dist/jsx/utils/filterUtils.native.js +39 -20
  443. package/dist/jsx/utils/filterUtils.native.js.map +1 -1
  444. package/dist/jsx/utils/paginationDefaults.mjs +5 -0
  445. package/dist/jsx/utils/paginationDefaults.mjs.map +1 -0
  446. package/dist/jsx/utils/paginationDefaults.native.js +35 -0
  447. package/dist/jsx/utils/paginationDefaults.native.js.map +1 -0
  448. package/dist/jsx/utils/urlStateUtils.mjs +2 -1
  449. package/dist/jsx/utils/urlStateUtils.mjs.map +1 -1
  450. package/dist/jsx/utils/urlStateUtils.native.js +2 -1
  451. package/dist/jsx/utils/urlStateUtils.native.js.map +1 -1
  452. package/dist/jsx/utils/viewData.mjs +20 -0
  453. package/dist/jsx/utils/viewData.mjs.map +1 -0
  454. package/dist/jsx/utils/viewData.native.js +69 -0
  455. package/dist/jsx/utils/viewData.native.js.map +1 -0
  456. package/dist/jsx/utils/withInterp.mjs +13 -0
  457. package/dist/jsx/utils/withInterp.mjs.map +1 -0
  458. package/dist/jsx/utils/withInterp.native.js +42 -0
  459. package/dist/jsx/utils/withInterp.native.js.map +1 -0
  460. package/package.json +29 -19
  461. package/src/components/ChildTable/index.tsx +70 -9
  462. package/src/components/ColumnHeaderFilter/index.tsx +43 -161
  463. package/src/components/DataTable/DataTable.spec.tsx +347 -0
  464. package/src/components/DataTable/DataTable.stories.tsx +363 -9
  465. package/src/components/DataTable/DataTableCardControls.tsx +148 -0
  466. package/src/components/DataTable/DataTableMobileCards.tsx +153 -80
  467. package/src/components/DataTable/DataTableRoot.tsx +847 -181
  468. package/src/components/DataTable/DataTableStateContext.ts +24 -1
  469. package/src/components/DataTable/DataTableVirtualized.tsx +98 -4
  470. package/src/components/DataTable/FieldsInCells.stories.tsx +296 -6
  471. package/src/components/DataTable/cardLayout.spec.tsx +294 -0
  472. package/src/components/DataTable/chromeInterplay.spec.tsx +282 -0
  473. package/src/components/DataTable/compoundComponent.spec.tsx +6 -1
  474. package/src/components/DataTable/disabledContract.spec.tsx +242 -0
  475. package/src/components/DataTable/expandCaretRtl.spec.tsx +80 -0
  476. package/src/components/DataTable/headerSorting.spec.tsx +155 -0
  477. package/src/components/DataTable/index.native.tsx +220 -77
  478. package/src/components/DataTable/index.tsx +2 -0
  479. package/src/components/DataTable/infiniteMode.spec.tsx +118 -0
  480. package/src/components/DataTable/pinningGeometry.spec.tsx +144 -0
  481. package/src/components/DataTable/rowActionLabels.spec.tsx +97 -0
  482. package/src/components/DataTable/virtualizedGrouping.spec.tsx +99 -0
  483. package/src/components/DataTableBulkActions/DataTableBulkActions.spec.tsx +276 -3
  484. package/src/components/DataTableBulkActions/DataTableBulkActions.stories.tsx +1 -0
  485. package/src/components/DataTableBulkActions/index.tsx +119 -184
  486. package/src/components/DataTableCell/CellModalEditor.native.tsx +116 -0
  487. package/src/components/DataTableCell/CellModalEditor.tsx +83 -11
  488. package/src/components/DataTableCell/CellOptionsEditor.tsx +91 -0
  489. package/src/components/DataTableCell/DataTableCell.stories.tsx +514 -9
  490. package/src/components/DataTableCell/cellDraftPolicy.spec.tsx +638 -0
  491. package/src/components/DataTableCell/dataTableCell.spec.tsx +174 -26
  492. package/src/components/DataTableCell/index.tsx +730 -191
  493. package/src/components/DataTableColumnPinning/DataTableColumnPinning.stories.tsx +14 -0
  494. package/src/components/DataTableColumnPinning/index.tsx +130 -36
  495. package/src/components/DataTableDateFilter/DataTableDateFilter.spec.tsx +234 -80
  496. package/src/components/DataTableDateFilter/DataTableDateFilter.stories.tsx +7 -32
  497. package/src/components/DataTableDateFilter/index.tsx +357 -160
  498. package/src/components/DataTableExport/DataTableExport.spec.tsx +225 -8
  499. package/src/components/DataTableExport/index.tsx +241 -186
  500. package/src/components/DataTableFilterButton/index.tsx +406 -0
  501. package/src/components/DataTableFilterChips/DataTableFilterChips.spec.tsx +190 -0
  502. package/src/components/DataTableFilterChips/index.tsx +127 -0
  503. package/src/components/DataTableFilters/index.tsx +39 -31
  504. package/src/components/DataTableGrouping/DataTableGrouping.spec.tsx +173 -1
  505. package/src/components/DataTableGrouping/index.tsx +233 -140
  506. package/src/components/DataTablePagination/DataTablePagination.spec.tsx +91 -12
  507. package/src/components/DataTablePagination/DataTablePagination.stories.tsx +182 -6
  508. package/src/components/DataTablePagination/index.tsx +97 -324
  509. package/src/components/DataTableSearch/DataTableSearch.spec.tsx +14 -14
  510. package/src/components/DataTableSearch/index.tsx +106 -118
  511. package/src/components/DataTableToolbar/DataTableToolbar.spec.tsx +51 -11
  512. package/src/components/DataTableToolbar/DataTableToolbar.stories.tsx +205 -8
  513. package/src/components/DataTableToolbar/index.tsx +86 -123
  514. package/src/components/DataTableViewOptions/DataTableViewOptions.spec.tsx +5 -5
  515. package/src/components/DataTableViewOptions/DataTableViewOptions.stories.tsx +41 -3
  516. package/src/components/DataTableViewOptions/index.tsx +89 -183
  517. package/src/components/FilterManager.spec.tsx +7 -4
  518. package/src/components/FilterManager.tsx +25 -5
  519. package/src/components/FilterOperatorValueEditor/index.tsx +124 -0
  520. package/src/components/SavedFilterDropdown.tsx +7 -5
  521. package/src/components/SimpleTable/SimpleTable.stories.tsx +114 -0
  522. package/src/components/SimpleTable/index.tsx +35 -17
  523. package/src/components/SimpleTable/simpleTable.spec.tsx +25 -5
  524. package/src/components/Table/Table.stories.tsx +105 -0
  525. package/src/components/Table/accessibility.spec.tsx +24 -8
  526. package/src/components/TableInput/TableInput.stories.tsx +266 -8
  527. package/src/components/TableInput/index.native.tsx +202 -51
  528. package/src/components/TableInput/index.tsx +236 -56
  529. package/src/components/TableInput/shared.ts +20 -0
  530. package/src/components/TableInput/tableInput.spec.tsx +458 -0
  531. package/src/components/componentConsistency.spec.tsx +19 -13
  532. package/src/hooks/hookDecomposition.spec.ts +35 -1
  533. package/src/hooks/useDataTable.ts +169 -24
  534. package/src/hooks/useInfiniteRows.spec.tsx +215 -0
  535. package/src/hooks/useInfiniteRows.ts +242 -0
  536. package/src/hooks/useTableFiltering.ts +22 -21
  537. package/src/hooks/useTablePagination.ts +2 -3
  538. package/src/index.ts +37 -1
  539. package/src/shared/t.ts +24 -0
  540. package/src/types.ts +217 -5
  541. package/src/utils/columnAlign.spec.ts +53 -0
  542. package/src/utils/columnAlign.ts +60 -0
  543. package/src/utils/filterFields.spec.ts +237 -0
  544. package/src/utils/filterFields.ts +273 -0
  545. package/src/utils/filterUtils.ts +34 -24
  546. package/src/utils/filterUtilsContracts.spec.ts +190 -0
  547. package/src/utils/paginationDefaults.spec.ts +43 -0
  548. package/src/utils/paginationDefaults.ts +21 -0
  549. package/src/utils/urlStateUtils.spec.ts +2 -2
  550. package/src/utils/urlStateUtils.ts +2 -1
  551. package/src/utils/viewData.ts +27 -0
  552. package/src/utils/withInterp.spec.ts +30 -0
  553. package/src/utils/withInterp.ts +31 -0
  554. package/types/components/ChildTable/index.d.ts +28 -0
  555. package/types/components/ChildTable/index.d.ts.map +1 -0
  556. package/types/components/ColumnHeaderFilter/index.d.ts +23 -0
  557. package/types/components/ColumnHeaderFilter/index.d.ts.map +1 -0
  558. package/types/components/DataTable/DataTableCardControls.d.ts +30 -0
  559. package/types/components/DataTable/DataTableCardControls.d.ts.map +1 -0
  560. package/types/components/DataTable/DataTableContext.d.ts +11 -0
  561. package/types/components/DataTable/DataTableContext.d.ts.map +1 -0
  562. package/types/components/DataTable/DataTableMobileCards.d.ts +37 -0
  563. package/types/components/DataTable/DataTableMobileCards.d.ts.map +1 -0
  564. package/types/components/DataTable/DataTableRoot.d.ts +22 -0
  565. package/types/components/DataTable/DataTableRoot.d.ts.map +1 -0
  566. package/types/components/DataTable/DataTableStateContext.d.ts +77 -0
  567. package/types/components/DataTable/DataTableStateContext.d.ts.map +1 -0
  568. package/types/components/DataTable/DataTableVirtualized.d.ts +36 -0
  569. package/types/components/DataTable/DataTableVirtualized.d.ts.map +1 -0
  570. package/types/components/DataTable/index.d.ts +42 -0
  571. package/types/components/DataTable/index.d.ts.map +1 -0
  572. package/types/components/DataTable/index.native.d.ts +33 -0
  573. package/types/components/DataTable/index.native.d.ts.map +1 -0
  574. package/types/components/DataTableBulkActions/index.d.ts +33 -0
  575. package/types/components/DataTableBulkActions/index.d.ts.map +1 -0
  576. package/types/components/DataTableCell/CellModalEditor.d.ts +34 -0
  577. package/types/components/DataTableCell/CellModalEditor.d.ts.map +1 -0
  578. package/types/components/DataTableCell/CellModalEditor.native.d.ts +20 -0
  579. package/types/components/DataTableCell/CellModalEditor.native.d.ts.map +1 -0
  580. package/types/components/DataTableCell/CellOptionsEditor.d.ts +30 -0
  581. package/types/components/DataTableCell/CellOptionsEditor.d.ts.map +1 -0
  582. package/types/components/DataTableCell/index.d.ts +51 -0
  583. package/types/components/DataTableCell/index.d.ts.map +1 -0
  584. package/types/components/DataTableColumnPinning/index.d.ts +53 -0
  585. package/types/components/DataTableColumnPinning/index.d.ts.map +1 -0
  586. package/types/components/DataTableDateFilter/index.d.ts +54 -0
  587. package/types/components/DataTableDateFilter/index.d.ts.map +1 -0
  588. package/types/components/DataTableExport/index.d.ts +37 -0
  589. package/types/components/DataTableExport/index.d.ts.map +1 -0
  590. package/types/components/DataTableFilterButton/index.d.ts +16 -0
  591. package/types/components/DataTableFilterButton/index.d.ts.map +1 -0
  592. package/types/components/DataTableFilterChips/index.d.ts +12 -0
  593. package/types/components/DataTableFilterChips/index.d.ts.map +1 -0
  594. package/types/components/DataTableFilters/index.d.ts +19 -0
  595. package/types/components/DataTableFilters/index.d.ts.map +1 -0
  596. package/types/components/DataTableGrouping/index.d.ts +79 -0
  597. package/types/components/DataTableGrouping/index.d.ts.map +1 -0
  598. package/types/components/DataTablePagination/index.d.ts +23 -0
  599. package/types/components/DataTablePagination/index.d.ts.map +1 -0
  600. package/types/components/DataTableSearch/index.d.ts +57 -0
  601. package/types/components/DataTableSearch/index.d.ts.map +1 -0
  602. package/types/components/DataTableToolbar/index.d.ts +23 -0
  603. package/types/components/DataTableToolbar/index.d.ts.map +1 -0
  604. package/types/components/DataTableViewOptions/index.d.ts +28 -0
  605. package/types/components/DataTableViewOptions/index.d.ts.map +1 -0
  606. package/types/components/FilterManager.d.ts +16 -0
  607. package/types/components/FilterManager.d.ts.map +1 -0
  608. package/types/components/FilterOperatorValueEditor/index.d.ts +23 -0
  609. package/types/components/FilterOperatorValueEditor/index.d.ts.map +1 -0
  610. package/types/components/KnobDialog.d.ts +57 -0
  611. package/types/components/KnobDialog.d.ts.map +1 -0
  612. package/types/components/SavedFilterDropdown.d.ts +11 -0
  613. package/types/components/SavedFilterDropdown.d.ts.map +1 -0
  614. package/types/components/SimpleTable/index.d.ts +45 -0
  615. package/types/components/SimpleTable/index.d.ts.map +1 -0
  616. package/types/components/TableInput/index.d.ts +66 -0
  617. package/types/components/TableInput/index.d.ts.map +1 -0
  618. package/types/components/TableInput/index.native.d.ts +55 -0
  619. package/types/components/TableInput/index.native.d.ts.map +1 -0
  620. package/types/components/TableInput/shared.d.ts +12 -0
  621. package/types/components/TableInput/shared.d.ts.map +1 -0
  622. package/types/hooks/useDataTable.d.ts +16 -0
  623. package/types/hooks/useDataTable.d.ts.map +1 -0
  624. package/types/hooks/useDataTableKeyboard.d.ts +22 -0
  625. package/types/hooks/useDataTableKeyboard.d.ts.map +1 -0
  626. package/types/hooks/useDragScroll.d.ts +10 -0
  627. package/types/hooks/useDragScroll.d.ts.map +1 -0
  628. package/types/hooks/useInfiniteRows.d.ts +57 -0
  629. package/types/hooks/useInfiniteRows.d.ts.map +1 -0
  630. package/types/hooks/useSavedFilters.d.ts +78 -0
  631. package/types/hooks/useSavedFilters.d.ts.map +1 -0
  632. package/types/hooks/useTableColumnPinning.d.ts +12 -0
  633. package/types/hooks/useTableColumnPinning.d.ts.map +1 -0
  634. package/types/hooks/useTableFiltering.d.ts +27 -0
  635. package/types/hooks/useTableFiltering.d.ts.map +1 -0
  636. package/types/hooks/useTableGrouping.d.ts +33 -0
  637. package/types/hooks/useTableGrouping.d.ts.map +1 -0
  638. package/types/hooks/useTableKeyboard.d.ts +24 -0
  639. package/types/hooks/useTableKeyboard.d.ts.map +1 -0
  640. package/types/hooks/useTablePagination.d.ts +17 -0
  641. package/types/hooks/useTablePagination.d.ts.map +1 -0
  642. package/types/hooks/useTableSearch.d.ts +27 -0
  643. package/types/hooks/useTableSearch.d.ts.map +1 -0
  644. package/types/hooks/useTableSelection.d.ts +14 -0
  645. package/types/hooks/useTableSelection.d.ts.map +1 -0
  646. package/types/hooks/useTableSorting.d.ts +12 -0
  647. package/types/hooks/useTableSorting.d.ts.map +1 -0
  648. package/types/hooks/useTableUrlSync.d.ts +15 -0
  649. package/types/hooks/useTableUrlSync.d.ts.map +1 -0
  650. package/types/hooks/useTableViews.d.ts +26 -0
  651. package/types/hooks/useTableViews.d.ts.map +1 -0
  652. package/types/index.d.ts +68 -0
  653. package/types/index.d.ts.map +1 -0
  654. package/types/shared/t.d.ts +10 -0
  655. package/types/shared/t.d.ts.map +1 -0
  656. package/types/shims/primitives.d.ts +3 -0
  657. package/types/shims/primitives.d.ts.map +1 -0
  658. package/types/shims/tableCellContext.d.ts +3 -0
  659. package/types/shims/tableCellContext.d.ts.map +1 -0
  660. package/types/types.d.ts +525 -0
  661. package/types/types.d.ts.map +1 -0
  662. package/types/utils/columnAlign.d.ts +23 -0
  663. package/types/utils/columnAlign.d.ts.map +1 -0
  664. package/types/utils/filterFields.d.ts +57 -0
  665. package/types/utils/filterFields.d.ts.map +1 -0
  666. package/types/utils/filterUtils.d.ts +24 -0
  667. package/types/utils/filterUtils.d.ts.map +1 -0
  668. package/types/utils/paginationDefaults.d.ts +18 -0
  669. package/types/utils/paginationDefaults.d.ts.map +1 -0
  670. package/types/utils/urlStateUtils.d.ts +8 -0
  671. package/types/utils/urlStateUtils.d.ts.map +1 -0
  672. package/types/utils/viewData.d.ts +11 -0
  673. package/types/utils/viewData.d.ts.map +1 -0
  674. package/types/utils/withInterp.d.ts +19 -0
  675. package/types/utils/withInterp.d.ts.map +1 -0
  676. package/dist/cjs/components/ColumnHeaderFilter/ColumnHeaderFilter.stories.cjs +0 -50
  677. package/dist/cjs/components/ColumnHeaderFilter/ColumnHeaderFilter.stories.native.js +0 -55
  678. package/dist/cjs/components/ColumnHeaderFilter/ColumnHeaderFilter.stories.native.js.map +0 -1
  679. package/dist/cjs/components/DataTable/DataTable.spec.cjs +0 -516
  680. package/dist/cjs/components/DataTable/DataTable.spec.native.js +0 -539
  681. package/dist/cjs/components/DataTable/DataTable.spec.native.js.map +0 -1
  682. package/dist/cjs/components/DataTable/DataTable.stories.cjs +0 -2779
  683. package/dist/cjs/components/DataTable/DataTable.stories.native.js +0 -2912
  684. package/dist/cjs/components/DataTable/DataTable.stories.native.js.map +0 -1
  685. package/dist/cjs/components/DataTable/FieldsInCells.stories.cjs +0 -244
  686. package/dist/cjs/components/DataTable/FieldsInCells.stories.native.js +0 -265
  687. package/dist/cjs/components/DataTable/FieldsInCells.stories.native.js.map +0 -1
  688. package/dist/cjs/components/DataTable/compoundComponent.spec.cjs +0 -334
  689. package/dist/cjs/components/DataTable/compoundComponent.spec.native.js +0 -348
  690. package/dist/cjs/components/DataTable/compoundComponent.spec.native.js.map +0 -1
  691. package/dist/cjs/components/DataTableBulkActions/DataTableBulkActions.spec.cjs +0 -305
  692. package/dist/cjs/components/DataTableBulkActions/DataTableBulkActions.spec.native.js +0 -340
  693. package/dist/cjs/components/DataTableBulkActions/DataTableBulkActions.spec.native.js.map +0 -1
  694. package/dist/cjs/components/DataTableBulkActions/DataTableBulkActions.stories.cjs +0 -347
  695. package/dist/cjs/components/DataTableBulkActions/DataTableBulkActions.stories.native.js +0 -372
  696. package/dist/cjs/components/DataTableBulkActions/DataTableBulkActions.stories.native.js.map +0 -1
  697. package/dist/cjs/components/DataTableCell/DataTableCell.stories.cjs +0 -50
  698. package/dist/cjs/components/DataTableCell/DataTableCell.stories.native.js +0 -55
  699. package/dist/cjs/components/DataTableCell/DataTableCell.stories.native.js.map +0 -1
  700. package/dist/cjs/components/DataTableCell/dataTableCell.spec.cjs +0 -203
  701. package/dist/cjs/components/DataTableCell/dataTableCell.spec.native.js +0 -220
  702. package/dist/cjs/components/DataTableCell/dataTableCell.spec.native.js.map +0 -1
  703. package/dist/cjs/components/DataTableColumnPinning/DataTableColumnPinning.spec.cjs +0 -287
  704. package/dist/cjs/components/DataTableColumnPinning/DataTableColumnPinning.spec.native.js +0 -315
  705. package/dist/cjs/components/DataTableColumnPinning/DataTableColumnPinning.spec.native.js.map +0 -1
  706. package/dist/cjs/components/DataTableColumnPinning/DataTableColumnPinning.stories.cjs +0 -486
  707. package/dist/cjs/components/DataTableColumnPinning/DataTableColumnPinning.stories.native.js +0 -541
  708. package/dist/cjs/components/DataTableColumnPinning/DataTableColumnPinning.stories.native.js.map +0 -1
  709. package/dist/cjs/components/DataTableDateFilter/DataTableDateFilter.spec.cjs +0 -409
  710. package/dist/cjs/components/DataTableDateFilter/DataTableDateFilter.spec.native.js +0 -459
  711. package/dist/cjs/components/DataTableDateFilter/DataTableDateFilter.spec.native.js.map +0 -1
  712. package/dist/cjs/components/DataTableDateFilter/DataTableDateFilter.stories.cjs +0 -368
  713. package/dist/cjs/components/DataTableDateFilter/DataTableDateFilter.stories.native.js +0 -375
  714. package/dist/cjs/components/DataTableDateFilter/DataTableDateFilter.stories.native.js.map +0 -1
  715. package/dist/cjs/components/DataTableExport/DataTableExport.spec.cjs +0 -334
  716. package/dist/cjs/components/DataTableExport/DataTableExport.spec.native.js +0 -349
  717. package/dist/cjs/components/DataTableExport/DataTableExport.spec.native.js.map +0 -1
  718. package/dist/cjs/components/DataTableExport/DataTableExport.stories.cjs +0 -452
  719. package/dist/cjs/components/DataTableExport/DataTableExport.stories.native.js +0 -479
  720. package/dist/cjs/components/DataTableExport/DataTableExport.stories.native.js.map +0 -1
  721. package/dist/cjs/components/DataTableFilters/DataTableFilters.spec.cjs +0 -687
  722. package/dist/cjs/components/DataTableFilters/DataTableFilters.spec.native.js +0 -698
  723. package/dist/cjs/components/DataTableFilters/DataTableFilters.spec.native.js.map +0 -1
  724. package/dist/cjs/components/DataTableFilters/DataTableFilters.stories.cjs +0 -551
  725. package/dist/cjs/components/DataTableFilters/DataTableFilters.stories.native.js +0 -564
  726. package/dist/cjs/components/DataTableFilters/DataTableFilters.stories.native.js.map +0 -1
  727. package/dist/cjs/components/DataTableGrouping/DataTableGrouping.spec.cjs +0 -249
  728. package/dist/cjs/components/DataTableGrouping/DataTableGrouping.spec.native.js +0 -284
  729. package/dist/cjs/components/DataTableGrouping/DataTableGrouping.spec.native.js.map +0 -1
  730. package/dist/cjs/components/DataTableGrouping/DataTableGrouping.stories.cjs +0 -523
  731. package/dist/cjs/components/DataTableGrouping/DataTableGrouping.stories.native.js +0 -545
  732. package/dist/cjs/components/DataTableGrouping/DataTableGrouping.stories.native.js.map +0 -1
  733. package/dist/cjs/components/DataTablePagination/DataTablePagination.spec.cjs +0 -386
  734. package/dist/cjs/components/DataTablePagination/DataTablePagination.spec.native.js +0 -389
  735. package/dist/cjs/components/DataTablePagination/DataTablePagination.spec.native.js.map +0 -1
  736. package/dist/cjs/components/DataTablePagination/DataTablePagination.stories.cjs +0 -604
  737. package/dist/cjs/components/DataTablePagination/DataTablePagination.stories.native.js +0 -627
  738. package/dist/cjs/components/DataTablePagination/DataTablePagination.stories.native.js.map +0 -1
  739. package/dist/cjs/components/DataTableSearch/DataTableSearch.spec.cjs +0 -469
  740. package/dist/cjs/components/DataTableSearch/DataTableSearch.spec.native.js +0 -472
  741. package/dist/cjs/components/DataTableSearch/DataTableSearch.spec.native.js.map +0 -1
  742. package/dist/cjs/components/DataTableSearch/DataTableSearch.stories.cjs +0 -82
  743. package/dist/cjs/components/DataTableSearch/DataTableSearch.stories.native.js +0 -89
  744. package/dist/cjs/components/DataTableSearch/DataTableSearch.stories.native.js.map +0 -1
  745. package/dist/cjs/components/DataTableToolbar/DataTableToolbar.spec.cjs +0 -572
  746. package/dist/cjs/components/DataTableToolbar/DataTableToolbar.spec.native.js +0 -575
  747. package/dist/cjs/components/DataTableToolbar/DataTableToolbar.spec.native.js.map +0 -1
  748. package/dist/cjs/components/DataTableToolbar/DataTableToolbar.stories.cjs +0 -51
  749. package/dist/cjs/components/DataTableToolbar/DataTableToolbar.stories.native.js +0 -56
  750. package/dist/cjs/components/DataTableToolbar/DataTableToolbar.stories.native.js.map +0 -1
  751. package/dist/cjs/components/DataTableViewOptions/DataTableViewOptions.spec.cjs +0 -126
  752. package/dist/cjs/components/DataTableViewOptions/DataTableViewOptions.spec.native.js +0 -129
  753. package/dist/cjs/components/DataTableViewOptions/DataTableViewOptions.spec.native.js.map +0 -1
  754. package/dist/cjs/components/DataTableViewOptions/DataTableViewOptions.stories.cjs +0 -436
  755. package/dist/cjs/components/DataTableViewOptions/DataTableViewOptions.stories.native.js +0 -458
  756. package/dist/cjs/components/DataTableViewOptions/DataTableViewOptions.stories.native.js.map +0 -1
  757. package/dist/cjs/components/FilterManager.spec.cjs +0 -52
  758. package/dist/cjs/components/FilterManager.spec.native.js +0 -55
  759. package/dist/cjs/components/FilterManager.spec.native.js.map +0 -1
  760. package/dist/cjs/components/SavedFilterDropdown.spec.cjs +0 -83
  761. package/dist/cjs/components/SavedFilterDropdown.spec.native.js +0 -86
  762. package/dist/cjs/components/SavedFilterDropdown.spec.native.js.map +0 -1
  763. package/dist/cjs/components/SimpleTable/simpleTable.spec.cjs +0 -162
  764. package/dist/cjs/components/SimpleTable/simpleTable.spec.native.js +0 -165
  765. package/dist/cjs/components/SimpleTable/simpleTable.spec.native.js.map +0 -1
  766. package/dist/cjs/components/Table/Table.stories.cjs +0 -196
  767. package/dist/cjs/components/Table/Table.stories.native.js +0 -207
  768. package/dist/cjs/components/Table/Table.stories.native.js.map +0 -1
  769. package/dist/cjs/components/Table/accessibility.spec.cjs +0 -186
  770. package/dist/cjs/components/Table/accessibility.spec.native.js +0 -216
  771. package/dist/cjs/components/Table/accessibility.spec.native.js.map +0 -1
  772. package/dist/cjs/components/TableInput/TableInput.stories.cjs +0 -50
  773. package/dist/cjs/components/TableInput/TableInput.stories.native.js +0 -55
  774. package/dist/cjs/components/TableInput/TableInput.stories.native.js.map +0 -1
  775. package/dist/cjs/components/componentConsistency.spec.cjs +0 -37
  776. package/dist/cjs/components/componentConsistency.spec.native.js +0 -48
  777. package/dist/cjs/components/componentConsistency.spec.native.js.map +0 -1
  778. package/dist/cjs/hooks/hookDecomposition.spec.cjs +0 -326
  779. package/dist/cjs/hooks/hookDecomposition.spec.native.js +0 -351
  780. package/dist/cjs/hooks/hookDecomposition.spec.native.js.map +0 -1
  781. package/dist/cjs/hooks/useDataTable.spec.cjs +0 -10
  782. package/dist/cjs/hooks/useDataTable.spec.native.js +0 -13
  783. package/dist/cjs/hooks/useDataTable.spec.native.js.map +0 -1
  784. package/dist/cjs/hooks/useSavedFilters.spec.cjs +0 -212
  785. package/dist/cjs/hooks/useSavedFilters.spec.native.js +0 -240
  786. package/dist/cjs/hooks/useSavedFilters.spec.native.js.map +0 -1
  787. package/dist/cjs/utils/filterUtils.spec.cjs +0 -350
  788. package/dist/cjs/utils/filterUtils.spec.native.js +0 -353
  789. package/dist/cjs/utils/filterUtils.spec.native.js.map +0 -1
  790. package/dist/cjs/utils/urlStateUtils.spec.cjs +0 -234
  791. package/dist/cjs/utils/urlStateUtils.spec.native.js +0 -239
  792. package/dist/cjs/utils/urlStateUtils.spec.native.js.map +0 -1
  793. package/dist/esm/components/ColumnHeaderFilter/ColumnHeaderFilter.stories.mjs +0 -24
  794. package/dist/esm/components/ColumnHeaderFilter/ColumnHeaderFilter.stories.mjs.map +0 -1
  795. package/dist/esm/components/ColumnHeaderFilter/ColumnHeaderFilter.stories.native.js +0 -26
  796. package/dist/esm/components/ColumnHeaderFilter/ColumnHeaderFilter.stories.native.js.map +0 -1
  797. package/dist/esm/components/DataTable/DataTable.spec.mjs +0 -517
  798. package/dist/esm/components/DataTable/DataTable.spec.mjs.map +0 -1
  799. package/dist/esm/components/DataTable/DataTable.spec.native.js +0 -537
  800. package/dist/esm/components/DataTable/DataTable.spec.native.js.map +0 -1
  801. package/dist/esm/components/DataTable/DataTable.stories.mjs +0 -2672
  802. package/dist/esm/components/DataTable/DataTable.stories.mjs.map +0 -1
  803. package/dist/esm/components/DataTable/DataTable.stories.native.js +0 -2802
  804. package/dist/esm/components/DataTable/DataTable.stories.native.js.map +0 -1
  805. package/dist/esm/components/DataTable/FieldsInCells.stories.mjs +0 -217
  806. package/dist/esm/components/DataTable/FieldsInCells.stories.mjs.map +0 -1
  807. package/dist/esm/components/DataTable/FieldsInCells.stories.native.js +0 -224
  808. package/dist/esm/components/DataTable/FieldsInCells.stories.native.js.map +0 -1
  809. package/dist/esm/components/DataTable/compoundComponent.spec.mjs +0 -335
  810. package/dist/esm/components/DataTable/compoundComponent.spec.mjs.map +0 -1
  811. package/dist/esm/components/DataTable/compoundComponent.spec.native.js +0 -346
  812. package/dist/esm/components/DataTable/compoundComponent.spec.native.js.map +0 -1
  813. package/dist/esm/components/DataTableBulkActions/DataTableBulkActions.spec.mjs +0 -306
  814. package/dist/esm/components/DataTableBulkActions/DataTableBulkActions.spec.mjs.map +0 -1
  815. package/dist/esm/components/DataTableBulkActions/DataTableBulkActions.spec.native.js +0 -338
  816. package/dist/esm/components/DataTableBulkActions/DataTableBulkActions.spec.native.js.map +0 -1
  817. package/dist/esm/components/DataTableBulkActions/DataTableBulkActions.stories.mjs +0 -304
  818. package/dist/esm/components/DataTableBulkActions/DataTableBulkActions.stories.mjs.map +0 -1
  819. package/dist/esm/components/DataTableBulkActions/DataTableBulkActions.stories.native.js +0 -326
  820. package/dist/esm/components/DataTableBulkActions/DataTableBulkActions.stories.native.js.map +0 -1
  821. package/dist/esm/components/DataTableCell/DataTableCell.stories.mjs +0 -24
  822. package/dist/esm/components/DataTableCell/DataTableCell.stories.mjs.map +0 -1
  823. package/dist/esm/components/DataTableCell/DataTableCell.stories.native.js +0 -26
  824. package/dist/esm/components/DataTableCell/DataTableCell.stories.native.js.map +0 -1
  825. package/dist/esm/components/DataTableCell/dataTableCell.spec.mjs +0 -180
  826. package/dist/esm/components/DataTableCell/dataTableCell.spec.mjs.map +0 -1
  827. package/dist/esm/components/DataTableCell/dataTableCell.spec.native.js +0 -194
  828. package/dist/esm/components/DataTableCell/dataTableCell.spec.native.js.map +0 -1
  829. package/dist/esm/components/DataTableColumnPinning/DataTableColumnPinning.spec.mjs +0 -264
  830. package/dist/esm/components/DataTableColumnPinning/DataTableColumnPinning.spec.mjs.map +0 -1
  831. package/dist/esm/components/DataTableColumnPinning/DataTableColumnPinning.spec.native.js +0 -289
  832. package/dist/esm/components/DataTableColumnPinning/DataTableColumnPinning.spec.native.js.map +0 -1
  833. package/dist/esm/components/DataTableColumnPinning/DataTableColumnPinning.stories.mjs +0 -457
  834. package/dist/esm/components/DataTableColumnPinning/DataTableColumnPinning.stories.mjs.map +0 -1
  835. package/dist/esm/components/DataTableColumnPinning/DataTableColumnPinning.stories.native.js +0 -509
  836. package/dist/esm/components/DataTableColumnPinning/DataTableColumnPinning.stories.native.js.map +0 -1
  837. package/dist/esm/components/DataTableDateFilter/DataTableDateFilter.spec.mjs +0 -386
  838. package/dist/esm/components/DataTableDateFilter/DataTableDateFilter.spec.mjs.map +0 -1
  839. package/dist/esm/components/DataTableDateFilter/DataTableDateFilter.spec.native.js +0 -433
  840. package/dist/esm/components/DataTableDateFilter/DataTableDateFilter.spec.native.js.map +0 -1
  841. package/dist/esm/components/DataTableDateFilter/DataTableDateFilter.stories.mjs +0 -325
  842. package/dist/esm/components/DataTableDateFilter/DataTableDateFilter.stories.mjs.map +0 -1
  843. package/dist/esm/components/DataTableDateFilter/DataTableDateFilter.stories.native.js +0 -329
  844. package/dist/esm/components/DataTableDateFilter/DataTableDateFilter.stories.native.js.map +0 -1
  845. package/dist/esm/components/DataTableExport/DataTableExport.spec.mjs +0 -335
  846. package/dist/esm/components/DataTableExport/DataTableExport.spec.mjs.map +0 -1
  847. package/dist/esm/components/DataTableExport/DataTableExport.spec.native.js +0 -347
  848. package/dist/esm/components/DataTableExport/DataTableExport.spec.native.js.map +0 -1
  849. package/dist/esm/components/DataTableExport/DataTableExport.stories.mjs +0 -419
  850. package/dist/esm/components/DataTableExport/DataTableExport.stories.mjs.map +0 -1
  851. package/dist/esm/components/DataTableExport/DataTableExport.stories.native.js +0 -443
  852. package/dist/esm/components/DataTableExport/DataTableExport.stories.native.js.map +0 -1
  853. package/dist/esm/components/DataTableFilters/DataTableFilters.spec.mjs +0 -688
  854. package/dist/esm/components/DataTableFilters/DataTableFilters.spec.mjs.map +0 -1
  855. package/dist/esm/components/DataTableFilters/DataTableFilters.spec.native.js +0 -696
  856. package/dist/esm/components/DataTableFilters/DataTableFilters.spec.native.js.map +0 -1
  857. package/dist/esm/components/DataTableFilters/DataTableFilters.stories.mjs +0 -499
  858. package/dist/esm/components/DataTableFilters/DataTableFilters.stories.mjs.map +0 -1
  859. package/dist/esm/components/DataTableFilters/DataTableFilters.stories.native.js +0 -509
  860. package/dist/esm/components/DataTableFilters/DataTableFilters.stories.native.js.map +0 -1
  861. package/dist/esm/components/DataTableGrouping/DataTableGrouping.spec.mjs +0 -249
  862. package/dist/esm/components/DataTableGrouping/DataTableGrouping.spec.mjs.map +0 -1
  863. package/dist/esm/components/DataTableGrouping/DataTableGrouping.spec.native.js +0 -281
  864. package/dist/esm/components/DataTableGrouping/DataTableGrouping.spec.native.js.map +0 -1
  865. package/dist/esm/components/DataTableGrouping/DataTableGrouping.stories.mjs +0 -479
  866. package/dist/esm/components/DataTableGrouping/DataTableGrouping.stories.mjs.map +0 -1
  867. package/dist/esm/components/DataTableGrouping/DataTableGrouping.stories.native.js +0 -498
  868. package/dist/esm/components/DataTableGrouping/DataTableGrouping.stories.native.js.map +0 -1
  869. package/dist/esm/components/DataTablePagination/DataTablePagination.spec.mjs +0 -387
  870. package/dist/esm/components/DataTablePagination/DataTablePagination.spec.mjs.map +0 -1
  871. package/dist/esm/components/DataTablePagination/DataTablePagination.spec.native.js +0 -387
  872. package/dist/esm/components/DataTablePagination/DataTablePagination.spec.native.js.map +0 -1
  873. package/dist/esm/components/DataTablePagination/DataTablePagination.stories.mjs +0 -546
  874. package/dist/esm/components/DataTablePagination/DataTablePagination.stories.mjs.map +0 -1
  875. package/dist/esm/components/DataTablePagination/DataTablePagination.stories.native.js +0 -566
  876. package/dist/esm/components/DataTablePagination/DataTablePagination.stories.native.js.map +0 -1
  877. package/dist/esm/components/DataTableSearch/DataTableSearch.spec.mjs +0 -470
  878. package/dist/esm/components/DataTableSearch/DataTableSearch.spec.mjs.map +0 -1
  879. package/dist/esm/components/DataTableSearch/DataTableSearch.spec.native.js +0 -470
  880. package/dist/esm/components/DataTableSearch/DataTableSearch.spec.native.js.map +0 -1
  881. package/dist/esm/components/DataTableSearch/DataTableSearch.stories.mjs +0 -56
  882. package/dist/esm/components/DataTableSearch/DataTableSearch.stories.mjs.map +0 -1
  883. package/dist/esm/components/DataTableSearch/DataTableSearch.stories.native.js +0 -60
  884. package/dist/esm/components/DataTableSearch/DataTableSearch.stories.native.js.map +0 -1
  885. package/dist/esm/components/DataTableToolbar/DataTableToolbar.spec.mjs +0 -573
  886. package/dist/esm/components/DataTableToolbar/DataTableToolbar.spec.mjs.map +0 -1
  887. package/dist/esm/components/DataTableToolbar/DataTableToolbar.spec.native.js +0 -573
  888. package/dist/esm/components/DataTableToolbar/DataTableToolbar.spec.native.js.map +0 -1
  889. package/dist/esm/components/DataTableToolbar/DataTableToolbar.stories.mjs +0 -25
  890. package/dist/esm/components/DataTableToolbar/DataTableToolbar.stories.mjs.map +0 -1
  891. package/dist/esm/components/DataTableToolbar/DataTableToolbar.stories.native.js +0 -27
  892. package/dist/esm/components/DataTableToolbar/DataTableToolbar.stories.native.js.map +0 -1
  893. package/dist/esm/components/DataTableViewOptions/DataTableViewOptions.spec.mjs +0 -126
  894. package/dist/esm/components/DataTableViewOptions/DataTableViewOptions.spec.mjs.map +0 -1
  895. package/dist/esm/components/DataTableViewOptions/DataTableViewOptions.spec.native.js +0 -126
  896. package/dist/esm/components/DataTableViewOptions/DataTableViewOptions.spec.native.js.map +0 -1
  897. package/dist/esm/components/DataTableViewOptions/DataTableViewOptions.stories.mjs +0 -393
  898. package/dist/esm/components/DataTableViewOptions/DataTableViewOptions.stories.mjs.map +0 -1
  899. package/dist/esm/components/DataTableViewOptions/DataTableViewOptions.stories.native.js +0 -412
  900. package/dist/esm/components/DataTableViewOptions/DataTableViewOptions.stories.native.js.map +0 -1
  901. package/dist/esm/components/FilterManager.spec.mjs +0 -53
  902. package/dist/esm/components/FilterManager.spec.mjs.map +0 -1
  903. package/dist/esm/components/FilterManager.spec.native.js +0 -53
  904. package/dist/esm/components/FilterManager.spec.native.js.map +0 -1
  905. package/dist/esm/components/SavedFilterDropdown.spec.mjs +0 -84
  906. package/dist/esm/components/SavedFilterDropdown.spec.mjs.map +0 -1
  907. package/dist/esm/components/SavedFilterDropdown.spec.native.js +0 -84
  908. package/dist/esm/components/SavedFilterDropdown.spec.native.js.map +0 -1
  909. package/dist/esm/components/SimpleTable/simpleTable.spec.mjs +0 -163
  910. package/dist/esm/components/SimpleTable/simpleTable.spec.mjs.map +0 -1
  911. package/dist/esm/components/SimpleTable/simpleTable.spec.native.js +0 -163
  912. package/dist/esm/components/SimpleTable/simpleTable.spec.native.js.map +0 -1
  913. package/dist/esm/components/Table/Table.stories.mjs +0 -167
  914. package/dist/esm/components/Table/Table.stories.mjs.map +0 -1
  915. package/dist/esm/components/Table/Table.stories.native.js +0 -175
  916. package/dist/esm/components/Table/Table.stories.native.js.map +0 -1
  917. package/dist/esm/components/Table/accessibility.spec.mjs +0 -187
  918. package/dist/esm/components/Table/accessibility.spec.mjs.map +0 -1
  919. package/dist/esm/components/Table/accessibility.spec.native.js +0 -214
  920. package/dist/esm/components/Table/accessibility.spec.native.js.map +0 -1
  921. package/dist/esm/components/TableInput/TableInput.stories.mjs +0 -24
  922. package/dist/esm/components/TableInput/TableInput.stories.mjs.map +0 -1
  923. package/dist/esm/components/TableInput/TableInput.stories.native.js +0 -26
  924. package/dist/esm/components/TableInput/TableInput.stories.native.js.map +0 -1
  925. package/dist/esm/components/componentConsistency.spec.mjs +0 -38
  926. package/dist/esm/components/componentConsistency.spec.mjs.map +0 -1
  927. package/dist/esm/components/componentConsistency.spec.native.js +0 -46
  928. package/dist/esm/components/componentConsistency.spec.native.js.map +0 -1
  929. package/dist/esm/hooks/hookDecomposition.spec.mjs +0 -327
  930. package/dist/esm/hooks/hookDecomposition.spec.mjs.map +0 -1
  931. package/dist/esm/hooks/hookDecomposition.spec.native.js +0 -349
  932. package/dist/esm/hooks/hookDecomposition.spec.native.js.map +0 -1
  933. package/dist/esm/hooks/useDataTable.spec.mjs +0 -11
  934. package/dist/esm/hooks/useDataTable.spec.mjs.map +0 -1
  935. package/dist/esm/hooks/useDataTable.spec.native.js +0 -11
  936. package/dist/esm/hooks/useDataTable.spec.native.js.map +0 -1
  937. package/dist/esm/hooks/useSavedFilters.spec.mjs +0 -213
  938. package/dist/esm/hooks/useSavedFilters.spec.mjs.map +0 -1
  939. package/dist/esm/hooks/useSavedFilters.spec.native.js +0 -238
  940. package/dist/esm/hooks/useSavedFilters.spec.native.js.map +0 -1
  941. package/dist/esm/utils/filterUtils.spec.mjs +0 -351
  942. package/dist/esm/utils/filterUtils.spec.mjs.map +0 -1
  943. package/dist/esm/utils/filterUtils.spec.native.js +0 -351
  944. package/dist/esm/utils/filterUtils.spec.native.js.map +0 -1
  945. package/dist/esm/utils/urlStateUtils.spec.mjs +0 -235
  946. package/dist/esm/utils/urlStateUtils.spec.mjs.map +0 -1
  947. package/dist/esm/utils/urlStateUtils.spec.native.js +0 -237
  948. package/dist/esm/utils/urlStateUtils.spec.native.js.map +0 -1
  949. package/dist/jsx/components/ColumnHeaderFilter/ColumnHeaderFilter.stories.mjs +0 -24
  950. package/dist/jsx/components/ColumnHeaderFilter/ColumnHeaderFilter.stories.mjs.map +0 -1
  951. package/dist/jsx/components/ColumnHeaderFilter/ColumnHeaderFilter.stories.native.js +0 -55
  952. package/dist/jsx/components/ColumnHeaderFilter/ColumnHeaderFilter.stories.native.js.map +0 -1
  953. package/dist/jsx/components/DataTable/DataTable.spec.mjs +0 -517
  954. package/dist/jsx/components/DataTable/DataTable.spec.mjs.map +0 -1
  955. package/dist/jsx/components/DataTable/DataTable.spec.native.js +0 -539
  956. package/dist/jsx/components/DataTable/DataTable.spec.native.js.map +0 -1
  957. package/dist/jsx/components/DataTable/DataTable.stories.mjs +0 -2672
  958. package/dist/jsx/components/DataTable/DataTable.stories.mjs.map +0 -1
  959. package/dist/jsx/components/DataTable/DataTable.stories.native.js +0 -2912
  960. package/dist/jsx/components/DataTable/DataTable.stories.native.js.map +0 -1
  961. package/dist/jsx/components/DataTable/FieldsInCells.stories.mjs +0 -217
  962. package/dist/jsx/components/DataTable/FieldsInCells.stories.mjs.map +0 -1
  963. package/dist/jsx/components/DataTable/FieldsInCells.stories.native.js +0 -265
  964. package/dist/jsx/components/DataTable/FieldsInCells.stories.native.js.map +0 -1
  965. package/dist/jsx/components/DataTable/compoundComponent.spec.mjs +0 -335
  966. package/dist/jsx/components/DataTable/compoundComponent.spec.mjs.map +0 -1
  967. package/dist/jsx/components/DataTable/compoundComponent.spec.native.js +0 -348
  968. package/dist/jsx/components/DataTable/compoundComponent.spec.native.js.map +0 -1
  969. package/dist/jsx/components/DataTableBulkActions/DataTableBulkActions.spec.mjs +0 -306
  970. package/dist/jsx/components/DataTableBulkActions/DataTableBulkActions.spec.mjs.map +0 -1
  971. package/dist/jsx/components/DataTableBulkActions/DataTableBulkActions.spec.native.js +0 -340
  972. package/dist/jsx/components/DataTableBulkActions/DataTableBulkActions.spec.native.js.map +0 -1
  973. package/dist/jsx/components/DataTableBulkActions/DataTableBulkActions.stories.mjs +0 -304
  974. package/dist/jsx/components/DataTableBulkActions/DataTableBulkActions.stories.mjs.map +0 -1
  975. package/dist/jsx/components/DataTableBulkActions/DataTableBulkActions.stories.native.js +0 -372
  976. package/dist/jsx/components/DataTableBulkActions/DataTableBulkActions.stories.native.js.map +0 -1
  977. package/dist/jsx/components/DataTableCell/DataTableCell.stories.mjs +0 -24
  978. package/dist/jsx/components/DataTableCell/DataTableCell.stories.mjs.map +0 -1
  979. package/dist/jsx/components/DataTableCell/DataTableCell.stories.native.js +0 -55
  980. package/dist/jsx/components/DataTableCell/DataTableCell.stories.native.js.map +0 -1
  981. package/dist/jsx/components/DataTableCell/dataTableCell.spec.mjs +0 -180
  982. package/dist/jsx/components/DataTableCell/dataTableCell.spec.mjs.map +0 -1
  983. package/dist/jsx/components/DataTableCell/dataTableCell.spec.native.js +0 -220
  984. package/dist/jsx/components/DataTableCell/dataTableCell.spec.native.js.map +0 -1
  985. package/dist/jsx/components/DataTableColumnPinning/DataTableColumnPinning.spec.mjs +0 -264
  986. package/dist/jsx/components/DataTableColumnPinning/DataTableColumnPinning.spec.mjs.map +0 -1
  987. package/dist/jsx/components/DataTableColumnPinning/DataTableColumnPinning.spec.native.js +0 -315
  988. package/dist/jsx/components/DataTableColumnPinning/DataTableColumnPinning.spec.native.js.map +0 -1
  989. package/dist/jsx/components/DataTableColumnPinning/DataTableColumnPinning.stories.mjs +0 -457
  990. package/dist/jsx/components/DataTableColumnPinning/DataTableColumnPinning.stories.mjs.map +0 -1
  991. package/dist/jsx/components/DataTableColumnPinning/DataTableColumnPinning.stories.native.js +0 -541
  992. package/dist/jsx/components/DataTableColumnPinning/DataTableColumnPinning.stories.native.js.map +0 -1
  993. package/dist/jsx/components/DataTableDateFilter/DataTableDateFilter.spec.mjs +0 -386
  994. package/dist/jsx/components/DataTableDateFilter/DataTableDateFilter.spec.mjs.map +0 -1
  995. package/dist/jsx/components/DataTableDateFilter/DataTableDateFilter.spec.native.js +0 -459
  996. package/dist/jsx/components/DataTableDateFilter/DataTableDateFilter.spec.native.js.map +0 -1
  997. package/dist/jsx/components/DataTableDateFilter/DataTableDateFilter.stories.mjs +0 -325
  998. package/dist/jsx/components/DataTableDateFilter/DataTableDateFilter.stories.mjs.map +0 -1
  999. package/dist/jsx/components/DataTableDateFilter/DataTableDateFilter.stories.native.js +0 -375
  1000. package/dist/jsx/components/DataTableDateFilter/DataTableDateFilter.stories.native.js.map +0 -1
  1001. package/dist/jsx/components/DataTableExport/DataTableExport.spec.mjs +0 -335
  1002. package/dist/jsx/components/DataTableExport/DataTableExport.spec.mjs.map +0 -1
  1003. package/dist/jsx/components/DataTableExport/DataTableExport.spec.native.js +0 -349
  1004. package/dist/jsx/components/DataTableExport/DataTableExport.spec.native.js.map +0 -1
  1005. package/dist/jsx/components/DataTableExport/DataTableExport.stories.mjs +0 -419
  1006. package/dist/jsx/components/DataTableExport/DataTableExport.stories.mjs.map +0 -1
  1007. package/dist/jsx/components/DataTableExport/DataTableExport.stories.native.js +0 -479
  1008. package/dist/jsx/components/DataTableExport/DataTableExport.stories.native.js.map +0 -1
  1009. package/dist/jsx/components/DataTableFilters/DataTableFilters.spec.mjs +0 -688
  1010. package/dist/jsx/components/DataTableFilters/DataTableFilters.spec.mjs.map +0 -1
  1011. package/dist/jsx/components/DataTableFilters/DataTableFilters.spec.native.js +0 -698
  1012. package/dist/jsx/components/DataTableFilters/DataTableFilters.spec.native.js.map +0 -1
  1013. package/dist/jsx/components/DataTableFilters/DataTableFilters.stories.mjs +0 -499
  1014. package/dist/jsx/components/DataTableFilters/DataTableFilters.stories.mjs.map +0 -1
  1015. package/dist/jsx/components/DataTableFilters/DataTableFilters.stories.native.js +0 -564
  1016. package/dist/jsx/components/DataTableFilters/DataTableFilters.stories.native.js.map +0 -1
  1017. package/dist/jsx/components/DataTableGrouping/DataTableGrouping.spec.mjs +0 -249
  1018. package/dist/jsx/components/DataTableGrouping/DataTableGrouping.spec.mjs.map +0 -1
  1019. package/dist/jsx/components/DataTableGrouping/DataTableGrouping.spec.native.js +0 -284
  1020. package/dist/jsx/components/DataTableGrouping/DataTableGrouping.spec.native.js.map +0 -1
  1021. package/dist/jsx/components/DataTableGrouping/DataTableGrouping.stories.mjs +0 -479
  1022. package/dist/jsx/components/DataTableGrouping/DataTableGrouping.stories.mjs.map +0 -1
  1023. package/dist/jsx/components/DataTableGrouping/DataTableGrouping.stories.native.js +0 -545
  1024. package/dist/jsx/components/DataTableGrouping/DataTableGrouping.stories.native.js.map +0 -1
  1025. package/dist/jsx/components/DataTablePagination/DataTablePagination.spec.mjs +0 -387
  1026. package/dist/jsx/components/DataTablePagination/DataTablePagination.spec.mjs.map +0 -1
  1027. package/dist/jsx/components/DataTablePagination/DataTablePagination.spec.native.js +0 -389
  1028. package/dist/jsx/components/DataTablePagination/DataTablePagination.spec.native.js.map +0 -1
  1029. package/dist/jsx/components/DataTablePagination/DataTablePagination.stories.mjs +0 -546
  1030. package/dist/jsx/components/DataTablePagination/DataTablePagination.stories.mjs.map +0 -1
  1031. package/dist/jsx/components/DataTablePagination/DataTablePagination.stories.native.js +0 -627
  1032. package/dist/jsx/components/DataTablePagination/DataTablePagination.stories.native.js.map +0 -1
  1033. package/dist/jsx/components/DataTableSearch/DataTableSearch.spec.mjs +0 -470
  1034. package/dist/jsx/components/DataTableSearch/DataTableSearch.spec.mjs.map +0 -1
  1035. package/dist/jsx/components/DataTableSearch/DataTableSearch.spec.native.js +0 -472
  1036. package/dist/jsx/components/DataTableSearch/DataTableSearch.spec.native.js.map +0 -1
  1037. package/dist/jsx/components/DataTableSearch/DataTableSearch.stories.mjs +0 -56
  1038. package/dist/jsx/components/DataTableSearch/DataTableSearch.stories.mjs.map +0 -1
  1039. package/dist/jsx/components/DataTableSearch/DataTableSearch.stories.native.js +0 -89
  1040. package/dist/jsx/components/DataTableSearch/DataTableSearch.stories.native.js.map +0 -1
  1041. package/dist/jsx/components/DataTableToolbar/DataTableToolbar.spec.mjs +0 -573
  1042. package/dist/jsx/components/DataTableToolbar/DataTableToolbar.spec.mjs.map +0 -1
  1043. package/dist/jsx/components/DataTableToolbar/DataTableToolbar.spec.native.js +0 -575
  1044. package/dist/jsx/components/DataTableToolbar/DataTableToolbar.spec.native.js.map +0 -1
  1045. package/dist/jsx/components/DataTableToolbar/DataTableToolbar.stories.mjs +0 -25
  1046. package/dist/jsx/components/DataTableToolbar/DataTableToolbar.stories.mjs.map +0 -1
  1047. package/dist/jsx/components/DataTableToolbar/DataTableToolbar.stories.native.js +0 -56
  1048. package/dist/jsx/components/DataTableToolbar/DataTableToolbar.stories.native.js.map +0 -1
  1049. package/dist/jsx/components/DataTableViewOptions/DataTableViewOptions.spec.mjs +0 -126
  1050. package/dist/jsx/components/DataTableViewOptions/DataTableViewOptions.spec.mjs.map +0 -1
  1051. package/dist/jsx/components/DataTableViewOptions/DataTableViewOptions.spec.native.js +0 -129
  1052. package/dist/jsx/components/DataTableViewOptions/DataTableViewOptions.spec.native.js.map +0 -1
  1053. package/dist/jsx/components/DataTableViewOptions/DataTableViewOptions.stories.mjs +0 -393
  1054. package/dist/jsx/components/DataTableViewOptions/DataTableViewOptions.stories.mjs.map +0 -1
  1055. package/dist/jsx/components/DataTableViewOptions/DataTableViewOptions.stories.native.js +0 -458
  1056. package/dist/jsx/components/DataTableViewOptions/DataTableViewOptions.stories.native.js.map +0 -1
  1057. package/dist/jsx/components/FilterManager.spec.mjs +0 -53
  1058. package/dist/jsx/components/FilterManager.spec.mjs.map +0 -1
  1059. package/dist/jsx/components/FilterManager.spec.native.js +0 -55
  1060. package/dist/jsx/components/FilterManager.spec.native.js.map +0 -1
  1061. package/dist/jsx/components/SavedFilterDropdown.spec.mjs +0 -84
  1062. package/dist/jsx/components/SavedFilterDropdown.spec.mjs.map +0 -1
  1063. package/dist/jsx/components/SavedFilterDropdown.spec.native.js +0 -86
  1064. package/dist/jsx/components/SavedFilterDropdown.spec.native.js.map +0 -1
  1065. package/dist/jsx/components/SimpleTable/simpleTable.spec.mjs +0 -163
  1066. package/dist/jsx/components/SimpleTable/simpleTable.spec.mjs.map +0 -1
  1067. package/dist/jsx/components/SimpleTable/simpleTable.spec.native.js +0 -165
  1068. package/dist/jsx/components/SimpleTable/simpleTable.spec.native.js.map +0 -1
  1069. package/dist/jsx/components/Table/Table.stories.mjs +0 -167
  1070. package/dist/jsx/components/Table/Table.stories.mjs.map +0 -1
  1071. package/dist/jsx/components/Table/Table.stories.native.js +0 -207
  1072. package/dist/jsx/components/Table/Table.stories.native.js.map +0 -1
  1073. package/dist/jsx/components/Table/accessibility.spec.mjs +0 -187
  1074. package/dist/jsx/components/Table/accessibility.spec.mjs.map +0 -1
  1075. package/dist/jsx/components/Table/accessibility.spec.native.js +0 -216
  1076. package/dist/jsx/components/Table/accessibility.spec.native.js.map +0 -1
  1077. package/dist/jsx/components/TableInput/TableInput.stories.mjs +0 -24
  1078. package/dist/jsx/components/TableInput/TableInput.stories.mjs.map +0 -1
  1079. package/dist/jsx/components/TableInput/TableInput.stories.native.js +0 -55
  1080. package/dist/jsx/components/TableInput/TableInput.stories.native.js.map +0 -1
  1081. package/dist/jsx/components/componentConsistency.spec.mjs +0 -38
  1082. package/dist/jsx/components/componentConsistency.spec.mjs.map +0 -1
  1083. package/dist/jsx/components/componentConsistency.spec.native.js +0 -48
  1084. package/dist/jsx/components/componentConsistency.spec.native.js.map +0 -1
  1085. package/dist/jsx/hooks/hookDecomposition.spec.mjs +0 -327
  1086. package/dist/jsx/hooks/hookDecomposition.spec.mjs.map +0 -1
  1087. package/dist/jsx/hooks/hookDecomposition.spec.native.js +0 -351
  1088. package/dist/jsx/hooks/hookDecomposition.spec.native.js.map +0 -1
  1089. package/dist/jsx/hooks/useDataTable.spec.mjs +0 -11
  1090. package/dist/jsx/hooks/useDataTable.spec.mjs.map +0 -1
  1091. package/dist/jsx/hooks/useDataTable.spec.native.js +0 -13
  1092. package/dist/jsx/hooks/useDataTable.spec.native.js.map +0 -1
  1093. package/dist/jsx/hooks/useSavedFilters.spec.mjs +0 -213
  1094. package/dist/jsx/hooks/useSavedFilters.spec.mjs.map +0 -1
  1095. package/dist/jsx/hooks/useSavedFilters.spec.native.js +0 -240
  1096. package/dist/jsx/hooks/useSavedFilters.spec.native.js.map +0 -1
  1097. package/dist/jsx/utils/filterUtils.spec.mjs +0 -351
  1098. package/dist/jsx/utils/filterUtils.spec.mjs.map +0 -1
  1099. package/dist/jsx/utils/filterUtils.spec.native.js +0 -353
  1100. package/dist/jsx/utils/filterUtils.spec.native.js.map +0 -1
  1101. package/dist/jsx/utils/urlStateUtils.spec.mjs +0 -235
  1102. package/dist/jsx/utils/urlStateUtils.spec.mjs.map +0 -1
  1103. package/dist/jsx/utils/urlStateUtils.spec.native.js +0 -239
  1104. package/dist/jsx/utils/urlStateUtils.spec.native.js.map +0 -1
@@ -11,83 +11,79 @@
11
11
 
12
12
  import {
13
13
  CaretDownIcon,
14
+ CaretLeftIcon,
14
15
  CaretRightIcon,
15
16
  CaretUpDownIcon,
16
17
  PlusIcon,
17
18
  TrashIcon,
18
19
  } from "@phosphor-icons/react";
19
- import { Button, Field, useFormField, zIndex } from "@multiplatform.one/forms";
20
+ import { Button, Checkbox, Field, Spinner, useFormField, zIndex } from "@multiplatform.one/forms";
20
21
  import { flexRender } from "@tanstack/react-table";
21
22
  import { useVirtualizer } from "@tanstack/react-virtual";
22
- import { useResolvedKnobs } from "@multiplatform.one/theme";
23
- import React, { useRef, useMemo, useCallback } from "react";
24
- import { Tooltip } from "@multiplatform.one/components";
25
- import { Spinner, Text, View, isWeb, useMedia } from "tamagui";
23
+ import { ensureFocusVisibleRing, useResolvedKnobs } from "@multiplatform.one/theme";
24
+ import React, { useEffect, useRef, useMemo, useCallback, useState } from "react";
25
+ import {
26
+ AsyncBoundary,
27
+ EmptyState,
28
+ Skeleton,
29
+ Tooltip,
30
+ useDirection,
31
+ } from "@multiplatform.one/components";
32
+ import { Text, View, isWeb, useMedia } from "tamagui";
26
33
  import { useTranslation } from "react-i18next";
27
34
  import { useDataTable } from "../../hooks/useDataTable";
28
35
  import { useDragScroll } from "../../hooks/useDragScroll";
29
36
  import { useDataTableKeyboard } from "../../hooks/useDataTableKeyboard";
30
- import type { DataTableColumn, DataTableField, DataTableProps } from "../../types";
37
+ import type {
38
+ BulkAction,
39
+ DataTableColumn,
40
+ DataTableField,
41
+ DataTableProps,
42
+ SelectAllScope,
43
+ } from "../../types";
31
44
  import { DataTableColumnPinning } from "../DataTableColumnPinning";
32
45
  import { DataTablePagination } from "../DataTablePagination";
33
46
  import { DataTableToolbar } from "../DataTableToolbar";
47
+ import { DataTableBulkActions } from "../DataTableBulkActions";
34
48
  import { DataTableCell } from "../DataTableCell";
35
49
  import { ColumnHeaderFilter } from "../ColumnHeaderFilter";
50
+ import { DataTableFilterChips } from "../DataTableFilterChips";
36
51
  import { Table } from "@multiplatform.one/table-primitives";
37
52
  import { DataTableContext } from "./DataTableContext";
38
53
  import { DataTableStateContext } from "./DataTableStateContext";
39
- import type { DataTableStateContextValue } from "./DataTableStateContext";
54
+ import type {
55
+ DataTableFilterUi,
56
+ DataTableStateContextValue,
57
+ FilterEditTarget,
58
+ } from "./DataTableStateContext";
59
+ import { DataTableCardControls } from "./DataTableCardControls";
40
60
  import { DataTableMobileCards } from "./DataTableMobileCards";
41
61
  import { DataTableVirtualized } from "./DataTableVirtualized";
62
+ import { alignToFlex, getDefaultColumnAlign } from "../../utils/columnAlign";
63
+ import { mapFieldToFilterType } from "../../utils/filterFields";
64
+ import { INFINITE_TRIGGER_ROWS } from "../../utils/paginationDefaults";
65
+ import { bidiIsolate, withInterp } from "../../utils/withInterp";
66
+
67
+ const SELECTION_COL_WIDTH = 40;
42
68
 
43
69
  /** Returns the field type for a column, defaulting to "input" */
44
70
  function getColumnField(column: DataTableColumn): DataTableField {
45
71
  return column.field ?? "input";
46
72
  }
47
73
 
48
- /** Returns true if the field type should be right-aligned (numeric fields) */
49
- function isNumericField(field: DataTableField): boolean {
50
- switch (field) {
51
- case "stepper":
52
- case "slider":
53
- case "progress":
54
- case "rating":
55
- case "duration":
56
- return true;
57
- default:
58
- return false;
59
- }
74
+ /** Resolve DG-TBL-01 column alignment for a column def. */
75
+ function resolveColumnAlign(column: DataTableColumn) {
76
+ return getDefaultColumnAlign({
77
+ id: typeof column.id === "string" ? column.id : undefined,
78
+ align: column.align,
79
+ field: getColumnField(column),
80
+ fieldProps: column.fieldProps,
81
+ meta: column.meta as { align?: "left" | "center" | "right"; role?: string } | undefined,
82
+ });
60
83
  }
61
84
 
62
- /** Maps field type to filter-compatible types */
63
- function mapFieldToFilterType(
64
- field?: DataTableField,
65
- ): "text" | "number" | "date" | "boolean" | "select" {
66
- switch (field) {
67
- case "stepper":
68
- case "slider":
69
- case "progress":
70
- case "rating":
71
- case "duration":
72
- return "number";
73
- case "datepicker":
74
- case "datetimepicker":
75
- case "timepicker":
76
- case "daterangepicker":
77
- case "multidatepicker":
78
- return "date";
79
- case "checkbox":
80
- case "switch":
81
- return "boolean";
82
- case "select":
83
- case "combobox":
84
- case "radiogroup":
85
- case "togglegroup":
86
- return "select";
87
- default:
88
- return "text";
89
- }
90
- }
85
+ // mapFieldToFilterType moved to utils/filterFields (shared with the filter
86
+ // model — LC-16, one mapping).
91
87
 
92
88
  const rowHeightPx = 40;
93
89
 
@@ -107,6 +103,7 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
107
103
  columns,
108
104
  initialState,
109
105
  onStateChange,
106
+ onRetry,
110
107
  syncWithUrl = false,
111
108
  urlDebounceMs = 500,
112
109
  urlStrategy,
@@ -114,14 +111,19 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
114
111
  manualPagination = false,
115
112
  manualSorting = false,
116
113
  enableFiltering = true,
114
+ filterableFields,
117
115
  enableSorting = true,
118
116
  enablePagination = true,
117
+ pageSizeOptions,
118
+ paginationMode = "pages",
119
+ loadPage,
119
120
  enableColumnVisibility = true,
120
121
  enableColumnOrdering = false,
121
122
  enableColumnResizing = false,
122
123
  enableGlobalSearch = true,
123
124
  enableViews = false,
124
125
  columnLayout = "equal",
126
+ layout = "auto",
125
127
  enableVirtualization = false,
126
128
  virtualizationHeight,
127
129
  virtualizationOverscan = 5,
@@ -132,6 +134,9 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
132
134
  maxPinnedColumns = 3,
133
135
  enableGrouping = false,
134
136
  enableKeyboardNavigation = false,
137
+ enableRowSelection = false,
138
+ selectAllScope: selectAllScopeProp,
139
+ bulkActions,
135
140
  readOnly = false,
136
141
  onCellChange,
137
142
  name,
@@ -151,7 +156,7 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
151
156
  className,
152
157
  size,
153
158
  compact = false,
154
- disabled: _disabled = false,
159
+ disabled = false,
155
160
  children,
156
161
  "aria-label": ariaLabel,
157
162
  "aria-describedby": ariaDescribedBy,
@@ -159,7 +164,25 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
159
164
  }: DataTableRootProps<TData>) {
160
165
  const { t } = useTranslation();
161
166
  const { sm } = useMedia();
162
- const { knobProps } = useResolvedKnobs({ intent: undefined, component: "DataTable", compact });
167
+ // Resolved responsive layout: cards below `$sm` (W11 compact class) unless
168
+ // pinned via the `layout` prop. Same table state drives both layouts.
169
+ const showCards = layout === "cards" || (layout === "auto" && sm === false);
170
+ const { knobProps, disabledState } = useResolvedKnobs({
171
+ intent: undefined,
172
+ component: "DataTable",
173
+ compact,
174
+ });
175
+ // Collapsed expand-caret points toward inline-end, so it mirrors in RTL via
176
+ // glyph swap (useDirection, Axiom 15); rotation sign flips so expanded
177
+ // still points down.
178
+ const isRTL = useDirection() === "rtl";
179
+ const ExpandCaretIcon = isRTL ? CaretLeftIcon : CaretRightIcon;
180
+ const expandedCaretRotation = isRTL ? "rotate(-90deg)" : "rotate(90deg)";
181
+ const tableZebraOn = knobProps.tableZebra === "on";
182
+ const bulkBarPlacement = knobProps.bulkBarPlacement === "bottom" ? "bottom" : "top";
183
+ // House selectAllScope knob (DG-TBL-03): prop overrides knob; default page.
184
+ const selectAllScope: SelectAllScope =
185
+ selectAllScopeProp ?? (knobProps.selectAllScope === "filtered" ? "filtered" : "page");
163
186
  const { resolvedForm } = useFormField({ form: formProp });
164
187
 
165
188
  const isFormMode = Boolean(name && resolvedForm);
@@ -176,8 +199,11 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
176
199
  manualPagination,
177
200
  manualSorting,
178
201
  enableFiltering,
202
+ filterableFields,
179
203
  enableSorting,
180
204
  enablePagination,
205
+ paginationMode,
206
+ loadPage,
181
207
  enableColumnVisibility,
182
208
  enableColumnOrdering,
183
209
  enableColumnResizing,
@@ -194,17 +220,43 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
194
220
  maxPinnedColumns,
195
221
  enableGrouping,
196
222
  enableKeyboardNavigation,
223
+ enableRowSelection,
197
224
  rowCount,
198
225
  pageCount,
199
226
  });
200
227
 
228
+ const resolvedBulkActions = (bulkActions ?? []) as BulkAction<TData>[];
229
+
230
+ const selectAllChecked =
231
+ enableRowSelection &&
232
+ (selectAllScope === "filtered"
233
+ ? table.getIsAllRowsSelected()
234
+ : table.getIsAllPageRowsSelected());
235
+ const selectAllIndeterminate =
236
+ enableRowSelection &&
237
+ (selectAllScope === "filtered"
238
+ ? table.getIsSomeRowsSelected() && !table.getIsAllRowsSelected()
239
+ : table.getIsSomePageRowsSelected() && !table.getIsAllPageRowsSelected());
240
+
241
+ const toggleSelectAll = useCallback(() => {
242
+ if (selectAllScope === "filtered") {
243
+ table.toggleAllRowsSelected();
244
+ } else {
245
+ table.toggleAllPageRowsSelected();
246
+ }
247
+ }, [selectAllScope, table]);
248
+
201
249
  const resolvedSize: "sm" | "md" | "lg" =
202
250
  size ?? (knobProps.sizeToken === "$3" ? "sm" : knobProps.sizeToken === "$5" ? "lg" : "md");
203
251
 
204
252
  const cellHeight = resolvedSize === "sm" ? "$3" : resolvedSize === "lg" ? "$5" : "$4";
205
253
 
206
254
  const headerGroups = table.getHeaderGroups();
207
- const tableRows = table.getRowModel().rows;
255
+ const rowModelRows = table.getRowModel().rows;
256
+ // Infinite mode reveals accumulated pages only; loader mode's row model is
257
+ // already just the accumulated rows, so the slice is a no-op there.
258
+ const infinite = computed.infinite;
259
+ const tableRows = infinite ? rowModelRows.slice(0, infinite.visibleRowCount) : rowModelRows;
208
260
  const footerGroups = table.getFooterGroups();
209
261
 
210
262
  const hasFooter = footerGroups.some((group: any) =>
@@ -219,15 +271,35 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
219
271
  const getColSizeProps = useCallback(
220
272
  (col: {
221
273
  getSize: () => number;
274
+ getIsPinned?: () => "left" | "right" | false;
222
275
  columnDef: { size?: number; minSize?: number; maxSize?: number };
223
276
  }) => {
224
277
  const hasExplicitSize = col.columnDef.size != null;
225
- if (hasExplicitSize || enableColumnResizing) {
278
+ // A pinned column must render at exactly getSize(): getStickyStyle sums
279
+ // getSize() of preceding pinned columns for the sticky inset, so a
280
+ // flexed pinned column (equal layout) would drift every offset after
281
+ // the first. min/max clamp the box under any flex resolution.
282
+ const isPinned = enableColumnPinning && Boolean(col.getIsPinned?.());
283
+ if (isPinned) {
284
+ const size = col.getSize();
285
+ return {
286
+ width: size,
287
+ minWidth: size,
288
+ maxWidth: size,
289
+ flexGrow: 0,
290
+ flexShrink: 0,
291
+ flexBasis: "auto" as const,
292
+ };
293
+ }
294
+ // Scroll layout needs one concrete width per column (from the column
295
+ // def, TanStack default otherwise) so independent flex rows stay
296
+ // aligned while the table grows past its container.
297
+ if (hasExplicitSize || enableColumnResizing || columnLayout === "scroll") {
226
298
  return { width: col.getSize() };
227
299
  }
228
300
  return {};
229
301
  },
230
- [enableColumnResizing],
302
+ [enableColumnResizing, columnLayout, enableColumnPinning],
231
303
  );
232
304
 
233
305
  // HTML5 column drag-and-drop (web only). Reorder swaps the dragged column
@@ -264,14 +336,17 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
264
336
  }, [enableColumnOrdering, table]);
265
337
 
266
338
  const bodyScrollRef = useRef<HTMLDivElement>(null);
339
+ // isWeb, not window-presence: RN (Hermes) aliases a window global, but
340
+ // react-virtual needs real DOM scroll elements — keep it inert on native.
267
341
  const isVirtualized =
268
- enableVirtualization &&
269
- virtualizationHeight != null &&
270
- virtualizationHeight > 0 &&
271
- typeof window !== "undefined";
342
+ enableVirtualization && virtualizationHeight != null && virtualizationHeight > 0 && isWeb;
272
343
 
344
+ // Infinite mode adds one tail row to the virtual count while more pages
345
+ // exist: it renders the appending skeleton and extends the scroll range so
346
+ // appended pages grow geometry instead of collapsing it.
347
+ const hasInfiniteTail = Boolean(infinite && !infinite.exhausted && tableRows.length > 0);
273
348
  const virtualizer = useVirtualizer({
274
- count: tableRows.length,
349
+ count: tableRows.length + (hasInfiniteTail ? 1 : 0),
275
350
  getScrollElement: () => bodyScrollRef.current,
276
351
  estimateSize: () => rowHeightPx,
277
352
  overscan: virtualizationOverscan,
@@ -281,31 +356,112 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
281
356
  const virtualItems = isVirtualized ? virtualizer.getVirtualItems() : [];
282
357
  const totalSize = isVirtualized ? virtualizer.getTotalSize() : 0;
283
358
 
359
+ // ---- Infinite mode: load-more triggers ----
360
+
361
+ const loadMoreRef = useRef<(() => void) | undefined>(undefined);
362
+ loadMoreRef.current = infinite?.loadMore;
363
+
364
+ // Virtualized: append when the last rendered virtual row nears the tail
365
+ // (standard TanStack Virtual infinite pattern — overscan gives lead time).
366
+ const lastVirtualIndex = virtualItems.length ? virtualItems[virtualItems.length - 1].index : -1;
367
+ React.useEffect(() => {
368
+ if (!infinite || !isVirtualized || infinite.exhausted) return;
369
+ if (lastVirtualIndex < 0) return;
370
+ if (lastVirtualIndex >= tableRows.length - INFINITE_TRIGGER_ROWS) {
371
+ loadMoreRef.current?.();
372
+ }
373
+ }, [infinite?.exhausted, isVirtualized, lastVirtualIndex, tableRows.length, !!infinite]);
374
+
375
+ // Non-virtualized (grid or card list): IntersectionObserver sentinel below
376
+ // the content. Re-observed on row-count changes so short pages keep loading
377
+ // while the sentinel stays on screen.
378
+ const sentinelRef = useRef<HTMLElement | null>(null);
379
+ React.useEffect(() => {
380
+ if (!infinite || isVirtualized || infinite.exhausted) return;
381
+ if (!isWeb || typeof IntersectionObserver === "undefined") return;
382
+ const node = sentinelRef.current;
383
+ if (!node) return;
384
+ const observer = new IntersectionObserver(
385
+ (entries) => {
386
+ for (const entry of entries) {
387
+ if (entry.isIntersecting) loadMoreRef.current?.();
388
+ }
389
+ },
390
+ { rootMargin: `${INFINITE_TRIGGER_ROWS * rowHeightPx}px` },
391
+ );
392
+ observer.observe(node);
393
+ return () => observer.disconnect();
394
+ }, [!!infinite, infinite?.exhausted, isVirtualized, tableRows.length]);
395
+
284
396
  const isFlexLayout = columnLayout !== "auto";
285
397
  const displayMode = isFlexLayout ? ("flex" as const) : ("table" as const);
286
398
 
399
+ // Column pinning shares the scroll layout's horizontal geometry: the
400
+ // content View is the ONE horizontal scrollport (header + body + footer
401
+ // rows all ride inside it) and the Table floors at max-content so rows
402
+ // never overflow their own boxes. Sticky resolves against the NEAREST
403
+ // scroll container, so with pinning the Table (overflow:hidden base) and
404
+ // Table.Body (overflowY:auto flex variant, which computes overflow-x:auto)
405
+ // must be overridden to overflow:visible — otherwise the body scrolls on
406
+ // its own while the header stays put and pinned cells stick to the wrong
407
+ // scrollport (the LTR pinning breakage).
408
+ const hScroll = isWeb && isFlexLayout && (columnLayout === "scroll" || enableColumnPinning);
409
+ // In the horizontal-overflow modes, body cell content is clipped to the
410
+ // cell box: flex-mode cells default to overflow:visible, so overlong text
411
+ // paints over neighbor cells and bleeds out from under sticky pinned
412
+ // columns (LC-10 containment at the cell grain).
413
+ const clipBodyCells = hScroll;
414
+
287
415
  const cellFlexProps = useMemo(() => {
288
416
  if (!isFlexLayout) return {};
289
- if (columnLayout === "scroll") return { flex: 0, flexShrink: 0, flexGrow: 0, minWidth: 80 };
290
- if (enableColumnResizing) return { flex: 0, flexShrink: 0, flexGrow: 0 };
417
+ if (columnLayout === "scroll") {
418
+ // flexBasis auto, not the `flex: 0` shorthand: RN expands `flex: 0` to
419
+ // basis 0, which overrides per-column widths and crushes every cell to
420
+ // the minWidth floor (contents then overflow and get clipped).
421
+ return { flexGrow: 0, flexShrink: 0, flexBasis: "auto" as const, minWidth: 80 };
422
+ }
423
+ // Same flexBasis trap as the scroll branch above: `flex: 0` expands to
424
+ // basis 0 and the per-column width from getColSizeProps loses, crushing
425
+ // every resizable cell to the min-width floor (content then overlaps).
426
+ if (enableColumnResizing) {
427
+ return { flexGrow: 0, flexShrink: 0, flexBasis: "auto" as const };
428
+ }
291
429
  return { flex: 1, flexShrink: 1, flexGrow: 1, flexBasis: 0, minWidth: 0 };
292
430
  }, [isFlexLayout, columnLayout, enableColumnResizing]);
293
431
 
294
- const pinning = useMemo(
432
+ // Columns offered by the card-layout filter builder (grid mode filters
433
+ // through ColumnHeaderFilter in the headers instead).
434
+ const cardFilterColumns = useMemo(
295
435
  () =>
296
- enableColumnPinning
297
- ? DataTableColumnPinning({
298
- table,
299
- maxPinnedColumns,
300
- allowPinning: true,
301
- })
302
- : null,
303
- [enableColumnPinning, table, maxPinnedColumns],
436
+ columns
437
+ .filter((col) => (col as any).enableColumnFilter !== false)
438
+ .map((col) => ({
439
+ id: (col.id as string) || ((col as any).accessorKey as string) || "",
440
+ label:
441
+ typeof col.header === "string"
442
+ ? col.header
443
+ : (col.id as string) || ((col as any).accessorKey as string) || "",
444
+ type: mapFieldToFilterType(col.field),
445
+ }))
446
+ .filter((col) => col.id),
447
+ [columns],
304
448
  );
305
449
 
450
+ // DataTableColumnPinning is a hook-style helper (it calls useState/useMemo/
451
+ // useCallback internally), so it must run unconditionally at the top level
452
+ // of this component. Calling it inside useMemo crashed with "Should have a
453
+ // queue. You are likely calling Hooks conditionally."
454
+ const pinningHelpers = DataTableColumnPinning({
455
+ table,
456
+ maxPinnedColumns,
457
+ allowPinning: true,
458
+ disabled,
459
+ });
460
+ const pinning = enableColumnPinning ? pinningHelpers : null;
461
+
306
462
  const keyboardNav = useDataTableKeyboard({
307
463
  table,
308
- enabled: enableKeyboardNavigation,
464
+ enabled: enableKeyboardNavigation && !disabled,
309
465
  viewportHeight: virtualizationHeight ?? 400,
310
466
  onScrollToRow: isVirtualized
311
467
  ? (idx) => virtualizer.scrollToIndex(idx, { align: "auto" })
@@ -319,8 +475,11 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
319
475
 
320
476
  const handleCellChange = useCallback(
321
477
  async (rowIndex: number, columnId: string, newValue: any) => {
322
- if (readOnly) return;
478
+ if (readOnly || disabled) return;
323
479
  const previousValue = data[rowIndex]?.[columnId];
480
+ // Bail on no-op commits so a field that re-emits the same primitive value
481
+ // (e.g. OTP sync effects) cannot force a new data array every render.
482
+ if (Object.is(previousValue, newValue)) return;
324
483
  if (onCellChange) {
325
484
  const result = await onCellChange(rowIndex, columnId, newValue, previousValue);
326
485
  if (result === false) return;
@@ -331,25 +490,25 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
331
490
  onDataChange(newData);
332
491
  }
333
492
  },
334
- [readOnly, data, onCellChange, isFormMode, onDataChange],
493
+ [readOnly, disabled, data, onCellChange, isFormMode, onDataChange],
335
494
  );
336
495
 
337
496
  const handleAddRow = useCallback(() => {
338
- if (readOnly || (maxRows && data.length >= maxRows)) return;
497
+ if (readOnly || disabled || (maxRows && data.length >= maxRows)) return;
339
498
  const newRow = { ...defaultRow, idx: data.length + 1 } as unknown as TData;
340
499
  if (!isFormMode && onDataChange) {
341
500
  onDataChange([...data, newRow]);
342
501
  }
343
- }, [readOnly, maxRows, data, defaultRow, isFormMode, onDataChange]);
502
+ }, [readOnly, disabled, maxRows, data, defaultRow, isFormMode, onDataChange]);
344
503
 
345
504
  const handleDeleteRow = useCallback(
346
505
  (rowIndex: number) => {
347
- if (readOnly || data.length <= minRows) return;
506
+ if (readOnly || disabled || data.length <= minRows) return;
348
507
  if (!isFormMode && onDataChange) {
349
508
  onDataChange(data.filter((_, idx) => idx !== rowIndex));
350
509
  }
351
510
  },
352
- [readOnly, minRows, data, isFormMode, onDataChange],
511
+ [readOnly, disabled, minRows, data, isFormMode, onDataChange],
353
512
  );
354
513
 
355
514
  const isCompact = resolvedSize === "sm" || compact;
@@ -382,7 +541,9 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
382
541
  fieldProps={columnDef.fieldProps}
383
542
  onChange={(newValue) => handleCellChange(rowIndex, columnId, newValue)}
384
543
  readOnly={readOnly}
544
+ disabled={disabled}
385
545
  columnId={columnId}
546
+ columnLabel={typeof columnDef.header === "string" ? columnDef.header : undefined}
386
547
  rowIndex={rowIndex}
387
548
  rowData={rowData}
388
549
  size={knobProps.sizeToken}
@@ -392,12 +553,13 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
392
553
  />
393
554
  );
394
555
  },
395
- [handleCellChange, readOnly, knobProps.sizeToken, isCompact],
556
+ [handleCellChange, readOnly, disabled, knobProps.sizeToken, isCompact],
396
557
  );
397
558
 
398
559
  const isSSR = typeof window === "undefined";
399
560
 
400
- const extraColumnsBefore = (showRowNumbers ? 1 : 0) + (enableRowExpansion ? 1 : 0);
561
+ const extraColumnsBefore =
562
+ (enableRowSelection ? 1 : 0) + (showRowNumbers ? 1 : 0) + (enableRowExpansion ? 1 : 0);
401
563
  const extraColumnsAfter = showDeleteRow && !readOnly ? 1 : 0;
402
564
 
403
565
  const getStickyStyle = useCallback(
@@ -418,11 +580,14 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
418
580
  const col = table.getColumn(leftPinned[i]);
419
581
  if (col) leftOffset += col.getSize();
420
582
  }
583
+ if (enableRowSelection) leftOffset += SELECTION_COL_WIDTH;
421
584
  if (enableRowExpansion) leftOffset += 32;
422
585
  if (showRowNumbers) leftOffset += 50;
586
+ // Logical inset (RTL backlog #2): TanStack's "left" bucket is the
587
+ // reading-start side, so the sticky offset must flip with direction.
423
588
  return {
424
589
  position: "sticky" as const,
425
- left: leftOffset,
590
+ insetInlineStart: leftOffset,
426
591
  zIndex: 2,
427
592
  backgroundColor: "$color2",
428
593
  };
@@ -437,7 +602,7 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
437
602
  if (showDeleteRow && !readOnly) rightOffset += 60;
438
603
  return {
439
604
  position: "sticky" as const,
440
- right: rightOffset,
605
+ insetInlineEnd: rightOffset,
441
606
  zIndex: 2,
442
607
  backgroundColor: "$color2",
443
608
  };
@@ -449,6 +614,7 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
449
614
  enableColumnPinning,
450
615
  pinning,
451
616
  table,
617
+ enableRowSelection,
452
618
  enableRowExpansion,
453
619
  showRowNumbers,
454
620
  showDeleteRow,
@@ -457,13 +623,51 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
457
623
  );
458
624
 
459
625
  const renderRowContent = useCallback(
460
- (row: any, rowIndex: number, _isLastRow: boolean) => {
626
+ // `cellElement="div"` is the virtualized escape hatch: virtual rows are
627
+ // absolutely-positioned <div role="row"> hosts, and a real <td> is not a
628
+ // valid <div> child (React validateDOMNesting + SSR reparenting). The
629
+ // div cells keep role="cell" from the primitive, preserving the
630
+ // roles-based grid semantics.
631
+ (row: any, rowIndex: number, _isLastRow: boolean, cellElement?: "div") => {
461
632
  const rowData = row.original as TData;
633
+ const cellRenderProps = cellElement ? ({ render: cellElement } as any) : {};
462
634
 
463
635
  return (
464
636
  <>
637
+ {enableRowSelection && (
638
+ <Table.Cell
639
+ {...cellRenderProps}
640
+ cellWidth={SELECTION_COL_WIDTH}
641
+ cellHeight={cellHeight as any}
642
+ cellLocation="first"
643
+ justifyContent="center"
644
+ >
645
+ <Checkbox
646
+ checked={row.getIsSelected()}
647
+ onChange={(checked) => {
648
+ if (disabled) return;
649
+ row.toggleSelected(!!checked);
650
+ }}
651
+ disabled={disabled}
652
+ checkboxProps={{
653
+ // Row identity in the name so repeated per-row actions are
654
+ // differentiated for screen readers (DG-A11Y-06).
655
+ "aria-label": withInterp(t("Select row {{row}}", { row: rowIndex + 1 }), {
656
+ row: rowIndex + 1,
657
+ }),
658
+ }}
659
+ compact={isCompact}
660
+ />
661
+ </Table.Cell>
662
+ )}
663
+
465
664
  {showRowNumbers && (
466
- <Table.Cell cellWidth={50} cellHeight={cellHeight as any} cellLocation="first">
665
+ <Table.Cell
666
+ {...cellRenderProps}
667
+ cellWidth={50}
668
+ cellHeight={cellHeight as any}
669
+ cellLocation={enableRowSelection ? "middle" : "first"}
670
+ >
467
671
  <Text fontSize={knobProps.sizeToken} color="$color10">
468
672
  {rowIndex + 1}
469
673
  </Text>
@@ -472,9 +676,10 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
472
676
 
473
677
  {enableRowExpansion && (
474
678
  <Table.Cell
679
+ {...cellRenderProps}
475
680
  cellWidth={32 + row.depth * 20}
476
681
  cellHeight={cellHeight as any}
477
- cellLocation={showRowNumbers ? "middle" : "first"}
682
+ cellLocation={enableRowSelection || showRowNumbers ? "middle" : "first"}
478
683
  paddingLeft={0}
479
684
  paddingRight={0}
480
685
  >
@@ -516,18 +721,30 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
516
721
  )}
517
722
  {row.getCanExpand() ? (
518
723
  <View
519
- onPress={() => row.toggleExpanded()}
520
- cursor="pointer"
724
+ onPress={() => {
725
+ if (disabled) return;
726
+ row.toggleExpanded();
727
+ }}
728
+ cursor={disabled ? "not-allowed" : "pointer"}
729
+ aria-disabled={disabled || undefined}
521
730
  padding="$1"
522
731
  aria-expanded={row.getIsExpanded()}
523
- aria-label={row.getIsExpanded() ? "Collapse row" : "Expand row"}
732
+ aria-label={
733
+ row.getIsExpanded()
734
+ ? withInterp(t("Collapse row {{row}}", { row: rowIndex + 1 }), {
735
+ row: rowIndex + 1,
736
+ })
737
+ : withInterp(t("Expand row {{row}}", { row: rowIndex + 1 }), {
738
+ row: rowIndex + 1,
739
+ })
740
+ }
524
741
  hoverStyle={{ backgroundColor: "$color4" }}
525
742
  borderRadius="$2"
526
743
  >
527
- <CaretRightIcon
744
+ <ExpandCaretIcon
528
745
  size={14}
529
746
  style={{
530
- transform: row.getIsExpanded() ? "rotate(90deg)" : "none",
747
+ transform: row.getIsExpanded() ? expandedCaretRotation : "none",
531
748
  transition: "transform 0.15s ease",
532
749
  }}
533
750
  />
@@ -540,24 +757,37 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
540
757
  )}
541
758
 
542
759
  {row.getVisibleCells().map((cell: any, cellIndex: number) => {
543
- const isFirstDataCell = cellIndex === 0 && !showRowNumbers && !enableRowExpansion;
760
+ const isFirstDataCell =
761
+ cellIndex === 0 && !enableRowSelection && !showRowNumbers && !enableRowExpansion;
544
762
  const isLastDataCell = cellIndex === row.getVisibleCells().length - 1 && !showDeleteRow;
545
763
  const cellLocation = isFirstDataCell ? "first" : isLastDataCell ? "last" : "middle";
546
764
  const stickyStyle = getStickyStyle(cell.column.id);
765
+ const columnAlign = resolveColumnAlign({
766
+ ...(cell.column.columnDef as DataTableColumn),
767
+ id: cell.column.id,
768
+ });
547
769
 
548
770
  return (
549
771
  <Table.Cell
550
772
  key={cell.id}
773
+ {...cellRenderProps}
551
774
  {...cellFlexProps}
552
775
  {...getColSizeProps(cell.column)}
553
776
  cellHeight={cellHeight as any}
554
777
  cellLocation={cellLocation}
778
+ justifyContent={alignToFlex(columnAlign)}
779
+ data-align={columnAlign}
780
+ {...(clipBodyCells ? { overflow: "hidden" as any } : {})}
555
781
  {...(isWeb && stickyStyle
556
782
  ? {
557
783
  style: {
558
784
  position: "sticky",
559
- ...("left" in stickyStyle && { left: stickyStyle.left }),
560
- ...("right" in stickyStyle && { right: stickyStyle.right }),
785
+ ...("insetInlineStart" in stickyStyle && {
786
+ insetInlineStart: stickyStyle.insetInlineStart,
787
+ }),
788
+ ...("insetInlineEnd" in stickyStyle && {
789
+ insetInlineEnd: stickyStyle.insetInlineEnd,
790
+ }),
561
791
  zIndex: 2,
562
792
  backgroundColor: "var(--color2)",
563
793
  } as React.CSSProperties,
@@ -571,6 +801,7 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
571
801
 
572
802
  {showDeleteRow && !readOnly && (
573
803
  <Table.Cell
804
+ {...cellRenderProps}
574
805
  cellWidth={60}
575
806
  cellHeight={cellHeight as any}
576
807
  cellLocation="last"
@@ -580,9 +811,11 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
580
811
  chromeless
581
812
  circular
582
813
  icon={TrashIcon}
583
- disabled={data.length <= minRows}
814
+ disabled={disabled || data.length <= minRows}
584
815
  onPress={() => handleDeleteRow(rowIndex)}
585
- aria-label={t("Delete row")}
816
+ aria-label={withInterp(t("Delete row {{row}}", { row: rowIndex + 1 }), {
817
+ row: rowIndex + 1,
818
+ })}
586
819
  />
587
820
  </Table.Cell>
588
821
  )}
@@ -590,10 +823,12 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
590
823
  );
591
824
  },
592
825
  [
826
+ enableRowSelection,
593
827
  showRowNumbers,
594
828
  enableRowExpansion,
595
829
  showDeleteRow,
596
830
  readOnly,
831
+ disabled,
597
832
  cellHeight,
598
833
  knobProps.sizeToken,
599
834
  cellFlexProps,
@@ -603,14 +838,25 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
603
838
  handleDeleteRow,
604
839
  data.length,
605
840
  minRows,
841
+ isCompact,
606
842
  t,
843
+ ExpandCaretIcon,
844
+ expandedCaretRotation,
845
+ clipBodyCells,
607
846
  ],
608
847
  );
609
848
 
849
+ // Chip press → toolbar filter editor channel (DataTableFilterButton consumes)
850
+ const [filterEditTarget, setFilterEditTarget] = useState<FilterEditTarget | null>(null);
851
+ const filterUi = useMemo<DataTableFilterUi>(
852
+ () => ({ editTarget: filterEditTarget, requestEdit: setFilterEditTarget }),
853
+ [filterEditTarget],
854
+ );
855
+
610
856
  // Build the state context value
611
857
  const stateContextValue = useMemo<DataTableStateContextValue<TData>>(
612
- () => ({ table, state, actions, computed }),
613
- [table, state, actions, computed],
858
+ () => ({ table, state, actions, computed, selectAllScope, filterUi }),
859
+ [table, state, actions, computed, selectAllScope, filterUi],
614
860
  );
615
861
 
616
862
  const renderToolbarComponent = () => {
@@ -650,11 +896,12 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
650
896
  };
651
897
 
652
898
  const renderPaginationComponent = () => {
899
+ const resolvedPageSizeOptions = pageSizeOptions ?? [10, 20, 50, 100];
653
900
  if (renderPagination) {
654
901
  return renderPagination({
655
902
  pagination: state.pagination,
656
903
  onPaginationChange: actions.setPagination,
657
- pageSizeOptions: [10, 20, 50, 100],
904
+ pageSizeOptions: resolvedPageSizeOptions,
658
905
  });
659
906
  }
660
907
 
@@ -662,7 +909,7 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
662
909
  <DataTablePagination
663
910
  pagination={state.pagination}
664
911
  onPaginationChange={actions.setPagination}
665
- pageSizeOptions={[10, 20, 50, 100]}
912
+ pageSizeOptions={resolvedPageSizeOptions}
666
913
  compact
667
914
  />
668
915
  );
@@ -681,8 +928,61 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
681
928
  const hasToolbar = enableGlobalSearch || enableFiltering || enableViews;
682
929
  const scrollContainerRef = useRef<HTMLDivElement>(null);
683
930
 
684
- // Enable drag-to-scroll when in scroll layout mode
685
- useDragScroll(scrollContainerRef, columnLayout === "scroll" && isWeb && !isSSR);
931
+ // DF-12 / Axiom 6 HONEST STATE — a height-constrained body clips rows
932
+ // silently: macOS overlay scrollbars paint nothing at rest, so the frame
933
+ // reads "this is all the rows". Track whether rows are cut off below the
934
+ // fold and paint a bottom fade until the user reaches the last row.
935
+ const tableBodyRef = useRef<HTMLElement | null>(null);
936
+ const [bodyClipped, setBodyClipped] = useState(false);
937
+ useEffect(() => {
938
+ if (!isWeb || isSSR || showCards) return;
939
+ const el = tableBodyRef.current;
940
+ if (!el) return;
941
+ const update = () => {
942
+ setBodyClipped(el.scrollHeight - (el.scrollTop + el.clientHeight) > 1);
943
+ };
944
+ update();
945
+ el.addEventListener("scroll", update, { passive: true });
946
+ const ro = typeof ResizeObserver !== "undefined" ? new ResizeObserver(update) : null;
947
+ ro?.observe(el);
948
+ return () => {
949
+ el.removeEventListener("scroll", update);
950
+ ro?.disconnect();
951
+ };
952
+ }, [tableRows.length, showCards]);
953
+
954
+ // Enable drag-to-scroll in the horizontal-overflow modes (scroll layout
955
+ // and column pinning share the content-View scrollport).
956
+ useDragScroll(scrollContainerRef, hScroll && !isSSR);
957
+
958
+ // Visible row range for the footer summary (1-based, clamped to total).
959
+ const rangeTotal = state.pagination.totalCount ?? 0;
960
+ const rangeStart =
961
+ rangeTotal === 0 ? 0 : state.pagination.pageIndex * state.pagination.pageSize + 1;
962
+ const rangeEnd = Math.min(
963
+ (state.pagination.pageIndex + 1) * state.pagination.pageSize,
964
+ rangeTotal,
965
+ );
966
+
967
+ // W9 / DG-ST-01,02,04 / DG-TBL-06 — first-class async states.
968
+ // Error wins over empty chrome; initial load uses a table-shaped skeleton.
969
+ // Selection API untouched.
970
+ const resolvedAriaLabel = ariaLabel || t("Data table");
971
+ if (state.error) {
972
+ return (
973
+ <AsyncBoundary
974
+ error={state.error}
975
+ onRetry={onRetry}
976
+ layout="table"
977
+ errorTitle={t("Couldn't load table")}
978
+ compact
979
+ aria-label={resolvedAriaLabel}
980
+ />
981
+ );
982
+ }
983
+ if ((state.isLoading || infinite?.isInitialLoading) && tableRows.length === 0) {
984
+ return <AsyncBoundary loading layout="table" aria-label={resolvedAriaLabel} />;
985
+ }
686
986
 
687
987
  return (
688
988
  <DataTableContext.Provider size={resolvedSize} compact={isCompact}>
@@ -691,34 +991,101 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
691
991
  flexDirection="column"
692
992
  gap={0}
693
993
  width="100%"
694
- flex={1}
994
+ // flexBasis auto (not flex={1} basis-0): in an auto-height parent
995
+ // a basis-0 chain resolves to 0 and the whole table collapses to
996
+ // a sliver; basis auto sizes to content there while still filling
997
+ // sized parents (grow 1) and allowing inner scroll (shrink 1 +
998
+ // minHeight 0).
999
+ flexGrow={1}
1000
+ flexShrink={1}
1001
+ flexBasis="auto"
695
1002
  minHeight={0}
696
1003
  {...(isWeb && className ? { className } : {})}
697
- aria-label={ariaLabel || "Data table"}
1004
+ aria-label={resolvedAriaLabel}
698
1005
  aria-describedby={ariaDescribedBy}
699
1006
  aria-live="polite"
700
1007
  aria-atomic="false"
1008
+ // UX-011 / Axiom 6 HONEST STATE: the advertised `disabled` prop
1009
+ // makes the whole assembly inert and says so. `inert` (React 19)
1010
+ // blocks pointer, keyboard, and AT for every control inside —
1011
+ // including chrome (toolbar/pagination) that has no disabled API
1012
+ // of its own. LC-40 assembly fragment carries the dimWhole
1013
+ // visual; keepLabel washes per-control chrome instead (cells,
1014
+ // checkboxes, buttons receive their own `disabled` below).
1015
+ aria-disabled={disabled || undefined}
1016
+ {...(disabled
1017
+ ? {
1018
+ ...disabledState.assemblyKnobProps,
1019
+ cursor: "not-allowed" as const,
1020
+ ...(isWeb ? ({ inert: true } as any) : { pointerEvents: "none" as const }),
1021
+ }
1022
+ : {})}
701
1023
  {...props}
702
1024
  >
703
- {/* Toolbar */}
704
- {hasToolbar && renderToolbarComponent()}
1025
+ {/* Toolbar. The width-100% wrapper is the LC-40 carrier for
1026
+ chrome that has no `disabled` API of its own: under keepLabel
1027
+ the chrome fragment dims the region (interaction is already
1028
+ blocked by the root inert). */}
1029
+ {hasToolbar && (
1030
+ <View width="100%" {...(disabled ? disabledState.chromeKnobProps : {})}>
1031
+ {renderToolbarComponent()}
1032
+ </View>
1033
+ )}
1034
+
1035
+ {/* Active filter chips — visibility surface for ALL filters,
1036
+ including hidden-column filters (Axiom 6 HONEST STATE) */}
1037
+ {enableFiltering && (
1038
+ <View width="100%" {...(disabled ? disabledState.chromeKnobProps : {})}>
1039
+ <DataTableFilterChips />
1040
+ </View>
1041
+ )}
1042
+
1043
+ {/* Auto selection toolbar (DG-TBL-02) — placement from house bulkBarPlacement */}
1044
+ {enableRowSelection && bulkBarPlacement === "top" ? (
1045
+ <View width="100%" {...(disabled ? disabledState.chromeKnobProps : {})}>
1046
+ <DataTableBulkActions
1047
+ actions={resolvedBulkActions}
1048
+ maxVisibleActions={5}
1049
+ showSelectionCount
1050
+ placement="top"
1051
+ />
1052
+ </View>
1053
+ ) : null}
705
1054
 
706
1055
  {/* Compound sub-components (children) */}
707
1056
  {children}
708
1057
 
709
- {/* Mobile Card View */}
710
- {sm === false ? (
711
- <DataTableMobileCards
712
- tableRows={tableRows}
713
- showRowNumbers={showRowNumbers}
714
- showDeleteRow={showDeleteRow}
715
- readOnly={readOnly}
716
- dataLength={tableData.length}
717
- minRows={minRows}
718
- hasActiveFilters={computed.hasActiveFilters}
719
- renderCellContent={renderCellContent}
720
- onDeleteRow={effectiveHandleDeleteRow}
721
- />
1058
+ {/* Card List View (layout="cards" or auto below $sm) */}
1059
+ {showCards ? (
1060
+ <>
1061
+ {/* Header affordances (sort / per-column filter) live in the
1062
+ grid headers; the card list restores them here. */}
1063
+ <DataTableCardControls
1064
+ table={table}
1065
+ enableSorting={enableSorting}
1066
+ enableFiltering={enableFiltering}
1067
+ availableColumns={cardFilterColumns}
1068
+ compact={isCompact}
1069
+ disabled={disabled}
1070
+ />
1071
+ <DataTableMobileCards
1072
+ tableRows={tableRows}
1073
+ enableRowSelection={enableRowSelection}
1074
+ showRowNumbers={showRowNumbers}
1075
+ showDeleteRow={showDeleteRow}
1076
+ readOnly={readOnly}
1077
+ disabled={disabled}
1078
+ dataLength={tableData.length}
1079
+ minRows={minRows}
1080
+ hasActiveFilters={computed.hasActiveFilters}
1081
+ renderCellContent={renderCellContent}
1082
+ onDeleteRow={effectiveHandleDeleteRow}
1083
+ selectAllChecked={selectAllChecked}
1084
+ selectAllIndeterminate={selectAllIndeterminate}
1085
+ onToggleSelectAll={toggleSelectAll}
1086
+ compact={isCompact}
1087
+ />
1088
+ </>
722
1089
  ) : (
723
1090
  /* Table View */
724
1091
  <View
@@ -732,9 +1099,18 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
732
1099
  }}
733
1100
  flexDirection="column"
734
1101
  width="100%"
735
- flex={1}
1102
+ flexGrow={1}
1103
+ flexShrink={1}
1104
+ flexBasis="auto"
736
1105
  minHeight={0}
737
- aria-label={`${ariaLabel || "Data table"} content`}
1106
+ // This View (the drag-scroll ref) is the horizontal scroll
1107
+ // container; the table inside floors at max-content so it
1108
+ // overflows here instead of panning the whole page. With
1109
+ // pinning it is the ONE scrollport sticky cells track.
1110
+ {...(hScroll ? { overflowX: "auto" as any } : {})}
1111
+ aria-label={withInterp(t("{{label}} content", { label: resolvedAriaLabel }), {
1112
+ label: resolvedAriaLabel,
1113
+ })}
738
1114
  tabIndex={enableKeyboardNavigation && !isSSR ? 0 : undefined}
739
1115
  onKeyDown={
740
1116
  enableKeyboardNavigation && !isSSR ? keyboardNav.handleKeyDown : undefined
@@ -756,21 +1132,21 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
756
1132
  borderBottomLeftRadius={knobProps.borderRadius.borderRadius}
757
1133
  borderBottomRightRadius={knobProps.borderRadius.borderRadius}
758
1134
  marginBottom={0}
759
- aria-label={ariaLabel || "Data table"}
1135
+ aria-label={resolvedAriaLabel}
760
1136
  aria-rowcount={computed.totalPages * state.pagination.pageSize}
761
1137
  aria-colcount={
762
1138
  table.getVisibleLeafColumns().length + extraColumnsBefore + extraColumnsAfter
763
1139
  }
764
1140
  width="100%"
765
- {...(columnLayout === "scroll" && isWeb
766
- ? {
767
- overflowX: "auto" as any,
768
- style: { minWidth: "max-content", width: "max-content" },
769
- }
770
- : {})}
1141
+ {...(hScroll ? { style: { minWidth: "max-content" } } : {})}
1142
+ // Pinning: the Table must NOT be a scroll container (its
1143
+ // overflow:hidden base makes it one) or sticky cells stick
1144
+ // to it instead of the scrolling content View. Content
1145
+ // fits the max-content box, so nothing needs the clip.
1146
+ {...(hScroll && enableColumnPinning ? { overflow: "visible" as any } : {})}
771
1147
  >
772
1148
  {/* Table Header */}
773
- <Table.Head zIndex="$1" aria-label="Table headers">
1149
+ <Table.Head zIndex="$1" aria-label={t("Table headers")}>
774
1150
  {headerGroups.map((headerGroup: any) => {
775
1151
  rowCounter.current++;
776
1152
  return (
@@ -796,11 +1172,43 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
796
1172
  "aria-rowindex": rowCounter.current,
797
1173
  } as any)}
798
1174
  >
1175
+ {enableRowSelection && (
1176
+ <Table.HeaderCell
1177
+ cellWidth={SELECTION_COL_WIDTH}
1178
+ cellHeight={cellHeight as any}
1179
+ cellLocation="first"
1180
+ justifyContent="center"
1181
+ >
1182
+ <Checkbox
1183
+ checked={
1184
+ selectAllIndeterminate ? "indeterminate" : selectAllChecked
1185
+ }
1186
+ disabled={disabled}
1187
+ onChange={(checked) => {
1188
+ if (disabled || checked === "indeterminate") return;
1189
+ const shouldSelect = checked === true;
1190
+ const isAll =
1191
+ selectAllScope === "filtered"
1192
+ ? table.getIsAllRowsSelected()
1193
+ : table.getIsAllPageRowsSelected();
1194
+ if (shouldSelect !== isAll) toggleSelectAll();
1195
+ }}
1196
+ checkboxProps={{
1197
+ "aria-label":
1198
+ selectAllScope === "filtered"
1199
+ ? t("Select all matching rows")
1200
+ : t("Select all rows on page"),
1201
+ }}
1202
+ compact={isCompact}
1203
+ />
1204
+ </Table.HeaderCell>
1205
+ )}
1206
+
799
1207
  {showRowNumbers && (
800
1208
  <Table.HeaderCell
801
1209
  cellWidth={50}
802
1210
  cellHeight={cellHeight as any}
803
- cellLocation="first"
1211
+ cellLocation={enableRowSelection ? "middle" : "first"}
804
1212
  >
805
1213
  <Text fontSize="$4" fontWeight="600">
806
1214
  #
@@ -812,7 +1220,9 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
812
1220
  <Table.HeaderCell
813
1221
  cellWidth={32}
814
1222
  cellHeight={cellHeight as any}
815
- cellLocation={showRowNumbers ? "middle" : "first"}
1223
+ cellLocation={
1224
+ enableRowSelection || showRowNumbers ? "middle" : "first"
1225
+ }
816
1226
  >
817
1227
  <View width={14} />
818
1228
  </Table.HeaderCell>
@@ -828,13 +1238,19 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
828
1238
  const colMaxSize =
829
1239
  header.column.columnDef.maxSize ?? Number.MAX_SAFE_INTEGER;
830
1240
  const stickyStyle = getStickyStyle(header.column.id);
831
- const columnField = getColumnField(
832
- header.column.columnDef as DataTableColumn,
833
- );
834
- const isNumeric = isNumericField(columnField);
1241
+ const columnDef = header.column.columnDef as DataTableColumn;
1242
+ const columnAlign = resolveColumnAlign({
1243
+ ...columnDef,
1244
+ id: header.column.id,
1245
+ });
1246
+ const headerJustify = alignToFlex(columnAlign);
1247
+ const isRightAligned = columnAlign === "right";
835
1248
 
836
1249
  const isFirstHeaderCell =
837
- headerIndex === 0 && !showRowNumbers && !enableRowExpansion;
1250
+ headerIndex === 0 &&
1251
+ !enableRowSelection &&
1252
+ !showRowNumbers &&
1253
+ !enableRowExpansion;
838
1254
  const isLastHeaderCell =
839
1255
  headerIndex === headerGroup.headers.length - 1 &&
840
1256
  !(showDeleteRow && !readOnly);
@@ -849,13 +1265,45 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
849
1265
  key={header.id}
850
1266
  id={`${header.column.id}-header`}
851
1267
  onPress={
852
- isSortableHeader
1268
+ isSortableHeader && !disabled
853
1269
  ? header.column.getToggleSortingHandler()
854
1270
  : undefined
855
1271
  }
856
- cursor={isSortableHeader ? "pointer" : "default"}
1272
+ // Keyboard operability (WCAG 2.1.1): the sort
1273
+ // control must not be mouse-only — Tab reaches
1274
+ // sortable headers, Enter/Space toggles (Shift
1275
+ // held = multi-sort, same as shift+click).
1276
+ // Disabled tables drop the handlers (the root
1277
+ // inert already blocks focus on web).
1278
+ {...(isSortableHeader && !disabled && isWeb
1279
+ ? ({
1280
+ tabIndex: 0,
1281
+ onKeyDown: (e: React.KeyboardEvent) => {
1282
+ if (
1283
+ e.key === "Enter" ||
1284
+ e.key === " " ||
1285
+ e.key === "Spacebar"
1286
+ ) {
1287
+ e.preventDefault();
1288
+ header.column.getToggleSortingHandler()?.(e);
1289
+ }
1290
+ },
1291
+ focusVisibleStyle: ensureFocusVisibleRing({
1292
+ outlineOffset: -2,
1293
+ }),
1294
+ } as any)
1295
+ : {})}
1296
+ cursor={
1297
+ disabled
1298
+ ? "not-allowed"
1299
+ : isSortableHeader
1300
+ ? "pointer"
1301
+ : "default"
1302
+ }
857
1303
  position="relative"
858
1304
  cellLocation={headerCellLocation}
1305
+ justifyContent={headerJustify}
1306
+ data-align={columnAlign}
859
1307
  aria-sort={
860
1308
  isSortableHeader
861
1309
  ? sortDirection === "asc"
@@ -865,7 +1313,7 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
865
1313
  : "none"
866
1314
  : undefined
867
1315
  }
868
- {...(dnd
1316
+ {...(dnd && !disabled
869
1317
  ? ({
870
1318
  draggable: true,
871
1319
  onDragStart: (e: React.DragEvent<HTMLElement>) =>
@@ -881,9 +1329,11 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
881
1329
  ? {
882
1330
  style: {
883
1331
  position: "sticky",
884
- ...("left" in stickyStyle && { left: stickyStyle.left }),
885
- ...("right" in stickyStyle && {
886
- right: (stickyStyle as any).right,
1332
+ ...("insetInlineStart" in stickyStyle && {
1333
+ insetInlineStart: stickyStyle.insetInlineStart,
1334
+ }),
1335
+ ...("insetInlineEnd" in stickyStyle && {
1336
+ insetInlineEnd: (stickyStyle as any).insetInlineEnd,
887
1337
  }),
888
1338
  zIndex: 2,
889
1339
  backgroundColor: "var(--color2)",
@@ -895,15 +1345,15 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
895
1345
  flexDirection="row"
896
1346
  gap="$2"
897
1347
  alignItems="center"
898
- justifyContent={isNumeric ? "flex-end" : "space-between"}
1348
+ justifyContent={isRightAligned ? "flex-end" : "space-between"}
899
1349
  flex={1}
900
1350
  >
901
1351
  <View
902
1352
  flexDirection="row"
903
1353
  gap="$2"
904
1354
  alignItems="center"
905
- flex={isNumeric ? undefined : 1}
906
- justifyContent={isNumeric ? "flex-end" : undefined}
1355
+ flex={isRightAligned ? undefined : 1}
1356
+ justifyContent={isRightAligned ? "flex-end" : undefined}
907
1357
  >
908
1358
  <Text fontSize="$4" userSelect="none">
909
1359
  {header.isPlaceholder
@@ -973,16 +1423,10 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
973
1423
  />
974
1424
  )}
975
1425
  {pinning && enableColumnPinning && (
976
- <>
977
- <pinning.PinButton
978
- columnId={header.column.id}
979
- position="left"
980
- />
981
- <pinning.PinButton
982
- columnId={header.column.id}
983
- position="right"
984
- />
985
- </>
1426
+ /* One compact cycle control per header
1427
+ (left → right → unpin) — two full
1428
+ buttons crowded the header (owner). */
1429
+ <pinning.PinButton columnId={header.column.id} />
986
1430
  )}
987
1431
  </View>
988
1432
  </View>
@@ -1000,7 +1444,14 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
1000
1444
  aria-valuenow={colSize}
1001
1445
  aria-valuemin={colMinSize}
1002
1446
  aria-valuemax={colMaxSize}
1003
- aria-label={`Resize ${header.column.columnDef.header || header.column.id} column`}
1447
+ aria-label={withInterp(
1448
+ t("Resize {{column}} column", {
1449
+ column: header.column.columnDef.header || header.column.id,
1450
+ }),
1451
+ {
1452
+ column: header.column.columnDef.header || header.column.id,
1453
+ },
1454
+ )}
1004
1455
  style={{ touchAction: "none" }}
1005
1456
  zIndex={10}
1006
1457
  />
@@ -1022,29 +1473,60 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
1022
1473
  </Table.Head>
1023
1474
 
1024
1475
  {/* Table Body */}
1025
- <Table.Body aria-label="Table data">
1476
+ <Table.Body
1477
+ // Virtualized mode hosts a div rowgroup (DataTableVirtualized)
1478
+ // inside a tbody>tr>td bridge; presentation-ing the bridge
1479
+ // keeps the AT grid tree clean: table > rowgroup(thead) +
1480
+ // rowgroup(virtual rows) with no cell-wrapping-rowgroup
1481
+ // noise. aria-label is prohibited on presentation roles.
1482
+ role={isVirtualized ? "presentation" : "rowgroup"}
1483
+ aria-label={isVirtualized ? undefined : t("Table data")}
1484
+ // Pinning: the flex-variant overflowY:auto computes
1485
+ // overflow-x:auto, making the body its own horizontal
1486
+ // scroller — headers (outside it) then never move with
1487
+ // the columns. Visible keeps the sticky chain clean so
1488
+ // the content View is the one scrollport.
1489
+ {...(hScroll && enableColumnPinning
1490
+ ? { overflowY: "visible" as any, overflowX: "visible" as any }
1491
+ : {})}
1492
+ ref={(node: any) => {
1493
+ tableBodyRef.current = node ?? null;
1494
+ }}
1495
+ >
1026
1496
  {tableRows.length === 0 ? (
1027
1497
  <Table.Row>
1028
1498
  <Table.Cell>
1029
- <View
1030
- padding="$8"
1031
- alignItems="center"
1032
- justifyContent="center"
1499
+ <EmptyState
1500
+ compact
1033
1501
  aria-live="polite"
1034
- >
1035
- <Text color="$color10" fontSize="$4">
1036
- {computed.hasActiveFilters
1502
+ title={
1503
+ computed.hasActiveFilters
1037
1504
  ? t("No results found")
1038
- : t("No data available")}
1039
- </Text>
1040
- </View>
1505
+ : t("No data available")
1506
+ }
1507
+ />
1041
1508
  </Table.Cell>
1042
1509
  </Table.Row>
1043
1510
  ) : isVirtualized ? (
1044
- <Table.Row>
1511
+ <Table.Row role="presentation">
1045
1512
  <Table.Cell
1513
+ role="presentation"
1046
1514
  padding={0}
1047
- style={{ display: "block", overflow: "hidden" } as any}
1515
+ // In the default flex displayMode colSpan is inert
1516
+ // and the context default gives cells a fixed token
1517
+ // width — the virtualized body must fill the row
1518
+ // explicitly or it collapses to that token. (In the
1519
+ // real-<table> displayMode the colSpan attribute
1520
+ // now genuinely spans.)
1521
+ cellWidth="auto"
1522
+ style={
1523
+ {
1524
+ display: "block",
1525
+ overflow: "hidden",
1526
+ width: "100%",
1527
+ minWidth: 0,
1528
+ } as any
1529
+ }
1048
1530
  {...({
1049
1531
  colSpan:
1050
1532
  table.getVisibleLeafColumns().length +
@@ -1070,6 +1552,7 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
1070
1552
  extraColumnsBefore={extraColumnsBefore}
1071
1553
  extraColumnsAfter={extraColumnsAfter}
1072
1554
  table={table}
1555
+ hasInfiniteTail={hasInfiniteTail}
1073
1556
  />
1074
1557
  </Table.Cell>
1075
1558
  </Table.Row>
@@ -1099,9 +1582,22 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
1099
1582
  flexDirection="row"
1100
1583
  alignItems="center"
1101
1584
  gap="$2"
1102
- paddingLeft={indent}
1585
+ paddingInlineStart={indent}
1103
1586
  cursor="pointer"
1104
1587
  onPress={() => row.toggleExpanded()}
1588
+ // Keyboard/AT contract: expandable group
1589
+ // header is a toggle button (Enter/Space).
1590
+ role="button"
1591
+ tabIndex={0}
1592
+ aria-expanded={row.getIsExpanded()}
1593
+ {...({
1594
+ onKeyDown: (e: React.KeyboardEvent) => {
1595
+ if (e.key === "Enter" || e.key === " ") {
1596
+ e.preventDefault();
1597
+ row.toggleExpanded();
1598
+ }
1599
+ },
1600
+ } as any)}
1105
1601
  >
1106
1602
  <Text fontFamily="$mono" fontSize="$3">
1107
1603
  {row.getIsExpanded() ? "▼" : "▶"}
@@ -1123,9 +1619,9 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
1123
1619
  keyboardNav.isNavigating &&
1124
1620
  index === keyboardNav.focusedRowIndex
1125
1621
  ? "$color4"
1126
- : index % 2 === 0
1127
- ? "$color1"
1128
- : "$color2"
1622
+ : tableZebraOn && index % 2 === 1
1623
+ ? "$color2"
1624
+ : "$color1"
1129
1625
  }
1130
1626
  {...({ animation: "quick" } as any)}
1131
1627
  hoverStyle={{ backgroundColor: "$color3" }}
@@ -1139,8 +1635,17 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
1139
1635
  }
1140
1636
  key={`${row.id}-${index}`}
1141
1637
  aria-rowindex={rowCounter.current}
1142
- aria-label={`Row ${index + 1}`}
1638
+ aria-label={withInterp(t("Row {{row}}", { row: index + 1 }), {
1639
+ row: index + 1,
1640
+ })}
1143
1641
  tabIndex={-1}
1642
+ {...({
1643
+ "data-table-zebra": tableZebraOn
1644
+ ? index % 2 === 0
1645
+ ? "even"
1646
+ : "odd"
1647
+ : "off",
1648
+ } as any)}
1144
1649
  >
1145
1650
  {renderRowContent(row, index, isLastRow)}
1146
1651
  </Table.Row>
@@ -1184,10 +1689,18 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
1184
1689
  flexBasis={0}
1185
1690
  minHeight={0}
1186
1691
  >
1692
+ {enableRowSelection && (
1693
+ <Table.Cell
1694
+ cellWidth={SELECTION_COL_WIDTH}
1695
+ cellLocation="first"
1696
+ padding={0}
1697
+ minHeight={0}
1698
+ />
1699
+ )}
1187
1700
  {showRowNumbers && (
1188
1701
  <Table.Cell
1189
1702
  cellWidth={50}
1190
- cellLocation="first"
1703
+ cellLocation={enableRowSelection ? "middle" : "first"}
1191
1704
  padding={0}
1192
1705
  minHeight={0}
1193
1706
  />
@@ -1195,14 +1708,19 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
1195
1708
  {enableRowExpansion && (
1196
1709
  <Table.Cell
1197
1710
  cellWidth={32}
1198
- cellLocation={showRowNumbers ? "middle" : "first"}
1711
+ cellLocation={
1712
+ enableRowSelection || showRowNumbers ? "middle" : "first"
1713
+ }
1199
1714
  padding={0}
1200
1715
  minHeight={0}
1201
1716
  />
1202
1717
  )}
1203
1718
  {headerGroups[0]?.headers.map((header: any, headerIndex: number) => {
1204
1719
  const isFirstDataCell =
1205
- headerIndex === 0 && !showRowNumbers && !enableRowExpansion;
1720
+ headerIndex === 0 &&
1721
+ !enableRowSelection &&
1722
+ !showRowNumbers &&
1723
+ !enableRowExpansion;
1206
1724
  const isLastDataCell =
1207
1725
  headerIndex === headerGroups[0].headers.length - 1 &&
1208
1726
  !(showDeleteRow && !readOnly);
@@ -1234,6 +1752,34 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
1234
1752
  )}
1235
1753
  </>
1236
1754
  )}
1755
+ {/* DF-12 / Axiom 6: clipped-viewport affordance — rows are
1756
+ cut off below the fold, so the frame says so with a
1757
+ bottom fade that clears once the last row is reached.
1758
+ Sticky inside the scroll container; zero layout cost
1759
+ (negative margin overlays the last visible row).
1760
+ Rendered as a Table.Row: a <div> is not a valid child
1761
+ of the real <tbody> (SSR parsers foster-parent it out
1762
+ of the table). Only reachable in the flex displayMode
1763
+ (bodyClipped needs a scrollable body), where the row
1764
+ renders display:flex like the old View. */}
1765
+ {isWeb && bodyClipped && (
1766
+ <Table.Row
1767
+ aria-hidden={true}
1768
+ role="presentation"
1769
+ position={"sticky" as any}
1770
+ bottom={0}
1771
+ height={28}
1772
+ marginTop={-28}
1773
+ flexShrink={0}
1774
+ zIndex={2}
1775
+ pointerEvents="none"
1776
+ {...({ "data-table-clip-affordance": "true" } as any)}
1777
+ style={{
1778
+ background:
1779
+ "linear-gradient(to bottom, rgba(0,0,0,0), var(--background))",
1780
+ }}
1781
+ />
1782
+ )}
1237
1783
  </Table.Body>
1238
1784
 
1239
1785
  {/* Table Footer */}
@@ -1256,12 +1802,98 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
1256
1802
  </View>
1257
1803
  )}
1258
1804
 
1805
+ {/* Infinite mode tail: sentinel (non-virtualized trigger), append
1806
+ skeleton (bounded by the actual load — no infinite spinner),
1807
+ and an honest, announced end-of-data state (DG-ST-01/04). */}
1808
+ {infinite ? (
1809
+ <View flexDirection="column" width="100%">
1810
+ {!isVirtualized && !infinite.exhausted && isWeb ? (
1811
+ <View
1812
+ // @ts-ignore web ref for IntersectionObserver
1813
+ ref={sentinelRef as any}
1814
+ height={1}
1815
+ width="100%"
1816
+ aria-hidden
1817
+ {...({ "data-testid": "infinite-sentinel" } as any)}
1818
+ />
1819
+ ) : null}
1820
+ {!isVirtualized && infinite.isAppending ? (
1821
+ <View
1822
+ flexDirection="column"
1823
+ width="100%"
1824
+ {...knobProps.gap}
1825
+ paddingVertical="$2"
1826
+ aria-hidden
1827
+ {...({ "data-testid": "infinite-append-skeleton" } as any)}
1828
+ >
1829
+ {Array.from({ length: 3 }).map((_, i) => (
1830
+ <Skeleton key={i} width="100%" height={rowHeightPx - 8} />
1831
+ ))}
1832
+ </View>
1833
+ ) : null}
1834
+ <Text
1835
+ role="status"
1836
+ aria-live="polite"
1837
+ textAlign="center"
1838
+ paddingVertical="$2"
1839
+ fontSize={knobProps.sizeToken}
1840
+ color="$color10"
1841
+ {...({ "data-testid": "infinite-status" } as any)}
1842
+ >
1843
+ {/* Numeric labels are bidi-isolated so RTL contexts keep
1844
+ the interpolated runs in order (FSI…PDI). */}
1845
+ {infinite.isAppending
1846
+ ? t("Loading more rows…")
1847
+ : infinite.exhausted
1848
+ ? typeof infinite.totalCount === "number" && infinite.totalCount > 0
1849
+ ? bidiIsolate(
1850
+ withInterp(
1851
+ t("All {{count}} rows loaded", { count: infinite.totalCount }),
1852
+ {
1853
+ count: infinite.totalCount,
1854
+ },
1855
+ ),
1856
+ )
1857
+ : t("End of results")
1858
+ : typeof infinite.totalCount === "number"
1859
+ ? bidiIsolate(
1860
+ withInterp(
1861
+ t("Showing {{visible}} of {{total}} rows", {
1862
+ visible: tableRows.length,
1863
+ total: infinite.totalCount,
1864
+ }),
1865
+ { visible: tableRows.length, total: infinite.totalCount },
1866
+ ),
1867
+ )
1868
+ : bidiIsolate(
1869
+ withInterp(
1870
+ t("Showing {{visible}} rows", { visible: tableRows.length }),
1871
+ {
1872
+ visible: tableRows.length,
1873
+ },
1874
+ ),
1875
+ )}
1876
+ </Text>
1877
+ </View>
1878
+ ) : null}
1879
+
1880
+ {enableRowSelection && bulkBarPlacement === "bottom" ? (
1881
+ <View width="100%" {...(disabled ? disabledState.chromeKnobProps : {})}>
1882
+ <DataTableBulkActions
1883
+ actions={resolvedBulkActions}
1884
+ maxVisibleActions={5}
1885
+ showSelectionCount
1886
+ placement="bottom"
1887
+ />
1888
+ </View>
1889
+ ) : null}
1890
+
1259
1891
  {/* Add Row Button */}
1260
1892
  {showAddRow && !readOnly && (
1261
1893
  <View>
1262
1894
  <Button
1263
1895
  icon={PlusIcon}
1264
- disabled={maxRows !== undefined && tableData.length >= maxRows}
1896
+ disabled={disabled || (maxRows !== undefined && tableData.length >= maxRows)}
1265
1897
  onPress={effectiveHandleAddRow}
1266
1898
  aria-label={t("Add Row")}
1267
1899
  >
@@ -1270,8 +1902,42 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
1270
1902
  </View>
1271
1903
  )}
1272
1904
 
1273
- {/* Pagination */}
1274
- {enablePagination && <View paddingTop="$3">{renderPaginationComponent()}</View>}
1905
+ {/* Pagination footer (pages mode only; infinite replaces it with the tail status) */}
1906
+ {enablePagination && !infinite && (
1907
+ <View
1908
+ paddingTop="$3"
1909
+ flexDirection="row"
1910
+ alignItems="center"
1911
+ justifyContent="space-between"
1912
+ flexWrap="wrap"
1913
+ {...knobProps.gap}
1914
+ {...(disabled ? disabledState.chromeKnobProps : {})}
1915
+ >
1916
+ {renderPaginationComponent()}
1917
+ {/* DF-12 / Axiom 6: visible range/total — the footer states how
1918
+ many rows exist even when a height-constrained body clips
1919
+ some below the fold ("1–6 of 6", not "what you see is all"). */}
1920
+ <Text
1921
+ fontSize={knobProps.sizeToken}
1922
+ color="$color11"
1923
+ aria-live="polite"
1924
+ {...({ "data-table-range": "true" } as any)}
1925
+ >
1926
+ {/* Bidi-isolated: an RTL paragraph would otherwise reorder
1927
+ the latin/numeric runs ("1–5 of 5" → "of 5 5–1"). */}
1928
+ {bidiIsolate(
1929
+ withInterp(
1930
+ t("{{start}}–{{end}} of {{total}}", {
1931
+ start: rangeStart,
1932
+ end: rangeEnd,
1933
+ total: rangeTotal,
1934
+ }),
1935
+ { start: rangeStart, end: rangeEnd, total: rangeTotal },
1936
+ ),
1937
+ )}
1938
+ </Text>
1939
+ </View>
1940
+ )}
1275
1941
 
1276
1942
  {/* Loading State */}
1277
1943
  {state.isLoading && (
@@ -1286,7 +1952,7 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
1286
1952
  zIndex={zIndex.loading}
1287
1953
  aria-busy={true}
1288
1954
  aria-live="assertive"
1289
- aria-label="Loading table data"
1955
+ aria-label={t("Loading table data")}
1290
1956
  role="status"
1291
1957
  >
1292
1958
  <Spinner size="large" color="$color10" />
@@ -1309,16 +1975,16 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
1309
1975
  return renderInner(
1310
1976
  formData,
1311
1977
  () => {
1312
- if (readOnly || (maxRows && formData.length >= maxRows)) return;
1978
+ if (readOnly || disabled || (maxRows && formData.length >= maxRows)) return;
1313
1979
  const newRow = { ...defaultRow, idx: formData.length + 1 } as unknown as TData;
1314
1980
  setFormData([...formData, newRow]);
1315
1981
  },
1316
1982
  (idx: number) => {
1317
- if (readOnly || formData.length <= minRows) return;
1983
+ if (readOnly || disabled || formData.length <= minRows) return;
1318
1984
  setFormData(formData.filter((_, i) => i !== idx));
1319
1985
  },
1320
1986
  async (rowIndex: number, columnId: string, newValue: any) => {
1321
- if (readOnly) return;
1987
+ if (readOnly || disabled) return;
1322
1988
  const previousValue = formData[rowIndex]?.[columnId];
1323
1989
  if (onCellChange) {
1324
1990
  const result = await onCellChange(rowIndex, columnId, newValue, previousValue);