@multiplatform.one/table 6.7.0 → 7.1.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 (473) hide show
  1. package/README.md +4 -3
  2. package/dist/cjs/components/ChildTable/index.cjs +2 -1
  3. package/dist/cjs/components/ChildTable/index.native.js +2 -1
  4. package/dist/cjs/components/ChildTable/index.native.js.map +1 -1
  5. package/dist/cjs/components/ColumnHeaderFilter/index.cjs +17 -9
  6. package/dist/cjs/components/ColumnHeaderFilter/index.native.js +32 -11
  7. package/dist/cjs/components/ColumnHeaderFilter/index.native.js.map +1 -1
  8. package/dist/cjs/components/DataTable/DataTableDocumentList.cjs +222 -0
  9. package/dist/cjs/components/DataTable/DataTableDocumentList.native.js +237 -0
  10. package/dist/cjs/components/DataTable/DataTableDocumentList.native.js.map +1 -0
  11. package/dist/cjs/components/DataTable/DataTableMobileCards.cjs +5 -2
  12. package/dist/cjs/components/DataTable/DataTableMobileCards.native.js +6 -2
  13. package/dist/cjs/components/DataTable/DataTableMobileCards.native.js.map +1 -1
  14. package/dist/cjs/components/DataTable/DataTableRoot.cjs +92 -41
  15. package/dist/cjs/components/DataTable/DataTableRoot.native.js +97 -43
  16. package/dist/cjs/components/DataTable/DataTableRoot.native.js.map +1 -1
  17. package/dist/cjs/components/DataTable/DataTableVirtualized.cjs +8 -2
  18. package/dist/cjs/components/DataTable/DataTableVirtualized.native.js +9 -3
  19. package/dist/cjs/components/DataTable/DataTableVirtualized.native.js.map +1 -1
  20. package/dist/cjs/components/DataTable/documentListSlots.cjs +59 -0
  21. package/dist/cjs/components/DataTable/documentListSlots.native.js +85 -0
  22. package/dist/cjs/components/DataTable/documentListSlots.native.js.map +1 -0
  23. package/dist/cjs/components/DataTable/index.native.js +74 -59
  24. package/dist/cjs/components/DataTable/index.native.js.map +1 -1
  25. package/dist/cjs/components/DataTable/rowStateChrome.cjs +55 -0
  26. package/dist/cjs/components/DataTable/rowStateChrome.native.js +59 -0
  27. package/dist/cjs/components/DataTable/rowStateChrome.native.js.map +1 -0
  28. package/dist/cjs/components/DataTableCell/CellModalEditor.cjs +24 -3
  29. package/dist/cjs/components/DataTableCell/CellModalEditor.native.js +6 -1
  30. package/dist/cjs/components/DataTableCell/CellModalEditor.native.js.map +1 -1
  31. package/dist/cjs/components/DataTableCell/CellOptionsEditor.cjs +9 -2
  32. package/dist/cjs/components/DataTableCell/CellOptionsEditor.native.js +11 -2
  33. package/dist/cjs/components/DataTableCell/CellOptionsEditor.native.js.map +1 -1
  34. package/dist/cjs/components/DataTableCell/index.cjs +74 -63
  35. package/dist/cjs/components/DataTableCell/index.native.js +94 -82
  36. package/dist/cjs/components/DataTableCell/index.native.js.map +1 -1
  37. package/dist/cjs/components/DataTableColumnPinning/index.cjs +54 -37
  38. package/dist/cjs/components/DataTableColumnPinning/index.native.js +59 -38
  39. package/dist/cjs/components/DataTableColumnPinning/index.native.js.map +1 -1
  40. package/dist/cjs/components/DataTableDateFilter/index.cjs +33 -14
  41. package/dist/cjs/components/DataTableDateFilter/index.native.js +33 -12
  42. package/dist/cjs/components/DataTableDateFilter/index.native.js.map +1 -1
  43. package/dist/cjs/components/DataTableExport/index.cjs +35 -7
  44. package/dist/cjs/components/DataTableExport/index.native.js +42 -7
  45. package/dist/cjs/components/DataTableExport/index.native.js.map +1 -1
  46. package/dist/cjs/components/DataTableFacetMenu/index.cjs +140 -0
  47. package/dist/cjs/components/DataTableFacetMenu/index.native.js +156 -0
  48. package/dist/cjs/components/DataTableFacetMenu/index.native.js.map +1 -0
  49. package/dist/cjs/components/DataTableFilterButton/index.cjs +51 -32
  50. package/dist/cjs/components/DataTableFilterButton/index.native.js +63 -40
  51. package/dist/cjs/components/DataTableFilterButton/index.native.js.map +1 -1
  52. package/dist/cjs/components/DataTableFilterChips/FilterChip.cjs +143 -0
  53. package/dist/cjs/components/DataTableFilterChips/FilterChip.native.js +148 -0
  54. package/dist/cjs/components/DataTableFilterChips/FilterChip.native.js.map +1 -0
  55. package/dist/cjs/components/DataTableFilterChips/index.cjs +9 -31
  56. package/dist/cjs/components/DataTableFilterChips/index.native.js +9 -32
  57. package/dist/cjs/components/DataTableFilterChips/index.native.js.map +1 -1
  58. package/dist/cjs/components/DataTableFilters/index.cjs +145 -502
  59. package/dist/cjs/components/DataTableFilters/index.native.js +171 -544
  60. package/dist/cjs/components/DataTableFilters/index.native.js.map +1 -1
  61. package/dist/cjs/components/DataTableGrouping/index.cjs +273 -108
  62. package/dist/cjs/components/DataTableGrouping/index.native.js +310 -157
  63. package/dist/cjs/components/DataTableGrouping/index.native.js.map +1 -1
  64. package/dist/cjs/components/DataTablePagination/index.cjs +147 -95
  65. package/dist/cjs/components/DataTablePagination/index.native.js +159 -106
  66. package/dist/cjs/components/DataTablePagination/index.native.js.map +1 -1
  67. package/dist/cjs/components/DataTableSearch/index.cjs +251 -210
  68. package/dist/cjs/components/DataTableSearch/index.native.js +292 -243
  69. package/dist/cjs/components/DataTableSearch/index.native.js.map +1 -1
  70. package/dist/cjs/components/DataTableToolbar/index.cjs +141 -115
  71. package/dist/cjs/components/DataTableToolbar/index.native.js +163 -148
  72. package/dist/cjs/components/DataTableToolbar/index.native.js.map +1 -1
  73. package/dist/cjs/components/DataTableViewOptions/index.cjs +25 -21
  74. package/dist/cjs/components/DataTableViewOptions/index.native.js +6 -4
  75. package/dist/cjs/components/DataTableViewOptions/index.native.js.map +1 -1
  76. package/dist/cjs/components/SimpleTable/index.cjs +336 -46
  77. package/dist/cjs/components/SimpleTable/index.native.js +356 -48
  78. package/dist/cjs/components/SimpleTable/index.native.js.map +1 -1
  79. package/dist/cjs/components/TableInput/index.cjs +147 -38
  80. package/dist/cjs/components/TableInput/index.native.js +54 -38
  81. package/dist/cjs/components/TableInput/index.native.js.map +1 -1
  82. package/dist/cjs/components/TableInput/shared.cjs +36 -1
  83. package/dist/cjs/components/TableInput/shared.native.js +35 -0
  84. package/dist/cjs/components/TableInput/shared.native.js.map +1 -1
  85. package/dist/cjs/hooks/useDataTable.cjs +33 -2
  86. package/dist/cjs/hooks/useDataTable.native.js +41 -2
  87. package/dist/cjs/hooks/useDataTable.native.js.map +1 -1
  88. package/dist/cjs/hooks/useInfiniteRows.cjs +20 -3
  89. package/dist/cjs/hooks/useInfiniteRows.native.js +20 -3
  90. package/dist/cjs/hooks/useInfiniteRows.native.js.map +1 -1
  91. package/dist/cjs/index.cjs +2 -0
  92. package/dist/cjs/index.native.js +2 -0
  93. package/dist/cjs/index.native.js.map +1 -1
  94. package/dist/cjs/utils/filterUtils.cjs +12 -5
  95. package/dist/cjs/utils/filterUtils.native.js +20 -5
  96. package/dist/cjs/utils/filterUtils.native.js.map +1 -1
  97. package/dist/esm/components/ChildTable/index.mjs +2 -1
  98. package/dist/esm/components/ChildTable/index.mjs.map +1 -1
  99. package/dist/esm/components/ChildTable/index.native.js +2 -1
  100. package/dist/esm/components/ChildTable/index.native.js.map +1 -1
  101. package/dist/esm/components/ColumnHeaderFilter/index.mjs +17 -9
  102. package/dist/esm/components/ColumnHeaderFilter/index.mjs.map +1 -1
  103. package/dist/esm/components/ColumnHeaderFilter/index.native.js +32 -11
  104. package/dist/esm/components/ColumnHeaderFilter/index.native.js.map +1 -1
  105. package/dist/esm/components/DataTable/DataTableDocumentList.mjs +196 -0
  106. package/dist/esm/components/DataTable/DataTableDocumentList.mjs.map +1 -0
  107. package/dist/esm/components/DataTable/DataTableDocumentList.native.js +208 -0
  108. package/dist/esm/components/DataTable/DataTableDocumentList.native.js.map +1 -0
  109. package/dist/esm/components/DataTable/DataTableMobileCards.mjs +5 -2
  110. package/dist/esm/components/DataTable/DataTableMobileCards.mjs.map +1 -1
  111. package/dist/esm/components/DataTable/DataTableMobileCards.native.js +6 -2
  112. package/dist/esm/components/DataTable/DataTableMobileCards.native.js.map +1 -1
  113. package/dist/esm/components/DataTable/DataTableRoot.mjs +93 -42
  114. package/dist/esm/components/DataTable/DataTableRoot.mjs.map +1 -1
  115. package/dist/esm/components/DataTable/DataTableRoot.native.js +98 -44
  116. package/dist/esm/components/DataTable/DataTableRoot.native.js.map +1 -1
  117. package/dist/esm/components/DataTable/DataTableVirtualized.mjs +8 -2
  118. package/dist/esm/components/DataTable/DataTableVirtualized.mjs.map +1 -1
  119. package/dist/esm/components/DataTable/DataTableVirtualized.native.js +9 -3
  120. package/dist/esm/components/DataTable/DataTableVirtualized.native.js.map +1 -1
  121. package/dist/esm/components/DataTable/documentListSlots.mjs +33 -0
  122. package/dist/esm/components/DataTable/documentListSlots.mjs.map +1 -0
  123. package/dist/esm/components/DataTable/documentListSlots.native.js +56 -0
  124. package/dist/esm/components/DataTable/documentListSlots.native.js.map +1 -0
  125. package/dist/esm/components/DataTable/index.native.js +52 -37
  126. package/dist/esm/components/DataTable/index.native.js.map +1 -1
  127. package/dist/esm/components/DataTable/rowStateChrome.mjs +28 -0
  128. package/dist/esm/components/DataTable/rowStateChrome.mjs.map +1 -0
  129. package/dist/esm/components/DataTable/rowStateChrome.native.js +29 -0
  130. package/dist/esm/components/DataTable/rowStateChrome.native.js.map +1 -0
  131. package/dist/esm/components/DataTableCell/CellModalEditor.mjs +25 -4
  132. package/dist/esm/components/DataTableCell/CellModalEditor.mjs.map +1 -1
  133. package/dist/esm/components/DataTableCell/CellModalEditor.native.js +6 -1
  134. package/dist/esm/components/DataTableCell/CellModalEditor.native.js.map +1 -1
  135. package/dist/esm/components/DataTableCell/CellOptionsEditor.mjs +9 -2
  136. package/dist/esm/components/DataTableCell/CellOptionsEditor.mjs.map +1 -1
  137. package/dist/esm/components/DataTableCell/CellOptionsEditor.native.js +11 -2
  138. package/dist/esm/components/DataTableCell/CellOptionsEditor.native.js.map +1 -1
  139. package/dist/esm/components/DataTableCell/index.mjs +75 -64
  140. package/dist/esm/components/DataTableCell/index.mjs.map +1 -1
  141. package/dist/esm/components/DataTableCell/index.native.js +95 -83
  142. package/dist/esm/components/DataTableCell/index.native.js.map +1 -1
  143. package/dist/esm/components/DataTableColumnPinning/index.mjs +54 -37
  144. package/dist/esm/components/DataTableColumnPinning/index.mjs.map +1 -1
  145. package/dist/esm/components/DataTableColumnPinning/index.native.js +59 -38
  146. package/dist/esm/components/DataTableColumnPinning/index.native.js.map +1 -1
  147. package/dist/esm/components/DataTableDateFilter/index.mjs +34 -15
  148. package/dist/esm/components/DataTableDateFilter/index.mjs.map +1 -1
  149. package/dist/esm/components/DataTableDateFilter/index.native.js +34 -13
  150. package/dist/esm/components/DataTableDateFilter/index.native.js.map +1 -1
  151. package/dist/esm/components/DataTableExport/index.mjs +36 -8
  152. package/dist/esm/components/DataTableExport/index.mjs.map +1 -1
  153. package/dist/esm/components/DataTableExport/index.native.js +43 -8
  154. package/dist/esm/components/DataTableExport/index.native.js.map +1 -1
  155. package/dist/esm/components/DataTableFacetMenu/index.mjs +115 -0
  156. package/dist/esm/components/DataTableFacetMenu/index.mjs.map +1 -0
  157. package/dist/esm/components/DataTableFacetMenu/index.native.js +128 -0
  158. package/dist/esm/components/DataTableFacetMenu/index.native.js.map +1 -0
  159. package/dist/esm/components/DataTableFilterButton/index.mjs +54 -35
  160. package/dist/esm/components/DataTableFilterButton/index.mjs.map +1 -1
  161. package/dist/esm/components/DataTableFilterButton/index.native.js +66 -43
  162. package/dist/esm/components/DataTableFilterButton/index.native.js.map +1 -1
  163. package/dist/esm/components/DataTableFilterChips/FilterChip.mjs +118 -0
  164. package/dist/esm/components/DataTableFilterChips/FilterChip.mjs.map +1 -0
  165. package/dist/esm/components/DataTableFilterChips/FilterChip.native.js +120 -0
  166. package/dist/esm/components/DataTableFilterChips/FilterChip.native.js.map +1 -0
  167. package/dist/esm/components/DataTableFilterChips/index.mjs +9 -32
  168. package/dist/esm/components/DataTableFilterChips/index.mjs.map +1 -1
  169. package/dist/esm/components/DataTableFilterChips/index.native.js +9 -33
  170. package/dist/esm/components/DataTableFilterChips/index.native.js.map +1 -1
  171. package/dist/esm/components/DataTableFilters/index.mjs +149 -506
  172. package/dist/esm/components/DataTableFilters/index.mjs.map +1 -1
  173. package/dist/esm/components/DataTableFilters/index.native.js +175 -548
  174. package/dist/esm/components/DataTableFilters/index.native.js.map +1 -1
  175. package/dist/esm/components/DataTableGrouping/index.mjs +275 -110
  176. package/dist/esm/components/DataTableGrouping/index.mjs.map +1 -1
  177. package/dist/esm/components/DataTableGrouping/index.native.js +287 -134
  178. package/dist/esm/components/DataTableGrouping/index.native.js.map +1 -1
  179. package/dist/esm/components/DataTablePagination/index.mjs +148 -96
  180. package/dist/esm/components/DataTablePagination/index.mjs.map +1 -1
  181. package/dist/esm/components/DataTablePagination/index.native.js +160 -107
  182. package/dist/esm/components/DataTablePagination/index.native.js.map +1 -1
  183. package/dist/esm/components/DataTableSearch/index.mjs +256 -215
  184. package/dist/esm/components/DataTableSearch/index.mjs.map +1 -1
  185. package/dist/esm/components/DataTableSearch/index.native.js +297 -248
  186. package/dist/esm/components/DataTableSearch/index.native.js.map +1 -1
  187. package/dist/esm/components/DataTableToolbar/index.mjs +145 -119
  188. package/dist/esm/components/DataTableToolbar/index.mjs.map +1 -1
  189. package/dist/esm/components/DataTableToolbar/index.native.js +167 -152
  190. package/dist/esm/components/DataTableToolbar/index.native.js.map +1 -1
  191. package/dist/esm/components/DataTableViewOptions/index.mjs +26 -22
  192. package/dist/esm/components/DataTableViewOptions/index.mjs.map +1 -1
  193. package/dist/esm/components/DataTableViewOptions/index.native.js +7 -5
  194. package/dist/esm/components/DataTableViewOptions/index.native.js.map +1 -1
  195. package/dist/esm/components/SimpleTable/index.mjs +338 -48
  196. package/dist/esm/components/SimpleTable/index.mjs.map +1 -1
  197. package/dist/esm/components/SimpleTable/index.native.js +358 -50
  198. package/dist/esm/components/SimpleTable/index.native.js.map +1 -1
  199. package/dist/esm/components/TableInput/index.mjs +150 -41
  200. package/dist/esm/components/TableInput/index.mjs.map +1 -1
  201. package/dist/esm/components/TableInput/index.native.js +55 -39
  202. package/dist/esm/components/TableInput/index.native.js.map +1 -1
  203. package/dist/esm/components/TableInput/shared.mjs +34 -1
  204. package/dist/esm/components/TableInput/shared.mjs.map +1 -1
  205. package/dist/esm/components/TableInput/shared.native.js +34 -1
  206. package/dist/esm/components/TableInput/shared.native.js.map +1 -1
  207. package/dist/esm/hooks/useDataTable.mjs +33 -2
  208. package/dist/esm/hooks/useDataTable.mjs.map +1 -1
  209. package/dist/esm/hooks/useDataTable.native.js +41 -2
  210. package/dist/esm/hooks/useDataTable.native.js.map +1 -1
  211. package/dist/esm/hooks/useInfiniteRows.mjs +20 -3
  212. package/dist/esm/hooks/useInfiniteRows.mjs.map +1 -1
  213. package/dist/esm/hooks/useInfiniteRows.native.js +20 -3
  214. package/dist/esm/hooks/useInfiniteRows.native.js.map +1 -1
  215. package/dist/esm/index.mjs +2 -1
  216. package/dist/esm/index.mjs.map +1 -1
  217. package/dist/esm/index.native.js +2 -1
  218. package/dist/esm/index.native.js.map +1 -1
  219. package/dist/esm/utils/filterUtils.mjs +12 -5
  220. package/dist/esm/utils/filterUtils.mjs.map +1 -1
  221. package/dist/esm/utils/filterUtils.native.js +20 -5
  222. package/dist/esm/utils/filterUtils.native.js.map +1 -1
  223. package/dist/jsx/components/ChildTable/index.mjs +2 -1
  224. package/dist/jsx/components/ChildTable/index.mjs.map +1 -1
  225. package/dist/jsx/components/ChildTable/index.native.js +2 -1
  226. package/dist/jsx/components/ChildTable/index.native.js.map +1 -1
  227. package/dist/jsx/components/ColumnHeaderFilter/index.mjs +17 -9
  228. package/dist/jsx/components/ColumnHeaderFilter/index.mjs.map +1 -1
  229. package/dist/jsx/components/ColumnHeaderFilter/index.native.js +32 -11
  230. package/dist/jsx/components/ColumnHeaderFilter/index.native.js.map +1 -1
  231. package/dist/jsx/components/DataTable/DataTableDocumentList.mjs +196 -0
  232. package/dist/jsx/components/DataTable/DataTableDocumentList.mjs.map +1 -0
  233. package/dist/jsx/components/DataTable/DataTableDocumentList.native.js +237 -0
  234. package/dist/jsx/components/DataTable/DataTableDocumentList.native.js.map +1 -0
  235. package/dist/jsx/components/DataTable/DataTableMobileCards.mjs +5 -2
  236. package/dist/jsx/components/DataTable/DataTableMobileCards.mjs.map +1 -1
  237. package/dist/jsx/components/DataTable/DataTableMobileCards.native.js +6 -2
  238. package/dist/jsx/components/DataTable/DataTableMobileCards.native.js.map +1 -1
  239. package/dist/jsx/components/DataTable/DataTableRoot.mjs +93 -42
  240. package/dist/jsx/components/DataTable/DataTableRoot.mjs.map +1 -1
  241. package/dist/jsx/components/DataTable/DataTableRoot.native.js +97 -43
  242. package/dist/jsx/components/DataTable/DataTableRoot.native.js.map +1 -1
  243. package/dist/jsx/components/DataTable/DataTableVirtualized.mjs +8 -2
  244. package/dist/jsx/components/DataTable/DataTableVirtualized.mjs.map +1 -1
  245. package/dist/jsx/components/DataTable/DataTableVirtualized.native.js +9 -3
  246. package/dist/jsx/components/DataTable/DataTableVirtualized.native.js.map +1 -1
  247. package/dist/jsx/components/DataTable/documentListSlots.mjs +33 -0
  248. package/dist/jsx/components/DataTable/documentListSlots.mjs.map +1 -0
  249. package/dist/jsx/components/DataTable/documentListSlots.native.js +85 -0
  250. package/dist/jsx/components/DataTable/documentListSlots.native.js.map +1 -0
  251. package/dist/jsx/components/DataTable/index.native.js +74 -59
  252. package/dist/jsx/components/DataTable/index.native.js.map +1 -1
  253. package/dist/jsx/components/DataTable/rowStateChrome.mjs +28 -0
  254. package/dist/jsx/components/DataTable/rowStateChrome.mjs.map +1 -0
  255. package/dist/jsx/components/DataTable/rowStateChrome.native.js +59 -0
  256. package/dist/jsx/components/DataTable/rowStateChrome.native.js.map +1 -0
  257. package/dist/jsx/components/DataTableCell/CellModalEditor.mjs +25 -4
  258. package/dist/jsx/components/DataTableCell/CellModalEditor.mjs.map +1 -1
  259. package/dist/jsx/components/DataTableCell/CellModalEditor.native.js +6 -1
  260. package/dist/jsx/components/DataTableCell/CellModalEditor.native.js.map +1 -1
  261. package/dist/jsx/components/DataTableCell/CellOptionsEditor.mjs +9 -2
  262. package/dist/jsx/components/DataTableCell/CellOptionsEditor.mjs.map +1 -1
  263. package/dist/jsx/components/DataTableCell/CellOptionsEditor.native.js +11 -2
  264. package/dist/jsx/components/DataTableCell/CellOptionsEditor.native.js.map +1 -1
  265. package/dist/jsx/components/DataTableCell/index.mjs +75 -64
  266. package/dist/jsx/components/DataTableCell/index.mjs.map +1 -1
  267. package/dist/jsx/components/DataTableCell/index.native.js +94 -82
  268. package/dist/jsx/components/DataTableCell/index.native.js.map +1 -1
  269. package/dist/jsx/components/DataTableColumnPinning/index.mjs +54 -37
  270. package/dist/jsx/components/DataTableColumnPinning/index.mjs.map +1 -1
  271. package/dist/jsx/components/DataTableColumnPinning/index.native.js +59 -38
  272. package/dist/jsx/components/DataTableColumnPinning/index.native.js.map +1 -1
  273. package/dist/jsx/components/DataTableDateFilter/index.mjs +34 -15
  274. package/dist/jsx/components/DataTableDateFilter/index.mjs.map +1 -1
  275. package/dist/jsx/components/DataTableDateFilter/index.native.js +33 -12
  276. package/dist/jsx/components/DataTableDateFilter/index.native.js.map +1 -1
  277. package/dist/jsx/components/DataTableExport/index.mjs +36 -8
  278. package/dist/jsx/components/DataTableExport/index.mjs.map +1 -1
  279. package/dist/jsx/components/DataTableExport/index.native.js +42 -7
  280. package/dist/jsx/components/DataTableExport/index.native.js.map +1 -1
  281. package/dist/jsx/components/DataTableFacetMenu/index.mjs +115 -0
  282. package/dist/jsx/components/DataTableFacetMenu/index.mjs.map +1 -0
  283. package/dist/jsx/components/DataTableFacetMenu/index.native.js +156 -0
  284. package/dist/jsx/components/DataTableFacetMenu/index.native.js.map +1 -0
  285. package/dist/jsx/components/DataTableFilterButton/index.mjs +54 -35
  286. package/dist/jsx/components/DataTableFilterButton/index.mjs.map +1 -1
  287. package/dist/jsx/components/DataTableFilterButton/index.native.js +63 -40
  288. package/dist/jsx/components/DataTableFilterButton/index.native.js.map +1 -1
  289. package/dist/jsx/components/DataTableFilterChips/FilterChip.mjs +118 -0
  290. package/dist/jsx/components/DataTableFilterChips/FilterChip.mjs.map +1 -0
  291. package/dist/jsx/components/DataTableFilterChips/FilterChip.native.js +148 -0
  292. package/dist/jsx/components/DataTableFilterChips/FilterChip.native.js.map +1 -0
  293. package/dist/jsx/components/DataTableFilterChips/index.mjs +9 -32
  294. package/dist/jsx/components/DataTableFilterChips/index.mjs.map +1 -1
  295. package/dist/jsx/components/DataTableFilterChips/index.native.js +9 -32
  296. package/dist/jsx/components/DataTableFilterChips/index.native.js.map +1 -1
  297. package/dist/jsx/components/DataTableFilters/index.mjs +149 -506
  298. package/dist/jsx/components/DataTableFilters/index.mjs.map +1 -1
  299. package/dist/jsx/components/DataTableFilters/index.native.js +171 -544
  300. package/dist/jsx/components/DataTableFilters/index.native.js.map +1 -1
  301. package/dist/jsx/components/DataTableGrouping/index.mjs +275 -110
  302. package/dist/jsx/components/DataTableGrouping/index.mjs.map +1 -1
  303. package/dist/jsx/components/DataTableGrouping/index.native.js +310 -157
  304. package/dist/jsx/components/DataTableGrouping/index.native.js.map +1 -1
  305. package/dist/jsx/components/DataTablePagination/index.mjs +148 -96
  306. package/dist/jsx/components/DataTablePagination/index.mjs.map +1 -1
  307. package/dist/jsx/components/DataTablePagination/index.native.js +159 -106
  308. package/dist/jsx/components/DataTablePagination/index.native.js.map +1 -1
  309. package/dist/jsx/components/DataTableSearch/index.mjs +256 -215
  310. package/dist/jsx/components/DataTableSearch/index.mjs.map +1 -1
  311. package/dist/jsx/components/DataTableSearch/index.native.js +292 -243
  312. package/dist/jsx/components/DataTableSearch/index.native.js.map +1 -1
  313. package/dist/jsx/components/DataTableToolbar/index.mjs +145 -119
  314. package/dist/jsx/components/DataTableToolbar/index.mjs.map +1 -1
  315. package/dist/jsx/components/DataTableToolbar/index.native.js +163 -148
  316. package/dist/jsx/components/DataTableToolbar/index.native.js.map +1 -1
  317. package/dist/jsx/components/DataTableViewOptions/index.mjs +26 -22
  318. package/dist/jsx/components/DataTableViewOptions/index.mjs.map +1 -1
  319. package/dist/jsx/components/DataTableViewOptions/index.native.js +6 -4
  320. package/dist/jsx/components/DataTableViewOptions/index.native.js.map +1 -1
  321. package/dist/jsx/components/SimpleTable/index.mjs +338 -48
  322. package/dist/jsx/components/SimpleTable/index.mjs.map +1 -1
  323. package/dist/jsx/components/SimpleTable/index.native.js +356 -48
  324. package/dist/jsx/components/SimpleTable/index.native.js.map +1 -1
  325. package/dist/jsx/components/TableInput/index.mjs +150 -41
  326. package/dist/jsx/components/TableInput/index.mjs.map +1 -1
  327. package/dist/jsx/components/TableInput/index.native.js +54 -38
  328. package/dist/jsx/components/TableInput/index.native.js.map +1 -1
  329. package/dist/jsx/components/TableInput/shared.mjs +34 -1
  330. package/dist/jsx/components/TableInput/shared.mjs.map +1 -1
  331. package/dist/jsx/components/TableInput/shared.native.js +35 -0
  332. package/dist/jsx/components/TableInput/shared.native.js.map +1 -1
  333. package/dist/jsx/hooks/useDataTable.mjs +33 -2
  334. package/dist/jsx/hooks/useDataTable.mjs.map +1 -1
  335. package/dist/jsx/hooks/useDataTable.native.js +41 -2
  336. package/dist/jsx/hooks/useDataTable.native.js.map +1 -1
  337. package/dist/jsx/hooks/useInfiniteRows.mjs +20 -3
  338. package/dist/jsx/hooks/useInfiniteRows.mjs.map +1 -1
  339. package/dist/jsx/hooks/useInfiniteRows.native.js +20 -3
  340. package/dist/jsx/hooks/useInfiniteRows.native.js.map +1 -1
  341. package/dist/jsx/index.js +2 -1
  342. package/dist/jsx/index.js.map +1 -1
  343. package/dist/jsx/index.mjs +2 -1
  344. package/dist/jsx/index.mjs.map +1 -1
  345. package/dist/jsx/index.native.js +2 -0
  346. package/dist/jsx/index.native.js.map +1 -1
  347. package/dist/jsx/utils/filterUtils.mjs +12 -5
  348. package/dist/jsx/utils/filterUtils.mjs.map +1 -1
  349. package/dist/jsx/utils/filterUtils.native.js +20 -5
  350. package/dist/jsx/utils/filterUtils.native.js.map +1 -1
  351. package/package.json +15 -15
  352. package/src/components/ChildTable/index.tsx +1 -0
  353. package/src/components/ColumnHeaderFilter/ColumnHeaderFilter.spec.tsx +85 -0
  354. package/src/components/ColumnHeaderFilter/index.tsx +28 -10
  355. package/src/components/DataTable/DataTable.stories.tsx +30 -0
  356. package/src/components/DataTable/DataTableDocumentList.tsx +224 -0
  357. package/src/components/DataTable/DataTableMobileCards.tsx +20 -8
  358. package/src/components/DataTable/DataTableRoot.tsx +135 -58
  359. package/src/components/DataTable/DataTableVirtualized.tsx +8 -11
  360. package/src/components/DataTable/cardLayout.spec.tsx +89 -0
  361. package/src/components/DataTable/documentListSlots.ts +57 -0
  362. package/src/components/DataTable/index.native.tsx +76 -50
  363. package/src/components/DataTable/keepPreviousData.spec.tsx +137 -0
  364. package/src/components/DataTable/rowRing.spec.tsx +118 -0
  365. package/src/components/DataTable/rowStateChrome.ts +38 -0
  366. package/src/components/DataTableCell/CellModalEditor.native.tsx +4 -0
  367. package/src/components/DataTableCell/CellModalEditor.tsx +31 -3
  368. package/src/components/DataTableCell/CellOptionsEditor.tsx +29 -12
  369. package/src/components/DataTableCell/DataTableCell.stories.tsx +3 -3
  370. package/src/components/DataTableCell/cellDraftPolicy.spec.tsx +131 -4
  371. package/src/components/DataTableCell/dataTableCell.spec.tsx +36 -1
  372. package/src/components/DataTableCell/index.tsx +121 -86
  373. package/src/components/DataTableColumnPinning/DataTableColumnPinning.spec.tsx +66 -0
  374. package/src/components/DataTableColumnPinning/index.tsx +32 -17
  375. package/src/components/DataTableDateFilter/DataTableDateFilter.spec.tsx +9 -1
  376. package/src/components/DataTableDateFilter/dateFilterZones.spec.ts +316 -0
  377. package/src/components/DataTableDateFilter/index.tsx +42 -22
  378. package/src/components/DataTableExport/exportDateZones.spec.tsx +348 -0
  379. package/src/components/DataTableExport/index.tsx +107 -63
  380. package/src/components/DataTableFacetMenu/DataTableFacetMenu.spec.tsx +264 -0
  381. package/src/components/DataTableFacetMenu/DataTableFacetMenu.stories.tsx +212 -0
  382. package/src/components/DataTableFacetMenu/index.tsx +202 -0
  383. package/src/components/DataTableFilterButton/index.tsx +66 -49
  384. package/src/components/DataTableFilterChips/DataTableFilterChips.spec.tsx +22 -0
  385. package/src/components/DataTableFilterChips/FilterChip.tsx +122 -0
  386. package/src/components/DataTableFilterChips/index.tsx +13 -29
  387. package/src/components/DataTableFilters/DataTableFilters.spec.tsx +56 -0
  388. package/src/components/DataTableFilters/index.tsx +169 -584
  389. package/src/components/DataTableGrouping/DataTableGrouping.spec.tsx +85 -0
  390. package/src/components/DataTableGrouping/index.tsx +270 -130
  391. package/src/components/DataTablePagination/DataTablePagination.spec.tsx +79 -4
  392. package/src/components/DataTablePagination/index.tsx +168 -112
  393. package/src/components/DataTableSearch/DataTableSearch.spec.tsx +40 -0
  394. package/src/components/DataTableSearch/DataTableSearch.stories.tsx +1 -1
  395. package/src/components/DataTableSearch/index.tsx +192 -163
  396. package/src/components/DataTableToolbar/DataTableToolbar.spec.tsx +48 -18
  397. package/src/components/DataTableToolbar/DataTableToolbar.stories.tsx +5 -45
  398. package/src/components/DataTableToolbar/index.tsx +128 -99
  399. package/src/components/DataTableViewOptions/index.tsx +29 -22
  400. package/src/components/SimpleTable/SimpleTable.stories.tsx +29 -5
  401. package/src/components/SimpleTable/index.tsx +442 -61
  402. package/src/components/SimpleTable/simpleTable.spec.tsx +140 -12
  403. package/src/components/TableInput/index.native.tsx +91 -81
  404. package/src/components/TableInput/index.tsx +191 -50
  405. package/src/components/TableInput/shared.ts +57 -0
  406. package/src/components/TableInput/tableInput.spec.tsx +104 -0
  407. package/src/hooks/useDataTable.spec.ts +100 -3
  408. package/src/hooks/useDataTable.ts +44 -1
  409. package/src/hooks/useInfiniteRows.spec.tsx +37 -0
  410. package/src/hooks/useInfiniteRows.ts +34 -4
  411. package/src/index.ts +7 -0
  412. package/src/types.ts +54 -3
  413. package/src/utils/filterUtils.ts +27 -5
  414. package/types/components/ChildTable/index.d.ts.map +1 -1
  415. package/types/components/ColumnHeaderFilter/index.d.ts.map +1 -1
  416. package/types/components/DataTable/DataTableDocumentList.d.ts +32 -0
  417. package/types/components/DataTable/DataTableDocumentList.d.ts.map +1 -0
  418. package/types/components/DataTable/DataTableMobileCards.d.ts +3 -1
  419. package/types/components/DataTable/DataTableMobileCards.d.ts.map +1 -1
  420. package/types/components/DataTable/DataTableRoot.d.ts +1 -1
  421. package/types/components/DataTable/DataTableRoot.d.ts.map +1 -1
  422. package/types/components/DataTable/DataTableVirtualized.d.ts +1 -2
  423. package/types/components/DataTable/DataTableVirtualized.d.ts.map +1 -1
  424. package/types/components/DataTable/documentListSlots.d.ts +26 -0
  425. package/types/components/DataTable/documentListSlots.d.ts.map +1 -0
  426. package/types/components/DataTable/index.native.d.ts +1 -1
  427. package/types/components/DataTable/index.native.d.ts.map +1 -1
  428. package/types/components/DataTable/rowStateChrome.d.ts +18 -0
  429. package/types/components/DataTable/rowStateChrome.d.ts.map +1 -0
  430. package/types/components/DataTableCell/CellModalEditor.d.ts +6 -1
  431. package/types/components/DataTableCell/CellModalEditor.d.ts.map +1 -1
  432. package/types/components/DataTableCell/CellModalEditor.native.d.ts +1 -1
  433. package/types/components/DataTableCell/CellModalEditor.native.d.ts.map +1 -1
  434. package/types/components/DataTableCell/CellOptionsEditor.d.ts +11 -3
  435. package/types/components/DataTableCell/CellOptionsEditor.d.ts.map +1 -1
  436. package/types/components/DataTableCell/index.d.ts +1 -1
  437. package/types/components/DataTableCell/index.d.ts.map +1 -1
  438. package/types/components/DataTableColumnPinning/index.d.ts.map +1 -1
  439. package/types/components/DataTableDateFilter/index.d.ts.map +1 -1
  440. package/types/components/DataTableExport/index.d.ts +17 -6
  441. package/types/components/DataTableExport/index.d.ts.map +1 -1
  442. package/types/components/DataTableFacetMenu/index.d.ts +84 -0
  443. package/types/components/DataTableFacetMenu/index.d.ts.map +1 -0
  444. package/types/components/DataTableFilterButton/index.d.ts.map +1 -1
  445. package/types/components/DataTableFilterChips/FilterChip.d.ts +15 -0
  446. package/types/components/DataTableFilterChips/FilterChip.d.ts.map +1 -0
  447. package/types/components/DataTableFilterChips/index.d.ts +5 -0
  448. package/types/components/DataTableFilterChips/index.d.ts.map +1 -1
  449. package/types/components/DataTableFilters/index.d.ts +11 -0
  450. package/types/components/DataTableFilters/index.d.ts.map +1 -1
  451. package/types/components/DataTableGrouping/index.d.ts.map +1 -1
  452. package/types/components/DataTablePagination/index.d.ts +5 -0
  453. package/types/components/DataTablePagination/index.d.ts.map +1 -1
  454. package/types/components/DataTableSearch/index.d.ts.map +1 -1
  455. package/types/components/DataTableToolbar/index.d.ts +2 -0
  456. package/types/components/DataTableToolbar/index.d.ts.map +1 -1
  457. package/types/components/SimpleTable/index.d.ts +27 -5
  458. package/types/components/SimpleTable/index.d.ts.map +1 -1
  459. package/types/components/TableInput/index.d.ts +6 -1
  460. package/types/components/TableInput/index.d.ts.map +1 -1
  461. package/types/components/TableInput/index.native.d.ts +6 -1
  462. package/types/components/TableInput/index.native.d.ts.map +1 -1
  463. package/types/components/TableInput/shared.d.ts +38 -0
  464. package/types/components/TableInput/shared.d.ts.map +1 -1
  465. package/types/hooks/useDataTable.d.ts +1 -1
  466. package/types/hooks/useDataTable.d.ts.map +1 -1
  467. package/types/hooks/useInfiniteRows.d.ts +8 -1
  468. package/types/hooks/useInfiniteRows.d.ts.map +1 -1
  469. package/types/index.d.ts +1 -0
  470. package/types/index.d.ts.map +1 -1
  471. package/types/types.d.ts +54 -3
  472. package/types/types.d.ts.map +1 -1
  473. package/types/utils/filterUtils.d.ts.map +1 -1
@@ -1,20 +1,15 @@
1
1
  /**
2
- * SimpleTable tests - 4 focused tests for Task Group 6.
3
- *
4
- * 1. Basic data rendering (array of objects with column config produces correct cells)
5
- * 2. Column alignment prop (align: "left" | "center" | "right") applies correctly
6
- * 3. Intent props on rows (data objects with _intent: "error" render error-themed rows)
7
- * 4. Responsive card layout on mobile (renders cards instead of table rows when sm media query matches)
2
+ * SimpleTable tests.
8
3
  *
9
4
  * Note: In the happy-dom test env, Tamagui's useMedia returns { sm: false }
10
5
  * (mobile breakpoint), so the component renders in card mode by default.
11
- * Tests 1-2 test the table rendering directly by importing the internal
12
- * SimpleTableDesktop component. Test 4 tests the responsive switching
13
- * by verifying card mode behavior on mobile.
6
+ * Grid tests import SimpleTableDesktop; card tests use SimpleTable.
14
7
  */
15
8
 
16
9
  import { renderWithProviders } from "@multiplatform.one/test-utils";
17
- import { describe, expect, it } from "vitest";
10
+ import { Preset } from "@multiplatform.one/theme";
11
+ import { fireEvent, waitFor } from "@testing-library/react";
12
+ import { describe, expect, it, vi } from "vitest";
18
13
  import { SimpleTable, SimpleTableDesktop } from "./index";
19
14
  import type { SimpleTableColumn } from "./index";
20
15
 
@@ -157,8 +152,8 @@ describe("SimpleTable", () => {
157
152
  expect(container.textContent).toContain("Item 2");
158
153
  expect(container.textContent).toContain("200");
159
154
 
160
- // In card mode, header labels appear as field labels within cards
161
- expect(container.textContent).toContain("Name");
155
+ // First column is the card title (no repeated "Name" label); remaining
156
+ // columns render as label/value rows.
162
157
  expect(container.textContent).toContain("Value");
163
158
 
164
159
  // Card mode should not render table structure
@@ -169,4 +164,137 @@ describe("SimpleTable", () => {
169
164
  const hasCardLayout = container.querySelector('[data-testid="simple-table-cards"]');
170
165
  expect(hasCardLayout).not.toBeNull();
171
166
  });
167
+
168
+ it("spans the empty state across every column", () => {
169
+ const columns: SimpleTableColumn[] = [
170
+ { accessorKey: "name", header: "Name" },
171
+ { accessorKey: "age", header: "Age" },
172
+ { accessorKey: "city", header: "City" },
173
+ ];
174
+ const { container } = renderWithProviders(
175
+ <SimpleTableDesktop data={[]} columns={columns} aria-label="Empty" />,
176
+ );
177
+ const emptyCell = container.querySelector("tbody td, tbody [role='cell']");
178
+ expect(emptyCell).not.toBeNull();
179
+ expect(emptyCell?.getAttribute("colspan") ?? emptyCell?.getAttribute("colSpan")).toBe("3");
180
+ expect(container.textContent).toContain("No data available");
181
+ });
182
+
183
+ it("stripes rows when tableZebra is on and defaults off", () => {
184
+ const columns: SimpleTableColumn[] = [
185
+ { accessorKey: "name", header: "Name" },
186
+ { accessorKey: "age", header: "Age" },
187
+ ];
188
+ const data = [
189
+ { name: "A", age: 1 },
190
+ { name: "B", age: 2 },
191
+ ];
192
+
193
+ const { container: off } = renderWithProviders(
194
+ <Preset overrides={{ tableZebra: "off" }}>
195
+ <SimpleTableDesktop data={data} columns={columns} />
196
+ </Preset>,
197
+ );
198
+ for (const row of off.querySelectorAll("[data-table-zebra]")) {
199
+ expect(row.getAttribute("data-table-zebra")).toBe("off");
200
+ }
201
+
202
+ const { container: on } = renderWithProviders(
203
+ <Preset overrides={{ tableZebra: "on" }}>
204
+ <SimpleTableDesktop data={data} columns={columns} />
205
+ </Preset>,
206
+ );
207
+ expect(on.querySelectorAll("[data-table-zebra='even']").length).toBeGreaterThan(0);
208
+ expect(on.querySelectorAll("[data-table-zebra='odd']").length).toBeGreaterThan(0);
209
+ });
210
+
211
+ it("renders a custom cell renderer and a visible caption", () => {
212
+ const columns: SimpleTableColumn[] = [
213
+ { accessorKey: "name", header: "Name" },
214
+ {
215
+ accessorKey: "age",
216
+ header: "Age",
217
+ cell: (value) => `age:${value}`,
218
+ },
219
+ ];
220
+ const { container } = renderWithProviders(
221
+ <SimpleTableDesktop caption="Crew" data={[{ name: "Ada", age: 36 }]} columns={columns} />,
222
+ );
223
+ expect(container.textContent).toContain("Crew");
224
+ expect(container.textContent).toContain("age:36");
225
+ expect(container.querySelector("caption")).not.toBeNull();
226
+ });
227
+
228
+ it("activates onRowPress with one roving tab stop (LC-49) and keyboard (LC-50)", async () => {
229
+ const columns: SimpleTableColumn[] = [
230
+ { accessorKey: "name", header: "Name" },
231
+ { accessorKey: "city", header: "City" },
232
+ ];
233
+ const data = [
234
+ { name: "Alice", city: "Portland" },
235
+ { name: "Bob", city: "Seattle" },
236
+ { name: "Carol", city: "Austin" },
237
+ ];
238
+ const onRowPress = vi.fn();
239
+ const { container } = renderWithProviders(
240
+ <SimpleTableDesktop
241
+ data={data}
242
+ columns={columns}
243
+ onRowPress={onRowPress}
244
+ rowLabel={(row) => row.name}
245
+ />,
246
+ );
247
+
248
+ const rows = Array.from(container.querySelectorAll('[data-row-press="true"]')) as HTMLElement[];
249
+ expect(rows).toHaveLength(3);
250
+ expect(rows.map((row) => row.getAttribute("tabindex"))).toEqual(["0", "-1", "-1"]);
251
+
252
+ fireEvent.click(rows[1]);
253
+ expect(onRowPress).toHaveBeenCalledTimes(1);
254
+ expect(onRowPress).toHaveBeenCalledWith(expect.objectContaining({ name: "Bob" }), 1);
255
+
256
+ rows[0].focus();
257
+ fireEvent.keyDown(rows[0], { key: "Enter" });
258
+ expect(onRowPress).toHaveBeenCalledTimes(2);
259
+ fireEvent.keyDown(rows[0], { key: " " });
260
+ expect(onRowPress).toHaveBeenCalledTimes(3);
261
+ fireEvent.keyDown(rows[0], { key: "Enter", repeat: true });
262
+ expect(onRowPress).toHaveBeenCalledTimes(3);
263
+
264
+ fireEvent.keyDown(rows[0], { key: "ArrowDown" });
265
+ expect(document.activeElement).toBe(rows[1]);
266
+ await waitFor(() => {
267
+ expect(rows.map((row) => row.getAttribute("tabindex"))).toEqual(["-1", "0", "-1"]);
268
+ });
269
+ fireEvent.keyDown(rows[1], { key: "End" });
270
+ expect(document.activeElement).toBe(rows[2]);
271
+ fireEvent.keyDown(rows[2], { key: "Home" });
272
+ expect(document.activeElement).toBe(rows[0]);
273
+ });
274
+
275
+ it("cards with onRowPress expose one roving tab stop and role=button", () => {
276
+ const columns: SimpleTableColumn[] = [
277
+ { accessorKey: "name", header: "Name" },
278
+ { accessorKey: "value", header: "Value" },
279
+ ];
280
+ const onRowPress = vi.fn();
281
+ const { container } = renderWithProviders(
282
+ <SimpleTable
283
+ data={[
284
+ { name: "Item 1", value: "100" },
285
+ { name: "Item 2", value: "200" },
286
+ ]}
287
+ columns={columns}
288
+ onRowPress={onRowPress}
289
+ />,
290
+ );
291
+ const cards = Array.from(
292
+ container.querySelectorAll('[data-row-press="true"]'),
293
+ ) as HTMLElement[];
294
+ expect(cards).toHaveLength(2);
295
+ expect(cards[0].getAttribute("role")).toBe("button");
296
+ expect(cards.map((card) => card.getAttribute("tabindex"))).toEqual(["0", "-1"]);
297
+ fireEvent.click(cards[1]);
298
+ expect(onRowPress).toHaveBeenCalledWith(expect.objectContaining({ name: "Item 2" }), 1);
299
+ });
172
300
  });
@@ -9,7 +9,7 @@
9
9
  * - No Frappe-style `idx` bookkeeping — array order is row order.
10
10
  */
11
11
 
12
- import { useCallback, useMemo } from "react";
12
+ import { useCallback, useMemo, useState } from "react";
13
13
  import {
14
14
  Button,
15
15
  Field,
@@ -21,6 +21,8 @@ import {
21
21
  import { FlashList } from "@shopify/flash-list";
22
22
  import { TrashIcon, PlusIcon } from "@phosphor-icons/react";
23
23
  import { useTranslation } from "react-i18next";
24
+ import { getTableCellPadding } from "@multiplatform.one/table-primitives";
25
+ import { hairline, useResolvedKnobs } from "@multiplatform.one/theme";
24
26
  import { Text, View, XStack, YStack } from "tamagui";
25
27
  import type {
26
28
  DataTableColumn,
@@ -71,6 +73,11 @@ export interface TableInputProps<TData extends DataTableData = DataTableData> {
71
73
  emptyMessage?: string;
72
74
  /** Accessible label */
73
75
  "aria-label"?: string;
76
+ /**
77
+ * Nested density (LC-73). Child tables sit on a form surface, so compact
78
+ * is the default — Frappe's grid is a dense in-list editor, not a page table.
79
+ */
80
+ compact?: boolean;
74
81
  }
75
82
 
76
83
  export function TableInput<TData extends DataTableData = DataTableData>({
@@ -93,6 +100,7 @@ export function TableInput<TData extends DataTableData = DataTableData>({
93
100
  defaultRow,
94
101
  emptyMessage,
95
102
  "aria-label": ariaLabel,
103
+ compact = true,
96
104
  }: TableInputProps<TData>) {
97
105
  const { t } = useTranslation();
98
106
  const { resolvedForm } = useFormField({ form: formProp });
@@ -127,6 +135,7 @@ export function TableInput<TData extends DataTableData = DataTableData>({
127
135
  defaultRow,
128
136
  emptyMessage: emptyMessage ?? t("No rows"),
129
137
  ariaLabel: resolvedAriaLabel,
138
+ compact,
130
139
  t,
131
140
  };
132
141
 
@@ -179,6 +188,7 @@ interface TableInputInnerProps<TData extends DataTableData> {
179
188
  defaultRow?: Partial<TData>;
180
189
  emptyMessage: string;
181
190
  ariaLabel: string;
191
+ compact: boolean;
182
192
  t: (key: string, options?: Record<string, unknown>) => string;
183
193
  }
184
194
 
@@ -197,8 +207,16 @@ function TableInputInner<TData extends DataTableData>({
197
207
  defaultRow,
198
208
  emptyMessage,
199
209
  ariaLabel,
210
+ compact,
200
211
  t,
201
212
  }: TableInputInnerProps<TData>) {
213
+ const { knobProps } = useResolvedKnobs({ compact });
214
+ const cellPad = getTableCellPadding(knobProps.space);
215
+ const chromePx = knobProps.nestedControl.px;
216
+ const indexWidth = Math.max(36, chromePx);
217
+ const actionWidth = chromePx + 16;
218
+ const [activeRowId, setActiveRowId] = useState<string | null>(null);
219
+
202
220
  const handleCellChange = useCallback(
203
221
  (rowIndex: number, columnId: string, value: unknown) => {
204
222
  onCellChange?.(rowIndex, columnId, value);
@@ -241,99 +259,91 @@ function TableInputInner<TData extends DataTableData>({
241
259
  );
242
260
 
243
261
  const renderHeader = () => (
244
- <XStack
245
- backgroundColor="$gray3"
246
- borderBottomWidth={1}
247
- borderBottomColor="$borderColor"
248
- paddingVertical="$2"
249
- paddingHorizontal="$2"
250
- >
262
+ <XStack backgroundColor="$color2" {...hairline.bottom} {...cellPad}>
251
263
  {showRowNumbers && (
252
- <View width={40} paddingHorizontal="$1">
253
- <Text fontWeight="600" color="$gray11" fontSize="$2">
264
+ <View width={indexWidth} paddingHorizontal="$1">
265
+ <Text fontWeight="600" color="$color10" fontSize={knobProps.label.fontSize}>
254
266
  #
255
267
  </Text>
256
268
  </View>
257
269
  )}
258
270
  {columns.map((col, index) => (
259
271
  <View key={columnIds[index]} flex={1} paddingHorizontal="$1">
260
- <Text fontWeight="600" color="$gray12" fontSize="$2">
272
+ <Text fontWeight="600" color="$color12" fontSize={knobProps.label.fontSize}>
261
273
  {typeof col.header === "string" ? col.header : columnIds[index]}
262
274
  </Text>
263
275
  </View>
264
276
  ))}
265
- {showDeleteRow && !readOnly && <View width={50} />}
277
+ {showDeleteRow && !readOnly && <View width={actionWidth} />}
266
278
  </XStack>
267
279
  );
268
280
 
269
- const renderRow = ({ item, index }: { item: TData; index: number }) => (
270
- <XStack
271
- borderBottomWidth={1}
272
- borderBottomColor="$borderColor"
273
- paddingVertical="$2"
274
- paddingHorizontal="$2"
275
- backgroundColor={index % 2 === 0 ? "$background" : "$gray2"}
276
- >
277
- {showRowNumbers && (
278
- <View width={40} paddingHorizontal="$1" justifyContent="center">
279
- <Text color="$gray11" fontSize="$2">
280
- {index + 1}
281
- </Text>
282
- </View>
283
- )}
284
- {columns.map((col, colIndex) => {
285
- const columnId = columnIds[colIndex];
286
- const value = item[columnId as keyof TData];
287
- const field = (col.field || "input") as DataTableField;
288
- const fieldProps = col.fieldProps as DataTableFieldProps | undefined;
281
+ const renderRow = ({ item, index }: { item: TData; index: number }) => {
282
+ const rowId = String((item as DataTableData).id ?? index);
283
+ const isActive = activeRowId === rowId;
284
+ return (
285
+ <XStack
286
+ {...hairline.bottom}
287
+ {...cellPad}
288
+ backgroundColor={isActive ? "$color3" : undefined}
289
+ onPressIn={() => setActiveRowId(rowId)}
290
+ >
291
+ {showRowNumbers && (
292
+ <View width={indexWidth} paddingHorizontal="$1" justifyContent="center">
293
+ <Text color="$color10" fontSize={knobProps.label.fontSize}>
294
+ {index + 1}
295
+ </Text>
296
+ </View>
297
+ )}
298
+ {columns.map((col, colIndex) => {
299
+ const columnId = columnIds[colIndex];
300
+ const value = item[columnId as keyof TData];
301
+ const field = (col.field || "input") as DataTableField;
302
+ const fieldProps = col.fieldProps as DataTableFieldProps | undefined;
289
303
 
290
- return (
291
- <View key={columnId} flex={1} paddingHorizontal="$1">
292
- <DataTableCell
293
- value={value}
294
- onChange={(newValue) => handleCellChange(index, columnId, newValue)}
295
- field={field}
296
- fieldProps={fieldProps}
297
- readOnly={readOnly}
298
- columnId={columnId}
299
- columnLabel={typeof col.header === "string" ? col.header : undefined}
300
- rowIndex={index}
301
- rowData={item}
302
- />
304
+ return (
305
+ <View key={columnId} flex={1} paddingHorizontal="$1">
306
+ <DataTableCell
307
+ value={value}
308
+ onChange={(newValue) => handleCellChange(index, columnId, newValue)}
309
+ field={field}
310
+ fieldProps={fieldProps}
311
+ readOnly={readOnly}
312
+ compact={compact}
313
+ columnId={columnId}
314
+ columnLabel={typeof col.header === "string" ? col.header : undefined}
315
+ rowIndex={index}
316
+ rowData={item}
317
+ />
318
+ </View>
319
+ );
320
+ })}
321
+ {showDeleteRow && !readOnly && (
322
+ <View width={actionWidth} justifyContent="center" alignItems="center">
323
+ <Button
324
+ chromeless
325
+ compact={compact}
326
+ onPress={() => handleDeleteRow(index)}
327
+ disabled={!canDelete}
328
+ hitSlop={knobProps.nestedControl.hitSlop}
329
+ aria-label={withInterp(t("Delete row {{row}}", { row: index + 1 }), {
330
+ row: index + 1,
331
+ })}
332
+ >
333
+ <TrashIcon size={16} color="$red10" />
334
+ </Button>
303
335
  </View>
304
- );
305
- })}
306
- {showDeleteRow && !readOnly && (
307
- <View width={50} justifyContent="center" alignItems="center">
308
- <Button
309
- size="$2"
310
- outlined
311
- onPress={() => handleDeleteRow(index)}
312
- disabled={!canDelete}
313
- aria-label={withInterp(t("Delete row {{row}}", { row: index + 1 }), {
314
- row: index + 1,
315
- })}
316
- >
317
- <TrashIcon size={16} color="$red10" />
318
- </Button>
319
- </View>
320
- )}
321
- </XStack>
322
- );
336
+ )}
337
+ </XStack>
338
+ );
339
+ };
323
340
 
324
341
  const renderSkeletonRows = () => (
325
342
  <YStack>
326
343
  {Array.from({ length: SKELETON_ROW_COUNT }, (_, rowIndex) => (
327
- <XStack
328
- key={`skeleton-${rowIndex}`}
329
- borderBottomWidth={1}
330
- borderBottomColor="$borderColor"
331
- paddingVertical="$2"
332
- paddingHorizontal="$2"
333
- alignItems="center"
334
- >
344
+ <XStack key={`skeleton-${rowIndex}`} {...hairline.bottom} {...cellPad} alignItems="center">
335
345
  {showRowNumbers && (
336
- <View width={40} paddingHorizontal="$1">
346
+ <View width={indexWidth} paddingHorizontal="$1">
337
347
  <Skeleton variant="rounded" width={16} height={16} />
338
348
  </View>
339
349
  )}
@@ -342,7 +352,7 @@ function TableInputInner<TData extends DataTableData>({
342
352
  <Skeleton variant="rounded" width="70%" height={16} />
343
353
  </View>
344
354
  ))}
345
- {showDeleteRow && !readOnly && <View width={50} />}
355
+ {showDeleteRow && !readOnly && <View width={actionWidth} />}
346
356
  </XStack>
347
357
  ))}
348
358
  </YStack>
@@ -350,15 +360,15 @@ function TableInputInner<TData extends DataTableData>({
350
360
 
351
361
  const renderEmpty = () => (
352
362
  <View padding="$4" alignItems="center">
353
- <Text color="$gray11">{emptyMessage}</Text>
363
+ <Text color="$color10">{emptyMessage}</Text>
354
364
  </View>
355
365
  );
356
366
 
357
367
  return (
358
368
  <YStack
359
- borderWidth={1}
360
- borderColor="$borderColor"
361
- borderRadius="$2"
369
+ {...knobProps.surface}
370
+ {...knobProps.borderRadiusOuter}
371
+ elevation={knobProps.elevation}
362
372
  overflow="hidden"
363
373
  accessibilityLabel={ariaLabel}
364
374
  aria-busy={skeleton || undefined}
@@ -377,10 +387,10 @@ function TableInputInner<TData extends DataTableData>({
377
387
  />
378
388
  )}
379
389
  {showAddRow && !readOnly && !skeleton && (
380
- <XStack padding="$2" borderTopWidth={1} borderTopColor="$borderColor">
390
+ <XStack {...hairline.top} {...cellPad}>
381
391
  <Button
382
- size="$2"
383
- outlined
392
+ chromeless
393
+ compact={compact}
384
394
  onPress={handleAddRow}
385
395
  disabled={!canAddRow}
386
396
  icon={<PlusIcon size={16} />}