@multiplatform.one/table 7.34.4 → 7.35.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 (396) hide show
  1. package/dist/cjs/components/ChildTable/index.cjs +26 -23
  2. package/dist/cjs/components/ChildTable/index.native.js +26 -23
  3. package/dist/cjs/components/ChildTable/index.native.js.map +1 -1
  4. package/dist/cjs/components/DataTable/DataTableCardControls.cjs +3 -8
  5. package/dist/cjs/components/DataTable/DataTableCardControls.native.js +3 -8
  6. package/dist/cjs/components/DataTable/DataTableCardControls.native.js.map +1 -1
  7. package/dist/cjs/components/DataTable/DataTableContext.cjs +1 -2
  8. package/dist/cjs/components/DataTable/DataTableContext.native.js +1 -2
  9. package/dist/cjs/components/DataTable/DataTableContext.native.js.map +1 -1
  10. package/dist/cjs/components/DataTable/DataTableDocumentList.cjs +50 -20
  11. package/dist/cjs/components/DataTable/DataTableDocumentList.native.js +59 -27
  12. package/dist/cjs/components/DataTable/DataTableDocumentList.native.js.map +1 -1
  13. package/dist/cjs/components/DataTable/DataTableInfiniteTail.cjs +1 -1
  14. package/dist/cjs/components/DataTable/DataTableInfiniteTail.native.js +1 -1
  15. package/dist/cjs/components/DataTable/DataTableInfiniteTail.native.js.map +1 -1
  16. package/dist/cjs/components/DataTable/DataTableMobileCards.cjs +5 -11
  17. package/dist/cjs/components/DataTable/DataTableMobileCards.native.js +5 -11
  18. package/dist/cjs/components/DataTable/DataTableMobileCards.native.js.map +1 -1
  19. package/dist/cjs/components/DataTable/DataTableRoot.cjs +601 -606
  20. package/dist/cjs/components/DataTable/DataTableRoot.native.js +705 -710
  21. package/dist/cjs/components/DataTable/DataTableRoot.native.js.map +1 -1
  22. package/dist/cjs/components/DataTable/DataTableVirtualized.cjs +3 -2
  23. package/dist/cjs/components/DataTable/DataTableVirtualized.native.js +3 -2
  24. package/dist/cjs/components/DataTable/DataTableVirtualized.native.js.map +1 -1
  25. package/dist/cjs/components/DataTable/documentListSlots.cjs +8 -1
  26. package/dist/cjs/components/DataTable/documentListSlots.native.js +8 -1
  27. package/dist/cjs/components/DataTable/documentListSlots.native.js.map +1 -1
  28. package/dist/cjs/components/DataTable/index.native.js +264 -252
  29. package/dist/cjs/components/DataTable/index.native.js.map +1 -1
  30. package/dist/cjs/components/DataTableCell/index.cjs +2 -5
  31. package/dist/cjs/components/DataTableCell/index.native.js +2 -5
  32. package/dist/cjs/components/DataTableCell/index.native.js.map +1 -1
  33. package/dist/cjs/components/DataTableColumnPinning/index.cjs +2 -1
  34. package/dist/cjs/components/DataTableColumnPinning/index.native.js +2 -1
  35. package/dist/cjs/components/DataTableColumnPinning/index.native.js.map +1 -1
  36. package/dist/cjs/components/DataTableFilterButton/index.cjs +3 -5
  37. package/dist/cjs/components/DataTableFilterButton/index.native.js +3 -5
  38. package/dist/cjs/components/DataTableFilterButton/index.native.js.map +1 -1
  39. package/dist/cjs/components/DataTableFilterChips/index.cjs +0 -1
  40. package/dist/cjs/components/DataTableFilterChips/index.native.js +0 -1
  41. package/dist/cjs/components/DataTableFilters/index.cjs +11 -19
  42. package/dist/cjs/components/DataTableFilters/index.native.js +11 -19
  43. package/dist/cjs/components/DataTableFilters/index.native.js.map +1 -1
  44. package/dist/cjs/components/DataTableGrouping/index.cjs +5 -5
  45. package/dist/cjs/components/DataTableGrouping/index.native.js +7 -7
  46. package/dist/cjs/components/DataTableGrouping/index.native.js.map +1 -1
  47. package/dist/cjs/components/DataTablePagination/index.cjs +14 -18
  48. package/dist/cjs/components/DataTablePagination/index.native.js +14 -18
  49. package/dist/cjs/components/DataTablePagination/index.native.js.map +1 -1
  50. package/dist/cjs/components/DataTableSearch/index.cjs +5 -7
  51. package/dist/cjs/components/DataTableSearch/index.native.js +5 -7
  52. package/dist/cjs/components/DataTableSearch/index.native.js.map +1 -1
  53. package/dist/cjs/components/DataTableToolbar/index.cjs +2 -10
  54. package/dist/cjs/components/DataTableToolbar/index.native.js +2 -10
  55. package/dist/cjs/components/DataTableToolbar/index.native.js.map +1 -1
  56. package/dist/cjs/components/DataTableViewOptions/index.cjs +5 -3
  57. package/dist/cjs/components/DataTableViewOptions/index.native.js +6 -4
  58. package/dist/cjs/components/DataTableViewOptions/index.native.js.map +1 -1
  59. package/dist/cjs/components/KnobDialog.cjs +4 -34
  60. package/dist/cjs/components/KnobDialog.native.js +3 -34
  61. package/dist/cjs/components/KnobDialog.native.js.map +1 -1
  62. package/dist/cjs/components/SavedFilterDropdown.cjs +0 -1
  63. package/dist/cjs/components/SavedFilterDropdown.native.js +0 -1
  64. package/dist/cjs/components/SavedFilterDropdown.native.js.map +1 -1
  65. package/dist/cjs/components/SimpleTable/ScrollFrame.cjs +51 -0
  66. package/dist/cjs/components/SimpleTable/ScrollFrame.native.js +84 -0
  67. package/dist/cjs/components/SimpleTable/ScrollFrame.native.js.map +1 -0
  68. package/dist/cjs/components/SimpleTable/columnSizing.cjs +50 -0
  69. package/dist/cjs/components/SimpleTable/columnSizing.native.js +71 -0
  70. package/dist/cjs/components/SimpleTable/columnSizing.native.js.map +1 -0
  71. package/dist/cjs/components/SimpleTable/index.cjs +149 -96
  72. package/dist/cjs/components/SimpleTable/index.native.js +163 -109
  73. package/dist/cjs/components/SimpleTable/index.native.js.map +1 -1
  74. package/dist/cjs/components/TableInput/RowDetailEditor.cjs +1 -6
  75. package/dist/cjs/components/TableInput/RowDetailEditor.native.js +1 -5
  76. package/dist/cjs/components/TableInput/RowDetailEditor.native.js.map +1 -1
  77. package/dist/cjs/components/TableInput/index.cjs +4 -19
  78. package/dist/cjs/components/TableInput/index.native.js +2 -11
  79. package/dist/cjs/components/TableInput/index.native.js.map +1 -1
  80. package/dist/esm/components/ChildTable/index.mjs +26 -23
  81. package/dist/esm/components/ChildTable/index.mjs.map +1 -1
  82. package/dist/esm/components/ChildTable/index.native.js +26 -23
  83. package/dist/esm/components/ChildTable/index.native.js.map +1 -1
  84. package/dist/esm/components/DataTable/DataTableCardControls.mjs +3 -8
  85. package/dist/esm/components/DataTable/DataTableCardControls.mjs.map +1 -1
  86. package/dist/esm/components/DataTable/DataTableCardControls.native.js +3 -8
  87. package/dist/esm/components/DataTable/DataTableCardControls.native.js.map +1 -1
  88. package/dist/esm/components/DataTable/DataTableContext.mjs +1 -2
  89. package/dist/esm/components/DataTable/DataTableContext.mjs.map +1 -1
  90. package/dist/esm/components/DataTable/DataTableContext.native.js +1 -2
  91. package/dist/esm/components/DataTable/DataTableContext.native.js.map +1 -1
  92. package/dist/esm/components/DataTable/DataTableDocumentList.mjs +52 -22
  93. package/dist/esm/components/DataTable/DataTableDocumentList.mjs.map +1 -1
  94. package/dist/esm/components/DataTable/DataTableDocumentList.native.js +61 -29
  95. package/dist/esm/components/DataTable/DataTableDocumentList.native.js.map +1 -1
  96. package/dist/esm/components/DataTable/DataTableInfiniteTail.mjs +1 -1
  97. package/dist/esm/components/DataTable/DataTableInfiniteTail.mjs.map +1 -1
  98. package/dist/esm/components/DataTable/DataTableInfiniteTail.native.js +1 -1
  99. package/dist/esm/components/DataTable/DataTableInfiniteTail.native.js.map +1 -1
  100. package/dist/esm/components/DataTable/DataTableMobileCards.mjs +5 -11
  101. package/dist/esm/components/DataTable/DataTableMobileCards.mjs.map +1 -1
  102. package/dist/esm/components/DataTable/DataTableMobileCards.native.js +5 -11
  103. package/dist/esm/components/DataTable/DataTableMobileCards.native.js.map +1 -1
  104. package/dist/esm/components/DataTable/DataTableRoot.mjs +603 -608
  105. package/dist/esm/components/DataTable/DataTableRoot.mjs.map +1 -1
  106. package/dist/esm/components/DataTable/DataTableRoot.native.js +707 -712
  107. package/dist/esm/components/DataTable/DataTableRoot.native.js.map +1 -1
  108. package/dist/esm/components/DataTable/DataTableVirtualized.mjs +4 -3
  109. package/dist/esm/components/DataTable/DataTableVirtualized.mjs.map +1 -1
  110. package/dist/esm/components/DataTable/DataTableVirtualized.native.js +4 -3
  111. package/dist/esm/components/DataTable/DataTableVirtualized.native.js.map +1 -1
  112. package/dist/esm/components/DataTable/documentListSlots.mjs +8 -1
  113. package/dist/esm/components/DataTable/documentListSlots.mjs.map +1 -1
  114. package/dist/esm/components/DataTable/documentListSlots.native.js +8 -1
  115. package/dist/esm/components/DataTable/documentListSlots.native.js.map +1 -1
  116. package/dist/esm/components/DataTable/index.native.js +265 -253
  117. package/dist/esm/components/DataTable/index.native.js.map +1 -1
  118. package/dist/esm/components/DataTableCell/index.mjs +2 -5
  119. package/dist/esm/components/DataTableCell/index.mjs.map +1 -1
  120. package/dist/esm/components/DataTableCell/index.native.js +2 -5
  121. package/dist/esm/components/DataTableCell/index.native.js.map +1 -1
  122. package/dist/esm/components/DataTableColumnPinning/index.mjs +2 -1
  123. package/dist/esm/components/DataTableColumnPinning/index.mjs.map +1 -1
  124. package/dist/esm/components/DataTableColumnPinning/index.native.js +2 -1
  125. package/dist/esm/components/DataTableColumnPinning/index.native.js.map +1 -1
  126. package/dist/esm/components/DataTableFilterButton/index.mjs +4 -6
  127. package/dist/esm/components/DataTableFilterButton/index.mjs.map +1 -1
  128. package/dist/esm/components/DataTableFilterButton/index.native.js +4 -6
  129. package/dist/esm/components/DataTableFilterButton/index.native.js.map +1 -1
  130. package/dist/esm/components/DataTableFilterChips/index.mjs +0 -1
  131. package/dist/esm/components/DataTableFilterChips/index.mjs.map +1 -1
  132. package/dist/esm/components/DataTableFilterChips/index.native.js +0 -1
  133. package/dist/esm/components/DataTableFilters/index.mjs +12 -20
  134. package/dist/esm/components/DataTableFilters/index.mjs.map +1 -1
  135. package/dist/esm/components/DataTableFilters/index.native.js +12 -20
  136. package/dist/esm/components/DataTableFilters/index.native.js.map +1 -1
  137. package/dist/esm/components/DataTableGrouping/index.mjs +6 -6
  138. package/dist/esm/components/DataTableGrouping/index.mjs.map +1 -1
  139. package/dist/esm/components/DataTableGrouping/index.native.js +8 -8
  140. package/dist/esm/components/DataTableGrouping/index.native.js.map +1 -1
  141. package/dist/esm/components/DataTablePagination/index.mjs +15 -19
  142. package/dist/esm/components/DataTablePagination/index.mjs.map +1 -1
  143. package/dist/esm/components/DataTablePagination/index.native.js +15 -19
  144. package/dist/esm/components/DataTablePagination/index.native.js.map +1 -1
  145. package/dist/esm/components/DataTableSearch/index.mjs +5 -7
  146. package/dist/esm/components/DataTableSearch/index.mjs.map +1 -1
  147. package/dist/esm/components/DataTableSearch/index.native.js +5 -7
  148. package/dist/esm/components/DataTableSearch/index.native.js.map +1 -1
  149. package/dist/esm/components/DataTableToolbar/index.mjs +2 -10
  150. package/dist/esm/components/DataTableToolbar/index.mjs.map +1 -1
  151. package/dist/esm/components/DataTableToolbar/index.native.js +2 -10
  152. package/dist/esm/components/DataTableToolbar/index.native.js.map +1 -1
  153. package/dist/esm/components/DataTableViewOptions/index.mjs +6 -4
  154. package/dist/esm/components/DataTableViewOptions/index.mjs.map +1 -1
  155. package/dist/esm/components/DataTableViewOptions/index.native.js +7 -5
  156. package/dist/esm/components/DataTableViewOptions/index.native.js.map +1 -1
  157. package/dist/esm/components/KnobDialog.mjs +6 -36
  158. package/dist/esm/components/KnobDialog.mjs.map +1 -1
  159. package/dist/esm/components/KnobDialog.native.js +5 -36
  160. package/dist/esm/components/KnobDialog.native.js.map +1 -1
  161. package/dist/esm/components/SavedFilterDropdown.mjs +0 -1
  162. package/dist/esm/components/SavedFilterDropdown.mjs.map +1 -1
  163. package/dist/esm/components/SavedFilterDropdown.native.js +0 -1
  164. package/dist/esm/components/SavedFilterDropdown.native.js.map +1 -1
  165. package/dist/esm/components/SimpleTable/ScrollFrame.mjs +25 -0
  166. package/dist/esm/components/SimpleTable/ScrollFrame.mjs.map +1 -0
  167. package/dist/esm/components/SimpleTable/ScrollFrame.native.js +55 -0
  168. package/dist/esm/components/SimpleTable/ScrollFrame.native.js.map +1 -0
  169. package/dist/esm/components/SimpleTable/columnSizing.mjs +25 -0
  170. package/dist/esm/components/SimpleTable/columnSizing.mjs.map +1 -0
  171. package/dist/esm/components/SimpleTable/columnSizing.native.js +43 -0
  172. package/dist/esm/components/SimpleTable/columnSizing.native.js.map +1 -0
  173. package/dist/esm/components/SimpleTable/index.mjs +150 -97
  174. package/dist/esm/components/SimpleTable/index.mjs.map +1 -1
  175. package/dist/esm/components/SimpleTable/index.native.js +164 -110
  176. package/dist/esm/components/SimpleTable/index.native.js.map +1 -1
  177. package/dist/esm/components/TableInput/RowDetailEditor.mjs +1 -6
  178. package/dist/esm/components/TableInput/RowDetailEditor.mjs.map +1 -1
  179. package/dist/esm/components/TableInput/RowDetailEditor.native.js +1 -5
  180. package/dist/esm/components/TableInput/RowDetailEditor.native.js.map +1 -1
  181. package/dist/esm/components/TableInput/index.mjs +5 -20
  182. package/dist/esm/components/TableInput/index.mjs.map +1 -1
  183. package/dist/esm/components/TableInput/index.native.js +3 -12
  184. package/dist/esm/components/TableInput/index.native.js.map +1 -1
  185. package/dist/jsx/components/ChildTable/index.mjs +26 -23
  186. package/dist/jsx/components/ChildTable/index.mjs.map +1 -1
  187. package/dist/jsx/components/ChildTable/index.native.js +26 -23
  188. package/dist/jsx/components/ChildTable/index.native.js.map +1 -1
  189. package/dist/jsx/components/DataTable/DataTableCardControls.mjs +3 -8
  190. package/dist/jsx/components/DataTable/DataTableCardControls.mjs.map +1 -1
  191. package/dist/jsx/components/DataTable/DataTableCardControls.native.js +3 -8
  192. package/dist/jsx/components/DataTable/DataTableCardControls.native.js.map +1 -1
  193. package/dist/jsx/components/DataTable/DataTableContext.mjs +1 -2
  194. package/dist/jsx/components/DataTable/DataTableContext.mjs.map +1 -1
  195. package/dist/jsx/components/DataTable/DataTableContext.native.js +1 -2
  196. package/dist/jsx/components/DataTable/DataTableContext.native.js.map +1 -1
  197. package/dist/jsx/components/DataTable/DataTableDocumentList.mjs +52 -22
  198. package/dist/jsx/components/DataTable/DataTableDocumentList.mjs.map +1 -1
  199. package/dist/jsx/components/DataTable/DataTableDocumentList.native.js +59 -27
  200. package/dist/jsx/components/DataTable/DataTableDocumentList.native.js.map +1 -1
  201. package/dist/jsx/components/DataTable/DataTableInfiniteTail.mjs +1 -1
  202. package/dist/jsx/components/DataTable/DataTableInfiniteTail.mjs.map +1 -1
  203. package/dist/jsx/components/DataTable/DataTableInfiniteTail.native.js +1 -1
  204. package/dist/jsx/components/DataTable/DataTableInfiniteTail.native.js.map +1 -1
  205. package/dist/jsx/components/DataTable/DataTableMobileCards.mjs +5 -11
  206. package/dist/jsx/components/DataTable/DataTableMobileCards.mjs.map +1 -1
  207. package/dist/jsx/components/DataTable/DataTableMobileCards.native.js +5 -11
  208. package/dist/jsx/components/DataTable/DataTableMobileCards.native.js.map +1 -1
  209. package/dist/jsx/components/DataTable/DataTableRoot.mjs +603 -608
  210. package/dist/jsx/components/DataTable/DataTableRoot.mjs.map +1 -1
  211. package/dist/jsx/components/DataTable/DataTableRoot.native.js +705 -710
  212. package/dist/jsx/components/DataTable/DataTableRoot.native.js.map +1 -1
  213. package/dist/jsx/components/DataTable/DataTableVirtualized.mjs +4 -3
  214. package/dist/jsx/components/DataTable/DataTableVirtualized.mjs.map +1 -1
  215. package/dist/jsx/components/DataTable/DataTableVirtualized.native.js +3 -2
  216. package/dist/jsx/components/DataTable/DataTableVirtualized.native.js.map +1 -1
  217. package/dist/jsx/components/DataTable/documentListSlots.mjs +8 -1
  218. package/dist/jsx/components/DataTable/documentListSlots.mjs.map +1 -1
  219. package/dist/jsx/components/DataTable/documentListSlots.native.js +8 -1
  220. package/dist/jsx/components/DataTable/documentListSlots.native.js.map +1 -1
  221. package/dist/jsx/components/DataTable/index.native.js +264 -252
  222. package/dist/jsx/components/DataTable/index.native.js.map +1 -1
  223. package/dist/jsx/components/DataTableCell/index.mjs +2 -5
  224. package/dist/jsx/components/DataTableCell/index.mjs.map +1 -1
  225. package/dist/jsx/components/DataTableCell/index.native.js +2 -5
  226. package/dist/jsx/components/DataTableCell/index.native.js.map +1 -1
  227. package/dist/jsx/components/DataTableColumnPinning/index.mjs +2 -1
  228. package/dist/jsx/components/DataTableColumnPinning/index.mjs.map +1 -1
  229. package/dist/jsx/components/DataTableColumnPinning/index.native.js +2 -1
  230. package/dist/jsx/components/DataTableColumnPinning/index.native.js.map +1 -1
  231. package/dist/jsx/components/DataTableFilterButton/index.mjs +4 -6
  232. package/dist/jsx/components/DataTableFilterButton/index.mjs.map +1 -1
  233. package/dist/jsx/components/DataTableFilterButton/index.native.js +3 -5
  234. package/dist/jsx/components/DataTableFilterButton/index.native.js.map +1 -1
  235. package/dist/jsx/components/DataTableFilterChips/index.mjs +0 -1
  236. package/dist/jsx/components/DataTableFilterChips/index.mjs.map +1 -1
  237. package/dist/jsx/components/DataTableFilterChips/index.native.js +0 -1
  238. package/dist/jsx/components/DataTableFilters/index.mjs +12 -20
  239. package/dist/jsx/components/DataTableFilters/index.mjs.map +1 -1
  240. package/dist/jsx/components/DataTableFilters/index.native.js +11 -19
  241. package/dist/jsx/components/DataTableFilters/index.native.js.map +1 -1
  242. package/dist/jsx/components/DataTableGrouping/index.mjs +6 -6
  243. package/dist/jsx/components/DataTableGrouping/index.mjs.map +1 -1
  244. package/dist/jsx/components/DataTableGrouping/index.native.js +7 -7
  245. package/dist/jsx/components/DataTableGrouping/index.native.js.map +1 -1
  246. package/dist/jsx/components/DataTablePagination/index.mjs +15 -19
  247. package/dist/jsx/components/DataTablePagination/index.mjs.map +1 -1
  248. package/dist/jsx/components/DataTablePagination/index.native.js +14 -18
  249. package/dist/jsx/components/DataTablePagination/index.native.js.map +1 -1
  250. package/dist/jsx/components/DataTableSearch/index.mjs +5 -7
  251. package/dist/jsx/components/DataTableSearch/index.mjs.map +1 -1
  252. package/dist/jsx/components/DataTableSearch/index.native.js +5 -7
  253. package/dist/jsx/components/DataTableSearch/index.native.js.map +1 -1
  254. package/dist/jsx/components/DataTableToolbar/index.mjs +2 -10
  255. package/dist/jsx/components/DataTableToolbar/index.mjs.map +1 -1
  256. package/dist/jsx/components/DataTableToolbar/index.native.js +2 -10
  257. package/dist/jsx/components/DataTableToolbar/index.native.js.map +1 -1
  258. package/dist/jsx/components/DataTableViewOptions/index.mjs +6 -4
  259. package/dist/jsx/components/DataTableViewOptions/index.mjs.map +1 -1
  260. package/dist/jsx/components/DataTableViewOptions/index.native.js +6 -4
  261. package/dist/jsx/components/DataTableViewOptions/index.native.js.map +1 -1
  262. package/dist/jsx/components/KnobDialog.mjs +6 -36
  263. package/dist/jsx/components/KnobDialog.mjs.map +1 -1
  264. package/dist/jsx/components/KnobDialog.native.js +3 -34
  265. package/dist/jsx/components/KnobDialog.native.js.map +1 -1
  266. package/dist/jsx/components/SavedFilterDropdown.mjs +0 -1
  267. package/dist/jsx/components/SavedFilterDropdown.mjs.map +1 -1
  268. package/dist/jsx/components/SavedFilterDropdown.native.js +0 -1
  269. package/dist/jsx/components/SavedFilterDropdown.native.js.map +1 -1
  270. package/dist/jsx/components/SimpleTable/ScrollFrame.mjs +25 -0
  271. package/dist/jsx/components/SimpleTable/ScrollFrame.mjs.map +1 -0
  272. package/dist/jsx/components/SimpleTable/ScrollFrame.native.js +84 -0
  273. package/dist/jsx/components/SimpleTable/ScrollFrame.native.js.map +1 -0
  274. package/dist/jsx/components/SimpleTable/columnSizing.mjs +25 -0
  275. package/dist/jsx/components/SimpleTable/columnSizing.mjs.map +1 -0
  276. package/dist/jsx/components/SimpleTable/columnSizing.native.js +71 -0
  277. package/dist/jsx/components/SimpleTable/columnSizing.native.js.map +1 -0
  278. package/dist/jsx/components/SimpleTable/index.mjs +150 -97
  279. package/dist/jsx/components/SimpleTable/index.mjs.map +1 -1
  280. package/dist/jsx/components/SimpleTable/index.native.js +163 -109
  281. package/dist/jsx/components/SimpleTable/index.native.js.map +1 -1
  282. package/dist/jsx/components/TableInput/RowDetailEditor.mjs +1 -6
  283. package/dist/jsx/components/TableInput/RowDetailEditor.mjs.map +1 -1
  284. package/dist/jsx/components/TableInput/RowDetailEditor.native.js +1 -5
  285. package/dist/jsx/components/TableInput/RowDetailEditor.native.js.map +1 -1
  286. package/dist/jsx/components/TableInput/index.mjs +5 -20
  287. package/dist/jsx/components/TableInput/index.mjs.map +1 -1
  288. package/dist/jsx/components/TableInput/index.native.js +2 -11
  289. package/dist/jsx/components/TableInput/index.native.js.map +1 -1
  290. package/package.json +12 -12
  291. package/src/components/ChildTable/ChildTable.stories.tsx +1 -2
  292. package/src/components/ChildTable/childTable.spec.tsx +2 -2
  293. package/src/components/ChildTable/childTable.zebra.spec.tsx +3 -3
  294. package/src/components/ChildTable/index.tsx +29 -26
  295. package/src/components/DataTable/DataTable.spec.tsx +49 -2
  296. package/src/components/DataTable/DataTable.stories.tsx +5 -5
  297. package/src/components/DataTable/DataTableCardControls.tsx +5 -10
  298. package/src/components/DataTable/DataTableContext.ts +5 -7
  299. package/src/components/DataTable/DataTableDocumentList.tsx +59 -21
  300. package/src/components/DataTable/DataTableInfiniteTail.tsx +1 -1
  301. package/src/components/DataTable/DataTableMobileCards.tsx +4 -9
  302. package/src/components/DataTable/DataTableRoot.tsx +900 -898
  303. package/src/components/DataTable/DataTableVirtualized.tsx +4 -2
  304. package/src/components/DataTable/FieldsInCells.stories.tsx +0 -1
  305. package/src/components/DataTable/compoundComponent.spec.tsx +7 -21
  306. package/src/components/DataTable/dataTableDocumentList.spec.tsx +78 -20
  307. package/src/components/DataTable/dataTableMobileCards.spec.tsx +19 -22
  308. package/src/components/DataTable/documentListSlots.ts +25 -6
  309. package/src/components/DataTable/footerLayout.spec.tsx +7 -7
  310. package/src/components/DataTable/index.native.tsx +329 -322
  311. package/src/components/DataTable/smallTableFooter.spec.tsx +61 -0
  312. package/src/components/DataTableCell/DataTableCell.stories.tsx +0 -2
  313. package/src/components/DataTableCell/index.tsx +3 -7
  314. package/src/components/DataTableColumnPinning/index.tsx +2 -1
  315. package/src/components/DataTableDateFilter/index.tsx +1 -1
  316. package/src/components/DataTableFilterButton/index.tsx +8 -5
  317. package/src/components/DataTableFilterChips/index.tsx +1 -1
  318. package/src/components/DataTableFilters/DataTableFilters.spec.tsx +3 -14
  319. package/src/components/DataTableFilters/DataTableFilters.stories.tsx +1 -6
  320. package/src/components/DataTableFilters/index.tsx +19 -17
  321. package/src/components/DataTableGrouping/index.tsx +9 -8
  322. package/src/components/DataTablePagination/DataTablePagination.spec.tsx +21 -11
  323. package/src/components/DataTablePagination/DataTablePagination.stories.tsx +2 -19
  324. package/src/components/DataTablePagination/DataTablePagination.width.spec.tsx +13 -13
  325. package/src/components/DataTablePagination/index.tsx +19 -15
  326. package/src/components/DataTableSearch/DataTableSearch.stories.tsx +1 -1
  327. package/src/components/DataTableSearch/index.tsx +7 -7
  328. package/src/components/DataTableToolbar/index.tsx +1 -7
  329. package/src/components/DataTableViewOptions/DataTableViewOptions.spec.tsx +5 -5
  330. package/src/components/DataTableViewOptions/DataTableViewOptions.stories.tsx +1 -1
  331. package/src/components/DataTableViewOptions/index.tsx +15 -6
  332. package/src/components/FilterOperatorValueEditor/FilterOperatorValueEditor.spec.tsx +17 -37
  333. package/src/components/KnobDialog.tsx +5 -37
  334. package/src/components/SavedFilterDropdown.tsx +0 -1
  335. package/src/components/SimpleTable/ScrollFrame.native.tsx +49 -0
  336. package/src/components/SimpleTable/ScrollFrame.tsx +18 -0
  337. package/src/components/SimpleTable/SimpleTable.stories.tsx +47 -0
  338. package/src/components/SimpleTable/columnSizing.spec.ts +73 -0
  339. package/src/components/SimpleTable/columnSizing.ts +39 -0
  340. package/src/components/SimpleTable/index.tsx +184 -112
  341. package/src/components/SimpleTable/simpleTable.spec.tsx +47 -19
  342. package/src/components/TableInput/RowDetailEditor.native.tsx +1 -3
  343. package/src/components/TableInput/RowDetailEditor.tsx +2 -10
  344. package/src/components/TableInput/index.native.tsx +3 -16
  345. package/src/components/TableInput/index.tsx +13 -24
  346. package/src/types.ts +7 -2
  347. package/types/components/ChildTable/index.d.ts +3 -1
  348. package/types/components/ChildTable/index.d.ts.map +1 -1
  349. package/types/components/DataTable/DataTableCardControls.d.ts +2 -3
  350. package/types/components/DataTable/DataTableCardControls.d.ts.map +1 -1
  351. package/types/components/DataTable/DataTableContext.d.ts +4 -4
  352. package/types/components/DataTable/DataTableContext.d.ts.map +1 -1
  353. package/types/components/DataTable/DataTableDocumentList.d.ts +7 -4
  354. package/types/components/DataTable/DataTableDocumentList.d.ts.map +1 -1
  355. package/types/components/DataTable/DataTableMobileCards.d.ts +1 -2
  356. package/types/components/DataTable/DataTableMobileCards.d.ts.map +1 -1
  357. package/types/components/DataTable/DataTableRoot.d.ts +1 -3
  358. package/types/components/DataTable/DataTableRoot.d.ts.map +1 -1
  359. package/types/components/DataTable/DataTableVirtualized.d.ts.map +1 -1
  360. package/types/components/DataTable/documentListSlots.d.ts +7 -4
  361. package/types/components/DataTable/documentListSlots.d.ts.map +1 -1
  362. package/types/components/DataTable/index.native.d.ts +1 -1
  363. package/types/components/DataTable/index.native.d.ts.map +1 -1
  364. package/types/components/DataTableCell/index.d.ts +1 -3
  365. package/types/components/DataTableCell/index.d.ts.map +1 -1
  366. package/types/components/DataTableColumnPinning/index.d.ts.map +1 -1
  367. package/types/components/DataTableFilters/index.d.ts +6 -1
  368. package/types/components/DataTableFilters/index.d.ts.map +1 -1
  369. package/types/components/DataTableGrouping/index.d.ts.map +1 -1
  370. package/types/components/DataTablePagination/index.d.ts +8 -1
  371. package/types/components/DataTablePagination/index.d.ts.map +1 -1
  372. package/types/components/DataTableToolbar/index.d.ts +0 -1
  373. package/types/components/DataTableToolbar/index.d.ts.map +1 -1
  374. package/types/components/DataTableViewOptions/index.d.ts +6 -1
  375. package/types/components/DataTableViewOptions/index.d.ts.map +1 -1
  376. package/types/components/KnobDialog.d.ts +0 -7
  377. package/types/components/KnobDialog.d.ts.map +1 -1
  378. package/types/components/SavedFilterDropdown.d.ts.map +1 -1
  379. package/types/components/SimpleTable/ScrollFrame.d.ts +10 -0
  380. package/types/components/SimpleTable/ScrollFrame.d.ts.map +1 -0
  381. package/types/components/SimpleTable/ScrollFrame.native.d.ts +10 -0
  382. package/types/components/SimpleTable/ScrollFrame.native.d.ts.map +1 -0
  383. package/types/components/SimpleTable/columnSizing.d.ts +24 -0
  384. package/types/components/SimpleTable/columnSizing.d.ts.map +1 -0
  385. package/types/components/SimpleTable/index.d.ts +6 -12
  386. package/types/components/SimpleTable/index.d.ts.map +1 -1
  387. package/types/components/TableInput/RowDetailEditor.d.ts +1 -2
  388. package/types/components/TableInput/RowDetailEditor.d.ts.map +1 -1
  389. package/types/components/TableInput/RowDetailEditor.native.d.ts +1 -1
  390. package/types/components/TableInput/RowDetailEditor.native.d.ts.map +1 -1
  391. package/types/components/TableInput/index.d.ts +1 -6
  392. package/types/components/TableInput/index.d.ts.map +1 -1
  393. package/types/components/TableInput/index.native.d.ts +1 -6
  394. package/types/components/TableInput/index.native.d.ts.map +1 -1
  395. package/types/types.d.ts +7 -2
  396. package/types/types.d.ts.map +1 -1
@@ -4,10 +4,10 @@ import { CaretDownIcon, CaretLeftIcon, CaretRightIcon, CaretUpDownIcon, PlusIcon
4
4
  import { Button, Checkbox, Field, useFormField } from "@multiplatform.one/forms";
5
5
  import { flexRender } from "@tanstack/react-table";
6
6
  import { useVirtualizer } from "@tanstack/react-virtual";
7
- import { ensureFocusVisibleRing, useResolvedKnobs } from "@multiplatform.one/theme";
7
+ import { ensureFocusVisibleRing, sizeTokenBelow, useResolvedKnobs, Surface } from "@multiplatform.one/theme";
8
8
  import React, { useEffect, useRef, useMemo, useCallback, useState } from "react";
9
9
  import { AsyncBoundary, EmptyState, Tooltip, useDirection } from "@multiplatform.one/components";
10
- import { Text, View, isWeb, useMedia } from "tamagui";
10
+ import { SizableText, Text, View, isWeb, useMedia } from "tamagui";
11
11
  import { useTranslation } from "react-i18next";
12
12
  import { useDataTable } from "../../hooks/useDataTable.native.js";
13
13
  import { useDragScroll } from "../../hooks/useDragScroll.native.js";
@@ -122,7 +122,6 @@ function DataTableRoot(param) {
122
122
  renderFilters: _renderFilters,
123
123
  className,
124
124
  size,
125
- compact = false,
126
125
  disabled = false,
127
126
  accent,
128
127
  error,
@@ -158,7 +157,7 @@ function DataTableRoot(param) {
158
157
  } = useResolvedKnobs({
159
158
  intent,
160
159
  component: "DataTable",
161
- compact
160
+ size
162
161
  });
163
162
  var chrome = dataTableChrome(String(knobProps.sizeToken));
164
163
  var rowHeightPx = chrome.rowPx;
@@ -231,8 +230,9 @@ function DataTableRoot(param) {
231
230
  table.toggleAllPageRowsSelected();
232
231
  }
233
232
  }, [selectAllScope, table]);
234
- var resolvedSize = size !== null && size !== void 0 ? size : knobProps.sizeToken === "$3" ? "sm" : knobProps.sizeToken === "$5" ? "lg" : "md";
235
- var cellHeight = resolvedSize === "sm" ? "$3" : resolvedSize === "lg" ? "$5" : "$4";
233
+ var resolvedSize = knobProps.sizeToken;
234
+ var cellHeight = resolvedSize;
235
+ var cellSize = sizeTokenBelow(resolvedSize);
236
236
  var headerGroups = table.getHeaderGroups();
237
237
  var rowModelRows = table.getRowModel().rows;
238
238
  var infinite = computed.infinite;
@@ -580,7 +580,6 @@ function DataTableRoot(param) {
580
580
  }));
581
581
  }
582
582
  }, [readOnly, disabled, minRows, data, isFormMode, onDataChange]);
583
- var isCompact = resolvedSize === "sm" || compact;
584
583
  var renderCellContent = useCallback(function (cell, rowIndex, rowData) {
585
584
  var _columnDef_fieldProps;
586
585
  var columnDef = cell.column.columnDef;
@@ -630,12 +629,11 @@ function DataTableRoot(param) {
630
629
  columnLabel: typeof columnDef.header === "string" ? columnDef.header : void 0,
631
630
  rowIndex,
632
631
  rowData,
633
- size: knobProps.sizeToken,
634
- compact: isCompact,
632
+ size: String(cellSize),
635
633
  linkedValue,
636
634
  onLinkedChange
637
635
  });
638
- }, [handleCellChange, readOnly, disabled, knobProps.sizeToken, knobProps.label.fontSize, isCompact]);
636
+ }, [handleCellChange, readOnly, disabled, cellSize, knobProps.label.fontSize]);
639
637
  var extraColumnsBefore = (enableRowSelection ? 1 : 0) + (showRowNumbers ? 1 : 0) + (enableRowExpansion ? 1 : 0);
640
638
  var extraColumnsAfter = showDeleteRow && !readOnly ? 1 : 0;
641
639
  var excelCellNav = enableKeyboardNavigation && !rowPressActive && !disabled;
@@ -734,8 +732,7 @@ function DataTableRoot(param) {
734
732
  // differentiated for screen readers (DG-A11Y-06). The
735
733
  // aria-label rides the role="checkbox" frame itself.
736
734
  "aria-label": deriveSelectRowLabel(row, rowIndex)
737
- },
738
- compact: isCompact
735
+ }
739
736
  })
740
737
  }), showRowNumbers && /* @__PURE__ */_jsx(Table.Cell, {
741
738
  ...cellRenderProps,
@@ -879,7 +876,7 @@ function DataTableRoot(param) {
879
876
  })
880
877
  })]
881
878
  });
882
- }, [enableRowSelection, showRowNumbers, enableRowExpansion, showDeleteRow, readOnly, disabled, cellHeight, knobProps.sizeToken, cellFlexProps, getColSizeProps, getStickyStyle, renderCellContent, handleDeleteRow, data.length, minRows, isCompact, t, deriveSelectRowLabel, ExpandCaretIcon, expandedCaretRotation, clipBodyCells, excelCellNav, keyboardNav.isNavigating, keyboardNav.focusedRowIndex, focusedColIndex]);
879
+ }, [enableRowSelection, showRowNumbers, enableRowExpansion, showDeleteRow, readOnly, disabled, cellHeight, knobProps.sizeToken, cellFlexProps, getColSizeProps, getStickyStyle, renderCellContent, handleDeleteRow, data.length, minRows, t, deriveSelectRowLabel, ExpandCaretIcon, expandedCaretRotation, clipBodyCells, excelCellNav, keyboardNav.isNavigating, keyboardNav.focusedRowIndex, focusedColIndex]);
883
880
  var [filterEditTarget, setFilterEditTarget] = useState(null);
884
881
  var filterUi = useMemo(function () {
885
882
  return {
@@ -915,7 +912,6 @@ function DataTableRoot(param) {
915
912
  views: state.views,
916
913
  activeViewId: state.activeViewId,
917
914
  size: knobProps.sizeToken,
918
- compact: isCompact,
919
915
  isFetching: Boolean(state.isFetching)
920
916
  });
921
917
  }
@@ -925,7 +921,6 @@ function DataTableRoot(param) {
925
921
  onClearFilters: actions.clearFilters,
926
922
  customActions: defaultCardToolbar && hasCardSort ? /* @__PURE__ */_jsx(DataTableCardSortControl, {
927
923
  table,
928
- compact: isCompact,
929
924
  disabled,
930
925
  contained: true
931
926
  }) : void 0,
@@ -938,7 +933,6 @@ function DataTableRoot(param) {
938
933
  enableGlobalSearch,
939
934
  enableFiltering,
940
935
  size: knobProps.sizeToken,
941
- compact: isCompact,
942
936
  isFetching: Boolean(state.isFetching)
943
937
  });
944
938
  };
@@ -955,7 +949,7 @@ function DataTableRoot(param) {
955
949
  pagination: state.pagination,
956
950
  onPaginationChange: actions.setPagination,
957
951
  pageSizeOptions: resolvedPageSizeOptions,
958
- compact: true
952
+ size: resolvedSize
959
953
  });
960
954
  };
961
955
  var renderInner = function renderInner2(tableData, effectiveHandleAddRow, effectiveHandleDeleteRow, _effectiveHandleCellChange) {
@@ -996,7 +990,7 @@ function DataTableRoot(param) {
996
990
  onRetry: state.error ? onRetry : infinite === null || infinite === void 0 ? void 0 : infinite.retry,
997
991
  layout: "table",
998
992
  errorTitle: t("Couldn't load table"),
999
- compact: true,
993
+ size: resolvedSize,
1000
994
  "aria-label": resolvedAriaLabel
1001
995
  });
1002
996
  }
@@ -1009,7 +1003,6 @@ function DataTableRoot(param) {
1009
1003
  }
1010
1004
  return /* @__PURE__ */_jsx(DataTableContext.Provider, {
1011
1005
  size: resolvedSize,
1012
- compact: isCompact,
1013
1006
  children: /* @__PURE__ */_jsx(DataTableStateContext.Provider, {
1014
1007
  value: stateContextValue,
1015
1008
  children: /* @__PURE__ */_jsxs(View, {
@@ -1051,743 +1044,745 @@ function DataTableRoot(param) {
1051
1044
  })
1052
1045
  } : {}),
1053
1046
  ...props,
1054
- children: [
1055
- /* Toolbar. The width-100% wrapper is the LC-40 carrier for
1056
- chrome that has no `disabled` API of its own: under keepLabel
1057
- the chrome fragment dims the region (interaction is already
1058
- blocked by the root inert). */
1059
- hasToolbar && /* @__PURE__ */_jsx(View, {
1060
- width: "100%",
1061
- ...(disabled ? disabledState.chromeKnobProps : {}),
1062
- children: renderToolbarComponent()
1063
- }),
1064
- /* Active filter chips — visibility surface for ALL filters,
1065
- including hidden-column filters (Axiom 6 HONEST STATE) */
1066
- enableFiltering && /* @__PURE__ */_jsx(View, {
1067
- width: "100%",
1068
- ...(disabled ? disabledState.chromeKnobProps : {}),
1069
- children: /* @__PURE__ */_jsx(DataTableFilterChips, {})
1070
- }), /* Auto selection toolbar (DG-TBL-02) — placement from house bulkBarPlacement */
1071
- enableRowSelection && bulkBarPlacement === "top" ? /* @__PURE__ */_jsx(View, {
1072
- width: "100%",
1073
- ...(disabled ? disabledState.chromeKnobProps : {}),
1074
- children: /* @__PURE__ */_jsx(DataTableBulkActions, {
1075
- actions: resolvedBulkActions,
1076
- maxVisibleActions: 5,
1077
- showSelectionCount: true,
1078
- placement: "top"
1079
- })
1080
- }) : null, /* Compound sub-components (children) */
1081
- children, /* Card List View (layout="cards" or auto below $sm) */
1082
- showList ? /* @__PURE__ */_jsx(DataTableDocumentList, {
1083
- tableRows: displayRows,
1084
- enableRowSelection,
1085
- disabled,
1086
- hasActiveFilters: computed.hasActiveFilters,
1087
- renderCellContent,
1088
- compact: isCompact,
1089
- selectRowLabel: deriveSelectRowLabel,
1090
- queryInFlight,
1091
- ...(rowPressActive ? {
1092
- getRowPressProps
1093
- } : {})
1094
- }) : showCards ? /* @__PURE__ */_jsxs(_Fragment, {
1047
+ children: [/* @__PURE__ */_jsxs(Surface, {
1048
+ size: resolvedSize,
1095
1049
  children: [
1096
- /* Header affordances (sort / per-column filter) live in the
1097
- grid headers; the card list restores them here. */
1098
- !defaultCardToolbar && /* @__PURE__ */_jsx(DataTableCardControls, {
1099
- table,
1100
- enableSorting,
1101
- enableFiltering,
1102
- availableColumns: cardFilterColumns,
1103
- compact: isCompact,
1104
- disabled
1105
- }), /* @__PURE__ */_jsx(DataTableMobileCards, {
1050
+ /* Toolbar. The width-100% wrapper is the LC-40 carrier for
1051
+ chrome that has no `disabled` API of its own: under keepLabel
1052
+ the chrome fragment dims the region (interaction is already
1053
+ blocked by the root inert). */
1054
+ hasToolbar && /* @__PURE__ */_jsx(View, {
1055
+ width: "100%",
1056
+ ...(disabled ? disabledState.chromeKnobProps : {}),
1057
+ children: renderToolbarComponent()
1058
+ }),
1059
+ /* Active filter chips — visibility surface for ALL filters,
1060
+ including hidden-column filters (Axiom 6 HONEST STATE) */
1061
+ enableFiltering && /* @__PURE__ */_jsx(View, {
1062
+ width: "100%",
1063
+ ...(disabled ? disabledState.chromeKnobProps : {}),
1064
+ children: /* @__PURE__ */_jsx(DataTableFilterChips, {})
1065
+ }), /* Auto selection toolbar (DG-TBL-02) — placement from house bulkBarPlacement */
1066
+ enableRowSelection && bulkBarPlacement === "top" ? /* @__PURE__ */_jsx(View, {
1067
+ width: "100%",
1068
+ ...(disabled ? disabledState.chromeKnobProps : {}),
1069
+ children: /* @__PURE__ */_jsx(DataTableBulkActions, {
1070
+ actions: resolvedBulkActions,
1071
+ maxVisibleActions: 5,
1072
+ showSelectionCount: true,
1073
+ placement: "top"
1074
+ })
1075
+ }) : null, /* Compound sub-components (children) */
1076
+ children, /* Card List View (layout="cards" or auto below $sm) */
1077
+ showList ? /* @__PURE__ */_jsx(DataTableDocumentList, {
1106
1078
  tableRows: displayRows,
1107
1079
  enableRowSelection,
1108
- showRowNumbers,
1109
- showDeleteRow,
1110
- readOnly,
1111
1080
  disabled,
1112
- dataLength: tableData.length,
1113
- minRows,
1114
1081
  hasActiveFilters: computed.hasActiveFilters,
1115
1082
  renderCellContent,
1116
- onDeleteRow: effectiveHandleDeleteRow,
1117
- selectAllChecked,
1118
- selectAllIndeterminate,
1119
- onToggleSelectAll: toggleSelectAll,
1120
- compact: isCompact,
1121
1083
  selectRowLabel: deriveSelectRowLabel,
1122
1084
  queryInFlight,
1123
1085
  ...(rowPressActive ? {
1124
1086
  getRowPressProps
1125
1087
  } : {})
1126
- })]
1127
- }) : (/* Table View */
1128
- /* @__PURE__ */_jsx(View, {
1129
- ref: function ref(node) {
1130
- if (enableKeyboardNavigation && !isSSR && keyboardNav.containerRef) {
1131
- keyboardNav.containerRef.current = node;
1132
- }
1133
- if (scrollContainerRef) {
1134
- scrollContainerRef.current = node;
1135
- }
1136
- },
1137
- flexDirection: "column",
1138
- width: "100%",
1139
- // Grow 0 / shrink 1 / basis auto: the grid frame hugs its
1140
- // rows and only compresses (into internal scroll) when the
1141
- // parent is shorter. flexGrow 1 stretched the frame to fill
1142
- // tall parents, painting a dead zone between the last row
1143
- // and the frame's bottom border on short pages (the frame
1144
- // claimed data area that held no data — Axiom 6/LC-37).
1145
- flexGrow: 0,
1146
- flexShrink: 1,
1147
- flexBasis: "auto",
1148
- minHeight: 0,
1149
- // This View (the drag-scroll ref) is the horizontal scroll
1150
- // container; the table inside floors at max-content so it
1151
- // overflows here instead of panning the whole page. With
1152
- // pinning it is the ONE scrollport sticky cells track.
1153
- ...(hScroll ? {
1154
- overflowX: "auto"
1155
- } : {}),
1156
- "aria-label": withInterp(t("{{label}} content", {
1157
- label: resolvedAriaLabel
1158
- }), {
1159
- label: resolvedAriaLabel
1160
- }),
1161
- tabIndex: enableKeyboardNavigation && !isSSR ? 0 : void 0,
1162
- ...{
1163
- "data-table-grid": "true"
1164
- },
1165
- onKeyDown: enableKeyboardNavigation && !isSSR ? handleGridKeyDown : void 0,
1166
- onPress: enableKeyboardNavigation && !isSSR ? keyboardNav.handleContainerClick : void 0,
1167
- onBlur: enableKeyboardNavigation && !isSSR ? keyboardNav.handleContainerBlur : void 0,
1168
- children: /* @__PURE__ */_jsxs(Table, {
1169
- displayMode,
1170
- alignCells: {
1171
- x: "start",
1172
- y: "center"
1173
- },
1174
- alignHeaderCells: {
1175
- x: "start",
1176
- y: "center"
1088
+ }) : showCards ? /* @__PURE__ */_jsxs(_Fragment, {
1089
+ children: [
1090
+ /* Header affordances (sort / per-column filter) live in the
1091
+ grid headers; the card list restores them here. */
1092
+ !defaultCardToolbar && /* @__PURE__ */_jsx(DataTableCardControls, {
1093
+ table,
1094
+ enableSorting,
1095
+ enableFiltering,
1096
+ availableColumns: cardFilterColumns,
1097
+ disabled
1098
+ }), /* @__PURE__ */_jsx(DataTableMobileCards, {
1099
+ tableRows: displayRows,
1100
+ enableRowSelection,
1101
+ showRowNumbers,
1102
+ showDeleteRow,
1103
+ readOnly,
1104
+ disabled,
1105
+ dataLength: tableData.length,
1106
+ minRows,
1107
+ hasActiveFilters: computed.hasActiveFilters,
1108
+ renderCellContent,
1109
+ onDeleteRow: effectiveHandleDeleteRow,
1110
+ selectAllChecked,
1111
+ selectAllIndeterminate,
1112
+ onToggleSelectAll: toggleSelectAll,
1113
+ selectRowLabel: deriveSelectRowLabel,
1114
+ queryInFlight,
1115
+ ...(rowPressActive ? {
1116
+ getRowPressProps
1117
+ } : {})
1118
+ })]
1119
+ }) : (/* Table View */
1120
+ /* @__PURE__ */_jsx(View, {
1121
+ ref: function ref(node) {
1122
+ if (enableKeyboardNavigation && !isSSR && keyboardNav.containerRef) {
1123
+ keyboardNav.containerRef.current = node;
1124
+ }
1125
+ if (scrollContainerRef) {
1126
+ scrollContainerRef.current = node;
1127
+ }
1177
1128
  },
1178
- cellHeight,
1179
- borderTopLeftRadius: hasToolbar ? 0 : knobProps.borderRadiusOuter.borderRadius,
1180
- borderTopRightRadius: hasToolbar ? 0 : knobProps.borderRadiusOuter.borderRadius,
1181
- borderBottomLeftRadius: knobProps.borderRadiusOuter.borderRadius,
1182
- borderBottomRightRadius: knobProps.borderRadiusOuter.borderRadius,
1183
- marginBottom: 0,
1184
- "aria-label": resolvedAriaLabel,
1185
- "aria-rowcount": computed.totalPages * state.pagination.pageSize,
1186
- "aria-colcount": table.getVisibleLeafColumns().length + extraColumnsBefore + extraColumnsAfter,
1129
+ flexDirection: "column",
1187
1130
  width: "100%",
1131
+ // Grow 0 / shrink 1 / basis auto: the grid frame hugs its
1132
+ // rows and only compresses (into internal scroll) when the
1133
+ // parent is shorter. flexGrow 1 stretched the frame to fill
1134
+ // tall parents, painting a dead zone between the last row
1135
+ // and the frame's bottom border on short pages (the frame
1136
+ // claimed data area that held no data — Axiom 6/LC-37).
1137
+ flexGrow: 0,
1138
+ flexShrink: 1,
1139
+ flexBasis: "auto",
1140
+ minHeight: 0,
1141
+ // This View (the drag-scroll ref) is the horizontal scroll
1142
+ // container; the table inside floors at max-content so it
1143
+ // overflows here instead of panning the whole page. With
1144
+ // pinning it is the ONE scrollport sticky cells track.
1188
1145
  ...(hScroll ? {
1189
- style: {
1190
- minWidth: "max-content"
1191
- }
1192
- } : {}),
1193
- // Pinning: the Table must NOT be a scroll container (its
1194
- // overflow:hidden base makes it one) or sticky cells stick
1195
- // to it instead of the scrolling content View. Content
1196
- // fits the max-content box, so nothing needs the clip.
1197
- ...(hScroll && enableColumnPinning ? {
1198
- overflow: "visible"
1199
- } : {}),
1200
- // Roving-focus DOM scope for onRowPress arrow keys (LC-49).
1201
- ...(rowPressActive ? {
1202
- "data-row-press-scope": "true"
1146
+ overflowX: "auto"
1203
1147
  } : {}),
1204
- children: [/* Table Header */
1205
- /* @__PURE__ */_jsx(Table.Head, {
1206
- zIndex: "$1",
1207
- "aria-label": t("Table headers"),
1208
- children: headerGroups.map(function (headerGroup) {
1209
- rowCounter.current++;
1210
- return /* @__PURE__ */_jsxs(Table.Row, {
1211
- ...{
1212
- background: true,
1213
- backgroundColor: "$color2",
1214
- rowLocation: rowCounter.current === 0 ? "first" : rowCounter.current === allRowsLength - 1 ? "last" : "middle",
1215
- borderTopRightRadius: hasToolbar ? "$0" : knobProps.borderRadiusOuter.borderRadius,
1216
- borderTopLeftRadius: hasToolbar ? "$0" : knobProps.borderRadiusOuter.borderRadius,
1217
- borderBottomLeftRadius: "$0",
1218
- borderBottomRightRadius: "$0",
1219
- "aria-rowindex": rowCounter.current
1220
- },
1221
- children: [enableRowSelection && /* @__PURE__ */_jsx(Table.HeaderCell, {
1222
- cellWidth: selectionColWidth,
1223
- cellHeight,
1224
- cellLocation: "first",
1225
- justifyContent: "center",
1226
- children: /* @__PURE__ */_jsx(Checkbox, {
1227
- checked: selectAllIndeterminate ? "indeterminate" : selectAllChecked,
1228
- disabled,
1229
- onChange: function onChange(checked) {
1230
- if (disabled || checked === "indeterminate") return;
1231
- var shouldSelect = checked === true;
1232
- var isAll = selectAllScope === "filtered" ? table.getIsAllRowsSelected() : table.getIsAllPageRowsSelected();
1233
- if (shouldSelect !== isAll) toggleSelectAll();
1234
- },
1235
- checkboxProps: {
1236
- "aria-label": selectAllScope === "filtered" ? t("Select all matching rows") : t("Select all rows on page")
1237
- },
1238
- compact: isCompact
1239
- })
1240
- }), showRowNumbers && /* @__PURE__ */_jsx(Table.HeaderCell, {
1241
- cellWidth: chrome.rowNumberCol,
1242
- cellHeight,
1243
- cellLocation: enableRowSelection ? "middle" : "first",
1244
- children: /* @__PURE__ */_jsx(Text, {
1245
- fontSize: knobProps.sizeToken,
1246
- fontWeight: "600",
1247
- children: "#"
1248
- })
1249
- }), enableRowExpansion && /* @__PURE__ */_jsx(Table.HeaderCell, {
1250
- cellWidth: chrome.expandCol,
1251
- cellHeight,
1252
- cellLocation: enableRowSelection || showRowNumbers ? "middle" : "first",
1253
- children: /* @__PURE__ */_jsx(View, {
1254
- width: 14
1255
- })
1256
- }), headerGroup.headers.map(function (header, headerIndex) {
1257
- var _header_column_columnDef_minSize, _header_column_columnDef_maxSize;
1258
- var _header_column_columnDef_fieldProps;
1259
- var isSortableHeader = header.column.getCanSort();
1260
- var sortDirection = header.column.getIsSorted();
1261
- var canResize = enableColumnResizing && header.column.getCanResize();
1262
- var resizeHandler = canResize ? header.getResizeHandler() : void 0;
1263
- var colSize = header.getSize();
1264
- var colMinSize = (_header_column_columnDef_minSize = header.column.columnDef.minSize) !== null && _header_column_columnDef_minSize !== void 0 ? _header_column_columnDef_minSize : 0;
1265
- var colMaxSize = (_header_column_columnDef_maxSize = header.column.columnDef.maxSize) !== null && _header_column_columnDef_maxSize !== void 0 ? _header_column_columnDef_maxSize : Number.MAX_SAFE_INTEGER;
1266
- var stickyStyle = getStickyStyle(header.column.id);
1267
- var columnDef = header.column.columnDef;
1268
- var columnAlign = resolveColumnAlign({
1269
- ...columnDef,
1270
- id: header.column.id
1271
- });
1272
- var headerJustify = alignToFlex(columnAlign);
1273
- var isRightAligned = columnAlign === "right";
1274
- var isFirstHeaderCell = headerIndex === 0 && !enableRowSelection && !showRowNumbers && !enableRowExpansion;
1275
- var isLastHeaderCell = headerIndex === headerGroup.headers.length - 1 && !(showDeleteRow && !readOnly);
1276
- var headerCellLocation = isFirstHeaderCell ? "first" : isLastHeaderCell ? "last" : "middle";
1277
- return /* @__PURE__ */_jsxs(Table.HeaderCell, {
1278
- id: `${header.column.id}-header`,
1279
- onPress: isSortableHeader && !disabled ? header.column.getToggleSortingHandler() : void 0,
1280
- // Keyboard operability (WCAG 2.1.1): the sort
1281
- // control must not be mouse-only — Tab reaches
1282
- // sortable headers, Enter/Space toggles (Shift
1283
- // held = multi-sort, same as shift+click).
1284
- // Disabled tables drop the handlers (the root
1285
- // inert already blocks focus on web).
1286
- ...(isSortableHeader && !disabled && isWeb ? {
1287
- tabIndex: 0,
1288
- onKeyDown: function onKeyDown(e) {
1289
- if (e.key === "Enter" || e.key === " " || e.key === "Spacebar") {
1290
- var _header_column_getToggleSortingHandler;
1291
- e.preventDefault();
1292
- (_header_column_getToggleSortingHandler = header.column.getToggleSortingHandler()) === null || _header_column_getToggleSortingHandler === void 0 ? void 0 : _header_column_getToggleSortingHandler(e);
1293
- }
1294
- },
1295
- focusVisibleStyle: ensureFocusVisibleRing({
1296
- outlineOffset: -2
1297
- })
1298
- } : {}),
1299
- cursor: disabled ? "not-allowed" : isSortableHeader ? "pointer" : "default",
1300
- position: "relative",
1301
- cellLocation: headerCellLocation,
1302
- justifyContent: headerJustify,
1303
- "data-align": columnAlign,
1304
- "aria-sort": isSortableHeader ? sortDirection === "asc" ? "ascending" : sortDirection === "desc" ? "descending" : "none" : void 0,
1305
- ...(dnd && !disabled ? {
1306
- draggable: true,
1307
- onDragStart: function onDragStart(e) {
1308
- return dnd.onDragStart(e, header.column.id);
1148
+ "aria-label": withInterp(t("{{label}} content", {
1149
+ label: resolvedAriaLabel
1150
+ }), {
1151
+ label: resolvedAriaLabel
1152
+ }),
1153
+ tabIndex: enableKeyboardNavigation && !isSSR ? 0 : void 0,
1154
+ ...{
1155
+ "data-table-grid": "true"
1156
+ },
1157
+ onKeyDown: enableKeyboardNavigation && !isSSR ? handleGridKeyDown : void 0,
1158
+ onPress: enableKeyboardNavigation && !isSSR ? keyboardNav.handleContainerClick : void 0,
1159
+ onBlur: enableKeyboardNavigation && !isSSR ? keyboardNav.handleContainerBlur : void 0,
1160
+ children: /* @__PURE__ */_jsxs(Table, {
1161
+ size: resolvedSize,
1162
+ cellSize,
1163
+ displayMode,
1164
+ alignCells: {
1165
+ x: "start",
1166
+ y: "center"
1167
+ },
1168
+ alignHeaderCells: {
1169
+ x: "start",
1170
+ y: "center"
1171
+ },
1172
+ cellHeight,
1173
+ borderTopLeftRadius: hasToolbar ? 0 : knobProps.borderRadiusOuter.borderRadius,
1174
+ borderTopRightRadius: hasToolbar ? 0 : knobProps.borderRadiusOuter.borderRadius,
1175
+ borderBottomLeftRadius: knobProps.borderRadiusOuter.borderRadius,
1176
+ borderBottomRightRadius: knobProps.borderRadiusOuter.borderRadius,
1177
+ marginBottom: 0,
1178
+ "aria-label": resolvedAriaLabel,
1179
+ "aria-rowcount": computed.totalPages * state.pagination.pageSize,
1180
+ "aria-colcount": table.getVisibleLeafColumns().length + extraColumnsBefore + extraColumnsAfter,
1181
+ width: "100%",
1182
+ ...(hScroll ? {
1183
+ style: {
1184
+ minWidth: "max-content"
1185
+ }
1186
+ } : {}),
1187
+ // Pinning: the Table must NOT be a scroll container (its
1188
+ // overflow:hidden base makes it one) or sticky cells stick
1189
+ // to it instead of the scrolling content View. Content
1190
+ // fits the max-content box, so nothing needs the clip.
1191
+ ...(hScroll && enableColumnPinning ? {
1192
+ overflow: "visible"
1193
+ } : {}),
1194
+ // Roving-focus DOM scope for onRowPress arrow keys (LC-49).
1195
+ ...(rowPressActive ? {
1196
+ "data-row-press-scope": "true"
1197
+ } : {}),
1198
+ children: [/* Table Header */
1199
+ /* @__PURE__ */_jsx(Table.Head, {
1200
+ zIndex: "$1",
1201
+ "aria-label": t("Table headers"),
1202
+ children: headerGroups.map(function (headerGroup) {
1203
+ rowCounter.current++;
1204
+ return /* @__PURE__ */_jsxs(Table.Row, {
1205
+ ...{
1206
+ background: true,
1207
+ backgroundColor: "$color2",
1208
+ rowLocation: rowCounter.current === 0 ? "first" : rowCounter.current === allRowsLength - 1 ? "last" : "middle",
1209
+ borderTopRightRadius: hasToolbar ? "$0" : knobProps.borderRadiusOuter.borderRadius,
1210
+ borderTopLeftRadius: hasToolbar ? "$0" : knobProps.borderRadiusOuter.borderRadius,
1211
+ borderBottomLeftRadius: "$0",
1212
+ borderBottomRightRadius: "$0",
1213
+ "aria-rowindex": rowCounter.current
1214
+ },
1215
+ children: [enableRowSelection && /* @__PURE__ */_jsx(Table.HeaderCell, {
1216
+ cellWidth: selectionColWidth,
1217
+ cellHeight,
1218
+ cellLocation: "first",
1219
+ justifyContent: "center",
1220
+ children: /* @__PURE__ */_jsx(Checkbox, {
1221
+ checked: selectAllIndeterminate ? "indeterminate" : selectAllChecked,
1222
+ disabled,
1223
+ onChange: function onChange(checked) {
1224
+ if (disabled || checked === "indeterminate") return;
1225
+ var shouldSelect = checked === true;
1226
+ var isAll = selectAllScope === "filtered" ? table.getIsAllRowsSelected() : table.getIsAllPageRowsSelected();
1227
+ if (shouldSelect !== isAll) toggleSelectAll();
1309
1228
  },
1310
- onDragOver: dnd.onDragOver,
1311
- onDrop: function onDrop(e) {
1312
- return dnd.onDrop(e, header.column.id);
1229
+ checkboxProps: {
1230
+ "aria-label": selectAllScope === "filtered" ? t("Select all matching rows") : t("Select all rows on page")
1313
1231
  }
1314
- } : {}),
1315
- ...cellFlexProps,
1316
- ...getColSizeProps(header.column),
1317
- ...(isWeb && stickyStyle ? {
1318
- style: {
1319
- position: "sticky",
1320
- ...("insetInlineStart" in stickyStyle && {
1321
- insetInlineStart: stickyStyle.insetInlineStart
1322
- }),
1323
- ...("insetInlineEnd" in stickyStyle && {
1324
- insetInlineEnd: stickyStyle.insetInlineEnd
1325
- }),
1326
- zIndex: 2,
1327
- backgroundColor: "var(--color2)"
1328
- }
1329
- } : {}),
1330
- children: [
1331
- /* LC-10 (MPO-336): only the label yields
1332
- to a narrow column; the glyphs keep their
1333
- size or they paint into the next one. The
1334
- filter cluster wraps under the label first,
1335
- so the label keeps the column's width. */
1336
- /* @__PURE__ */
1337
- _jsxs(View, {
1338
- flexDirection: "row",
1339
- flexWrap: "wrap",
1340
- gap: "$2",
1341
- alignItems: "center",
1342
- justifyContent: isRightAligned ? "flex-end" : "space-between",
1343
- flex: 1,
1344
- minWidth: 0,
1345
- children: [/* @__PURE__ */_jsxs(View, {
1232
+ })
1233
+ }), showRowNumbers && /* @__PURE__ */_jsx(Table.HeaderCell, {
1234
+ cellWidth: chrome.rowNumberCol,
1235
+ cellHeight,
1236
+ cellLocation: enableRowSelection ? "middle" : "first",
1237
+ children: /* @__PURE__ */_jsx(Text, {
1238
+ fontSize: knobProps.sizeToken,
1239
+ fontWeight: "600",
1240
+ children: "#"
1241
+ })
1242
+ }), enableRowExpansion && /* @__PURE__ */_jsx(Table.HeaderCell, {
1243
+ cellWidth: chrome.expandCol,
1244
+ cellHeight,
1245
+ cellLocation: enableRowSelection || showRowNumbers ? "middle" : "first",
1246
+ children: /* @__PURE__ */_jsx(View, {
1247
+ width: 14
1248
+ })
1249
+ }), headerGroup.headers.map(function (header, headerIndex) {
1250
+ var _header_column_columnDef_minSize, _header_column_columnDef_maxSize;
1251
+ var _header_column_columnDef_fieldProps;
1252
+ var isSortableHeader = header.column.getCanSort();
1253
+ var sortDirection = header.column.getIsSorted();
1254
+ var canResize = enableColumnResizing && header.column.getCanResize();
1255
+ var resizeHandler = canResize ? header.getResizeHandler() : void 0;
1256
+ var colSize = header.getSize();
1257
+ var colMinSize = (_header_column_columnDef_minSize = header.column.columnDef.minSize) !== null && _header_column_columnDef_minSize !== void 0 ? _header_column_columnDef_minSize : 0;
1258
+ var colMaxSize = (_header_column_columnDef_maxSize = header.column.columnDef.maxSize) !== null && _header_column_columnDef_maxSize !== void 0 ? _header_column_columnDef_maxSize : Number.MAX_SAFE_INTEGER;
1259
+ var stickyStyle = getStickyStyle(header.column.id);
1260
+ var columnDef = header.column.columnDef;
1261
+ var columnAlign = resolveColumnAlign({
1262
+ ...columnDef,
1263
+ id: header.column.id
1264
+ });
1265
+ var headerJustify = alignToFlex(columnAlign);
1266
+ var isRightAligned = columnAlign === "right";
1267
+ var isFirstHeaderCell = headerIndex === 0 && !enableRowSelection && !showRowNumbers && !enableRowExpansion;
1268
+ var isLastHeaderCell = headerIndex === headerGroup.headers.length - 1 && !(showDeleteRow && !readOnly);
1269
+ var headerCellLocation = isFirstHeaderCell ? "first" : isLastHeaderCell ? "last" : "middle";
1270
+ return /* @__PURE__ */_jsxs(Table.HeaderCell, {
1271
+ id: `${header.column.id}-header`,
1272
+ onPress: isSortableHeader && !disabled ? header.column.getToggleSortingHandler() : void 0,
1273
+ // Keyboard operability (WCAG 2.1.1): the sort
1274
+ // control must not be mouse-only — Tab reaches
1275
+ // sortable headers, Enter/Space toggles (Shift
1276
+ // held = multi-sort, same as shift+click).
1277
+ // Disabled tables drop the handlers (the root
1278
+ // inert already blocks focus on web).
1279
+ ...(isSortableHeader && !disabled && isWeb ? {
1280
+ tabIndex: 0,
1281
+ onKeyDown: function onKeyDown(e) {
1282
+ if (e.key === "Enter" || e.key === " " || e.key === "Spacebar") {
1283
+ var _header_column_getToggleSortingHandler;
1284
+ e.preventDefault();
1285
+ (_header_column_getToggleSortingHandler = header.column.getToggleSortingHandler()) === null || _header_column_getToggleSortingHandler === void 0 ? void 0 : _header_column_getToggleSortingHandler(e);
1286
+ }
1287
+ },
1288
+ focusVisibleStyle: ensureFocusVisibleRing({
1289
+ outlineOffset: -2
1290
+ })
1291
+ } : {}),
1292
+ cursor: disabled ? "not-allowed" : isSortableHeader ? "pointer" : "default",
1293
+ position: "relative",
1294
+ cellLocation: headerCellLocation,
1295
+ justifyContent: headerJustify,
1296
+ "data-align": columnAlign,
1297
+ "aria-sort": isSortableHeader ? sortDirection === "asc" ? "ascending" : sortDirection === "desc" ? "descending" : "none" : void 0,
1298
+ ...(dnd && !disabled ? {
1299
+ draggable: true,
1300
+ onDragStart: function onDragStart(e) {
1301
+ return dnd.onDragStart(e, header.column.id);
1302
+ },
1303
+ onDragOver: dnd.onDragOver,
1304
+ onDrop: function onDrop(e) {
1305
+ return dnd.onDrop(e, header.column.id);
1306
+ }
1307
+ } : {}),
1308
+ ...cellFlexProps,
1309
+ ...getColSizeProps(header.column),
1310
+ ...(isWeb && stickyStyle ? {
1311
+ style: {
1312
+ position: "sticky",
1313
+ ...("insetInlineStart" in stickyStyle && {
1314
+ insetInlineStart: stickyStyle.insetInlineStart
1315
+ }),
1316
+ ...("insetInlineEnd" in stickyStyle && {
1317
+ insetInlineEnd: stickyStyle.insetInlineEnd
1318
+ }),
1319
+ zIndex: 2,
1320
+ backgroundColor: "var(--color2)"
1321
+ }
1322
+ } : {}),
1323
+ children: [
1324
+ /* LC-10 (MPO-336): only the label yields
1325
+ to a narrow column; the glyphs keep their
1326
+ size or they paint into the next one. The
1327
+ filter cluster wraps under the label first,
1328
+ so the label keeps the column's width. */
1329
+ /* @__PURE__ */
1330
+ _jsxs(View, {
1346
1331
  flexDirection: "row",
1332
+ flexWrap: "wrap",
1347
1333
  gap: "$2",
1348
1334
  alignItems: "center",
1349
- flexGrow: isRightAligned ? 0 : 1,
1350
- flexShrink: 1,
1351
- flexBasis: "auto",
1335
+ justifyContent: isRightAligned ? "flex-end" : "space-between",
1336
+ flex: 1,
1352
1337
  minWidth: 0,
1353
- justifyContent: isRightAligned ? "flex-end" : void 0,
1354
- children: [/* @__PURE__ */_jsx(Text, {
1355
- fontSize: knobProps.sizeToken,
1356
- userSelect: "none",
1338
+ children: [/* @__PURE__ */_jsxs(View, {
1339
+ flexDirection: "row",
1340
+ gap: "$2",
1341
+ alignItems: "center",
1342
+ flexGrow: isRightAligned ? 0 : 1,
1357
1343
  flexShrink: 1,
1344
+ flexBasis: "auto",
1358
1345
  minWidth: 0,
1359
- textAlign: isRightAligned ? "right" : void 0,
1360
- "data-header-label": "",
1361
- ...(isWeb ? {
1362
- style: {
1363
- overflowWrap: "anywhere"
1364
- }
1365
- } : {}),
1366
- children: header.isPlaceholder ? null : flexRender(header.column.columnDef.header, header.getContext())
1367
- }), isSortableHeader && /* @__PURE__ */_jsx(Tooltip, {
1368
- content: sortDirection === "asc" ? t("Sorted ascending (click to sort descending)") : sortDirection === "desc" ? t("Sorted descending (click to clear)") : t("Click to sort (Shift+click for multi-sort)"),
1369
- children: /* @__PURE__ */_jsxs(View, {
1370
- "aria-hidden": true,
1371
- role: "presentation",
1372
- flexShrink: 0,
1373
- children: [sortDirection === "asc" && /* @__PURE__ */_jsx(CaretDownIcon, {
1374
- size: chrome.iconPx,
1375
- color: "var(--color11)"
1376
- }), sortDirection === "desc" && /* @__PURE__ */_jsx(CaretDownIcon, {
1377
- size: chrome.iconPx,
1378
- color: "var(--color11)",
1346
+ justifyContent: isRightAligned ? "flex-end" : void 0,
1347
+ children: [/* @__PURE__ */_jsx(Text, {
1348
+ fontSize: knobProps.sizeToken,
1349
+ userSelect: "none",
1350
+ flexShrink: 1,
1351
+ minWidth: 0,
1352
+ textAlign: isRightAligned ? "right" : void 0,
1353
+ "data-header-label": "",
1354
+ ...(isWeb ? {
1379
1355
  style: {
1380
- transform: "rotate(180deg)"
1356
+ overflowWrap: "anywhere"
1381
1357
  }
1382
- }), sortDirection === false && /* @__PURE__ */_jsx(CaretUpDownIcon, {
1383
- size: chrome.iconPx,
1384
- color: "var(--color11)"
1385
- })]
1386
- })
1387
- })]
1388
- }), /* @__PURE__ */_jsxs(View, {
1389
- flexDirection: "row",
1390
- gap: "$1",
1391
- alignItems: "center",
1392
- flexShrink: 0,
1393
- children: [enableFiltering && header.column.getCanFilter() && /* @__PURE__ */_jsx(ColumnHeaderFilter, {
1394
- columnId: header.column.id,
1395
- columnLabel: typeof header.column.columnDef.header === "string" ? header.column.columnDef.header : header.column.id,
1396
- columnType: mapFieldToFilterType(getColumnField(header.column.columnDef)),
1397
- filterValue: header.column.getFilterValue(),
1398
- onFilterChange: function onFilterChange(value) {
1399
- return header.column.setFilterValue(value);
1400
- },
1401
- isFiltered: header.column.getIsFiltered(),
1402
- options: (_header_column_columnDef_fieldProps = header.column.columnDef.fieldProps) === null || _header_column_columnDef_fieldProps === void 0 ? void 0 : _header_column_columnDef_fieldProps.options
1403
- }), pinning && enableColumnPinning &&
1404
- /* One compact cycle control per header
1405
- (left → right → unpin) — two full
1406
- buttons crowded the header (owner). */
1407
- /* @__PURE__ */
1408
- _jsx(pinning.PinButton, {
1409
- columnId: header.column.id
1358
+ } : {}),
1359
+ children: header.isPlaceholder ? null : flexRender(header.column.columnDef.header, header.getContext())
1360
+ }), isSortableHeader && /* @__PURE__ */_jsx(Tooltip, {
1361
+ content: sortDirection === "asc" ? t("Sorted ascending (click to sort descending)") : sortDirection === "desc" ? t("Sorted descending (click to clear)") : t("Click to sort (Shift+click for multi-sort)"),
1362
+ children: /* @__PURE__ */_jsxs(View, {
1363
+ "aria-hidden": true,
1364
+ role: "presentation",
1365
+ flexShrink: 0,
1366
+ children: [sortDirection === "asc" && /* @__PURE__ */_jsx(CaretDownIcon, {
1367
+ size: chrome.iconPx,
1368
+ color: "var(--color11)"
1369
+ }), sortDirection === "desc" && /* @__PURE__ */_jsx(CaretDownIcon, {
1370
+ size: chrome.iconPx,
1371
+ color: "var(--color11)",
1372
+ style: {
1373
+ transform: "rotate(180deg)"
1374
+ }
1375
+ }), sortDirection === false && /* @__PURE__ */_jsx(CaretUpDownIcon, {
1376
+ size: chrome.iconPx,
1377
+ color: "var(--color11)"
1378
+ })]
1379
+ })
1380
+ })]
1381
+ }), /* @__PURE__ */_jsxs(View, {
1382
+ flexDirection: "row",
1383
+ gap: "$1",
1384
+ alignItems: "center",
1385
+ flexShrink: 0,
1386
+ children: [enableFiltering && header.column.getCanFilter() && /* @__PURE__ */_jsx(ColumnHeaderFilter, {
1387
+ columnId: header.column.id,
1388
+ columnLabel: typeof header.column.columnDef.header === "string" ? header.column.columnDef.header : header.column.id,
1389
+ columnType: mapFieldToFilterType(getColumnField(header.column.columnDef)),
1390
+ filterValue: header.column.getFilterValue(),
1391
+ onFilterChange: function onFilterChange(value) {
1392
+ return header.column.setFilterValue(value);
1393
+ },
1394
+ isFiltered: header.column.getIsFiltered(),
1395
+ options: (_header_column_columnDef_fieldProps = header.column.columnDef.fieldProps) === null || _header_column_columnDef_fieldProps === void 0 ? void 0 : _header_column_columnDef_fieldProps.options
1396
+ }), pinning && enableColumnPinning &&
1397
+ /* One compact cycle control per header
1398
+ (left → right → unpin) — two full
1399
+ buttons crowded the header (owner). */
1400
+ /* @__PURE__ */
1401
+ _jsx(pinning.PinButton, {
1402
+ columnId: header.column.id
1403
+ })]
1410
1404
  })]
1405
+ }), canResize && resizeHandler && /* @__PURE__ */_jsx(View, {
1406
+ position: "absolute",
1407
+ right: -4,
1408
+ top: 0,
1409
+ height: 2e3,
1410
+ width: 8,
1411
+ cursor: "col-resize",
1412
+ onMouseDown: resizeHandler,
1413
+ onTouchStart: resizeHandler,
1414
+ role: "separator",
1415
+ "aria-valuenow": colSize,
1416
+ "aria-valuemin": colMinSize,
1417
+ "aria-valuemax": colMaxSize,
1418
+ "aria-label": withInterp(t("Resize {{column}} column", {
1419
+ column: header.column.columnDef.header || header.column.id
1420
+ }), {
1421
+ column: header.column.columnDef.header || header.column.id
1422
+ }),
1423
+ style: {
1424
+ touchAction: "none"
1425
+ },
1426
+ zIndex: 10
1411
1427
  })]
1412
- }), canResize && resizeHandler && /* @__PURE__ */_jsx(View, {
1413
- position: "absolute",
1414
- right: -4,
1415
- top: 0,
1416
- height: 2e3,
1417
- width: 8,
1418
- cursor: "col-resize",
1419
- onMouseDown: resizeHandler,
1420
- onTouchStart: resizeHandler,
1421
- role: "separator",
1422
- "aria-valuenow": colSize,
1423
- "aria-valuemin": colMinSize,
1424
- "aria-valuemax": colMaxSize,
1425
- "aria-label": withInterp(t("Resize {{column}} column", {
1426
- column: header.column.columnDef.header || header.column.id
1427
- }), {
1428
- column: header.column.columnDef.header || header.column.id
1429
- }),
1430
- style: {
1431
- touchAction: "none"
1432
- },
1433
- zIndex: 10
1434
- })]
1435
- }, header.id);
1436
- }), showDeleteRow && !readOnly && /* @__PURE__ */_jsx(Table.HeaderCell, {
1437
- cellWidth: chrome.deleteCol,
1438
- cellHeight,
1439
- cellLocation: "last"
1440
- })]
1441
- }, headerGroup.id);
1442
- })
1443
- }), /* Table Body */
1444
- /* @__PURE__ */_jsxs(Table.Body, {
1445
- // Virtualized mode hosts a div rowgroup (DataTableVirtualized)
1446
- // inside a tbody>tr>td bridge; presentation-ing the bridge
1447
- // keeps the AT grid tree clean: table > rowgroup(thead) +
1448
- // rowgroup(virtual rows) with no cell-wrapping-rowgroup
1449
- // noise. aria-label is prohibited on presentation roles.
1450
- role: isVirtualized ? "presentation" : "rowgroup",
1451
- "aria-label": isVirtualized ? void 0 : t("Table data"),
1452
- // Pinning: the flex-variant overflowY:auto computes
1453
- // overflow-x:auto, making the body its own horizontal
1454
- // scroller — headers (outside it) then never move with
1455
- // the columns. Visible keeps the sticky chain clean so
1456
- // the content View is the one scrollport.
1457
- ...(hScroll && enableColumnPinning ? {
1458
- overflowY: "visible",
1459
- overflowX: "visible"
1460
- } : {}),
1461
- ref: function ref(node) {
1462
- tableBodyRef.current = node !== null && node !== void 0 ? node : null;
1463
- },
1464
- children: [displayRows.length === 0 ? /* @__PURE__ */_jsx(Table.Row, {
1465
- children: /* @__PURE__ */_jsx(Table.Cell, {
1466
- children: isRefetching ? null : /* @__PURE__ */_jsx(EmptyState, {
1467
- compact: true,
1468
- "aria-live": "polite",
1469
- title: computed.hasActiveFilters ? t("No results found") : t("No data available")
1470
- })
1428
+ }, header.id);
1429
+ }), showDeleteRow && !readOnly && /* @__PURE__ */_jsx(Table.HeaderCell, {
1430
+ cellWidth: chrome.deleteCol,
1431
+ cellHeight,
1432
+ cellLocation: "last"
1433
+ })]
1434
+ }, headerGroup.id);
1471
1435
  })
1472
- }) : isVirtualized ? /* @__PURE__ */_jsx(Table.Row, {
1473
- role: "presentation",
1474
- children: /* @__PURE__ */_jsx(Table.Cell, {
1436
+ }), /* Table Body */
1437
+ /* @__PURE__ */_jsxs(Table.Body, {
1438
+ // Virtualized mode hosts a div rowgroup (DataTableVirtualized)
1439
+ // inside a tbody>tr>td bridge; presentation-ing the bridge
1440
+ // keeps the AT grid tree clean: table > rowgroup(thead) +
1441
+ // rowgroup(virtual rows) with no cell-wrapping-rowgroup
1442
+ // noise. aria-label is prohibited on presentation roles.
1443
+ role: isVirtualized ? "presentation" : "rowgroup",
1444
+ "aria-label": isVirtualized ? void 0 : t("Table data"),
1445
+ // Pinning: the flex-variant overflowY:auto computes
1446
+ // overflow-x:auto, making the body its own horizontal
1447
+ // scroller — headers (outside it) then never move with
1448
+ // the columns. Visible keeps the sticky chain clean so
1449
+ // the content View is the one scrollport.
1450
+ ...(hScroll && enableColumnPinning ? {
1451
+ overflowY: "visible",
1452
+ overflowX: "visible"
1453
+ } : {}),
1454
+ ref: function ref(node) {
1455
+ tableBodyRef.current = node !== null && node !== void 0 ? node : null;
1456
+ },
1457
+ children: [displayRows.length === 0 ? /* @__PURE__ */_jsx(Table.Row, {
1458
+ children: /* @__PURE__ */_jsx(Table.Cell, {
1459
+ children: isRefetching ? null : /* @__PURE__ */_jsx(EmptyState, {
1460
+ size: resolvedSize,
1461
+ "aria-live": "polite",
1462
+ title: computed.hasActiveFilters ? t("No results found") : t("No data available")
1463
+ })
1464
+ })
1465
+ }) : isVirtualized ? /* @__PURE__ */_jsx(Table.Row, {
1475
1466
  role: "presentation",
1476
- padding: 0,
1477
- // In the default flex displayMode colSpan is inert
1478
- // and the context default gives cells a fixed token
1479
- // width — the virtualized body must fill the row
1480
- // explicitly or it collapses to that token. (In the
1481
- // real-<table> displayMode the colSpan attribute
1482
- // now genuinely spans.)
1483
- cellWidth: "auto",
1484
- style: {
1485
- display: "block",
1486
- overflow: "hidden",
1487
- width: "100%",
1488
- minWidth: 0
1489
- },
1490
- ...{
1491
- colSpan: table.getVisibleLeafColumns().length + extraColumnsBefore + extraColumnsAfter
1492
- },
1493
- children: /* @__PURE__ */_jsx(DataTableVirtualized, {
1494
- virtualItems,
1495
- totalSize,
1496
- bodyScrollRef,
1497
- virtualizationHeight,
1498
- tableRows: displayRows,
1499
- headerGroups,
1500
- showRowNumbers,
1501
- enableRowExpansion,
1502
- showDeleteRow,
1503
- readOnly,
1504
- enableKeyboardNavigation,
1505
- keyboardNav,
1506
- getColSizeProps,
1507
- renderRowContent,
1508
- extraColumnsBefore,
1509
- extraColumnsAfter,
1510
- table,
1511
- hasInfiniteTail,
1512
- rowHeightPx,
1513
- tableZebraOn,
1514
- ...(rowPressActive ? {
1515
- getRowPressProps
1516
- } : {})
1467
+ children: /* @__PURE__ */_jsx(Table.Cell, {
1468
+ role: "presentation",
1469
+ padding: 0,
1470
+ // In the default flex displayMode colSpan is inert
1471
+ // and the context default gives cells a fixed token
1472
+ // width — the virtualized body must fill the row
1473
+ // explicitly or it collapses to that token. (In the
1474
+ // real-<table> displayMode the colSpan attribute
1475
+ // now genuinely spans.)
1476
+ cellWidth: "auto",
1477
+ style: {
1478
+ display: "block",
1479
+ overflow: "hidden",
1480
+ width: "100%",
1481
+ minWidth: 0
1482
+ },
1483
+ ...{
1484
+ colSpan: table.getVisibleLeafColumns().length + extraColumnsBefore + extraColumnsAfter
1485
+ },
1486
+ children: /* @__PURE__ */_jsx(DataTableVirtualized, {
1487
+ virtualItems,
1488
+ totalSize,
1489
+ bodyScrollRef,
1490
+ virtualizationHeight,
1491
+ tableRows: displayRows,
1492
+ headerGroups,
1493
+ showRowNumbers,
1494
+ enableRowExpansion,
1495
+ showDeleteRow,
1496
+ readOnly,
1497
+ enableKeyboardNavigation,
1498
+ keyboardNav,
1499
+ getColSizeProps,
1500
+ renderRowContent,
1501
+ extraColumnsBefore,
1502
+ extraColumnsAfter,
1503
+ table,
1504
+ hasInfiniteTail,
1505
+ rowHeightPx,
1506
+ tableZebraOn,
1507
+ ...(rowPressActive ? {
1508
+ getRowPressProps
1509
+ } : {})
1510
+ })
1517
1511
  })
1518
- })
1519
- }) : /* @__PURE__ */_jsxs(_Fragment, {
1520
- children: [displayRows.map(function (row, index) {
1521
- var _row_getIsGrouped, _row_getIsSelected, _row_subRows;
1522
- rowCounter.current++;
1523
- var isLastRow = index === displayRows.length - 1;
1524
- if (enableGrouping && ((_row_getIsGrouped = row.getIsGrouped) === null || _row_getIsGrouped === void 0 ? void 0 : _row_getIsGrouped.call(row))) {
1525
- var _row_depth, _row_groupingValue, _ref;
1526
- var _row_subRows1;
1527
- var colSpan = table.getVisibleLeafColumns().length + extraColumnsBefore + extraColumnsAfter;
1528
- var indent = ((_row_depth = row.depth) !== null && _row_depth !== void 0 ? _row_depth : 0) * chrome.indent;
1529
- return /* @__PURE__ */_jsx(Table.Row, {
1530
- backgroundColor: "$color3",
1512
+ }) : /* @__PURE__ */_jsxs(_Fragment, {
1513
+ children: [displayRows.map(function (row, index) {
1514
+ var _row_getIsGrouped, _row_getIsSelected, _row_subRows;
1515
+ rowCounter.current++;
1516
+ var isLastRow = index === displayRows.length - 1;
1517
+ if (enableGrouping && ((_row_getIsGrouped = row.getIsGrouped) === null || _row_getIsGrouped === void 0 ? void 0 : _row_getIsGrouped.call(row))) {
1518
+ var _row_depth, _row_groupingValue, _ref;
1519
+ var _row_subRows1;
1520
+ var colSpan = table.getVisibleLeafColumns().length + extraColumnsBefore + extraColumnsAfter;
1521
+ var indent = ((_row_depth = row.depth) !== null && _row_depth !== void 0 ? _row_depth : 0) * chrome.indent;
1522
+ return /* @__PURE__ */_jsx(Table.Row, {
1523
+ backgroundColor: "$color3",
1524
+ flexShrink: 0,
1525
+ "aria-rowindex": rowCounter.current,
1526
+ children: /* @__PURE__ */_jsx(Table.Cell, {
1527
+ ...{
1528
+ colSpan
1529
+ },
1530
+ children: /* @__PURE__ */_jsxs(View, {
1531
+ flexDirection: "row",
1532
+ alignItems: "center",
1533
+ gap: "$2",
1534
+ paddingInlineStart: indent,
1535
+ cursor: "pointer",
1536
+ onPress: function onPress() {
1537
+ return row.toggleExpanded();
1538
+ },
1539
+ // Keyboard/AT contract: expandable group
1540
+ // header is a toggle button (Enter/Space).
1541
+ role: "button",
1542
+ tabIndex: 0,
1543
+ "aria-expanded": row.getIsExpanded(),
1544
+ ...{
1545
+ onKeyDown: function onKeyDown(e) {
1546
+ if (e.key === "Enter" || e.key === " ") {
1547
+ e.preventDefault();
1548
+ row.toggleExpanded();
1549
+ }
1550
+ }
1551
+ },
1552
+ children: [/* @__PURE__ */_jsx(Text, {
1553
+ fontFamily: "$mono",
1554
+ fontSize: "$3",
1555
+ children: row.getIsExpanded() ? "\u25BC" : "\u25B6"
1556
+ }), /* @__PURE__ */_jsx(SizableText, {
1557
+ fontFamily: knobProps.heading.fontFamily,
1558
+ size: "$4",
1559
+ children: String((_row_groupingValue = row.groupingValue) !== null && _row_groupingValue !== void 0 ? _row_groupingValue : "\u2014")
1560
+ }), /* @__PURE__ */_jsxs(Text, {
1561
+ color: "$placeholderColor",
1562
+ fontSize: "$2",
1563
+ children: ["(", (_ref = (_row_subRows1 = row.subRows) === null || _row_subRows1 === void 0 ? void 0 : _row_subRows1.length) !== null && _ref !== void 0 ? _ref : 0, ")"]
1564
+ })]
1565
+ })
1566
+ })
1567
+ }, row.id);
1568
+ }
1569
+ var mainRow = /* @__PURE__ */_createElement(Table.Row, {
1570
+ ...tableRowStateProps({
1571
+ selected: Boolean(enableRowSelection && ((_row_getIsSelected = row.getIsSelected) === null || _row_getIsSelected === void 0 ? void 0 : _row_getIsSelected.call(row))),
1572
+ keyboardFocused: false,
1573
+ zebraOn: tableZebraOn,
1574
+ index,
1575
+ pressable: rowPressActive
1576
+ }),
1577
+ ...{
1578
+ animation: "quick"
1579
+ },
1531
1580
  flexShrink: 0,
1581
+ rowLocation: rowCounter.current === 0 ? "first" : rowCounter.current === allRowsLength - 1 ? "last" : "middle",
1582
+ key: `${row.id}-${index}`,
1532
1583
  "aria-rowindex": rowCounter.current,
1584
+ "aria-label": withInterp(t("Row {{row}}", {
1585
+ row: index + 1
1586
+ }), {
1587
+ row: index + 1
1588
+ }),
1589
+ tabIndex: -1,
1590
+ ...{
1591
+ "data-table-zebra": tableZebraOn ? index % 2 === 0 ? "even" : "odd" : "off"
1592
+ },
1593
+ ...getRowPressProps(row, index),
1594
+ ...rowIntentProps(row.original)
1595
+ }, renderRowContent(row, index, isLastRow));
1596
+ var subRow = enableRowExpansion && renderSubComponent && row.getIsExpanded() && !((_row_subRows = row.subRows) === null || _row_subRows === void 0 ? void 0 : _row_subRows.length) ? /* @__PURE__ */_jsx(Table.Row, {
1597
+ backgroundColor: "$color2",
1533
1598
  children: /* @__PURE__ */_jsx(Table.Cell, {
1534
1599
  ...{
1535
- colSpan
1600
+ colSpan: table.getVisibleLeafColumns().length + extraColumnsBefore + extraColumnsAfter
1536
1601
  },
1537
- children: /* @__PURE__ */_jsxs(View, {
1538
- flexDirection: "row",
1539
- alignItems: "center",
1540
- gap: "$2",
1541
- paddingInlineStart: indent,
1542
- cursor: "pointer",
1543
- onPress: function onPress() {
1544
- return row.toggleExpanded();
1545
- },
1546
- // Keyboard/AT contract: expandable group
1547
- // header is a toggle button (Enter/Space).
1548
- role: "button",
1549
- tabIndex: 0,
1550
- "aria-expanded": row.getIsExpanded(),
1551
- ...{
1552
- onKeyDown: function onKeyDown(e) {
1553
- if (e.key === "Enter" || e.key === " ") {
1554
- e.preventDefault();
1555
- row.toggleExpanded();
1556
- }
1557
- }
1558
- },
1559
- children: [/* @__PURE__ */_jsx(Text, {
1560
- fontFamily: "$mono",
1561
- fontSize: "$3",
1562
- children: row.getIsExpanded() ? "\u25BC" : "\u25B6"
1563
- }), /* @__PURE__ */_jsx(Text, {
1564
- fontWeight: "600",
1565
- children: String((_row_groupingValue = row.groupingValue) !== null && _row_groupingValue !== void 0 ? _row_groupingValue : "\u2014")
1566
- }), /* @__PURE__ */_jsxs(Text, {
1567
- color: "$placeholderColor",
1568
- fontSize: "$2",
1569
- children: ["(", (_ref = (_row_subRows1 = row.subRows) === null || _row_subRows1 === void 0 ? void 0 : _row_subRows1.length) !== null && _ref !== void 0 ? _ref : 0, ")"]
1570
- })]
1571
- })
1602
+ children: renderSubComponent(row)
1572
1603
  })
1604
+ }, `${row.id}-sub`) : null;
1605
+ return /* @__PURE__ */_jsxs(React.Fragment, {
1606
+ children: [mainRow, subRow]
1573
1607
  }, row.id);
1574
- }
1575
- var mainRow = /* @__PURE__ */_createElement(Table.Row, {
1576
- ...tableRowStateProps({
1577
- selected: Boolean(enableRowSelection && ((_row_getIsSelected = row.getIsSelected) === null || _row_getIsSelected === void 0 ? void 0 : _row_getIsSelected.call(row))),
1578
- keyboardFocused: false,
1579
- zebraOn: tableZebraOn,
1580
- index,
1581
- pressable: rowPressActive
1582
- }),
1583
- ...{
1584
- animation: "quick"
1585
- },
1586
- flexShrink: 0,
1587
- rowLocation: rowCounter.current === 0 ? "first" : rowCounter.current === allRowsLength - 1 ? "last" : "middle",
1588
- key: `${row.id}-${index}`,
1589
- "aria-rowindex": rowCounter.current,
1590
- "aria-label": withInterp(t("Row {{row}}", {
1591
- row: index + 1
1592
- }), {
1593
- row: index + 1
1594
- }),
1595
- tabIndex: -1,
1596
- ...{
1597
- "data-table-zebra": tableZebraOn ? index % 2 === 0 ? "even" : "odd" : "off"
1598
- },
1599
- ...getRowPressProps(row, index),
1600
- ...rowIntentProps(row.original)
1601
- }, renderRowContent(row, index, isLastRow));
1602
- var subRow = enableRowExpansion && renderSubComponent && row.getIsExpanded() && !((_row_subRows = row.subRows) === null || _row_subRows === void 0 ? void 0 : _row_subRows.length) ? /* @__PURE__ */_jsx(Table.Row, {
1603
- backgroundColor: "$color2",
1604
- children: /* @__PURE__ */_jsx(Table.Cell, {
1605
- ...{
1606
- colSpan: table.getVisibleLeafColumns().length + extraColumnsBefore + extraColumnsAfter
1607
- },
1608
- children: renderSubComponent(row)
1609
- })
1610
- }, `${row.id}-sub`) : null;
1611
- return /* @__PURE__ */_jsxs(React.Fragment, {
1612
- children: [mainRow, subRow]
1613
- }, row.id);
1614
- }), /* Filler row — fills remaining space with background */
1615
- isFlexLayout && /* @__PURE__ */_jsxs(Table.Row, {
1616
- "aria-hidden": true,
1617
- backgroundColor: "$color1",
1618
- flex: 1,
1619
- flexShrink: 1,
1620
- flexGrow: 1,
1621
- flexBasis: 0,
1622
- minHeight: 0,
1623
- children: [enableRowSelection && /* @__PURE__ */_jsx(Table.Cell, {
1624
- cellWidth: selectionColWidth,
1625
- cellLocation: "first",
1626
- padding: 0,
1627
- minHeight: 0
1628
- }), showRowNumbers && /* @__PURE__ */_jsx(Table.Cell, {
1629
- cellWidth: chrome.rowNumberCol,
1630
- cellLocation: enableRowSelection ? "middle" : "first",
1631
- padding: 0,
1632
- minHeight: 0
1633
- }), enableRowExpansion && /* @__PURE__ */_jsx(Table.Cell, {
1634
- cellWidth: chrome.expandCol,
1635
- cellLocation: enableRowSelection || showRowNumbers ? "middle" : "first",
1636
- padding: 0,
1637
- minHeight: 0
1638
- }), (_headerGroups_ = headerGroups[0]) === null || _headerGroups_ === void 0 ? void 0 : _headerGroups_.headers.map(function (header, headerIndex) {
1639
- var isFirstDataCell = headerIndex === 0 && !enableRowSelection && !showRowNumbers && !enableRowExpansion;
1640
- var isLastDataCell = headerIndex === headerGroups[0].headers.length - 1 && !(showDeleteRow && !readOnly);
1641
- var cellLoc = isFirstDataCell ? "first" : isLastDataCell ? "last" : "middle";
1642
- return /* @__PURE__ */_jsx(Table.Cell, {
1643
- ...cellFlexProps,
1644
- ...getColSizeProps(header.column),
1645
- cellLocation: cellLoc,
1608
+ }), /* Filler row — fills remaining space with background */
1609
+ isFlexLayout && /* @__PURE__ */_jsxs(Table.Row, {
1610
+ "aria-hidden": true,
1611
+ backgroundColor: "$color1",
1612
+ flex: 1,
1613
+ flexShrink: 1,
1614
+ flexGrow: 1,
1615
+ flexBasis: 0,
1616
+ minHeight: 0,
1617
+ children: [enableRowSelection && /* @__PURE__ */_jsx(Table.Cell, {
1618
+ cellWidth: selectionColWidth,
1619
+ cellLocation: "first",
1646
1620
  padding: 0,
1647
1621
  minHeight: 0
1648
- }, header.id);
1649
- }), showDeleteRow && !readOnly && /* @__PURE__ */_jsx(Table.Cell, {
1650
- cellWidth: chrome.deleteCol,
1651
- cellLocation: "last",
1652
- padding: 0,
1653
- minHeight: 0
1654
- })]
1655
- }, "filler-row")]
1656
- }),
1657
- /* DF-12 / Axiom 6: clipped-viewport affordance — rows are
1658
- cut off below the fold, so the frame says so with a
1659
- bottom fade that clears once the last row is reached.
1660
- Sticky inside the scroll container; zero layout cost
1661
- (a zero-height row whose cell paints the fade upward
1662
- over the last visible row). Rendered as a Table.Row
1663
- and a <td>: a <div> is not a valid child of the real
1664
- <tbody> or <tr> (SSR parsers foster-parent it out of
1665
- the table). Only reachable in the flex displayMode
1666
- (bodyClipped needs a scrollable body), where the row
1667
- renders display:flex like the old View. */
1668
- isWeb && bodyClipped && /* @__PURE__ */_jsx(Table.Row, {
1669
- "aria-hidden": true,
1670
- role: "presentation",
1671
- position: "sticky",
1672
- bottom: 0,
1673
- height: 0,
1674
- flexShrink: 0,
1675
- zIndex: 2,
1676
- pointerEvents: "none",
1677
- ...{
1678
- "data-table-clip-affordance": "true"
1679
- },
1680
- children: /* @__PURE__ */_jsx(View, {
1622
+ }), showRowNumbers && /* @__PURE__ */_jsx(Table.Cell, {
1623
+ cellWidth: chrome.rowNumberCol,
1624
+ cellLocation: enableRowSelection ? "middle" : "first",
1625
+ padding: 0,
1626
+ minHeight: 0
1627
+ }), enableRowExpansion && /* @__PURE__ */_jsx(Table.Cell, {
1628
+ cellWidth: chrome.expandCol,
1629
+ cellLocation: enableRowSelection || showRowNumbers ? "middle" : "first",
1630
+ padding: 0,
1631
+ minHeight: 0
1632
+ }), (_headerGroups_ = headerGroups[0]) === null || _headerGroups_ === void 0 ? void 0 : _headerGroups_.headers.map(function (header, headerIndex) {
1633
+ var isFirstDataCell = headerIndex === 0 && !enableRowSelection && !showRowNumbers && !enableRowExpansion;
1634
+ var isLastDataCell = headerIndex === headerGroups[0].headers.length - 1 && !(showDeleteRow && !readOnly);
1635
+ var cellLoc = isFirstDataCell ? "first" : isLastDataCell ? "last" : "middle";
1636
+ return /* @__PURE__ */_jsx(Table.Cell, {
1637
+ ...cellFlexProps,
1638
+ ...getColSizeProps(header.column),
1639
+ cellLocation: cellLoc,
1640
+ padding: 0,
1641
+ minHeight: 0
1642
+ }, header.id);
1643
+ }), showDeleteRow && !readOnly && /* @__PURE__ */_jsx(Table.Cell, {
1644
+ cellWidth: chrome.deleteCol,
1645
+ cellLocation: "last",
1646
+ padding: 0,
1647
+ minHeight: 0
1648
+ })]
1649
+ }, "filler-row")]
1650
+ }),
1651
+ /* DF-12 / Axiom 6: clipped-viewport affordance — rows are
1652
+ cut off below the fold, so the frame says so with a
1653
+ bottom fade that clears once the last row is reached.
1654
+ Sticky inside the scroll container; zero layout cost
1655
+ (a zero-height row whose cell paints the fade upward
1656
+ over the last visible row). Rendered as a Table.Row
1657
+ and a <td>: a <div> is not a valid child of the real
1658
+ <tbody> or <tr> (SSR parsers foster-parent it out of
1659
+ the table). Only reachable in the flex displayMode
1660
+ (bodyClipped needs a scrollable body), where the row
1661
+ renders display:flex like the old View. */
1662
+ isWeb && bodyClipped && /* @__PURE__ */_jsx(Table.Row, {
1663
+ "aria-hidden": true,
1664
+ role: "presentation",
1665
+ position: "sticky",
1666
+ bottom: 0,
1667
+ height: 0,
1668
+ flexShrink: 0,
1669
+ zIndex: 2,
1670
+ pointerEvents: "none",
1681
1671
  ...{
1682
- render: "td"
1672
+ "data-table-clip-affordance": "true"
1683
1673
  },
1684
- position: "absolute",
1685
- left: 0,
1686
- right: 0,
1687
- bottom: 0,
1688
- height: 28,
1689
- style: {
1690
- background: "linear-gradient(to bottom, rgba(0,0,0,0), var(--background))"
1691
- }
1674
+ children: /* @__PURE__ */_jsx(View, {
1675
+ ...{
1676
+ render: "td"
1677
+ },
1678
+ position: "absolute",
1679
+ left: 0,
1680
+ right: 0,
1681
+ bottom: 0,
1682
+ height: 28,
1683
+ style: {
1684
+ background: "linear-gradient(to bottom, rgba(0,0,0,0), var(--background))"
1685
+ }
1686
+ })
1687
+ })]
1688
+ }), /* Table Footer */
1689
+ hasFooter && /* @__PURE__ */_jsx(Table.Foot, {
1690
+ children: footerGroups.map(function (footerGroup) {
1691
+ return /* @__PURE__ */_jsxs(Table.Row, {
1692
+ children: [enableRowSelection && /* @__PURE__ */_jsx(Table.Cell, {
1693
+ cellWidth: selectionColWidth,
1694
+ cellHeight,
1695
+ cellLocation: "first"
1696
+ }), showRowNumbers && /* @__PURE__ */_jsx(Table.Cell, {
1697
+ cellWidth: chrome.rowNumberCol,
1698
+ cellHeight,
1699
+ cellLocation: enableRowSelection ? "middle" : "first"
1700
+ }), enableRowExpansion && /* @__PURE__ */_jsx(Table.Cell, {
1701
+ cellWidth: chrome.expandCol,
1702
+ cellHeight,
1703
+ cellLocation: enableRowSelection || showRowNumbers ? "middle" : "first"
1704
+ }), footerGroup.headers.map(function (header) {
1705
+ var stickyStyle = getStickyStyle(header.column.id);
1706
+ var columnAlign = resolveColumnAlign({
1707
+ ...header.column.columnDef,
1708
+ id: header.column.id
1709
+ });
1710
+ return /* @__PURE__ */_jsx(Table.Cell, {
1711
+ ...cellFlexProps,
1712
+ ...getColSizeProps(header.column),
1713
+ ...(isWeb && stickyStyle ? {
1714
+ style: {
1715
+ position: "sticky",
1716
+ ...("insetInlineStart" in stickyStyle && {
1717
+ insetInlineStart: stickyStyle.insetInlineStart
1718
+ }),
1719
+ ...("insetInlineEnd" in stickyStyle && {
1720
+ insetInlineEnd: stickyStyle.insetInlineEnd
1721
+ }),
1722
+ zIndex: 2,
1723
+ backgroundColor: "var(--color2)"
1724
+ }
1725
+ } : {}),
1726
+ justifyContent: alignToFlex(columnAlign),
1727
+ "data-align": columnAlign,
1728
+ children: header.isPlaceholder ? null : /* @__PURE__ */_jsx(View, {
1729
+ width: "100%",
1730
+ minWidth: 0,
1731
+ flexDirection: "row",
1732
+ alignItems: "center",
1733
+ justifyContent: alignToFlex(columnAlign),
1734
+ "data-cell-align": columnAlign,
1735
+ style: isWeb ? {
1736
+ textAlign: columnAlign
1737
+ } : void 0,
1738
+ children: flexRender(header.column.columnDef.footer, header.getContext())
1739
+ })
1740
+ }, header.id);
1741
+ }), showDeleteRow && !readOnly && /* @__PURE__ */_jsx(Table.Cell, {
1742
+ cellWidth: chrome.deleteCol,
1743
+ cellHeight,
1744
+ cellLocation: "last"
1745
+ })]
1746
+ }, footerGroup.id);
1692
1747
  })
1693
1748
  })]
1694
- }), /* Table Footer */
1695
- hasFooter && /* @__PURE__ */_jsx(Table.Foot, {
1696
- children: footerGroups.map(function (footerGroup) {
1697
- return /* @__PURE__ */_jsxs(Table.Row, {
1698
- children: [enableRowSelection && /* @__PURE__ */_jsx(Table.Cell, {
1699
- cellWidth: selectionColWidth,
1700
- cellHeight,
1701
- cellLocation: "first"
1702
- }), showRowNumbers && /* @__PURE__ */_jsx(Table.Cell, {
1703
- cellWidth: chrome.rowNumberCol,
1704
- cellHeight,
1705
- cellLocation: enableRowSelection ? "middle" : "first"
1706
- }), enableRowExpansion && /* @__PURE__ */_jsx(Table.Cell, {
1707
- cellWidth: chrome.expandCol,
1708
- cellHeight,
1709
- cellLocation: enableRowSelection || showRowNumbers ? "middle" : "first"
1710
- }), footerGroup.headers.map(function (header) {
1711
- var stickyStyle = getStickyStyle(header.column.id);
1712
- var columnAlign = resolveColumnAlign({
1713
- ...header.column.columnDef,
1714
- id: header.column.id
1715
- });
1716
- return /* @__PURE__ */_jsx(Table.Cell, {
1717
- ...cellFlexProps,
1718
- ...getColSizeProps(header.column),
1719
- ...(isWeb && stickyStyle ? {
1720
- style: {
1721
- position: "sticky",
1722
- ...("insetInlineStart" in stickyStyle && {
1723
- insetInlineStart: stickyStyle.insetInlineStart
1724
- }),
1725
- ...("insetInlineEnd" in stickyStyle && {
1726
- insetInlineEnd: stickyStyle.insetInlineEnd
1727
- }),
1728
- zIndex: 2,
1729
- backgroundColor: "var(--color2)"
1730
- }
1731
- } : {}),
1732
- justifyContent: alignToFlex(columnAlign),
1733
- "data-align": columnAlign,
1734
- children: header.isPlaceholder ? null : /* @__PURE__ */_jsx(View, {
1735
- width: "100%",
1736
- minWidth: 0,
1737
- flexDirection: "row",
1738
- alignItems: "center",
1739
- justifyContent: alignToFlex(columnAlign),
1740
- "data-cell-align": columnAlign,
1741
- style: isWeb ? {
1742
- textAlign: columnAlign
1743
- } : void 0,
1744
- children: flexRender(header.column.columnDef.footer, header.getContext())
1745
- })
1746
- }, header.id);
1747
- }), showDeleteRow && !readOnly && /* @__PURE__ */_jsx(Table.Cell, {
1748
- cellWidth: chrome.deleteCol,
1749
- cellHeight,
1750
- cellLocation: "last"
1751
- })]
1752
- }, footerGroup.id);
1753
- })
1754
- })]
1755
- })
1756
- })), infinite ? /* @__PURE__ */_jsx(DataTableInfiniteTail, {
1757
- infinite,
1758
- visibleCount: tableRows.length,
1759
- showAppendSkeleton: !isVirtualized,
1760
- rowHeightPx,
1761
- fontSize: knobProps.sizeToken,
1762
- gapProps: knobProps.gap,
1763
- sentinel: !isVirtualized && !infinite.exhausted && !infinite.appendError && isWeb ? /* @__PURE__ */_jsx(View, {
1764
- // @ts-ignore web ref for IntersectionObserver
1765
- ref: sentinelRef,
1766
- height: 1,
1749
+ })
1750
+ })), infinite ? /* @__PURE__ */_jsx(DataTableInfiniteTail, {
1751
+ infinite,
1752
+ visibleCount: tableRows.length,
1753
+ showAppendSkeleton: !isVirtualized,
1754
+ rowHeightPx,
1755
+ fontSize: knobProps.sizeToken,
1756
+ gapProps: knobProps.gap,
1757
+ sentinel: !isVirtualized && !infinite.exhausted && !infinite.appendError && isWeb ? /* @__PURE__ */_jsx(View, {
1758
+ // @ts-ignore web ref for IntersectionObserver
1759
+ ref: sentinelRef,
1760
+ height: 1,
1761
+ width: "100%",
1762
+ "aria-hidden": true,
1763
+ ...{
1764
+ "data-testid": "infinite-sentinel"
1765
+ }
1766
+ }) : null
1767
+ }) : null, enableRowSelection && bulkBarPlacement === "bottom" ? /* @__PURE__ */_jsx(View, {
1767
1768
  width: "100%",
1768
- "aria-hidden": true,
1769
- ...{
1770
- "data-testid": "infinite-sentinel"
1771
- }
1772
- }) : null
1773
- }) : null, enableRowSelection && bulkBarPlacement === "bottom" ? /* @__PURE__ */_jsx(View, {
1774
- width: "100%",
1775
- ...(disabled ? disabledState.chromeKnobProps : {}),
1776
- children: /* @__PURE__ */_jsx(DataTableBulkActions, {
1777
- actions: resolvedBulkActions,
1778
- maxVisibleActions: 5,
1779
- showSelectionCount: true,
1780
- placement: "bottom"
1781
- })
1782
- }) : null, /* Add Row Button */
1783
- showAddRow && !readOnly && /* @__PURE__ */_jsx(View, {
1784
- children: /* @__PURE__ */_jsx(Button, {
1785
- icon: PlusIcon,
1786
- disabled: disabled || maxRows !== void 0 && tableData.length >= maxRows,
1787
- onPress: effectiveHandleAddRow,
1788
- "aria-label": t("Add Row"),
1789
- children: t("Add Row")
1790
- })
1769
+ ...(disabled ? disabledState.chromeKnobProps : {}),
1770
+ children: /* @__PURE__ */_jsx(DataTableBulkActions, {
1771
+ actions: resolvedBulkActions,
1772
+ maxVisibleActions: 5,
1773
+ showSelectionCount: true,
1774
+ placement: "bottom"
1775
+ })
1776
+ }) : null, /* Add Row Button */
1777
+ showAddRow && !readOnly && /* @__PURE__ */_jsx(View, {
1778
+ children: /* @__PURE__ */_jsx(Button, {
1779
+ icon: PlusIcon,
1780
+ disabled: disabled || maxRows !== void 0 && tableData.length >= maxRows,
1781
+ onPress: effectiveHandleAddRow,
1782
+ "aria-label": t("Add Row"),
1783
+ children: t("Add Row")
1784
+ })
1785
+ })]
1791
1786
  }), /* Pagination footer (pages mode only; infinite replaces it with the tail status) */
1792
1787
  enablePagination && !infinite && /* @__PURE__ */_jsxs(View, {
1793
1788
  paddingTop: "$3",