@multiplatform.one/table 7.4.1 → 7.6.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 (353) hide show
  1. package/dist/cjs/components/ChildTable/index.cjs +12 -3
  2. package/dist/cjs/components/ChildTable/index.native.js +14 -3
  3. package/dist/cjs/components/ChildTable/index.native.js.map +1 -1
  4. package/dist/cjs/components/ColumnHeaderFilter/index.cjs +11 -13
  5. package/dist/cjs/components/ColumnHeaderFilter/index.native.js +11 -16
  6. package/dist/cjs/components/ColumnHeaderFilter/index.native.js.map +1 -1
  7. package/dist/cjs/components/DataTable/DataTableCardControls.cjs +7 -4
  8. package/dist/cjs/components/DataTable/DataTableCardControls.native.js +7 -4
  9. package/dist/cjs/components/DataTable/DataTableCardControls.native.js.map +1 -1
  10. package/dist/cjs/components/DataTable/DataTableDocumentList.cjs +10 -4
  11. package/dist/cjs/components/DataTable/DataTableDocumentList.native.js +10 -4
  12. package/dist/cjs/components/DataTable/DataTableDocumentList.native.js.map +1 -1
  13. package/dist/cjs/components/DataTable/DataTableMobileCards.cjs +6 -1
  14. package/dist/cjs/components/DataTable/DataTableMobileCards.native.js +6 -1
  15. package/dist/cjs/components/DataTable/DataTableMobileCards.native.js.map +1 -1
  16. package/dist/cjs/components/DataTable/DataTableRoot.cjs +55 -42
  17. package/dist/cjs/components/DataTable/DataTableRoot.native.js +55 -42
  18. package/dist/cjs/components/DataTable/DataTableRoot.native.js.map +1 -1
  19. package/dist/cjs/components/DataTable/DataTableVirtualized.cjs +5 -2
  20. package/dist/cjs/components/DataTable/DataTableVirtualized.native.js +5 -2
  21. package/dist/cjs/components/DataTable/DataTableVirtualized.native.js.map +1 -1
  22. package/dist/cjs/components/DataTable/dataTableChrome.cjs +59 -0
  23. package/dist/cjs/components/DataTable/dataTableChrome.native.js +62 -0
  24. package/dist/cjs/components/DataTable/dataTableChrome.native.js.map +1 -0
  25. package/dist/cjs/components/DataTable/index.native.js +34 -20
  26. package/dist/cjs/components/DataTable/index.native.js.map +1 -1
  27. package/dist/cjs/components/DataTableBulkActions/index.cjs +6 -4
  28. package/dist/cjs/components/DataTableBulkActions/index.native.js +6 -4
  29. package/dist/cjs/components/DataTableBulkActions/index.native.js.map +1 -1
  30. package/dist/cjs/components/DataTableCell/CellModalEditor.cjs +9 -31
  31. package/dist/cjs/components/DataTableCell/CellModalEditor.native.js +2 -5
  32. package/dist/cjs/components/DataTableCell/CellModalEditor.native.js.map +1 -1
  33. package/dist/cjs/components/DataTableCell/CellOptionsEditor.cjs +0 -1
  34. package/dist/cjs/components/DataTableCell/CellOptionsEditor.native.js +0 -1
  35. package/dist/cjs/components/DataTableCell/CellOptionsEditor.native.js.map +1 -1
  36. package/dist/cjs/components/DataTableColumnPinning/index.cjs +7 -4
  37. package/dist/cjs/components/DataTableColumnPinning/index.native.js +7 -4
  38. package/dist/cjs/components/DataTableColumnPinning/index.native.js.map +1 -1
  39. package/dist/cjs/components/DataTableDateFilter/index.cjs +24 -22
  40. package/dist/cjs/components/DataTableDateFilter/index.native.js +24 -22
  41. package/dist/cjs/components/DataTableDateFilter/index.native.js.map +1 -1
  42. package/dist/cjs/components/DataTableExport/index.cjs +42 -28
  43. package/dist/cjs/components/DataTableExport/index.native.js +42 -28
  44. package/dist/cjs/components/DataTableExport/index.native.js.map +1 -1
  45. package/dist/cjs/components/DataTableFacetMenu/index.cjs +10 -4
  46. package/dist/cjs/components/DataTableFacetMenu/index.native.js +10 -4
  47. package/dist/cjs/components/DataTableFacetMenu/index.native.js.map +1 -1
  48. package/dist/cjs/components/DataTableFilters/index.cjs +3 -3
  49. package/dist/cjs/components/DataTableFilters/index.native.js +3 -3
  50. package/dist/cjs/components/DataTableFilters/index.native.js.map +1 -1
  51. package/dist/cjs/components/DataTableGrouping/index.cjs +46 -41
  52. package/dist/cjs/components/DataTableGrouping/index.native.js +46 -41
  53. package/dist/cjs/components/DataTableGrouping/index.native.js.map +1 -1
  54. package/dist/cjs/components/DataTablePagination/index.cjs +4 -2
  55. package/dist/cjs/components/DataTablePagination/index.native.js +4 -2
  56. package/dist/cjs/components/DataTablePagination/index.native.js.map +1 -1
  57. package/dist/cjs/components/DataTableSearch/index.cjs +3 -3
  58. package/dist/cjs/components/DataTableSearch/index.native.js +3 -3
  59. package/dist/cjs/components/DataTableToolbar/index.cjs +19 -13
  60. package/dist/cjs/components/DataTableToolbar/index.native.js +19 -15
  61. package/dist/cjs/components/DataTableToolbar/index.native.js.map +1 -1
  62. package/dist/cjs/components/DataTableViewOptions/index.cjs +36 -35
  63. package/dist/cjs/components/DataTableViewOptions/index.native.js +36 -35
  64. package/dist/cjs/components/DataTableViewOptions/index.native.js.map +1 -1
  65. package/dist/cjs/components/KnobDialog.cjs +1 -3
  66. package/dist/cjs/components/KnobDialog.native.js +1 -3
  67. package/dist/cjs/components/KnobDialog.native.js.map +1 -1
  68. package/dist/cjs/components/SimpleTable/index.cjs +159 -117
  69. package/dist/cjs/components/SimpleTable/index.native.js +168 -128
  70. package/dist/cjs/components/SimpleTable/index.native.js.map +1 -1
  71. package/dist/cjs/components/TableInput/index.cjs +159 -90
  72. package/dist/cjs/components/TableInput/index.native.js +3 -3
  73. package/dist/cjs/components/TableInput/index.native.js.map +1 -1
  74. package/dist/cjs/utils/chromeIcons.cjs +31 -0
  75. package/dist/cjs/utils/chromeIcons.native.js +34 -0
  76. package/dist/cjs/utils/chromeIcons.native.js.map +1 -0
  77. package/dist/esm/components/ChildTable/index.mjs +12 -3
  78. package/dist/esm/components/ChildTable/index.mjs.map +1 -1
  79. package/dist/esm/components/ChildTable/index.native.js +14 -3
  80. package/dist/esm/components/ChildTable/index.native.js.map +1 -1
  81. package/dist/esm/components/ColumnHeaderFilter/index.mjs +11 -13
  82. package/dist/esm/components/ColumnHeaderFilter/index.mjs.map +1 -1
  83. package/dist/esm/components/ColumnHeaderFilter/index.native.js +11 -16
  84. package/dist/esm/components/ColumnHeaderFilter/index.native.js.map +1 -1
  85. package/dist/esm/components/DataTable/DataTableCardControls.mjs +7 -4
  86. package/dist/esm/components/DataTable/DataTableCardControls.mjs.map +1 -1
  87. package/dist/esm/components/DataTable/DataTableCardControls.native.js +7 -4
  88. package/dist/esm/components/DataTable/DataTableCardControls.native.js.map +1 -1
  89. package/dist/esm/components/DataTable/DataTableDocumentList.mjs +10 -4
  90. package/dist/esm/components/DataTable/DataTableDocumentList.mjs.map +1 -1
  91. package/dist/esm/components/DataTable/DataTableDocumentList.native.js +10 -4
  92. package/dist/esm/components/DataTable/DataTableDocumentList.native.js.map +1 -1
  93. package/dist/esm/components/DataTable/DataTableMobileCards.mjs +6 -1
  94. package/dist/esm/components/DataTable/DataTableMobileCards.mjs.map +1 -1
  95. package/dist/esm/components/DataTable/DataTableMobileCards.native.js +6 -1
  96. package/dist/esm/components/DataTable/DataTableMobileCards.native.js.map +1 -1
  97. package/dist/esm/components/DataTable/DataTableRoot.mjs +55 -42
  98. package/dist/esm/components/DataTable/DataTableRoot.mjs.map +1 -1
  99. package/dist/esm/components/DataTable/DataTableRoot.native.js +55 -42
  100. package/dist/esm/components/DataTable/DataTableRoot.native.js.map +1 -1
  101. package/dist/esm/components/DataTable/DataTableVirtualized.mjs +5 -2
  102. package/dist/esm/components/DataTable/DataTableVirtualized.mjs.map +1 -1
  103. package/dist/esm/components/DataTable/DataTableVirtualized.native.js +5 -2
  104. package/dist/esm/components/DataTable/DataTableVirtualized.native.js.map +1 -1
  105. package/dist/esm/components/DataTable/dataTableChrome.mjs +32 -0
  106. package/dist/esm/components/DataTable/dataTableChrome.mjs.map +1 -0
  107. package/dist/esm/components/DataTable/dataTableChrome.native.js +32 -0
  108. package/dist/esm/components/DataTable/dataTableChrome.native.js.map +1 -0
  109. package/dist/esm/components/DataTable/index.native.js +34 -20
  110. package/dist/esm/components/DataTable/index.native.js.map +1 -1
  111. package/dist/esm/components/DataTableBulkActions/index.mjs +6 -4
  112. package/dist/esm/components/DataTableBulkActions/index.mjs.map +1 -1
  113. package/dist/esm/components/DataTableBulkActions/index.native.js +6 -4
  114. package/dist/esm/components/DataTableBulkActions/index.native.js.map +1 -1
  115. package/dist/esm/components/DataTableCell/CellModalEditor.mjs +11 -33
  116. package/dist/esm/components/DataTableCell/CellModalEditor.mjs.map +1 -1
  117. package/dist/esm/components/DataTableCell/CellModalEditor.native.js +2 -5
  118. package/dist/esm/components/DataTableCell/CellModalEditor.native.js.map +1 -1
  119. package/dist/esm/components/DataTableCell/CellOptionsEditor.mjs +0 -1
  120. package/dist/esm/components/DataTableCell/CellOptionsEditor.mjs.map +1 -1
  121. package/dist/esm/components/DataTableCell/CellOptionsEditor.native.js +0 -1
  122. package/dist/esm/components/DataTableCell/CellOptionsEditor.native.js.map +1 -1
  123. package/dist/esm/components/DataTableColumnPinning/index.mjs +7 -4
  124. package/dist/esm/components/DataTableColumnPinning/index.mjs.map +1 -1
  125. package/dist/esm/components/DataTableColumnPinning/index.native.js +7 -4
  126. package/dist/esm/components/DataTableColumnPinning/index.native.js.map +1 -1
  127. package/dist/esm/components/DataTableDateFilter/index.mjs +24 -22
  128. package/dist/esm/components/DataTableDateFilter/index.mjs.map +1 -1
  129. package/dist/esm/components/DataTableDateFilter/index.native.js +24 -22
  130. package/dist/esm/components/DataTableDateFilter/index.native.js.map +1 -1
  131. package/dist/esm/components/DataTableExport/index.mjs +43 -29
  132. package/dist/esm/components/DataTableExport/index.mjs.map +1 -1
  133. package/dist/esm/components/DataTableExport/index.native.js +43 -29
  134. package/dist/esm/components/DataTableExport/index.native.js.map +1 -1
  135. package/dist/esm/components/DataTableFacetMenu/index.mjs +10 -4
  136. package/dist/esm/components/DataTableFacetMenu/index.mjs.map +1 -1
  137. package/dist/esm/components/DataTableFacetMenu/index.native.js +10 -4
  138. package/dist/esm/components/DataTableFacetMenu/index.native.js.map +1 -1
  139. package/dist/esm/components/DataTableFilters/index.mjs +3 -3
  140. package/dist/esm/components/DataTableFilters/index.mjs.map +1 -1
  141. package/dist/esm/components/DataTableFilters/index.native.js +3 -3
  142. package/dist/esm/components/DataTableFilters/index.native.js.map +1 -1
  143. package/dist/esm/components/DataTableGrouping/index.mjs +47 -42
  144. package/dist/esm/components/DataTableGrouping/index.mjs.map +1 -1
  145. package/dist/esm/components/DataTableGrouping/index.native.js +47 -42
  146. package/dist/esm/components/DataTableGrouping/index.native.js.map +1 -1
  147. package/dist/esm/components/DataTablePagination/index.mjs +4 -2
  148. package/dist/esm/components/DataTablePagination/index.mjs.map +1 -1
  149. package/dist/esm/components/DataTablePagination/index.native.js +4 -2
  150. package/dist/esm/components/DataTablePagination/index.native.js.map +1 -1
  151. package/dist/esm/components/DataTableSearch/index.mjs +3 -3
  152. package/dist/esm/components/DataTableSearch/index.native.js +3 -3
  153. package/dist/esm/components/DataTableToolbar/index.mjs +19 -13
  154. package/dist/esm/components/DataTableToolbar/index.mjs.map +1 -1
  155. package/dist/esm/components/DataTableToolbar/index.native.js +19 -15
  156. package/dist/esm/components/DataTableToolbar/index.native.js.map +1 -1
  157. package/dist/esm/components/DataTableViewOptions/index.mjs +36 -35
  158. package/dist/esm/components/DataTableViewOptions/index.mjs.map +1 -1
  159. package/dist/esm/components/DataTableViewOptions/index.native.js +36 -35
  160. package/dist/esm/components/DataTableViewOptions/index.native.js.map +1 -1
  161. package/dist/esm/components/KnobDialog.mjs +1 -3
  162. package/dist/esm/components/KnobDialog.mjs.map +1 -1
  163. package/dist/esm/components/KnobDialog.native.js +1 -3
  164. package/dist/esm/components/KnobDialog.native.js.map +1 -1
  165. package/dist/esm/components/SimpleTable/index.mjs +160 -118
  166. package/dist/esm/components/SimpleTable/index.mjs.map +1 -1
  167. package/dist/esm/components/SimpleTable/index.native.js +169 -129
  168. package/dist/esm/components/SimpleTable/index.native.js.map +1 -1
  169. package/dist/esm/components/TableInput/index.mjs +160 -91
  170. package/dist/esm/components/TableInput/index.mjs.map +1 -1
  171. package/dist/esm/components/TableInput/index.native.js +3 -3
  172. package/dist/esm/components/TableInput/index.native.js.map +1 -1
  173. package/dist/esm/utils/chromeIcons.mjs +6 -0
  174. package/dist/esm/utils/chromeIcons.mjs.map +1 -0
  175. package/dist/esm/utils/chromeIcons.native.js +6 -0
  176. package/dist/esm/utils/chromeIcons.native.js.map +1 -0
  177. package/dist/jsx/components/ChildTable/index.mjs +12 -3
  178. package/dist/jsx/components/ChildTable/index.mjs.map +1 -1
  179. package/dist/jsx/components/ChildTable/index.native.js +14 -3
  180. package/dist/jsx/components/ChildTable/index.native.js.map +1 -1
  181. package/dist/jsx/components/ColumnHeaderFilter/index.mjs +11 -13
  182. package/dist/jsx/components/ColumnHeaderFilter/index.mjs.map +1 -1
  183. package/dist/jsx/components/ColumnHeaderFilter/index.native.js +11 -16
  184. package/dist/jsx/components/ColumnHeaderFilter/index.native.js.map +1 -1
  185. package/dist/jsx/components/DataTable/DataTableCardControls.mjs +7 -4
  186. package/dist/jsx/components/DataTable/DataTableCardControls.mjs.map +1 -1
  187. package/dist/jsx/components/DataTable/DataTableCardControls.native.js +7 -4
  188. package/dist/jsx/components/DataTable/DataTableCardControls.native.js.map +1 -1
  189. package/dist/jsx/components/DataTable/DataTableDocumentList.mjs +10 -4
  190. package/dist/jsx/components/DataTable/DataTableDocumentList.mjs.map +1 -1
  191. package/dist/jsx/components/DataTable/DataTableDocumentList.native.js +10 -4
  192. package/dist/jsx/components/DataTable/DataTableDocumentList.native.js.map +1 -1
  193. package/dist/jsx/components/DataTable/DataTableMobileCards.mjs +6 -1
  194. package/dist/jsx/components/DataTable/DataTableMobileCards.mjs.map +1 -1
  195. package/dist/jsx/components/DataTable/DataTableMobileCards.native.js +6 -1
  196. package/dist/jsx/components/DataTable/DataTableMobileCards.native.js.map +1 -1
  197. package/dist/jsx/components/DataTable/DataTableRoot.mjs +55 -42
  198. package/dist/jsx/components/DataTable/DataTableRoot.mjs.map +1 -1
  199. package/dist/jsx/components/DataTable/DataTableRoot.native.js +55 -42
  200. package/dist/jsx/components/DataTable/DataTableRoot.native.js.map +1 -1
  201. package/dist/jsx/components/DataTable/DataTableVirtualized.mjs +5 -2
  202. package/dist/jsx/components/DataTable/DataTableVirtualized.mjs.map +1 -1
  203. package/dist/jsx/components/DataTable/DataTableVirtualized.native.js +5 -2
  204. package/dist/jsx/components/DataTable/DataTableVirtualized.native.js.map +1 -1
  205. package/dist/jsx/components/DataTable/dataTableChrome.mjs +32 -0
  206. package/dist/jsx/components/DataTable/dataTableChrome.mjs.map +1 -0
  207. package/dist/jsx/components/DataTable/dataTableChrome.native.js +62 -0
  208. package/dist/jsx/components/DataTable/dataTableChrome.native.js.map +1 -0
  209. package/dist/jsx/components/DataTable/index.native.js +34 -20
  210. package/dist/jsx/components/DataTable/index.native.js.map +1 -1
  211. package/dist/jsx/components/DataTableBulkActions/index.mjs +6 -4
  212. package/dist/jsx/components/DataTableBulkActions/index.mjs.map +1 -1
  213. package/dist/jsx/components/DataTableBulkActions/index.native.js +6 -4
  214. package/dist/jsx/components/DataTableBulkActions/index.native.js.map +1 -1
  215. package/dist/jsx/components/DataTableCell/CellModalEditor.mjs +11 -33
  216. package/dist/jsx/components/DataTableCell/CellModalEditor.mjs.map +1 -1
  217. package/dist/jsx/components/DataTableCell/CellModalEditor.native.js +2 -5
  218. package/dist/jsx/components/DataTableCell/CellModalEditor.native.js.map +1 -1
  219. package/dist/jsx/components/DataTableCell/CellOptionsEditor.mjs +0 -1
  220. package/dist/jsx/components/DataTableCell/CellOptionsEditor.mjs.map +1 -1
  221. package/dist/jsx/components/DataTableCell/CellOptionsEditor.native.js +0 -1
  222. package/dist/jsx/components/DataTableCell/CellOptionsEditor.native.js.map +1 -1
  223. package/dist/jsx/components/DataTableColumnPinning/index.mjs +7 -4
  224. package/dist/jsx/components/DataTableColumnPinning/index.mjs.map +1 -1
  225. package/dist/jsx/components/DataTableColumnPinning/index.native.js +7 -4
  226. package/dist/jsx/components/DataTableColumnPinning/index.native.js.map +1 -1
  227. package/dist/jsx/components/DataTableDateFilter/index.mjs +24 -22
  228. package/dist/jsx/components/DataTableDateFilter/index.mjs.map +1 -1
  229. package/dist/jsx/components/DataTableDateFilter/index.native.js +24 -22
  230. package/dist/jsx/components/DataTableDateFilter/index.native.js.map +1 -1
  231. package/dist/jsx/components/DataTableExport/index.mjs +43 -29
  232. package/dist/jsx/components/DataTableExport/index.mjs.map +1 -1
  233. package/dist/jsx/components/DataTableExport/index.native.js +42 -28
  234. package/dist/jsx/components/DataTableExport/index.native.js.map +1 -1
  235. package/dist/jsx/components/DataTableFacetMenu/index.mjs +10 -4
  236. package/dist/jsx/components/DataTableFacetMenu/index.mjs.map +1 -1
  237. package/dist/jsx/components/DataTableFacetMenu/index.native.js +10 -4
  238. package/dist/jsx/components/DataTableFacetMenu/index.native.js.map +1 -1
  239. package/dist/jsx/components/DataTableFilters/index.mjs +3 -3
  240. package/dist/jsx/components/DataTableFilters/index.mjs.map +1 -1
  241. package/dist/jsx/components/DataTableFilters/index.native.js +3 -3
  242. package/dist/jsx/components/DataTableFilters/index.native.js.map +1 -1
  243. package/dist/jsx/components/DataTableGrouping/index.mjs +47 -42
  244. package/dist/jsx/components/DataTableGrouping/index.mjs.map +1 -1
  245. package/dist/jsx/components/DataTableGrouping/index.native.js +46 -41
  246. package/dist/jsx/components/DataTableGrouping/index.native.js.map +1 -1
  247. package/dist/jsx/components/DataTablePagination/index.mjs +4 -2
  248. package/dist/jsx/components/DataTablePagination/index.mjs.map +1 -1
  249. package/dist/jsx/components/DataTablePagination/index.native.js +4 -2
  250. package/dist/jsx/components/DataTablePagination/index.native.js.map +1 -1
  251. package/dist/jsx/components/DataTableSearch/index.mjs +3 -3
  252. package/dist/jsx/components/DataTableSearch/index.native.js +3 -3
  253. package/dist/jsx/components/DataTableToolbar/index.mjs +19 -13
  254. package/dist/jsx/components/DataTableToolbar/index.mjs.map +1 -1
  255. package/dist/jsx/components/DataTableToolbar/index.native.js +19 -15
  256. package/dist/jsx/components/DataTableToolbar/index.native.js.map +1 -1
  257. package/dist/jsx/components/DataTableViewOptions/index.mjs +36 -35
  258. package/dist/jsx/components/DataTableViewOptions/index.mjs.map +1 -1
  259. package/dist/jsx/components/DataTableViewOptions/index.native.js +36 -35
  260. package/dist/jsx/components/DataTableViewOptions/index.native.js.map +1 -1
  261. package/dist/jsx/components/KnobDialog.mjs +1 -3
  262. package/dist/jsx/components/KnobDialog.mjs.map +1 -1
  263. package/dist/jsx/components/KnobDialog.native.js +1 -3
  264. package/dist/jsx/components/KnobDialog.native.js.map +1 -1
  265. package/dist/jsx/components/SimpleTable/index.mjs +160 -118
  266. package/dist/jsx/components/SimpleTable/index.mjs.map +1 -1
  267. package/dist/jsx/components/SimpleTable/index.native.js +168 -128
  268. package/dist/jsx/components/SimpleTable/index.native.js.map +1 -1
  269. package/dist/jsx/components/TableInput/index.mjs +160 -91
  270. package/dist/jsx/components/TableInput/index.mjs.map +1 -1
  271. package/dist/jsx/components/TableInput/index.native.js +3 -3
  272. package/dist/jsx/components/TableInput/index.native.js.map +1 -1
  273. package/dist/jsx/utils/chromeIcons.mjs +6 -0
  274. package/dist/jsx/utils/chromeIcons.mjs.map +1 -0
  275. package/dist/jsx/utils/chromeIcons.native.js +34 -0
  276. package/dist/jsx/utils/chromeIcons.native.js.map +1 -0
  277. package/package.json +12 -12
  278. package/src/components/ChildTable/ChildTable.stories.tsx +144 -0
  279. package/src/components/ChildTable/childTable.reorder.spec.tsx +65 -0
  280. package/src/components/ChildTable/childTable.spec.tsx +108 -0
  281. package/src/components/ChildTable/index.tsx +21 -2
  282. package/src/components/ColumnHeaderFilter/index.tsx +9 -14
  283. package/src/components/DataTable/DataTableCardControls.tsx +19 -16
  284. package/src/components/DataTable/DataTableDocumentList.tsx +7 -4
  285. package/src/components/DataTable/DataTableMobileCards.tsx +3 -1
  286. package/src/components/DataTable/DataTableRoot.tsx +52 -41
  287. package/src/components/DataTable/DataTableVirtualized.tsx +6 -2
  288. package/src/components/DataTable/FieldsInCells.stories.tsx +10 -5
  289. package/src/components/DataTable/dataTableChrome.ts +48 -0
  290. package/src/components/DataTable/designLaw.spec.tsx +114 -0
  291. package/src/components/DataTable/index.native.tsx +46 -20
  292. package/src/components/DataTableBulkActions/index.tsx +5 -3
  293. package/src/components/DataTableCell/CellModalEditor.native.tsx +3 -6
  294. package/src/components/DataTableCell/CellModalEditor.tsx +11 -22
  295. package/src/components/DataTableCell/CellOptionsEditor.tsx +0 -1
  296. package/src/components/DataTableCell/cellDraftPolicy.spec.tsx +8 -1
  297. package/src/components/DataTableCell/cellModalEditor.spec.tsx +82 -0
  298. package/src/components/DataTableCell/dataTableCell.spec.tsx +8 -1
  299. package/src/components/DataTableColumnPinning/index.tsx +6 -4
  300. package/src/components/DataTableDateFilter/index.tsx +19 -17
  301. package/src/components/DataTableExport/DataTableExport.spec.tsx +29 -0
  302. package/src/components/DataTableExport/index.tsx +47 -23
  303. package/src/components/DataTableFacetMenu/index.tsx +13 -4
  304. package/src/components/DataTableFilters/index.tsx +3 -3
  305. package/src/components/DataTableGrouping/index.tsx +42 -35
  306. package/src/components/DataTablePagination/index.tsx +2 -2
  307. package/src/components/DataTableSearch/index.tsx +3 -3
  308. package/src/components/DataTableToolbar/DataTableToolbar.spec.tsx +20 -0
  309. package/src/components/DataTableToolbar/DataTableToolbar.stories.tsx +1 -9
  310. package/src/components/DataTableToolbar/index.tsx +19 -14
  311. package/src/components/DataTableViewOptions/index.tsx +30 -30
  312. package/src/components/KnobDialog.tsx +1 -3
  313. package/src/components/SimpleTable/SimpleTable.stories.tsx +13 -0
  314. package/src/components/SimpleTable/index.tsx +171 -149
  315. package/src/components/SimpleTable/simpleTable.spec.tsx +120 -0
  316. package/src/components/TableInput/index.native.tsx +5 -3
  317. package/src/components/TableInput/index.tsx +207 -113
  318. package/src/components/chromeDesignLaw.spec.tsx +97 -0
  319. package/src/utils/chromeIcons.ts +6 -0
  320. package/types/components/ChildTable/index.d.ts +6 -1
  321. package/types/components/ChildTable/index.d.ts.map +1 -1
  322. package/types/components/ColumnHeaderFilter/index.d.ts.map +1 -1
  323. package/types/components/DataTable/DataTableCardControls.d.ts.map +1 -1
  324. package/types/components/DataTable/DataTableDocumentList.d.ts.map +1 -1
  325. package/types/components/DataTable/DataTableMobileCards.d.ts.map +1 -1
  326. package/types/components/DataTable/DataTableRoot.d.ts +6 -1
  327. package/types/components/DataTable/DataTableRoot.d.ts.map +1 -1
  328. package/types/components/DataTable/DataTableVirtualized.d.ts +3 -1
  329. package/types/components/DataTable/DataTableVirtualized.d.ts.map +1 -1
  330. package/types/components/DataTable/dataTableChrome.d.ts +27 -0
  331. package/types/components/DataTable/dataTableChrome.d.ts.map +1 -0
  332. package/types/components/DataTable/index.native.d.ts +1 -1
  333. package/types/components/DataTable/index.native.d.ts.map +1 -1
  334. package/types/components/DataTableBulkActions/index.d.ts.map +1 -1
  335. package/types/components/DataTableCell/CellModalEditor.d.ts.map +1 -1
  336. package/types/components/DataTableCell/CellModalEditor.native.d.ts.map +1 -1
  337. package/types/components/DataTableCell/CellOptionsEditor.d.ts.map +1 -1
  338. package/types/components/DataTableColumnPinning/index.d.ts.map +1 -1
  339. package/types/components/DataTableDateFilter/index.d.ts.map +1 -1
  340. package/types/components/DataTableExport/index.d.ts.map +1 -1
  341. package/types/components/DataTableFacetMenu/index.d.ts.map +1 -1
  342. package/types/components/DataTableGrouping/index.d.ts.map +1 -1
  343. package/types/components/DataTableToolbar/index.d.ts +2 -0
  344. package/types/components/DataTableToolbar/index.d.ts.map +1 -1
  345. package/types/components/DataTableViewOptions/index.d.ts.map +1 -1
  346. package/types/components/KnobDialog.d.ts.map +1 -1
  347. package/types/components/SimpleTable/index.d.ts.map +1 -1
  348. package/types/components/TableInput/index.d.ts +8 -4
  349. package/types/components/TableInput/index.d.ts.map +1 -1
  350. package/types/components/TableInput/index.native.d.ts +2 -0
  351. package/types/components/TableInput/index.native.d.ts.map +1 -1
  352. package/types/utils/chromeIcons.d.ts +3 -0
  353. package/types/utils/chromeIcons.d.ts.map +1 -0
@@ -0,0 +1,144 @@
1
+ /**
2
+ * ChildTable — FieldLayout wrapper around TableInput (Frappe child-table field).
3
+ *
4
+ * Stories cover the forms field contract D/R/E/Q/S/C: disabled, read-only,
5
+ * error, required, skeleton, compact — plus standalone onChange and form bind.
6
+ * Table chrome and cell editors belong to TableInput / DataTableCell.
7
+ */
8
+
9
+ import type { Meta, StoryObj } from "@storybook/react-native-web-vite";
10
+ import { fn } from "storybook/test";
11
+ import { useForm } from "@tanstack/react-form";
12
+ import React from "react";
13
+ import { Text, View, YStack } from "tamagui";
14
+ import type { DataTableColumn, DataTableData } from "../../types";
15
+ import { ChildTable } from "./index";
16
+
17
+ interface LineItem extends DataTableData {
18
+ id: string;
19
+ item: string;
20
+ qty: number;
21
+ }
22
+
23
+ const initialRows: LineItem[] = [
24
+ { id: "row-1", item: "Steel bracket", qty: 12 },
25
+ { id: "row-2", item: "M6 bolts (100pk)", qty: 3 },
26
+ ];
27
+
28
+ const columns: DataTableColumn<LineItem>[] = [
29
+ { accessorKey: "item", header: "Item", field: "input" },
30
+ { accessorKey: "qty", header: "Qty", field: "stepper", fieldProps: { min: 0 } },
31
+ ];
32
+
33
+ const meta: Meta<typeof ChildTable> = {
34
+ title: "Table/ChildTable",
35
+ component: ChildTable,
36
+ parameters: {
37
+ status: { type: "stable" },
38
+ layout: "fullscreen",
39
+ },
40
+ args: {
41
+ onChange: fn(),
42
+ columns,
43
+ label: "Line items",
44
+ helperText: "Child table field — every cell is a form field.",
45
+ },
46
+ argTypes: {
47
+ disabled: { control: "boolean" },
48
+ readOnly: { control: "boolean" },
49
+ skeleton: { control: "boolean" },
50
+ compact: { control: "boolean" },
51
+ required: { control: "boolean" },
52
+ },
53
+ decorators: [
54
+ (Story) => (
55
+ <View flex={1} padding="$4" width="100%">
56
+ <Story />
57
+ </View>
58
+ ),
59
+ ],
60
+ };
61
+
62
+ export default meta;
63
+ type Story = StoryObj<typeof ChildTable>;
64
+
65
+ interface HarnessProps {
66
+ rows?: LineItem[];
67
+ onChange?: (rows: LineItem[]) => void;
68
+ [key: string]: unknown;
69
+ }
70
+
71
+ const ControlledChildTable = ({ rows = initialRows, onChange, ...rest }: HarnessProps) => {
72
+ const [data, setData] = React.useState<LineItem[]>(rows);
73
+ return (
74
+ <YStack gap="$3">
75
+ <ChildTable<LineItem>
76
+ value={data}
77
+ columns={columns}
78
+ onChange={(next) => {
79
+ setData(next);
80
+ onChange?.(next);
81
+ }}
82
+ {...rest}
83
+ />
84
+ <Text testID="childtable-data" fontSize="$2" color="$color10" fontFamily="$mono">
85
+ rows: {data.length}
86
+ </Text>
87
+ </YStack>
88
+ );
89
+ };
90
+
91
+ export const Default: Story = {
92
+ name: "Main",
93
+ render: (args) => <ControlledChildTable {...args} />,
94
+ };
95
+
96
+ export const SkeletonLoading: Story = {
97
+ args: { skeleton: true },
98
+ render: (args) => <ControlledChildTable {...args} rows={[]} />,
99
+ };
100
+
101
+ export const Compact: Story = {
102
+ args: { compact: true },
103
+ render: (args) => <ControlledChildTable {...args} />,
104
+ };
105
+
106
+ export const Disabled: Story = {
107
+ args: { disabled: true },
108
+ render: (args) => <ControlledChildTable {...args} />,
109
+ };
110
+
111
+ export const ReadOnly: Story = {
112
+ args: { readOnly: true },
113
+ render: (args) => <ControlledChildTable {...args} />,
114
+ };
115
+
116
+ export const ErrorState: Story = {
117
+ args: { error: "At least one line item is required", required: true },
118
+ render: (args) => <ControlledChildTable {...args} rows={[]} />,
119
+ };
120
+
121
+ const InsideFormStory = () => {
122
+ const form = useForm({
123
+ defaultValues: { lineItems: initialRows },
124
+ });
125
+ return (
126
+ <YStack gap="$4" maxWidth={900}>
127
+ <ChildTable<LineItem>
128
+ form={form as any}
129
+ name="lineItems"
130
+ columns={columns}
131
+ label="Line items"
132
+ required
133
+ helperText="Rows bind through the form field; validators surface in the error slot."
134
+ />
135
+ <Text testID="form-value" fontSize="$2" color="$color10" fontFamily="$mono">
136
+ form.lineItems: {JSON.stringify(form.state.values.lineItems?.map((row) => row.item))}
137
+ </Text>
138
+ </YStack>
139
+ );
140
+ };
141
+
142
+ export const InsideForm: Story = {
143
+ render: () => <InsideFormStory />,
144
+ };
@@ -0,0 +1,65 @@
1
+ import React from "react";
2
+ import { fireEvent, screen } from "@testing-library/react";
3
+ import { renderWithProviders } from "@multiplatform.one/test-utils";
4
+ import { describe, expect, it, vi } from "vitest";
5
+ import { ChildTable } from "./index";
6
+ import type { DataTableColumn, DataTableData } from "../../types";
7
+
8
+ interface TaskRow extends DataTableData {
9
+ id: string;
10
+ task: string;
11
+ idx: number;
12
+ }
13
+
14
+ const columns: DataTableColumn<TaskRow>[] = [
15
+ { accessorKey: "task", header: "Task", field: "input" },
16
+ ];
17
+
18
+ const initial: TaskRow[] = [
19
+ { id: "a", task: "Provision runner", idx: 1 },
20
+ { id: "b", task: "Rotate signing key", idx: 2 },
21
+ { id: "c", task: "Update mirrors", idx: 3 },
22
+ ];
23
+
24
+ function Harness({ onChange }: { onChange: (rows: TaskRow[]) => void }) {
25
+ const [value, setValue] = React.useState(initial);
26
+ return (
27
+ <ChildTable<TaskRow>
28
+ value={value}
29
+ columns={columns}
30
+ onChange={(rows) => {
31
+ setValue(rows);
32
+ onChange(rows);
33
+ }}
34
+ />
35
+ );
36
+ }
37
+
38
+ describe("ChildTable idx reorder (MPO-22)", () => {
39
+ it("keyboard-reorders a row and writes idx 1..n on the change payload", () => {
40
+ const onChange = vi.fn();
41
+ renderWithProviders(<Harness onChange={onChange} />);
42
+
43
+ const handle = () => screen.getByRole("button", { name: /Rotate signing key/i });
44
+ handle().focus();
45
+ fireEvent.keyDown(handle(), { key: " " });
46
+ fireEvent.keyDown(handle(), { key: "ArrowDown" });
47
+ fireEvent.keyDown(handle(), { key: " " });
48
+
49
+ expect(onChange).toHaveBeenCalledTimes(1);
50
+ const next = onChange.mock.calls[0][0] as TaskRow[];
51
+ expect(next.map((r) => ({ id: r.id, idx: r.idx, task: r.task }))).toEqual([
52
+ { id: "a", idx: 1, task: "Provision runner" },
53
+ { id: "c", idx: 2, task: "Update mirrors" },
54
+ { id: "b", idx: 3, task: "Rotate signing key" },
55
+ ]);
56
+ });
57
+
58
+ it("hides reorder handles when readOnly", () => {
59
+ renderWithProviders(
60
+ <ChildTable<TaskRow> value={initial} columns={columns} onChange={vi.fn()} readOnly />,
61
+ );
62
+ expect(screen.queryByRole("button", { name: /Reorder/i })).toBeNull();
63
+ expect(screen.queryByRole("button", { name: /Rotate signing key/i })).toBeNull();
64
+ });
65
+ });
@@ -0,0 +1,108 @@
1
+ /**
2
+ * ChildTable field-contract tests (D/R/E/Q/S/C).
3
+ *
4
+ * ChildTable is the FieldLayout wrapper around TableInput. Label / helper /
5
+ * error / required / form-bind coverage lives in TableInput's spec; this file
6
+ * locks the remaining field-contract knobs the edge-cases ledger called a GAP:
7
+ * skeleton, compact, disabled, and readOnly.
8
+ */
9
+
10
+ import React from "react";
11
+ import { renderWithProviders } from "@multiplatform.one/test-utils";
12
+ import { Form, useForm } from "@multiplatform.one/forms";
13
+
14
+ vi.mock("@multiplatform.one/router", async (importOriginal) => {
15
+ const actual = await importOriginal<Record<string, unknown>>();
16
+ return { ...actual, useUrlState: () => [{}, () => {}] };
17
+ });
18
+
19
+ import { screen } from "@testing-library/react";
20
+ import { describe, expect, it, vi } from "vitest";
21
+ import type { DataTableColumn, DataTableData } from "../../types";
22
+ import { ChildTable } from "./index";
23
+
24
+ interface Row extends DataTableData {
25
+ id: string;
26
+ item: string;
27
+ }
28
+
29
+ const rows: Row[] = [
30
+ { id: "row-a", item: "Bracket" },
31
+ { id: "row-b", item: "Bolts" },
32
+ ];
33
+
34
+ const columns: DataTableColumn<Row>[] = [{ accessorKey: "item", header: "Item", field: "input" }];
35
+
36
+ describe("ChildTable — D/R/E/Q/S/C", () => {
37
+ it("skeleton branch: TableInput placeholders, no add/delete, aria-busy", () => {
38
+ const { container } = renderWithProviders(
39
+ <ChildTable<Row>
40
+ label="Line items"
41
+ skeleton
42
+ value={rows}
43
+ onChange={vi.fn()}
44
+ columns={columns}
45
+ />,
46
+ );
47
+ expect(container.querySelectorAll("input").length).toBe(0);
48
+ expect(screen.queryByRole("button", { name: "Add Row" })).toBeNull();
49
+ expect(screen.queryByRole("button", { name: /Delete row/ })).toBeNull();
50
+ expect(container.querySelector('[aria-busy="true"]')).toBeTruthy();
51
+ expect(screen.getByText("Line items")).toBeTruthy();
52
+ });
53
+
54
+ it("compact forwards into the field (useFormField + TableInput)", () => {
55
+ renderWithProviders(
56
+ <ChildTable<Row>
57
+ label="Line items"
58
+ compact
59
+ value={rows}
60
+ onChange={vi.fn()}
61
+ columns={columns}
62
+ />,
63
+ );
64
+ expect(screen.getByRole("group", { name: /Line items/ })).toBeTruthy();
65
+ expect(screen.getByRole("button", { name: "Add Row" })).toBeTruthy();
66
+ });
67
+
68
+ it("disabled hides add/delete and does not expose editors", () => {
69
+ renderWithProviders(
70
+ <ChildTable<Row>
71
+ label="Line items"
72
+ disabled
73
+ value={rows}
74
+ onChange={vi.fn()}
75
+ columns={columns}
76
+ />,
77
+ );
78
+ expect(screen.queryByRole("button", { name: "Add Row" })).toBeNull();
79
+ expect(screen.queryByRole("button", { name: /Delete row/ })).toBeNull();
80
+ });
81
+
82
+ it("readOnly hides add/delete", () => {
83
+ renderWithProviders(
84
+ <ChildTable<Row>
85
+ label="Line items"
86
+ readOnly
87
+ value={rows}
88
+ onChange={vi.fn()}
89
+ columns={columns}
90
+ />,
91
+ );
92
+ expect(screen.queryByRole("button", { name: "Add Row" })).toBeNull();
93
+ expect(screen.queryByRole("button", { name: /Delete row/ })).toBeNull();
94
+ });
95
+
96
+ it("required + form context still associates the label with the named group", () => {
97
+ function Harness() {
98
+ const form = useForm({ defaultValues: { items: rows } });
99
+ return (
100
+ <Form form={form as any}>
101
+ <ChildTable<Row> name="items" label="Line items" required columns={columns} />
102
+ </Form>
103
+ );
104
+ }
105
+ renderWithProviders(<Harness />);
106
+ expect(screen.getByRole("group", { name: /Line items/ })).toBeTruthy();
107
+ });
108
+ });
@@ -1,4 +1,5 @@
1
- import type { ReactNode } from "react";
1
+ import { useCallback, type ReactNode } from "react";
2
+ import { renumberIdx } from "@multiplatform.one/components";
2
3
  import { FieldLayout, useFormField, type AnyFormApi } from "@multiplatform.one/forms";
3
4
  import { useProps, YStack } from "tamagui";
4
5
  import { TableInput } from "../TableInput";
@@ -26,6 +27,11 @@ export type ChildTableProps<TRow extends DataTableData = DataTableData> = {
26
27
  helperText?: string;
27
28
  required?: boolean;
28
29
  id?: string;
30
+ /**
31
+ * Leading grab handle + keyboard reorder. Default on unless the field is
32
+ * read-only or disabled. A committed drop rewrites `idx` 1..n (MPO-22).
33
+ */
34
+ enableReorder?: boolean;
29
35
  };
30
36
 
31
37
  /**
@@ -77,11 +83,23 @@ export function ChildTable<TRow extends DataTableData = DataTableData>(
77
83
  helperText,
78
84
  required,
79
85
  id: idProp,
86
+ enableReorder: enableReorderProp,
80
87
  } = useProps(props);
81
88
 
82
89
  const { knobProps, id, resolvedForm } = useFormField({ form, id: idProp, compact });
83
90
  const formBound = !!resolvedForm && !!name;
84
91
  const hasLayout = label || error || helperText || required;
92
+ const enableReorder = enableReorderProp ?? !(readOnly || disabled);
93
+
94
+ const emitChange = useCallback(
95
+ (rows: TRow[]) => {
96
+ const next = rows.some((row) => typeof (row as { idx?: number }).idx === "number")
97
+ ? renumberIdx(rows)
98
+ : rows;
99
+ onChange?.(next);
100
+ },
101
+ [onChange],
102
+ );
85
103
 
86
104
  // Generic JSX (`<TableInput<TRow> …/>`) breaks one-dev's source annotation
87
105
  // transform; instantiate the type argument outside JSX instead.
@@ -95,7 +113,7 @@ export function ChildTable<TRow extends DataTableData = DataTableData>(
95
113
  required={required}
96
114
  skeleton={skeleton}
97
115
  data={value ?? []}
98
- onChange={onChange}
116
+ onChange={emitChange}
99
117
  columns={columns ?? []}
100
118
  defaultRow={defaultRow}
101
119
  readOnly={readOnly || disabled}
@@ -105,6 +123,7 @@ export function ChildTable<TRow extends DataTableData = DataTableData>(
105
123
  showAddRow={showAddRow && !readOnly && !disabled}
106
124
  showDeleteRow={showDeleteRow && !readOnly && !disabled}
107
125
  compact={compact}
126
+ enableReorder={enableReorder && !readOnly && !disabled}
108
127
  />
109
128
  );
110
129
 
@@ -16,6 +16,7 @@ import { Tooltip } from "@multiplatform.one/components";
16
16
  import { Popover, Text, View, XStack, YStack } from "tamagui";
17
17
  import { t } from "../../shared/t";
18
18
  import type { FilterOperator } from "../../types";
19
+ import { iconSizeForToken } from "../../utils/chromeIcons";
19
20
  import { operatorNeedsNoValue } from "../../utils/filterFields";
20
21
  import { FilterOperatorValueEditor } from "../FilterOperatorValueEditor";
21
22
 
@@ -54,6 +55,7 @@ export function ColumnHeaderFilter({
54
55
  isFiltered,
55
56
  }: ColumnHeaderFilterProps) {
56
57
  const { knobProps } = useResolvedKnobs();
58
+ const iconPx = iconSizeForToken(String(knobProps.sizeToken));
57
59
  const [open, setOpen] = useState(false);
58
60
  const [operator, setOperator] = useState<FilterOperator>("contains");
59
61
  const [value, setValue] = useState<string>("");
@@ -116,7 +118,7 @@ export function ColumnHeaderFilter({
116
118
  hoverStyle={{ backgroundColor: "$color4" }}
117
119
  >
118
120
  <FunnelIcon
119
- size={14}
121
+ size={iconPx}
120
122
  color={isFiltered ? "var(--accentColor)" : "var(--color10)"}
121
123
  weight={isFiltered ? "fill" : "regular"}
122
124
  />
@@ -126,24 +128,17 @@ export function ColumnHeaderFilter({
126
128
  </Tooltip>
127
129
 
128
130
  <Popover.Content
129
- {...knobProps.borderRadius}
130
- borderWidth={1}
131
- borderColor="$color6"
132
- backgroundColor="$background"
131
+ {...knobProps.elevatedSurface}
133
132
  {...knobProps.panelPadding}
134
133
  minWidth={240}
135
134
  transition={knobProps.transition}
136
135
  enterStyle={{ y: -5, opacity: 0 }}
137
136
  exitStyle={{ y: -5, opacity: 0 }}
138
- // Knob elevation channel, not `elevate`: Popover.Content has no such
139
- // variant in tamagui 2.0, so the bare boolean leaked to the DOM
140
- // (LC-46 class) and painted no shadow.
141
- elevation={knobProps.elevation}
142
137
  >
143
- <Popover.Arrow borderWidth={1} borderColor="$color6" />
138
+ <Popover.Arrow borderColor="$borderColor" backgroundColor="$color1" />
144
139
 
145
140
  <YStack {...knobProps.gap}>
146
- <Text fontSize={knobProps.sizeToken} fontWeight="600" color="$color11">
141
+ <Text {...knobProps.label} fontWeight="400" color="$color11">
147
142
  {t("Filter: {{column}}", { column: columnLabel })}
148
143
  </Text>
149
144
 
@@ -158,13 +153,13 @@ export function ColumnHeaderFilter({
158
153
  />
159
154
 
160
155
  {/* Actions */}
161
- <XStack gap="$2" justifyContent="flex-end">
156
+ <XStack {...knobProps.gap} justifyContent="flex-end">
162
157
  {isFiltered && (
163
- <Button size="$2" variant="outlined" onPress={handleClear}>
158
+ <Button size={knobProps.sizeToken} variant="outlined" onPress={handleClear}>
164
159
  {t("Clear")}
165
160
  </Button>
166
161
  )}
167
- <Button size="$2" onPress={handleApply}>
162
+ <Button size={knobProps.sizeToken} onPress={handleApply}>
168
163
  {t("Apply")}
169
164
  </Button>
170
165
  </XStack>
@@ -20,6 +20,7 @@ import { useTranslation } from "react-i18next";
20
20
  import type { DataTableColumnType, FacetedFilterOption } from "../../types";
21
21
  import { withInterp } from "../../utils/withInterp";
22
22
  import { DataTableFilters } from "../DataTableFilters";
23
+ import { dataTableChrome } from "./dataTableChrome";
23
24
 
24
25
  export interface DataTableCardControlsProps {
25
26
  /** TanStack table instance (from useDataTable). */
@@ -52,7 +53,8 @@ export function DataTableCardControls({
52
53
  disabled = false,
53
54
  }: DataTableCardControlsProps) {
54
55
  const { t } = useTranslation();
55
- const { knobProps, disabledState } = useResolvedKnobs({ compact });
56
+ const { knobProps, disabledState } = useResolvedKnobs({ component: "DataTable", compact });
57
+ const chrome = dataTableChrome(String(knobProps.sizeToken));
56
58
  const [sortMenuOpen, setSortMenuOpen] = useState(false);
57
59
 
58
60
  const sortableColumns = enableSorting
@@ -88,7 +90,7 @@ export function DataTableCardControls({
88
90
  <Button
89
91
  size={knobProps.sizeToken}
90
92
  variant="outlined"
91
- icon={<CaretUpDownIcon size={16} />}
93
+ icon={<CaretUpDownIcon size={chrome.iconPx} />}
92
94
  aria-label={t("Sort rows")}
93
95
  disabled={disabled}
94
96
  >
@@ -105,11 +107,11 @@ export function DataTableCardControls({
105
107
  closeOnSelect={false}
106
108
  icon={
107
109
  sorted === "asc" ? (
108
- <CaretDownIcon size={14} />
110
+ <CaretDownIcon size={chrome.iconPx} />
109
111
  ) : sorted === "desc" ? (
110
- <CaretDownIcon size={14} style={{ transform: "rotate(180deg)" }} />
112
+ <CaretDownIcon size={chrome.iconPx} style={{ transform: "rotate(180deg)" }} />
111
113
  ) : (
112
- <CaretUpDownIcon size={14} />
114
+ <CaretUpDownIcon size={chrome.iconPx} />
113
115
  )
114
116
  }
115
117
  aria-label={withInterp(
@@ -132,17 +134,18 @@ export function DataTableCardControls({
132
134
  </DropdownMenu.Content>
133
135
  </DropdownMenu>
134
136
  )}
135
- {enableFiltering && availableColumns.length > 0 && (
136
- // DataTableFilters (chrome) has no disabled API — the wrapper is the
137
- // LC-40 carrier and interaction gate for the disabled table.
138
- <View
139
- {...(disabled
140
- ? { ...disabledState.chromeKnobProps, pointerEvents: "none" as const }
141
- : {})}
142
- >
143
- <DataTableFilters compact availableColumns={availableColumns} />
144
- </View>
145
- )}
137
+ {enableFiltering &&
138
+ availableColumns.length > 0 && (
139
+ // DataTableFilters (chrome) has no disabled API — the wrapper is the
140
+ // LC-40 carrier and interaction gate for the disabled table.
141
+ <View
142
+ {...(disabled
143
+ ? { ...disabledState.chromeKnobProps, pointerEvents: "none" as const }
144
+ : {})}
145
+ >
146
+ <DataTableFilters compact availableColumns={availableColumns} />
147
+ </View>
148
+ )}
146
149
  </XStack>
147
150
  );
148
151
  }
@@ -24,6 +24,7 @@ import { View, XStack, YStack } from "tamagui";
24
24
  import type { DataTableColumn } from "../../types";
25
25
  import { withInterp } from "../../utils/withInterp";
26
26
  import { partitionDocumentListCells } from "./documentListSlots";
27
+ import { dataTableChrome, rowIntentProps } from "./dataTableChrome";
27
28
  import { tableRowStateProps } from "./rowStateChrome";
28
29
 
29
30
  /** Subject cell: explicit title role, else first non-action / non-`_` column. */
@@ -68,7 +69,8 @@ export function DataTableDocumentList<TData extends Record<string, any>>({
68
69
  queryInFlight = false,
69
70
  }: DataTableDocumentListProps<TData>) {
70
71
  const { t } = useTranslation();
71
- const { knobProps } = useResolvedKnobs();
72
+ const { knobProps } = useResolvedKnobs({ component: "DataTable", compact });
73
+ const chrome = dataTableChrome(String(knobProps.sizeToken));
72
74
  const tableZebraOn = knobProps.tableZebra === "on";
73
75
  const rowPad = knobProps.panelPadding.padding;
74
76
 
@@ -79,7 +81,7 @@ export function DataTableDocumentList<TData extends Record<string, any>>({
79
81
  const titleCell = pickDocumentListTitleCell(visibleCells);
80
82
  const { indicators, metas, actions } = partitionDocumentListCells(visibleCells, titleCell);
81
83
  const position = getGroupPosition(index, tableRows.length);
82
- const corners = stackRadiusProps(position, knobProps.borderRadius.borderRadius);
84
+ const corners = stackRadiusProps(position, knobProps.borderRadiusOuter.borderRadius);
83
85
  const selected = Boolean(enableRowSelection && row.getIsSelected?.());
84
86
  const rowState = tableRowStateProps({
85
87
  selected,
@@ -96,7 +98,7 @@ export function DataTableDocumentList<TData extends Record<string, any>>({
96
98
  gap="$3"
97
99
  paddingHorizontal={rowPad}
98
100
  paddingVertical="$2"
99
- minHeight={44}
101
+ minHeight={chrome.rowPx}
100
102
  overflow="hidden"
101
103
  display="flex"
102
104
  flexDirection="row"
@@ -110,6 +112,7 @@ export function DataTableDocumentList<TData extends Record<string, any>>({
110
112
  ...corners,
111
113
  }}
112
114
  {...(getRowPressProps ? (getRowPressProps(row, index, "row") as any) : {})}
115
+ {...(rowIntentProps(rowData) as any)}
113
116
  >
114
117
  {enableRowSelection && (
115
118
  <Checkbox
@@ -188,7 +191,7 @@ export function DataTableDocumentList<TData extends Record<string, any>>({
188
191
  disabled,
189
192
  enableRowSelection,
190
193
  getRowPressProps,
191
- knobProps.borderRadius.borderRadius,
194
+ knobProps.borderRadiusOuter.borderRadius,
192
195
  renderCellContent,
193
196
  rowPad,
194
197
  selectRowLabel,
@@ -26,6 +26,7 @@ import { useTranslation } from "react-i18next";
26
26
  import { TableCellContext } from "@multiplatform.one/table-primitives";
27
27
  import type { DataTableColumn } from "../../types";
28
28
  import { withInterp } from "../../utils/withInterp";
29
+ import { rowIntentProps } from "./dataTableChrome";
29
30
 
30
31
  /**
31
32
  * Resolve the human label for a column: `meta.label` → string header →
@@ -94,7 +95,7 @@ export function DataTableMobileCards<TData extends Record<string, any>>({
94
95
  queryInFlight = false,
95
96
  }: DataTableMobileCardsProps<TData>) {
96
97
  const { t } = useTranslation();
97
- const { knobProps } = useResolvedKnobs();
98
+ const { knobProps } = useResolvedKnobs({ component: "DataTable", compact });
98
99
  const tableZebraOn = knobProps.tableZebra === "on";
99
100
 
100
101
  const renderMobileCard = useCallback(
@@ -117,6 +118,7 @@ export function DataTableMobileCards<TData extends Record<string, any>>({
117
118
  "data-table-zebra": tableZebraOn ? (index % 2 === 0 ? "even" : "odd") : "off",
118
119
  } as any)}
119
120
  {...(getRowPressProps ? (getRowPressProps(row, index, "card") as any) : {})}
121
+ {...(rowIntentProps(rowData) as any)}
120
122
  >
121
123
  {/* Card header: selection + primary-column title + row number + delete */}
122
124
  <XStack