@multiplatform.one/table 6.6.0 → 7.0.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 (506) 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 +3 -2
  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 +33 -12
  7. package/dist/cjs/components/ColumnHeaderFilter/index.native.js.map +1 -1
  8. package/dist/cjs/components/DataTable/DataTableCardControls.native.js +1 -1
  9. package/dist/cjs/components/DataTable/DataTableCardControls.native.js.map +1 -1
  10. package/dist/cjs/components/DataTable/DataTableContext.native.js.map +1 -1
  11. package/dist/cjs/components/DataTable/DataTableDocumentList.cjs +222 -0
  12. package/dist/cjs/components/DataTable/DataTableDocumentList.native.js +237 -0
  13. package/dist/cjs/components/DataTable/DataTableDocumentList.native.js.map +1 -0
  14. package/dist/cjs/components/DataTable/DataTableMobileCards.cjs +5 -2
  15. package/dist/cjs/components/DataTable/DataTableMobileCards.native.js +6 -2
  16. package/dist/cjs/components/DataTable/DataTableMobileCards.native.js.map +1 -1
  17. package/dist/cjs/components/DataTable/DataTableRoot.cjs +92 -41
  18. package/dist/cjs/components/DataTable/DataTableRoot.native.js +104 -50
  19. package/dist/cjs/components/DataTable/DataTableRoot.native.js.map +1 -1
  20. package/dist/cjs/components/DataTable/DataTableStateContext.native.js.map +1 -1
  21. package/dist/cjs/components/DataTable/DataTableVirtualized.cjs +8 -2
  22. package/dist/cjs/components/DataTable/DataTableVirtualized.native.js +9 -3
  23. package/dist/cjs/components/DataTable/DataTableVirtualized.native.js.map +1 -1
  24. package/dist/cjs/components/DataTable/documentListSlots.cjs +59 -0
  25. package/dist/cjs/components/DataTable/documentListSlots.native.js +85 -0
  26. package/dist/cjs/components/DataTable/documentListSlots.native.js.map +1 -0
  27. package/dist/cjs/components/DataTable/index.native.js +84 -69
  28. package/dist/cjs/components/DataTable/index.native.js.map +1 -1
  29. package/dist/cjs/components/DataTable/rowStateChrome.cjs +55 -0
  30. package/dist/cjs/components/DataTable/rowStateChrome.native.js +59 -0
  31. package/dist/cjs/components/DataTable/rowStateChrome.native.js.map +1 -0
  32. package/dist/cjs/components/DataTableBulkActions/index.native.js.map +1 -1
  33. package/dist/cjs/components/DataTableCell/CellModalEditor.cjs +24 -3
  34. package/dist/cjs/components/DataTableCell/CellModalEditor.native.js +6 -1
  35. package/dist/cjs/components/DataTableCell/CellModalEditor.native.js.map +1 -1
  36. package/dist/cjs/components/DataTableCell/CellOptionsEditor.cjs +9 -2
  37. package/dist/cjs/components/DataTableCell/CellOptionsEditor.native.js +11 -2
  38. package/dist/cjs/components/DataTableCell/CellOptionsEditor.native.js.map +1 -1
  39. package/dist/cjs/components/DataTableCell/index.cjs +74 -63
  40. package/dist/cjs/components/DataTableCell/index.native.js +94 -82
  41. package/dist/cjs/components/DataTableCell/index.native.js.map +1 -1
  42. package/dist/cjs/components/DataTableColumnPinning/index.cjs +54 -37
  43. package/dist/cjs/components/DataTableColumnPinning/index.native.js +59 -38
  44. package/dist/cjs/components/DataTableColumnPinning/index.native.js.map +1 -1
  45. package/dist/cjs/components/DataTableDateFilter/index.cjs +33 -14
  46. package/dist/cjs/components/DataTableDateFilter/index.native.js +33 -12
  47. package/dist/cjs/components/DataTableDateFilter/index.native.js.map +1 -1
  48. package/dist/cjs/components/DataTableExport/index.cjs +35 -7
  49. package/dist/cjs/components/DataTableExport/index.native.js +42 -7
  50. package/dist/cjs/components/DataTableExport/index.native.js.map +1 -1
  51. package/dist/cjs/components/DataTableFacetMenu/index.cjs +140 -0
  52. package/dist/cjs/components/DataTableFacetMenu/index.native.js +156 -0
  53. package/dist/cjs/components/DataTableFacetMenu/index.native.js.map +1 -0
  54. package/dist/cjs/components/DataTableFilterButton/index.cjs +51 -32
  55. package/dist/cjs/components/DataTableFilterButton/index.native.js +64 -41
  56. package/dist/cjs/components/DataTableFilterButton/index.native.js.map +1 -1
  57. package/dist/cjs/components/DataTableFilterChips/FilterChip.cjs +143 -0
  58. package/dist/cjs/components/DataTableFilterChips/FilterChip.native.js +148 -0
  59. package/dist/cjs/components/DataTableFilterChips/FilterChip.native.js.map +1 -0
  60. package/dist/cjs/components/DataTableFilterChips/index.cjs +9 -31
  61. package/dist/cjs/components/DataTableFilterChips/index.native.js +9 -32
  62. package/dist/cjs/components/DataTableFilterChips/index.native.js.map +1 -1
  63. package/dist/cjs/components/DataTableFilters/index.cjs +145 -502
  64. package/dist/cjs/components/DataTableFilters/index.native.js +171 -544
  65. package/dist/cjs/components/DataTableFilters/index.native.js.map +1 -1
  66. package/dist/cjs/components/DataTableGrouping/index.cjs +273 -108
  67. package/dist/cjs/components/DataTableGrouping/index.native.js +310 -157
  68. package/dist/cjs/components/DataTableGrouping/index.native.js.map +1 -1
  69. package/dist/cjs/components/DataTablePagination/index.cjs +147 -95
  70. package/dist/cjs/components/DataTablePagination/index.native.js +159 -106
  71. package/dist/cjs/components/DataTablePagination/index.native.js.map +1 -1
  72. package/dist/cjs/components/DataTableSearch/index.cjs +251 -210
  73. package/dist/cjs/components/DataTableSearch/index.native.js +292 -243
  74. package/dist/cjs/components/DataTableSearch/index.native.js.map +1 -1
  75. package/dist/cjs/components/DataTableToolbar/index.cjs +141 -115
  76. package/dist/cjs/components/DataTableToolbar/index.native.js +164 -149
  77. package/dist/cjs/components/DataTableToolbar/index.native.js.map +1 -1
  78. package/dist/cjs/components/DataTableViewOptions/index.cjs +25 -21
  79. package/dist/cjs/components/DataTableViewOptions/index.native.js +6 -4
  80. package/dist/cjs/components/DataTableViewOptions/index.native.js.map +1 -1
  81. package/dist/cjs/components/FilterManager.native.js.map +1 -1
  82. package/dist/cjs/components/FilterOperatorValueEditor/index.native.js.map +1 -1
  83. package/dist/cjs/components/KnobDialog.native.js.map +1 -1
  84. package/dist/cjs/components/SavedFilterDropdown.native.js.map +1 -1
  85. package/dist/cjs/components/SimpleTable/index.cjs +336 -46
  86. package/dist/cjs/components/SimpleTable/index.native.js +356 -48
  87. package/dist/cjs/components/SimpleTable/index.native.js.map +1 -1
  88. package/dist/cjs/components/TableInput/index.cjs +147 -38
  89. package/dist/cjs/components/TableInput/index.native.js +55 -39
  90. package/dist/cjs/components/TableInput/index.native.js.map +1 -1
  91. package/dist/cjs/components/TableInput/shared.cjs +36 -1
  92. package/dist/cjs/components/TableInput/shared.native.js +35 -0
  93. package/dist/cjs/components/TableInput/shared.native.js.map +1 -1
  94. package/dist/cjs/hooks/useDataTable.cjs +33 -2
  95. package/dist/cjs/hooks/useDataTable.native.js +41 -2
  96. package/dist/cjs/hooks/useDataTable.native.js.map +1 -1
  97. package/dist/cjs/hooks/useDataTableKeyboard.native.js.map +1 -1
  98. package/dist/cjs/hooks/useDragScroll.native.js.map +1 -1
  99. package/dist/cjs/hooks/useInfiniteRows.cjs +20 -3
  100. package/dist/cjs/hooks/useInfiniteRows.native.js +20 -3
  101. package/dist/cjs/hooks/useInfiniteRows.native.js.map +1 -1
  102. package/dist/cjs/hooks/useSavedFilters.native.js.map +1 -1
  103. package/dist/cjs/hooks/useTableColumnPinning.native.js.map +1 -1
  104. package/dist/cjs/hooks/useTableFiltering.native.js.map +1 -1
  105. package/dist/cjs/hooks/useTableGrouping.native.js.map +1 -1
  106. package/dist/cjs/hooks/useTableKeyboard.native.js.map +1 -1
  107. package/dist/cjs/hooks/useTablePagination.native.js.map +1 -1
  108. package/dist/cjs/hooks/useTableSearch.native.js.map +1 -1
  109. package/dist/cjs/hooks/useTableSelection.native.js.map +1 -1
  110. package/dist/cjs/hooks/useTableSorting.native.js.map +1 -1
  111. package/dist/cjs/hooks/useTableUrlSync.native.js.map +1 -1
  112. package/dist/cjs/hooks/useTableViews.native.js.map +1 -1
  113. package/dist/cjs/index.cjs +2 -0
  114. package/dist/cjs/index.native.js +2 -0
  115. package/dist/cjs/index.native.js.map +1 -1
  116. package/dist/cjs/shared/t.native.js.map +1 -1
  117. package/dist/cjs/shims/primitives.native.js.map +1 -1
  118. package/dist/cjs/shims/tableCellContext.native.js.map +1 -1
  119. package/dist/cjs/types.native.js.map +1 -1
  120. package/dist/cjs/utils/columnAlign.native.js.map +1 -1
  121. package/dist/cjs/utils/filterFields.native.js.map +1 -1
  122. package/dist/cjs/utils/filterUtils.cjs +12 -5
  123. package/dist/cjs/utils/filterUtils.native.js +20 -5
  124. package/dist/cjs/utils/filterUtils.native.js.map +1 -1
  125. package/dist/cjs/utils/paginationDefaults.native.js.map +1 -1
  126. package/dist/cjs/utils/rowPress.native.js.map +1 -1
  127. package/dist/cjs/utils/urlStateUtils.native.js.map +1 -1
  128. package/dist/cjs/utils/viewData.native.js.map +1 -1
  129. package/dist/cjs/utils/withInterp.native.js.map +1 -1
  130. package/dist/esm/components/ChildTable/index.mjs +2 -1
  131. package/dist/esm/components/ChildTable/index.mjs.map +1 -1
  132. package/dist/esm/components/ChildTable/index.native.js +2 -1
  133. package/dist/esm/components/ChildTable/index.native.js.map +1 -1
  134. package/dist/esm/components/ColumnHeaderFilter/index.mjs +17 -9
  135. package/dist/esm/components/ColumnHeaderFilter/index.mjs.map +1 -1
  136. package/dist/esm/components/ColumnHeaderFilter/index.native.js +32 -11
  137. package/dist/esm/components/ColumnHeaderFilter/index.native.js.map +1 -1
  138. package/dist/esm/components/DataTable/DataTableDocumentList.mjs +196 -0
  139. package/dist/esm/components/DataTable/DataTableDocumentList.mjs.map +1 -0
  140. package/dist/esm/components/DataTable/DataTableDocumentList.native.js +208 -0
  141. package/dist/esm/components/DataTable/DataTableDocumentList.native.js.map +1 -0
  142. package/dist/esm/components/DataTable/DataTableMobileCards.mjs +5 -2
  143. package/dist/esm/components/DataTable/DataTableMobileCards.mjs.map +1 -1
  144. package/dist/esm/components/DataTable/DataTableMobileCards.native.js +6 -2
  145. package/dist/esm/components/DataTable/DataTableMobileCards.native.js.map +1 -1
  146. package/dist/esm/components/DataTable/DataTableRoot.mjs +93 -42
  147. package/dist/esm/components/DataTable/DataTableRoot.mjs.map +1 -1
  148. package/dist/esm/components/DataTable/DataTableRoot.native.js +98 -44
  149. package/dist/esm/components/DataTable/DataTableRoot.native.js.map +1 -1
  150. package/dist/esm/components/DataTable/DataTableVirtualized.mjs +8 -2
  151. package/dist/esm/components/DataTable/DataTableVirtualized.mjs.map +1 -1
  152. package/dist/esm/components/DataTable/DataTableVirtualized.native.js +9 -3
  153. package/dist/esm/components/DataTable/DataTableVirtualized.native.js.map +1 -1
  154. package/dist/esm/components/DataTable/documentListSlots.mjs +33 -0
  155. package/dist/esm/components/DataTable/documentListSlots.mjs.map +1 -0
  156. package/dist/esm/components/DataTable/documentListSlots.native.js +56 -0
  157. package/dist/esm/components/DataTable/documentListSlots.native.js.map +1 -0
  158. package/dist/esm/components/DataTable/index.native.js +52 -37
  159. package/dist/esm/components/DataTable/index.native.js.map +1 -1
  160. package/dist/esm/components/DataTable/rowStateChrome.mjs +28 -0
  161. package/dist/esm/components/DataTable/rowStateChrome.mjs.map +1 -0
  162. package/dist/esm/components/DataTable/rowStateChrome.native.js +29 -0
  163. package/dist/esm/components/DataTable/rowStateChrome.native.js.map +1 -0
  164. package/dist/esm/components/DataTableCell/CellModalEditor.mjs +25 -4
  165. package/dist/esm/components/DataTableCell/CellModalEditor.mjs.map +1 -1
  166. package/dist/esm/components/DataTableCell/CellModalEditor.native.js +6 -1
  167. package/dist/esm/components/DataTableCell/CellModalEditor.native.js.map +1 -1
  168. package/dist/esm/components/DataTableCell/CellOptionsEditor.mjs +9 -2
  169. package/dist/esm/components/DataTableCell/CellOptionsEditor.mjs.map +1 -1
  170. package/dist/esm/components/DataTableCell/CellOptionsEditor.native.js +11 -2
  171. package/dist/esm/components/DataTableCell/CellOptionsEditor.native.js.map +1 -1
  172. package/dist/esm/components/DataTableCell/index.mjs +75 -64
  173. package/dist/esm/components/DataTableCell/index.mjs.map +1 -1
  174. package/dist/esm/components/DataTableCell/index.native.js +95 -83
  175. package/dist/esm/components/DataTableCell/index.native.js.map +1 -1
  176. package/dist/esm/components/DataTableColumnPinning/index.mjs +54 -37
  177. package/dist/esm/components/DataTableColumnPinning/index.mjs.map +1 -1
  178. package/dist/esm/components/DataTableColumnPinning/index.native.js +59 -38
  179. package/dist/esm/components/DataTableColumnPinning/index.native.js.map +1 -1
  180. package/dist/esm/components/DataTableDateFilter/index.mjs +34 -15
  181. package/dist/esm/components/DataTableDateFilter/index.mjs.map +1 -1
  182. package/dist/esm/components/DataTableDateFilter/index.native.js +34 -13
  183. package/dist/esm/components/DataTableDateFilter/index.native.js.map +1 -1
  184. package/dist/esm/components/DataTableExport/index.mjs +36 -8
  185. package/dist/esm/components/DataTableExport/index.mjs.map +1 -1
  186. package/dist/esm/components/DataTableExport/index.native.js +43 -8
  187. package/dist/esm/components/DataTableExport/index.native.js.map +1 -1
  188. package/dist/esm/components/DataTableFacetMenu/index.mjs +115 -0
  189. package/dist/esm/components/DataTableFacetMenu/index.mjs.map +1 -0
  190. package/dist/esm/components/DataTableFacetMenu/index.native.js +128 -0
  191. package/dist/esm/components/DataTableFacetMenu/index.native.js.map +1 -0
  192. package/dist/esm/components/DataTableFilterButton/index.mjs +54 -35
  193. package/dist/esm/components/DataTableFilterButton/index.mjs.map +1 -1
  194. package/dist/esm/components/DataTableFilterButton/index.native.js +66 -43
  195. package/dist/esm/components/DataTableFilterButton/index.native.js.map +1 -1
  196. package/dist/esm/components/DataTableFilterChips/FilterChip.mjs +118 -0
  197. package/dist/esm/components/DataTableFilterChips/FilterChip.mjs.map +1 -0
  198. package/dist/esm/components/DataTableFilterChips/FilterChip.native.js +120 -0
  199. package/dist/esm/components/DataTableFilterChips/FilterChip.native.js.map +1 -0
  200. package/dist/esm/components/DataTableFilterChips/index.mjs +9 -32
  201. package/dist/esm/components/DataTableFilterChips/index.mjs.map +1 -1
  202. package/dist/esm/components/DataTableFilterChips/index.native.js +9 -33
  203. package/dist/esm/components/DataTableFilterChips/index.native.js.map +1 -1
  204. package/dist/esm/components/DataTableFilters/index.mjs +149 -506
  205. package/dist/esm/components/DataTableFilters/index.mjs.map +1 -1
  206. package/dist/esm/components/DataTableFilters/index.native.js +175 -548
  207. package/dist/esm/components/DataTableFilters/index.native.js.map +1 -1
  208. package/dist/esm/components/DataTableGrouping/index.mjs +275 -110
  209. package/dist/esm/components/DataTableGrouping/index.mjs.map +1 -1
  210. package/dist/esm/components/DataTableGrouping/index.native.js +287 -134
  211. package/dist/esm/components/DataTableGrouping/index.native.js.map +1 -1
  212. package/dist/esm/components/DataTablePagination/index.mjs +148 -96
  213. package/dist/esm/components/DataTablePagination/index.mjs.map +1 -1
  214. package/dist/esm/components/DataTablePagination/index.native.js +160 -107
  215. package/dist/esm/components/DataTablePagination/index.native.js.map +1 -1
  216. package/dist/esm/components/DataTableSearch/index.mjs +256 -215
  217. package/dist/esm/components/DataTableSearch/index.mjs.map +1 -1
  218. package/dist/esm/components/DataTableSearch/index.native.js +297 -248
  219. package/dist/esm/components/DataTableSearch/index.native.js.map +1 -1
  220. package/dist/esm/components/DataTableToolbar/index.mjs +145 -119
  221. package/dist/esm/components/DataTableToolbar/index.mjs.map +1 -1
  222. package/dist/esm/components/DataTableToolbar/index.native.js +167 -152
  223. package/dist/esm/components/DataTableToolbar/index.native.js.map +1 -1
  224. package/dist/esm/components/DataTableViewOptions/index.mjs +26 -22
  225. package/dist/esm/components/DataTableViewOptions/index.mjs.map +1 -1
  226. package/dist/esm/components/DataTableViewOptions/index.native.js +7 -5
  227. package/dist/esm/components/DataTableViewOptions/index.native.js.map +1 -1
  228. package/dist/esm/components/SimpleTable/index.mjs +338 -48
  229. package/dist/esm/components/SimpleTable/index.mjs.map +1 -1
  230. package/dist/esm/components/SimpleTable/index.native.js +358 -50
  231. package/dist/esm/components/SimpleTable/index.native.js.map +1 -1
  232. package/dist/esm/components/TableInput/index.mjs +150 -41
  233. package/dist/esm/components/TableInput/index.mjs.map +1 -1
  234. package/dist/esm/components/TableInput/index.native.js +55 -39
  235. package/dist/esm/components/TableInput/index.native.js.map +1 -1
  236. package/dist/esm/components/TableInput/shared.mjs +34 -1
  237. package/dist/esm/components/TableInput/shared.mjs.map +1 -1
  238. package/dist/esm/components/TableInput/shared.native.js +34 -1
  239. package/dist/esm/components/TableInput/shared.native.js.map +1 -1
  240. package/dist/esm/hooks/useDataTable.mjs +33 -2
  241. package/dist/esm/hooks/useDataTable.mjs.map +1 -1
  242. package/dist/esm/hooks/useDataTable.native.js +41 -2
  243. package/dist/esm/hooks/useDataTable.native.js.map +1 -1
  244. package/dist/esm/hooks/useInfiniteRows.mjs +20 -3
  245. package/dist/esm/hooks/useInfiniteRows.mjs.map +1 -1
  246. package/dist/esm/hooks/useInfiniteRows.native.js +20 -3
  247. package/dist/esm/hooks/useInfiniteRows.native.js.map +1 -1
  248. package/dist/esm/index.mjs +2 -1
  249. package/dist/esm/index.mjs.map +1 -1
  250. package/dist/esm/index.native.js +2 -1
  251. package/dist/esm/index.native.js.map +1 -1
  252. package/dist/esm/utils/filterUtils.mjs +12 -5
  253. package/dist/esm/utils/filterUtils.mjs.map +1 -1
  254. package/dist/esm/utils/filterUtils.native.js +20 -5
  255. package/dist/esm/utils/filterUtils.native.js.map +1 -1
  256. package/dist/jsx/components/ChildTable/index.mjs +2 -1
  257. package/dist/jsx/components/ChildTable/index.mjs.map +1 -1
  258. package/dist/jsx/components/ChildTable/index.native.js +2 -1
  259. package/dist/jsx/components/ChildTable/index.native.js.map +1 -1
  260. package/dist/jsx/components/ColumnHeaderFilter/index.mjs +17 -9
  261. package/dist/jsx/components/ColumnHeaderFilter/index.mjs.map +1 -1
  262. package/dist/jsx/components/ColumnHeaderFilter/index.native.js +32 -11
  263. package/dist/jsx/components/ColumnHeaderFilter/index.native.js.map +1 -1
  264. package/dist/jsx/components/DataTable/DataTableDocumentList.mjs +196 -0
  265. package/dist/jsx/components/DataTable/DataTableDocumentList.mjs.map +1 -0
  266. package/dist/jsx/components/DataTable/DataTableDocumentList.native.js +237 -0
  267. package/dist/jsx/components/DataTable/DataTableDocumentList.native.js.map +1 -0
  268. package/dist/jsx/components/DataTable/DataTableMobileCards.mjs +5 -2
  269. package/dist/jsx/components/DataTable/DataTableMobileCards.mjs.map +1 -1
  270. package/dist/jsx/components/DataTable/DataTableMobileCards.native.js +6 -2
  271. package/dist/jsx/components/DataTable/DataTableMobileCards.native.js.map +1 -1
  272. package/dist/jsx/components/DataTable/DataTableRoot.mjs +93 -42
  273. package/dist/jsx/components/DataTable/DataTableRoot.mjs.map +1 -1
  274. package/dist/jsx/components/DataTable/DataTableRoot.native.js +97 -43
  275. package/dist/jsx/components/DataTable/DataTableRoot.native.js.map +1 -1
  276. package/dist/jsx/components/DataTable/DataTableVirtualized.mjs +8 -2
  277. package/dist/jsx/components/DataTable/DataTableVirtualized.mjs.map +1 -1
  278. package/dist/jsx/components/DataTable/DataTableVirtualized.native.js +9 -3
  279. package/dist/jsx/components/DataTable/DataTableVirtualized.native.js.map +1 -1
  280. package/dist/jsx/components/DataTable/documentListSlots.mjs +33 -0
  281. package/dist/jsx/components/DataTable/documentListSlots.mjs.map +1 -0
  282. package/dist/jsx/components/DataTable/documentListSlots.native.js +85 -0
  283. package/dist/jsx/components/DataTable/documentListSlots.native.js.map +1 -0
  284. package/dist/jsx/components/DataTable/index.native.js +74 -59
  285. package/dist/jsx/components/DataTable/index.native.js.map +1 -1
  286. package/dist/jsx/components/DataTable/rowStateChrome.mjs +28 -0
  287. package/dist/jsx/components/DataTable/rowStateChrome.mjs.map +1 -0
  288. package/dist/jsx/components/DataTable/rowStateChrome.native.js +59 -0
  289. package/dist/jsx/components/DataTable/rowStateChrome.native.js.map +1 -0
  290. package/dist/jsx/components/DataTableCell/CellModalEditor.mjs +25 -4
  291. package/dist/jsx/components/DataTableCell/CellModalEditor.mjs.map +1 -1
  292. package/dist/jsx/components/DataTableCell/CellModalEditor.native.js +6 -1
  293. package/dist/jsx/components/DataTableCell/CellModalEditor.native.js.map +1 -1
  294. package/dist/jsx/components/DataTableCell/CellOptionsEditor.mjs +9 -2
  295. package/dist/jsx/components/DataTableCell/CellOptionsEditor.mjs.map +1 -1
  296. package/dist/jsx/components/DataTableCell/CellOptionsEditor.native.js +11 -2
  297. package/dist/jsx/components/DataTableCell/CellOptionsEditor.native.js.map +1 -1
  298. package/dist/jsx/components/DataTableCell/index.mjs +75 -64
  299. package/dist/jsx/components/DataTableCell/index.mjs.map +1 -1
  300. package/dist/jsx/components/DataTableCell/index.native.js +94 -82
  301. package/dist/jsx/components/DataTableCell/index.native.js.map +1 -1
  302. package/dist/jsx/components/DataTableColumnPinning/index.mjs +54 -37
  303. package/dist/jsx/components/DataTableColumnPinning/index.mjs.map +1 -1
  304. package/dist/jsx/components/DataTableColumnPinning/index.native.js +59 -38
  305. package/dist/jsx/components/DataTableColumnPinning/index.native.js.map +1 -1
  306. package/dist/jsx/components/DataTableDateFilter/index.mjs +34 -15
  307. package/dist/jsx/components/DataTableDateFilter/index.mjs.map +1 -1
  308. package/dist/jsx/components/DataTableDateFilter/index.native.js +33 -12
  309. package/dist/jsx/components/DataTableDateFilter/index.native.js.map +1 -1
  310. package/dist/jsx/components/DataTableExport/index.mjs +36 -8
  311. package/dist/jsx/components/DataTableExport/index.mjs.map +1 -1
  312. package/dist/jsx/components/DataTableExport/index.native.js +42 -7
  313. package/dist/jsx/components/DataTableExport/index.native.js.map +1 -1
  314. package/dist/jsx/components/DataTableFacetMenu/index.mjs +115 -0
  315. package/dist/jsx/components/DataTableFacetMenu/index.mjs.map +1 -0
  316. package/dist/jsx/components/DataTableFacetMenu/index.native.js +156 -0
  317. package/dist/jsx/components/DataTableFacetMenu/index.native.js.map +1 -0
  318. package/dist/jsx/components/DataTableFilterButton/index.mjs +54 -35
  319. package/dist/jsx/components/DataTableFilterButton/index.mjs.map +1 -1
  320. package/dist/jsx/components/DataTableFilterButton/index.native.js +63 -40
  321. package/dist/jsx/components/DataTableFilterButton/index.native.js.map +1 -1
  322. package/dist/jsx/components/DataTableFilterChips/FilterChip.mjs +118 -0
  323. package/dist/jsx/components/DataTableFilterChips/FilterChip.mjs.map +1 -0
  324. package/dist/jsx/components/DataTableFilterChips/FilterChip.native.js +148 -0
  325. package/dist/jsx/components/DataTableFilterChips/FilterChip.native.js.map +1 -0
  326. package/dist/jsx/components/DataTableFilterChips/index.mjs +9 -32
  327. package/dist/jsx/components/DataTableFilterChips/index.mjs.map +1 -1
  328. package/dist/jsx/components/DataTableFilterChips/index.native.js +9 -32
  329. package/dist/jsx/components/DataTableFilterChips/index.native.js.map +1 -1
  330. package/dist/jsx/components/DataTableFilters/index.mjs +149 -506
  331. package/dist/jsx/components/DataTableFilters/index.mjs.map +1 -1
  332. package/dist/jsx/components/DataTableFilters/index.native.js +171 -544
  333. package/dist/jsx/components/DataTableFilters/index.native.js.map +1 -1
  334. package/dist/jsx/components/DataTableGrouping/index.mjs +275 -110
  335. package/dist/jsx/components/DataTableGrouping/index.mjs.map +1 -1
  336. package/dist/jsx/components/DataTableGrouping/index.native.js +310 -157
  337. package/dist/jsx/components/DataTableGrouping/index.native.js.map +1 -1
  338. package/dist/jsx/components/DataTablePagination/index.mjs +148 -96
  339. package/dist/jsx/components/DataTablePagination/index.mjs.map +1 -1
  340. package/dist/jsx/components/DataTablePagination/index.native.js +159 -106
  341. package/dist/jsx/components/DataTablePagination/index.native.js.map +1 -1
  342. package/dist/jsx/components/DataTableSearch/index.mjs +256 -215
  343. package/dist/jsx/components/DataTableSearch/index.mjs.map +1 -1
  344. package/dist/jsx/components/DataTableSearch/index.native.js +292 -243
  345. package/dist/jsx/components/DataTableSearch/index.native.js.map +1 -1
  346. package/dist/jsx/components/DataTableToolbar/index.mjs +145 -119
  347. package/dist/jsx/components/DataTableToolbar/index.mjs.map +1 -1
  348. package/dist/jsx/components/DataTableToolbar/index.native.js +163 -148
  349. package/dist/jsx/components/DataTableToolbar/index.native.js.map +1 -1
  350. package/dist/jsx/components/DataTableViewOptions/index.mjs +26 -22
  351. package/dist/jsx/components/DataTableViewOptions/index.mjs.map +1 -1
  352. package/dist/jsx/components/DataTableViewOptions/index.native.js +6 -4
  353. package/dist/jsx/components/DataTableViewOptions/index.native.js.map +1 -1
  354. package/dist/jsx/components/SimpleTable/index.mjs +338 -48
  355. package/dist/jsx/components/SimpleTable/index.mjs.map +1 -1
  356. package/dist/jsx/components/SimpleTable/index.native.js +356 -48
  357. package/dist/jsx/components/SimpleTable/index.native.js.map +1 -1
  358. package/dist/jsx/components/TableInput/index.mjs +150 -41
  359. package/dist/jsx/components/TableInput/index.mjs.map +1 -1
  360. package/dist/jsx/components/TableInput/index.native.js +54 -38
  361. package/dist/jsx/components/TableInput/index.native.js.map +1 -1
  362. package/dist/jsx/components/TableInput/shared.mjs +34 -1
  363. package/dist/jsx/components/TableInput/shared.mjs.map +1 -1
  364. package/dist/jsx/components/TableInput/shared.native.js +35 -0
  365. package/dist/jsx/components/TableInput/shared.native.js.map +1 -1
  366. package/dist/jsx/hooks/useDataTable.mjs +33 -2
  367. package/dist/jsx/hooks/useDataTable.mjs.map +1 -1
  368. package/dist/jsx/hooks/useDataTable.native.js +41 -2
  369. package/dist/jsx/hooks/useDataTable.native.js.map +1 -1
  370. package/dist/jsx/hooks/useInfiniteRows.mjs +20 -3
  371. package/dist/jsx/hooks/useInfiniteRows.mjs.map +1 -1
  372. package/dist/jsx/hooks/useInfiniteRows.native.js +20 -3
  373. package/dist/jsx/hooks/useInfiniteRows.native.js.map +1 -1
  374. package/dist/jsx/index.js +2 -1
  375. package/dist/jsx/index.js.map +1 -1
  376. package/dist/jsx/index.mjs +2 -1
  377. package/dist/jsx/index.mjs.map +1 -1
  378. package/dist/jsx/index.native.js +2 -0
  379. package/dist/jsx/index.native.js.map +1 -1
  380. package/dist/jsx/utils/filterUtils.mjs +12 -5
  381. package/dist/jsx/utils/filterUtils.mjs.map +1 -1
  382. package/dist/jsx/utils/filterUtils.native.js +20 -5
  383. package/dist/jsx/utils/filterUtils.native.js.map +1 -1
  384. package/package.json +16 -16
  385. package/src/components/ChildTable/index.tsx +1 -0
  386. package/src/components/ColumnHeaderFilter/ColumnHeaderFilter.spec.tsx +85 -0
  387. package/src/components/ColumnHeaderFilter/index.tsx +28 -10
  388. package/src/components/DataTable/DataTable.stories.tsx +30 -0
  389. package/src/components/DataTable/DataTableDocumentList.tsx +224 -0
  390. package/src/components/DataTable/DataTableMobileCards.tsx +20 -8
  391. package/src/components/DataTable/DataTableRoot.tsx +135 -58
  392. package/src/components/DataTable/DataTableVirtualized.tsx +8 -11
  393. package/src/components/DataTable/cardLayout.spec.tsx +89 -0
  394. package/src/components/DataTable/documentListSlots.ts +57 -0
  395. package/src/components/DataTable/index.native.tsx +76 -50
  396. package/src/components/DataTable/keepPreviousData.spec.tsx +137 -0
  397. package/src/components/DataTable/rowRing.spec.tsx +118 -0
  398. package/src/components/DataTable/rowStateChrome.ts +38 -0
  399. package/src/components/DataTableCell/CellModalEditor.native.tsx +4 -0
  400. package/src/components/DataTableCell/CellModalEditor.tsx +31 -3
  401. package/src/components/DataTableCell/CellOptionsEditor.tsx +29 -12
  402. package/src/components/DataTableCell/DataTableCell.stories.tsx +3 -3
  403. package/src/components/DataTableCell/cellDraftPolicy.spec.tsx +131 -4
  404. package/src/components/DataTableCell/dataTableCell.spec.tsx +36 -1
  405. package/src/components/DataTableCell/index.tsx +121 -86
  406. package/src/components/DataTableColumnPinning/DataTableColumnPinning.spec.tsx +66 -0
  407. package/src/components/DataTableColumnPinning/index.tsx +32 -17
  408. package/src/components/DataTableDateFilter/DataTableDateFilter.spec.tsx +9 -1
  409. package/src/components/DataTableDateFilter/dateFilterZones.spec.ts +316 -0
  410. package/src/components/DataTableDateFilter/index.tsx +42 -22
  411. package/src/components/DataTableExport/exportDateZones.spec.tsx +348 -0
  412. package/src/components/DataTableExport/index.tsx +107 -63
  413. package/src/components/DataTableFacetMenu/DataTableFacetMenu.spec.tsx +264 -0
  414. package/src/components/DataTableFacetMenu/DataTableFacetMenu.stories.tsx +212 -0
  415. package/src/components/DataTableFacetMenu/index.tsx +202 -0
  416. package/src/components/DataTableFilterButton/index.tsx +66 -49
  417. package/src/components/DataTableFilterChips/DataTableFilterChips.spec.tsx +22 -0
  418. package/src/components/DataTableFilterChips/FilterChip.tsx +122 -0
  419. package/src/components/DataTableFilterChips/index.tsx +13 -29
  420. package/src/components/DataTableFilters/DataTableFilters.spec.tsx +56 -0
  421. package/src/components/DataTableFilters/index.tsx +169 -584
  422. package/src/components/DataTableGrouping/DataTableGrouping.spec.tsx +85 -0
  423. package/src/components/DataTableGrouping/index.tsx +270 -130
  424. package/src/components/DataTablePagination/DataTablePagination.spec.tsx +79 -4
  425. package/src/components/DataTablePagination/index.tsx +168 -112
  426. package/src/components/DataTableSearch/DataTableSearch.spec.tsx +40 -0
  427. package/src/components/DataTableSearch/DataTableSearch.stories.tsx +1 -1
  428. package/src/components/DataTableSearch/index.tsx +192 -163
  429. package/src/components/DataTableToolbar/DataTableToolbar.spec.tsx +48 -18
  430. package/src/components/DataTableToolbar/DataTableToolbar.stories.tsx +5 -45
  431. package/src/components/DataTableToolbar/index.tsx +128 -99
  432. package/src/components/DataTableViewOptions/index.tsx +29 -22
  433. package/src/components/SimpleTable/SimpleTable.stories.tsx +29 -5
  434. package/src/components/SimpleTable/index.tsx +442 -61
  435. package/src/components/SimpleTable/simpleTable.spec.tsx +140 -12
  436. package/src/components/TableInput/index.native.tsx +91 -81
  437. package/src/components/TableInput/index.tsx +191 -50
  438. package/src/components/TableInput/shared.ts +57 -0
  439. package/src/components/TableInput/tableInput.spec.tsx +104 -0
  440. package/src/hooks/useDataTable.spec.ts +100 -3
  441. package/src/hooks/useDataTable.ts +44 -1
  442. package/src/hooks/useInfiniteRows.spec.tsx +37 -0
  443. package/src/hooks/useInfiniteRows.ts +34 -4
  444. package/src/index.ts +7 -0
  445. package/src/types.ts +54 -3
  446. package/src/utils/filterUtils.ts +27 -5
  447. package/types/components/ChildTable/index.d.ts.map +1 -1
  448. package/types/components/ColumnHeaderFilter/index.d.ts.map +1 -1
  449. package/types/components/DataTable/DataTableDocumentList.d.ts +32 -0
  450. package/types/components/DataTable/DataTableDocumentList.d.ts.map +1 -0
  451. package/types/components/DataTable/DataTableMobileCards.d.ts +3 -1
  452. package/types/components/DataTable/DataTableMobileCards.d.ts.map +1 -1
  453. package/types/components/DataTable/DataTableRoot.d.ts +1 -1
  454. package/types/components/DataTable/DataTableRoot.d.ts.map +1 -1
  455. package/types/components/DataTable/DataTableVirtualized.d.ts +1 -2
  456. package/types/components/DataTable/DataTableVirtualized.d.ts.map +1 -1
  457. package/types/components/DataTable/documentListSlots.d.ts +26 -0
  458. package/types/components/DataTable/documentListSlots.d.ts.map +1 -0
  459. package/types/components/DataTable/index.native.d.ts +1 -1
  460. package/types/components/DataTable/index.native.d.ts.map +1 -1
  461. package/types/components/DataTable/rowStateChrome.d.ts +18 -0
  462. package/types/components/DataTable/rowStateChrome.d.ts.map +1 -0
  463. package/types/components/DataTableCell/CellModalEditor.d.ts +6 -1
  464. package/types/components/DataTableCell/CellModalEditor.d.ts.map +1 -1
  465. package/types/components/DataTableCell/CellModalEditor.native.d.ts +1 -1
  466. package/types/components/DataTableCell/CellModalEditor.native.d.ts.map +1 -1
  467. package/types/components/DataTableCell/CellOptionsEditor.d.ts +11 -3
  468. package/types/components/DataTableCell/CellOptionsEditor.d.ts.map +1 -1
  469. package/types/components/DataTableCell/index.d.ts +1 -1
  470. package/types/components/DataTableCell/index.d.ts.map +1 -1
  471. package/types/components/DataTableColumnPinning/index.d.ts.map +1 -1
  472. package/types/components/DataTableDateFilter/index.d.ts.map +1 -1
  473. package/types/components/DataTableExport/index.d.ts +17 -6
  474. package/types/components/DataTableExport/index.d.ts.map +1 -1
  475. package/types/components/DataTableFacetMenu/index.d.ts +84 -0
  476. package/types/components/DataTableFacetMenu/index.d.ts.map +1 -0
  477. package/types/components/DataTableFilterButton/index.d.ts.map +1 -1
  478. package/types/components/DataTableFilterChips/FilterChip.d.ts +15 -0
  479. package/types/components/DataTableFilterChips/FilterChip.d.ts.map +1 -0
  480. package/types/components/DataTableFilterChips/index.d.ts +5 -0
  481. package/types/components/DataTableFilterChips/index.d.ts.map +1 -1
  482. package/types/components/DataTableFilters/index.d.ts +11 -0
  483. package/types/components/DataTableFilters/index.d.ts.map +1 -1
  484. package/types/components/DataTableGrouping/index.d.ts.map +1 -1
  485. package/types/components/DataTablePagination/index.d.ts +5 -0
  486. package/types/components/DataTablePagination/index.d.ts.map +1 -1
  487. package/types/components/DataTableSearch/index.d.ts.map +1 -1
  488. package/types/components/DataTableToolbar/index.d.ts +2 -0
  489. package/types/components/DataTableToolbar/index.d.ts.map +1 -1
  490. package/types/components/SimpleTable/index.d.ts +27 -5
  491. package/types/components/SimpleTable/index.d.ts.map +1 -1
  492. package/types/components/TableInput/index.d.ts +6 -1
  493. package/types/components/TableInput/index.d.ts.map +1 -1
  494. package/types/components/TableInput/index.native.d.ts +6 -1
  495. package/types/components/TableInput/index.native.d.ts.map +1 -1
  496. package/types/components/TableInput/shared.d.ts +38 -0
  497. package/types/components/TableInput/shared.d.ts.map +1 -1
  498. package/types/hooks/useDataTable.d.ts +1 -1
  499. package/types/hooks/useDataTable.d.ts.map +1 -1
  500. package/types/hooks/useInfiniteRows.d.ts +8 -1
  501. package/types/hooks/useInfiniteRows.d.ts.map +1 -1
  502. package/types/index.d.ts +1 -0
  503. package/types/index.d.ts.map +1 -1
  504. package/types/types.d.ts +54 -3
  505. package/types/types.d.ts.map +1 -1
  506. package/types/utils/filterUtils.d.ts.map +1 -1
@@ -8,8 +8,10 @@
8
8
  * label; pressing it opens a forms FloatingPanel — an anchored popover with
9
9
  * collision handling on desktop web, a bottom sheet on native and small
10
10
  * viewports — with the full option list, seeded at the cell's current value
11
- * (Axiom 11). A pick commits immediately and closes (LC-21 COMMIT class: one
12
- * value completes the contract); Escape / outside click just dismiss.
11
+ * (Axiom 11). COMMIT-class groups (`dismissOnPick`, default) close on a pick,
12
+ * including re-picking the current value; COMPOSE-class groups (multi-select
13
+ * toggles) stay open until Escape / outside click. The face is a keyboard
14
+ * stop; the ring lives on the parent cell chrome (LC-71), not this node.
13
15
  */
14
16
 
15
17
  import { FieldDisplay, FloatingPanel, type FieldDisplayType } from "@multiplatform.one/forms";
@@ -24,6 +26,12 @@ export interface CellOptionsEditorProps {
24
26
  disabled?: boolean;
25
27
  /** Accessible name for the chromeless cell trigger (column header). */
26
28
  label?: string;
29
+ /**
30
+ * LC-21 COMMIT class (default): a pick — including re-picking the current
31
+ * value — dismisses the panel. Set false for COMPOSE class (multi-select
32
+ * toggles stay open so several options can be composed).
33
+ */
34
+ dismissOnPick?: boolean;
27
35
  /**
28
36
  * Option-group editor rendered inside the panel. `close` dismisses the
29
37
  * panel — call it after committing a pick (COMMIT-class dismissal).
@@ -37,6 +45,7 @@ export function CellOptionsEditor({
37
45
  fieldProps,
38
46
  disabled,
39
47
  label,
48
+ dismissOnPick = true,
40
49
  children,
41
50
  }: CellOptionsEditorProps) {
42
51
  const [open, setOpen] = useState(false);
@@ -50,6 +59,10 @@ export function CellOptionsEditor({
50
59
  paddingVertical="$1"
51
60
  borderRadius="$2"
52
61
  opacity={disabled ? 0.5 : 1}
62
+ // LC-71: the parent CellWrapper paints the one ring; this face must
63
+ // not add a second outline on keyboard focus.
64
+ outlineWidth={0}
65
+ focusVisibleStyle={{ outlineWidth: 0 }}
53
66
  {...(!disabled
54
67
  ? {
55
68
  role: "button" as any,
@@ -68,16 +81,20 @@ export function CellOptionsEditor({
68
81
  if (disabled) return face;
69
82
 
70
83
  // LC-21 COMMIT class: picking IS the exit — including re-picking the
71
- // already-selected option, which fires no onValueChange (Tamagui radio
72
- // emits only on change), so the changed-pick close() alone would strand
73
- // the panel open. Deferred so the option's own press/commit runs first.
74
- const handlePanelPointerUp = isWeb
75
- ? (event: { target?: unknown }) => {
76
- const target = event?.target as { closest?: (sel: string) => unknown } | null;
77
- if (!target?.closest?.('[role="radio"], label')) return;
78
- setTimeout(() => setOpen(false), 0);
79
- }
80
- : undefined;
84
+ // already-selected option, which fires no onValueChange (Tamagui radio /
85
+ // single ToggleGroup emit only on change), so the changed-pick close()
86
+ // alone would strand the panel open. Deferred so the option's own
87
+ // press/commit runs first. COMPOSE class skips this (panel stays open).
88
+ const handlePanelPointerUp =
89
+ isWeb && dismissOnPick
90
+ ? (event: { target?: unknown }) => {
91
+ const target = event?.target as { closest?: (sel: string) => unknown } | null;
92
+ if (!target?.closest?.('[role="radio"], [role="checkbox"], [aria-pressed], label')) {
93
+ return;
94
+ }
95
+ setTimeout(() => setOpen(false), 0);
96
+ }
97
+ : undefined;
81
98
 
82
99
  return (
83
100
  <FloatingPanel open={open} onOpenChange={setOpen} fitContent trigger={face}>
@@ -2,9 +2,9 @@
2
2
  * DataTableCell — per-field-type cell stories.
3
3
  *
4
4
  * Contract: every cell hosts any field; each field has a read (FieldDisplay)
5
- * and an edit rendering; edits too big for the cell open in a modal editor
6
- * (CellModalEditor). DataTableCell is standalone — value/onChange, no
7
- * DataTable context required.
5
+ * and an edit rendering; edits too big for the cell open in a popover (option
6
+ * groups) or modal editor (CellModalEditor) so the row never grows (LC-06).
7
+ * DataTableCell is standalone — value/onChange, no DataTable context required.
8
8
  *
9
9
  * Each *Field story renders the SAME state in edit mode and read mode inside
10
10
  * real table-primitive cells, and echoes the committed value (testID
@@ -95,8 +95,41 @@ function MockTextArea({ value, onChangeText }: any) {
95
95
  );
96
96
  }
97
97
 
98
- /** Options render as one role=radio button per option (mirrors the real
99
- * anatomy: onValueChange fires only when the value CHANGES). */
98
+ /** Options render as toggle buttons with aria-pressed (mirrors Tamagui
99
+ * ToggleGroup items: single type emits only on change). */
100
+ function MockToggleGroup({ value, onValueChange, options, type }: any) {
101
+ const selected = type === "multiple" ? (Array.isArray(value) ? value : []) : value;
102
+ return (
103
+ <div data-testid="toggle-group" data-value={JSON.stringify(selected)}>
104
+ {(options ?? []).map((option: any) => {
105
+ const pressed =
106
+ type === "multiple"
107
+ ? (selected as string[]).includes(option.value)
108
+ : option.value === selected;
109
+ return (
110
+ <button
111
+ key={option.value}
112
+ type="button"
113
+ aria-pressed={pressed}
114
+ data-testid={`toggle-${option.value}`}
115
+ onClick={() => {
116
+ if (type === "multiple") {
117
+ const next = pressed
118
+ ? (selected as string[]).filter((v) => v !== option.value)
119
+ : [...(selected as string[]), option.value];
120
+ onValueChange?.(next);
121
+ return;
122
+ }
123
+ if (option.value !== selected) onValueChange?.(option.value);
124
+ }}
125
+ >
126
+ {option.label}
127
+ </button>
128
+ );
129
+ })}
130
+ </div>
131
+ );
132
+ }
100
133
  function MockRadioGroup({ value, onValueChange, options }: any) {
101
134
  return (
102
135
  <div data-testid="radio-group" data-value={String(value ?? "")}>
@@ -203,7 +236,7 @@ vi.mock("@multiplatform.one/forms", async (importOriginal) => ({
203
236
  Progress: createMock("Progress"),
204
237
  RadioGroup: MockRadioGroup,
205
238
  FloatingPanel: MockFloatingPanel,
206
- ToggleGroup: createMock("ToggleGroup"),
239
+ ToggleGroup: MockToggleGroup,
207
240
  DatePicker: createMock("DatePicker"),
208
241
  DatetimePicker: createMock("DatetimePicker"),
209
242
  TimePicker: createMock("TimePicker"),
@@ -257,7 +290,7 @@ vi.mock("@multiplatform.one/theme", async (importOriginal) => ({
257
290
  outlineWidth: 2,
258
291
  outlineStyle: "solid",
259
292
  outlineColor: "$outlineColor",
260
- outlineOffset: 2,
293
+ outlineOffset: -2,
261
294
  },
262
295
  },
263
296
  }),
@@ -644,3 +677,97 @@ describe("DataTableCell radiogroup — options escape the anchor", () => {
644
677
  expect(onChange).not.toHaveBeenCalled();
645
678
  });
646
679
  });
680
+
681
+ describe("DataTableCell togglegroup — options escape the anchor", () => {
682
+ const options = [
683
+ { label: "Bold", value: "bold" },
684
+ { label: "Italic", value: "italic" },
685
+ { label: "Underline", value: "underline" },
686
+ ];
687
+
688
+ it("renders a compact face; options only mount in the panel after click", async () => {
689
+ const onChange = vi.fn();
690
+ const { getByTestId, queryByTestId } = renderCell({
691
+ field: "togglegroup",
692
+ value: "bold",
693
+ fieldProps: { options },
694
+ onChange,
695
+ });
696
+
697
+ expect(queryByTestId("toggle-group")).toBeNull();
698
+ expect(getByTestId("mock-FieldDisplay").getAttribute("data-field")).toBe("togglegroup");
699
+
700
+ fireEvent.click(getByTestId("floating-panel-trigger"));
701
+ await waitFor(() => expect(queryByTestId("toggle-group")).not.toBeNull());
702
+ expect(getByTestId("toggle-group").getAttribute("data-value")).toBe(JSON.stringify("bold"));
703
+ });
704
+
705
+ it("a single pick commits immediately and closes the panel (LC-21 COMMIT)", async () => {
706
+ const onChange = vi.fn();
707
+ const { getByTestId, queryByTestId } = renderCell({
708
+ field: "togglegroup",
709
+ value: "bold",
710
+ fieldProps: { options },
711
+ onChange,
712
+ });
713
+
714
+ fireEvent.click(getByTestId("floating-panel-trigger"));
715
+ await waitFor(() => expect(queryByTestId("toggle-group")).not.toBeNull());
716
+
717
+ fireEvent.click(getByTestId("toggle-italic"));
718
+ expect(onChange).toHaveBeenCalledTimes(1);
719
+ expect(onChange).toHaveBeenCalledWith("italic");
720
+ await waitFor(() => expect(queryByTestId("toggle-group")).toBeNull());
721
+ });
722
+
723
+ it("multi-select stays open so options can be composed (LC-21 COMPOSE)", async () => {
724
+ const onChange = vi.fn();
725
+ const { getByTestId, queryByTestId } = renderCell({
726
+ field: "togglegroup",
727
+ value: ["bold"],
728
+ fieldProps: { options, allowMultiple: true },
729
+ onChange,
730
+ });
731
+
732
+ fireEvent.click(getByTestId("floating-panel-trigger"));
733
+ await waitFor(() => expect(queryByTestId("toggle-group")).not.toBeNull());
734
+
735
+ fireEvent.click(getByTestId("toggle-italic"));
736
+ expect(onChange).toHaveBeenCalledWith(["bold", "italic"]);
737
+ expect(queryByTestId("toggle-group")).not.toBeNull();
738
+
739
+ fireEvent.pointerUp(getByTestId("toggle-italic"));
740
+ expect(queryByTestId("toggle-group")).not.toBeNull();
741
+ });
742
+ });
743
+
744
+ describe("CellModalEditor staging — textarea (LC-06 oversized edit)", () => {
745
+ async function openModal(onChange: (value: any) => void) {
746
+ const utils = renderCell({
747
+ field: "textarea",
748
+ value: "line one",
749
+ onChange,
750
+ });
751
+ fireEvent.click(utils.baseElement.querySelector('[data-testid="mock-FieldDisplay"]')!);
752
+ await waitFor(() =>
753
+ expect(utils.baseElement.querySelector('[data-testid="textarea-input"]')).not.toBeNull(),
754
+ );
755
+ return utils;
756
+ }
757
+
758
+ it("keeps a single-line face; edits stay in the draft until Done", async () => {
759
+ const onChange = vi.fn();
760
+ const { baseElement, getByText } = await openModal(onChange);
761
+ const textarea = baseElement.querySelector(
762
+ '[data-testid="textarea-input"]',
763
+ ) as HTMLTextAreaElement;
764
+
765
+ fireEvent.change(textarea, { target: { value: "line two" } });
766
+ expect(textarea.value).toBe("line two");
767
+ expect(onChange).not.toHaveBeenCalled();
768
+
769
+ fireEvent.click(getByText("Done"));
770
+ await waitFor(() => expect(onChange).toHaveBeenCalledWith("line two"));
771
+ expect(onChange).toHaveBeenCalledTimes(1);
772
+ });
773
+ });
@@ -120,7 +120,7 @@ vi.mock("@multiplatform.one/theme", async (importOriginal) => ({
120
120
  outlineWidth: 2,
121
121
  outlineStyle: "solid",
122
122
  outlineColor: "$outlineColor",
123
- outlineOffset: 2,
123
+ outlineOffset: -2,
124
124
  },
125
125
  },
126
126
  }),
@@ -344,4 +344,39 @@ describe("DataTableCell field type parity", () => {
344
344
  fireEvent.click(container.querySelector('[data-testid="floating-panel-trigger"]')!);
345
345
  await waitFor(() => expectRendered(baseElement, "RadioGroup"));
346
346
  });
347
+
348
+ it("togglegroup routes through the popover editor (LC-06), never inline in the cell", async () => {
349
+ const { container, baseElement } = renderCell({
350
+ field: "togglegroup",
351
+ value: "bold",
352
+ fieldProps: {
353
+ options: [
354
+ { label: "Bold", value: "bold" },
355
+ { label: "Italic", value: "italic" },
356
+ { label: "Underline", value: "underline" },
357
+ ],
358
+ },
359
+ });
360
+ const display = container.querySelector('[data-component="FieldDisplay"]');
361
+ expect(display?.getAttribute("data-field")).toBe("togglegroup");
362
+ expectNotRendered(baseElement, "ToggleGroup");
363
+ fireEvent.click(container.querySelector('[data-testid="floating-panel-trigger"]')!);
364
+ await waitFor(() => expectRendered(baseElement, "ToggleGroup"));
365
+ });
366
+
367
+ it("textarea routes through the modal editor (LC-06), never inline in the cell", async () => {
368
+ const { container, baseElement } = await expectModalEditor(
369
+ { field: "textarea", value: "line one\nline two" },
370
+ "textarea",
371
+ "TextArea",
372
+ );
373
+ expectNotRendered(container, "TextArea");
374
+ expectRendered(baseElement, "TextArea");
375
+ });
376
+
377
+ it("cell chrome carries the LC-71 composite ring class (keyboard-only, not mouse-within)", () => {
378
+ const { container } = renderCell({ field: "input", value: "acme" });
379
+ const ring = container.querySelector(".mp-composite-ring.mp-composite-ring-deep");
380
+ expect(ring).not.toBeNull();
381
+ });
347
382
  });