@multiplatform.one/table 7.10.0 → 7.15.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 (307) hide show
  1. package/README.md +61 -1
  2. package/dist/cjs/components/ChildTable/index.cjs +8 -2
  3. package/dist/cjs/components/ChildTable/index.native.js +8 -2
  4. package/dist/cjs/components/ChildTable/index.native.js.map +1 -1
  5. package/dist/cjs/components/ColumnHeaderFilter/index.cjs +77 -111
  6. package/dist/cjs/components/ColumnHeaderFilter/index.native.js +89 -129
  7. package/dist/cjs/components/ColumnHeaderFilter/index.native.js.map +1 -1
  8. package/dist/cjs/components/DataTable/DataTableCardControls.cjs +90 -54
  9. package/dist/cjs/components/DataTable/DataTableCardControls.native.js +93 -56
  10. package/dist/cjs/components/DataTable/DataTableCardControls.native.js.map +1 -1
  11. package/dist/cjs/components/DataTable/DataTableRoot.cjs +68 -9
  12. package/dist/cjs/components/DataTable/DataTableRoot.native.js +78 -11
  13. package/dist/cjs/components/DataTable/DataTableRoot.native.js.map +1 -1
  14. package/dist/cjs/components/DataTableCell/CellModalEditor.cjs +72 -70
  15. package/dist/cjs/components/DataTableCell/index.cjs +2 -2
  16. package/dist/cjs/components/DataTableCell/index.native.js +2 -11
  17. package/dist/cjs/components/DataTableCell/index.native.js.map +1 -1
  18. package/dist/cjs/components/DataTableDateFilter/index.cjs +135 -158
  19. package/dist/cjs/components/DataTableDateFilter/index.native.js +153 -183
  20. package/dist/cjs/components/DataTableDateFilter/index.native.js.map +1 -1
  21. package/dist/cjs/components/DataTableExport/index.cjs +122 -139
  22. package/dist/cjs/components/DataTableExport/index.native.js +135 -157
  23. package/dist/cjs/components/DataTableExport/index.native.js.map +1 -1
  24. package/dist/cjs/components/DataTableFilterButton/index.cjs +14 -0
  25. package/dist/cjs/components/DataTableFilterButton/index.native.js +15 -0
  26. package/dist/cjs/components/DataTableFilterButton/index.native.js.map +1 -1
  27. package/dist/cjs/components/DataTableGrouping/index.cjs +192 -212
  28. package/dist/cjs/components/DataTableGrouping/index.native.js +209 -230
  29. package/dist/cjs/components/DataTableGrouping/index.native.js.map +1 -1
  30. package/dist/cjs/components/DataTableSearch/index.cjs +103 -115
  31. package/dist/cjs/components/DataTableSearch/index.native.js +111 -123
  32. package/dist/cjs/components/DataTableSearch/index.native.js.map +1 -1
  33. package/dist/cjs/components/DataTableToolbar/index.cjs +161 -101
  34. package/dist/cjs/components/DataTableToolbar/index.native.js +168 -109
  35. package/dist/cjs/components/DataTableToolbar/index.native.js.map +1 -1
  36. package/dist/cjs/components/DataTableViewOptions/index.cjs +38 -54
  37. package/dist/cjs/components/DataTableViewOptions/index.native.js +40 -56
  38. package/dist/cjs/components/DataTableViewOptions/index.native.js.map +1 -1
  39. package/dist/cjs/components/FilterOperatorValueEditor/index.cjs +3 -11
  40. package/dist/cjs/components/FilterOperatorValueEditor/index.native.js +3 -11
  41. package/dist/cjs/components/FilterOperatorValueEditor/index.native.js.map +1 -1
  42. package/dist/cjs/components/SimpleTable/index.cjs +2 -6
  43. package/dist/cjs/components/SimpleTable/index.native.js +2 -6
  44. package/dist/cjs/components/SimpleTable/index.native.js.map +1 -1
  45. package/dist/cjs/components/TableInput/RowDetailEditor.cjs +190 -0
  46. package/dist/cjs/components/TableInput/RowDetailEditor.native.js +172 -0
  47. package/dist/cjs/components/TableInput/RowDetailEditor.native.js.map +1 -0
  48. package/dist/cjs/components/TableInput/index.cjs +42 -5
  49. package/dist/cjs/components/TableInput/index.native.js +64 -1
  50. package/dist/cjs/components/TableInput/index.native.js.map +1 -1
  51. package/dist/cjs/components/TableInput/shared.cjs +8 -0
  52. package/dist/cjs/components/TableInput/shared.native.js +10 -0
  53. package/dist/cjs/components/TableInput/shared.native.js.map +1 -1
  54. package/dist/cjs/hooks/useDataTable.cjs +43 -2
  55. package/dist/cjs/hooks/useDataTable.native.js +49 -3
  56. package/dist/cjs/hooks/useDataTable.native.js.map +1 -1
  57. package/dist/cjs/index.native.js.map +1 -1
  58. package/dist/cjs/utils/rowPress.cjs +4 -1
  59. package/dist/cjs/utils/rowPress.native.js +4 -1
  60. package/dist/cjs/utils/rowPress.native.js.map +1 -1
  61. package/dist/esm/components/ChildTable/index.mjs +8 -2
  62. package/dist/esm/components/ChildTable/index.mjs.map +1 -1
  63. package/dist/esm/components/ChildTable/index.native.js +8 -2
  64. package/dist/esm/components/ChildTable/index.native.js.map +1 -1
  65. package/dist/esm/components/ColumnHeaderFilter/index.mjs +80 -114
  66. package/dist/esm/components/ColumnHeaderFilter/index.mjs.map +1 -1
  67. package/dist/esm/components/ColumnHeaderFilter/index.native.js +92 -132
  68. package/dist/esm/components/ColumnHeaderFilter/index.native.js.map +1 -1
  69. package/dist/esm/components/DataTable/DataTableCardControls.mjs +89 -54
  70. package/dist/esm/components/DataTable/DataTableCardControls.mjs.map +1 -1
  71. package/dist/esm/components/DataTable/DataTableCardControls.native.js +92 -56
  72. package/dist/esm/components/DataTable/DataTableCardControls.native.js.map +1 -1
  73. package/dist/esm/components/DataTable/DataTableRoot.mjs +70 -11
  74. package/dist/esm/components/DataTable/DataTableRoot.mjs.map +1 -1
  75. package/dist/esm/components/DataTable/DataTableRoot.native.js +80 -13
  76. package/dist/esm/components/DataTable/DataTableRoot.native.js.map +1 -1
  77. package/dist/esm/components/DataTableCell/CellModalEditor.mjs +76 -74
  78. package/dist/esm/components/DataTableCell/CellModalEditor.mjs.map +1 -1
  79. package/dist/esm/components/DataTableCell/index.mjs +3 -3
  80. package/dist/esm/components/DataTableCell/index.mjs.map +1 -1
  81. package/dist/esm/components/DataTableCell/index.native.js +3 -12
  82. package/dist/esm/components/DataTableCell/index.native.js.map +1 -1
  83. package/dist/esm/components/DataTableDateFilter/index.mjs +137 -160
  84. package/dist/esm/components/DataTableDateFilter/index.mjs.map +1 -1
  85. package/dist/esm/components/DataTableDateFilter/index.native.js +155 -185
  86. package/dist/esm/components/DataTableDateFilter/index.native.js.map +1 -1
  87. package/dist/esm/components/DataTableExport/index.mjs +124 -141
  88. package/dist/esm/components/DataTableExport/index.mjs.map +1 -1
  89. package/dist/esm/components/DataTableExport/index.native.js +137 -159
  90. package/dist/esm/components/DataTableExport/index.native.js.map +1 -1
  91. package/dist/esm/components/DataTableFilterButton/index.mjs +14 -1
  92. package/dist/esm/components/DataTableFilterButton/index.mjs.map +1 -1
  93. package/dist/esm/components/DataTableFilterButton/index.native.js +15 -1
  94. package/dist/esm/components/DataTableFilterButton/index.native.js.map +1 -1
  95. package/dist/esm/components/DataTableGrouping/index.mjs +194 -214
  96. package/dist/esm/components/DataTableGrouping/index.mjs.map +1 -1
  97. package/dist/esm/components/DataTableGrouping/index.native.js +211 -232
  98. package/dist/esm/components/DataTableGrouping/index.native.js.map +1 -1
  99. package/dist/esm/components/DataTableSearch/index.mjs +105 -117
  100. package/dist/esm/components/DataTableSearch/index.mjs.map +1 -1
  101. package/dist/esm/components/DataTableSearch/index.native.js +113 -125
  102. package/dist/esm/components/DataTableSearch/index.native.js.map +1 -1
  103. package/dist/esm/components/DataTableToolbar/index.mjs +165 -106
  104. package/dist/esm/components/DataTableToolbar/index.mjs.map +1 -1
  105. package/dist/esm/components/DataTableToolbar/index.native.js +172 -114
  106. package/dist/esm/components/DataTableToolbar/index.native.js.map +1 -1
  107. package/dist/esm/components/DataTableViewOptions/index.mjs +40 -56
  108. package/dist/esm/components/DataTableViewOptions/index.mjs.map +1 -1
  109. package/dist/esm/components/DataTableViewOptions/index.native.js +42 -58
  110. package/dist/esm/components/DataTableViewOptions/index.native.js.map +1 -1
  111. package/dist/esm/components/FilterOperatorValueEditor/index.mjs +3 -11
  112. package/dist/esm/components/FilterOperatorValueEditor/index.mjs.map +1 -1
  113. package/dist/esm/components/FilterOperatorValueEditor/index.native.js +3 -11
  114. package/dist/esm/components/FilterOperatorValueEditor/index.native.js.map +1 -1
  115. package/dist/esm/components/SimpleTable/index.mjs +3 -7
  116. package/dist/esm/components/SimpleTable/index.mjs.map +1 -1
  117. package/dist/esm/components/SimpleTable/index.native.js +3 -7
  118. package/dist/esm/components/SimpleTable/index.native.js.map +1 -1
  119. package/dist/esm/components/TableInput/RowDetailEditor.mjs +165 -0
  120. package/dist/esm/components/TableInput/RowDetailEditor.mjs.map +1 -0
  121. package/dist/esm/components/TableInput/RowDetailEditor.native.js +144 -0
  122. package/dist/esm/components/TableInput/RowDetailEditor.native.js.map +1 -0
  123. package/dist/esm/components/TableInput/index.mjs +42 -5
  124. package/dist/esm/components/TableInput/index.mjs.map +1 -1
  125. package/dist/esm/components/TableInput/index.native.js +64 -1
  126. package/dist/esm/components/TableInput/index.native.js.map +1 -1
  127. package/dist/esm/components/TableInput/shared.mjs +7 -1
  128. package/dist/esm/components/TableInput/shared.mjs.map +1 -1
  129. package/dist/esm/components/TableInput/shared.native.js +9 -1
  130. package/dist/esm/components/TableInput/shared.native.js.map +1 -1
  131. package/dist/esm/hooks/useDataTable.mjs +43 -2
  132. package/dist/esm/hooks/useDataTable.mjs.map +1 -1
  133. package/dist/esm/hooks/useDataTable.native.js +49 -3
  134. package/dist/esm/hooks/useDataTable.native.js.map +1 -1
  135. package/dist/esm/index.mjs.map +1 -1
  136. package/dist/esm/index.native.js.map +1 -1
  137. package/dist/esm/utils/rowPress.mjs +4 -1
  138. package/dist/esm/utils/rowPress.mjs.map +1 -1
  139. package/dist/esm/utils/rowPress.native.js +4 -1
  140. package/dist/esm/utils/rowPress.native.js.map +1 -1
  141. package/dist/jsx/components/ChildTable/index.mjs +8 -2
  142. package/dist/jsx/components/ChildTable/index.mjs.map +1 -1
  143. package/dist/jsx/components/ChildTable/index.native.js +8 -2
  144. package/dist/jsx/components/ChildTable/index.native.js.map +1 -1
  145. package/dist/jsx/components/ColumnHeaderFilter/index.mjs +80 -114
  146. package/dist/jsx/components/ColumnHeaderFilter/index.mjs.map +1 -1
  147. package/dist/jsx/components/ColumnHeaderFilter/index.native.js +89 -129
  148. package/dist/jsx/components/ColumnHeaderFilter/index.native.js.map +1 -1
  149. package/dist/jsx/components/DataTable/DataTableCardControls.mjs +89 -54
  150. package/dist/jsx/components/DataTable/DataTableCardControls.mjs.map +1 -1
  151. package/dist/jsx/components/DataTable/DataTableCardControls.native.js +93 -56
  152. package/dist/jsx/components/DataTable/DataTableCardControls.native.js.map +1 -1
  153. package/dist/jsx/components/DataTable/DataTableRoot.mjs +70 -11
  154. package/dist/jsx/components/DataTable/DataTableRoot.mjs.map +1 -1
  155. package/dist/jsx/components/DataTable/DataTableRoot.native.js +78 -11
  156. package/dist/jsx/components/DataTable/DataTableRoot.native.js.map +1 -1
  157. package/dist/jsx/components/DataTableCell/CellModalEditor.mjs +76 -74
  158. package/dist/jsx/components/DataTableCell/CellModalEditor.mjs.map +1 -1
  159. package/dist/jsx/components/DataTableCell/index.mjs +3 -3
  160. package/dist/jsx/components/DataTableCell/index.mjs.map +1 -1
  161. package/dist/jsx/components/DataTableCell/index.native.js +2 -11
  162. package/dist/jsx/components/DataTableCell/index.native.js.map +1 -1
  163. package/dist/jsx/components/DataTableDateFilter/index.mjs +137 -160
  164. package/dist/jsx/components/DataTableDateFilter/index.mjs.map +1 -1
  165. package/dist/jsx/components/DataTableDateFilter/index.native.js +153 -183
  166. package/dist/jsx/components/DataTableDateFilter/index.native.js.map +1 -1
  167. package/dist/jsx/components/DataTableExport/index.mjs +124 -141
  168. package/dist/jsx/components/DataTableExport/index.mjs.map +1 -1
  169. package/dist/jsx/components/DataTableExport/index.native.js +135 -157
  170. package/dist/jsx/components/DataTableExport/index.native.js.map +1 -1
  171. package/dist/jsx/components/DataTableFilterButton/index.mjs +14 -1
  172. package/dist/jsx/components/DataTableFilterButton/index.mjs.map +1 -1
  173. package/dist/jsx/components/DataTableFilterButton/index.native.js +15 -0
  174. package/dist/jsx/components/DataTableFilterButton/index.native.js.map +1 -1
  175. package/dist/jsx/components/DataTableGrouping/index.mjs +194 -214
  176. package/dist/jsx/components/DataTableGrouping/index.mjs.map +1 -1
  177. package/dist/jsx/components/DataTableGrouping/index.native.js +209 -230
  178. package/dist/jsx/components/DataTableGrouping/index.native.js.map +1 -1
  179. package/dist/jsx/components/DataTableSearch/index.mjs +105 -117
  180. package/dist/jsx/components/DataTableSearch/index.mjs.map +1 -1
  181. package/dist/jsx/components/DataTableSearch/index.native.js +111 -123
  182. package/dist/jsx/components/DataTableSearch/index.native.js.map +1 -1
  183. package/dist/jsx/components/DataTableToolbar/index.mjs +165 -106
  184. package/dist/jsx/components/DataTableToolbar/index.mjs.map +1 -1
  185. package/dist/jsx/components/DataTableToolbar/index.native.js +168 -109
  186. package/dist/jsx/components/DataTableToolbar/index.native.js.map +1 -1
  187. package/dist/jsx/components/DataTableViewOptions/index.mjs +40 -56
  188. package/dist/jsx/components/DataTableViewOptions/index.mjs.map +1 -1
  189. package/dist/jsx/components/DataTableViewOptions/index.native.js +40 -56
  190. package/dist/jsx/components/DataTableViewOptions/index.native.js.map +1 -1
  191. package/dist/jsx/components/FilterOperatorValueEditor/index.mjs +3 -11
  192. package/dist/jsx/components/FilterOperatorValueEditor/index.mjs.map +1 -1
  193. package/dist/jsx/components/FilterOperatorValueEditor/index.native.js +3 -11
  194. package/dist/jsx/components/FilterOperatorValueEditor/index.native.js.map +1 -1
  195. package/dist/jsx/components/SimpleTable/index.mjs +3 -7
  196. package/dist/jsx/components/SimpleTable/index.mjs.map +1 -1
  197. package/dist/jsx/components/SimpleTable/index.native.js +2 -6
  198. package/dist/jsx/components/SimpleTable/index.native.js.map +1 -1
  199. package/dist/jsx/components/TableInput/RowDetailEditor.mjs +165 -0
  200. package/dist/jsx/components/TableInput/RowDetailEditor.mjs.map +1 -0
  201. package/dist/jsx/components/TableInput/RowDetailEditor.native.js +172 -0
  202. package/dist/jsx/components/TableInput/RowDetailEditor.native.js.map +1 -0
  203. package/dist/jsx/components/TableInput/index.mjs +42 -5
  204. package/dist/jsx/components/TableInput/index.mjs.map +1 -1
  205. package/dist/jsx/components/TableInput/index.native.js +64 -1
  206. package/dist/jsx/components/TableInput/index.native.js.map +1 -1
  207. package/dist/jsx/components/TableInput/shared.mjs +7 -1
  208. package/dist/jsx/components/TableInput/shared.mjs.map +1 -1
  209. package/dist/jsx/components/TableInput/shared.native.js +10 -0
  210. package/dist/jsx/components/TableInput/shared.native.js.map +1 -1
  211. package/dist/jsx/hooks/useDataTable.mjs +43 -2
  212. package/dist/jsx/hooks/useDataTable.mjs.map +1 -1
  213. package/dist/jsx/hooks/useDataTable.native.js +49 -3
  214. package/dist/jsx/hooks/useDataTable.native.js.map +1 -1
  215. package/dist/jsx/index.js.map +1 -1
  216. package/dist/jsx/index.mjs.map +1 -1
  217. package/dist/jsx/index.native.js.map +1 -1
  218. package/dist/jsx/utils/rowPress.mjs +4 -1
  219. package/dist/jsx/utils/rowPress.mjs.map +1 -1
  220. package/dist/jsx/utils/rowPress.native.js +4 -1
  221. package/dist/jsx/utils/rowPress.native.js.map +1 -1
  222. package/package.json +16 -16
  223. package/src/components/ChildTable/childTable.cellHidden.spec.tsx +57 -0
  224. package/src/components/ChildTable/childTable.rowDetail.spec.tsx +120 -0
  225. package/src/components/ChildTable/index.tsx +16 -0
  226. package/src/components/ColumnHeaderFilter/index.tsx +89 -116
  227. package/src/components/DataTable/DataTable.stories.tsx +130 -6
  228. package/src/components/DataTable/DataTableCardControls.stories.tsx +61 -2
  229. package/src/components/DataTable/DataTableCardControls.tsx +92 -66
  230. package/src/components/DataTable/DataTableRoot.tsx +109 -18
  231. package/src/components/DataTable/cardLayout.spec.tsx +4 -3
  232. package/src/components/DataTable/cardToolbar.spec.tsx +238 -0
  233. package/src/components/DataTable/chromeInterplay.spec.tsx +7 -5
  234. package/src/components/DataTable/columnWidthLayout.spec.tsx +189 -0
  235. package/src/components/DataTable/dataTableCardControls.spec.tsx +3 -2
  236. package/src/components/DataTable/dataTableMobileCards.spec.tsx +1 -4
  237. package/src/components/DataTable/footerLayout.spec.tsx +250 -0
  238. package/src/components/DataTable/headerContainment.spec.tsx +91 -0
  239. package/src/components/DataTable/pinningGeometry.spec.tsx +66 -1
  240. package/src/components/DataTable/rowPress.spec.tsx +2 -6
  241. package/src/components/DataTableBulkActions/DataTableBulkActions.stories.tsx +5 -4
  242. package/src/components/DataTableCell/CellModalEditor.tsx +95 -75
  243. package/src/components/DataTableCell/cellDraftPolicy.spec.tsx +12 -2
  244. package/src/components/DataTableCell/cellModalEditor.spec.tsx +75 -49
  245. package/src/components/DataTableCell/dataTableCell.spec.tsx +31 -14
  246. package/src/components/DataTableCell/index.tsx +3 -2
  247. package/src/components/DataTableDateFilter/DataTableDateFilter.spec.tsx +6 -3
  248. package/src/components/DataTableDateFilter/index.tsx +151 -180
  249. package/src/components/DataTableExport/DataTableExport.spec.tsx +42 -18
  250. package/src/components/DataTableExport/index.tsx +135 -142
  251. package/src/components/DataTableFilterButton/index.tsx +9 -0
  252. package/src/components/DataTableGrouping/index.tsx +193 -195
  253. package/src/components/DataTableSearch/index.tsx +111 -109
  254. package/src/components/DataTableToolbar/index.tsx +179 -107
  255. package/src/components/DataTableViewOptions/DataTableViewOptions.stories.tsx +52 -0
  256. package/src/components/DataTableViewOptions/index.tsx +32 -40
  257. package/src/components/FilterOperatorValueEditor/FilterOperatorValueEditor.spec.tsx +64 -2
  258. package/src/components/FilterOperatorValueEditor/index.tsx +0 -8
  259. package/src/components/SimpleTable/index.tsx +3 -2
  260. package/src/components/SimpleTable/simpleTable.spec.tsx +15 -0
  261. package/src/components/Table/accessibility.spec.tsx +7 -19
  262. package/src/components/TableInput/RowDetailEditor.native.tsx +134 -0
  263. package/src/components/TableInput/RowDetailEditor.tsx +173 -0
  264. package/src/components/TableInput/index.native.tsx +49 -1
  265. package/src/components/TableInput/index.tsx +65 -10
  266. package/src/components/TableInput/shared.ts +29 -0
  267. package/src/components/tableDropdowns.spec.tsx +172 -0
  268. package/src/hooks/useDataTable.spec.ts +153 -0
  269. package/src/hooks/useDataTable.ts +38 -2
  270. package/src/index.ts +1 -0
  271. package/src/types.ts +14 -12
  272. package/src/utils/rowPress.ts +3 -0
  273. package/types/components/ChildTable/index.d.ts +10 -0
  274. package/types/components/ChildTable/index.d.ts.map +1 -1
  275. package/types/components/ColumnHeaderFilter/index.d.ts +1 -1
  276. package/types/components/ColumnHeaderFilter/index.d.ts.map +1 -1
  277. package/types/components/DataTable/DataTableCardControls.d.ts +3 -0
  278. package/types/components/DataTable/DataTableCardControls.d.ts.map +1 -1
  279. package/types/components/DataTable/DataTableRoot.d.ts.map +1 -1
  280. package/types/components/DataTableCell/CellModalEditor.d.ts +10 -7
  281. package/types/components/DataTableCell/CellModalEditor.d.ts.map +1 -1
  282. package/types/components/DataTableCell/index.d.ts.map +1 -1
  283. package/types/components/DataTableDateFilter/index.d.ts.map +1 -1
  284. package/types/components/DataTableFilterButton/index.d.ts +2 -1
  285. package/types/components/DataTableFilterButton/index.d.ts.map +1 -1
  286. package/types/components/DataTableGrouping/index.d.ts.map +1 -1
  287. package/types/components/DataTableSearch/index.d.ts.map +1 -1
  288. package/types/components/DataTableToolbar/index.d.ts +1 -0
  289. package/types/components/DataTableToolbar/index.d.ts.map +1 -1
  290. package/types/components/FilterOperatorValueEditor/index.d.ts.map +1 -1
  291. package/types/components/SimpleTable/index.d.ts.map +1 -1
  292. package/types/components/TableInput/RowDetailEditor.d.ts +24 -0
  293. package/types/components/TableInput/RowDetailEditor.d.ts.map +1 -0
  294. package/types/components/TableInput/RowDetailEditor.native.d.ts +11 -0
  295. package/types/components/TableInput/RowDetailEditor.native.d.ts.map +1 -0
  296. package/types/components/TableInput/index.d.ts +11 -2
  297. package/types/components/TableInput/index.d.ts.map +1 -1
  298. package/types/components/TableInput/index.native.d.ts +8 -1
  299. package/types/components/TableInput/index.native.d.ts.map +1 -1
  300. package/types/components/TableInput/shared.d.ts +11 -0
  301. package/types/components/TableInput/shared.d.ts.map +1 -1
  302. package/types/hooks/useDataTable.d.ts.map +1 -1
  303. package/types/index.d.ts +1 -0
  304. package/types/index.d.ts.map +1 -1
  305. package/types/types.d.ts +14 -12
  306. package/types/types.d.ts.map +1 -1
  307. package/types/utils/rowPress.d.ts.map +1 -1
@@ -8,8 +8,8 @@ import {
8
8
  import { downloadBlob } from "@multiplatform.one/platform";
9
9
  import { formatCalendarDate, useResolvedKnobs } from "@multiplatform.one/theme";
10
10
  import { useState } from "react";
11
- import { Button, Checkbox, Input } from "@multiplatform.one/forms";
12
- import { Popover, ScrollView, Separator, Text, XStack, YStack, isWeb } from "tamagui";
11
+ import { Button, Checkbox, FloatingPanel, Input } from "@multiplatform.one/forms";
12
+ import { ScrollView, Separator, Text, XStack, YStack, isWeb } from "tamagui";
13
13
  import type { DataTableField } from "../../types";
14
14
  import { iconSizeForToken } from "../../utils/chromeIcons";
15
15
  import { getViewLeafRows } from "../../utils/viewData";
@@ -213,7 +213,7 @@ export function DataTableExport<T = any>(props: DataTableExportProps<T>) {
213
213
  </Button>
214
214
 
215
215
  {/* Advanced Export Options */}
216
- <ExportOptionsPopover
216
+ <ExportOptionsPanel
217
217
  exportFormats={exportFormats}
218
218
  exportOptions={exportOptions}
219
219
  onOptionsChange={setExportOptions}
@@ -252,9 +252,9 @@ function extractColumnsFromTable(table: any): ExportColumn[] {
252
252
  }
253
253
  }
254
254
 
255
- // Export Options Popover
255
+ // Export Options Panel
256
256
 
257
- interface ExportOptionsPopoverProps {
257
+ interface ExportOptionsPanelProps {
258
258
  exportFormats: ExportFormat[];
259
259
  exportOptions: Partial<ExportOptions>;
260
260
  onOptionsChange: (options: Partial<ExportOptions>) => void;
@@ -265,7 +265,7 @@ interface ExportOptionsPopoverProps {
265
265
  columns: ExportColumn[];
266
266
  }
267
267
 
268
- function ExportOptionsPopover({
268
+ function ExportOptionsPanel({
269
269
  exportFormats,
270
270
  exportOptions,
271
271
  onOptionsChange,
@@ -274,11 +274,12 @@ function ExportOptionsPopover({
274
274
  disabled,
275
275
  isExporting,
276
276
  columns,
277
- }: ExportOptionsPopoverProps) {
277
+ }: ExportOptionsPanelProps) {
278
278
  const { knobProps } = useResolvedKnobs();
279
279
  const iconPx = iconSizeForToken(String(knobProps.sizeToken));
280
280
  const sz = knobProps.sizeToken;
281
281
  const popoverMinWidth = sz === "$3" ? 240 : sz === "$5" ? 360 : 300;
282
+ const [open, setOpen] = useState(false);
282
283
  const [selectedColumns, setSelectedColumns] = useState<Set<string>>(
283
284
  new Set(columns.map((col) => col.accessorKey || col.id || "")),
284
285
  );
@@ -288,157 +289,149 @@ function ExportOptionsPopover({
288
289
  header: col.header || col.accessorKey || col.id || "",
289
290
  }));
290
291
 
291
- return (
292
- // LC-06/LC-10: collision handling — without stayInFrame/resize the tall
293
- // option list painted past the viewport and the Export Formats / Print
294
- // rows below the fold were unreachable (no scroll, no clamp).
295
- <Popover stayInFrame allowFlip resize>
296
- <Popover.Trigger asChild>
297
- <Button
298
- size={knobProps.sizeToken}
299
- chromeless
300
- icon={<GearIcon size={iconPx} />}
301
- disabled={disabled}
302
- aria-label="Export options"
303
- >
304
- Options
305
- </Button>
306
- </Popover.Trigger>
307
-
308
- <Popover.Content
309
- {...knobProps.elevatedSurface}
310
- transition={knobProps.transition}
311
- enterStyle={{ x: 0, y: -10, opacity: 0 }}
312
- exitStyle={{ x: 0, y: -10, opacity: 0 }}
313
- minWidth={popoverMinWidth}
314
- padding={0}
315
- overflow="hidden"
316
- >
317
- {/* The popper resize middleware caps the height to the viewport; the
318
- ScrollView keeps every section reachable (same pattern as
319
- DataTableDateFilter). */}
320
- <Popover.ScrollView minHeight={0}>
321
- <YStack {...knobProps.panelPadding} gap="$4">
322
- <Text {...knobProps.label} fontWeight="400">
323
- Export Options
324
- </Text>
325
-
326
- {/* Filename */}
327
- <YStack gap="$2">
328
- <Text {...knobProps.label} fontWeight="400">
329
- Filename
330
- </Text>
331
- <Input
332
- value={exportOptions.filename || ""}
333
- onChangeText={(text) =>
334
- onOptionsChange({
335
- ...exportOptions,
336
- filename: text,
337
- })
338
- }
339
- placeholder="Enter filename"
340
- />
341
- </YStack>
292
+ const trigger = (
293
+ <Button
294
+ size={knobProps.sizeToken}
295
+ chromeless
296
+ icon={<GearIcon size={iconPx} />}
297
+ disabled={disabled}
298
+ aria-label="Export options"
299
+ >
300
+ Options
301
+ </Button>
302
+ );
342
303
 
343
- {/* Include Headers */}
344
- <Checkbox
345
- label="Include headers"
346
- checked={exportOptions.includeHeaders ?? true}
347
- onCheckedChange={(checked) =>
348
- onOptionsChange({
349
- ...exportOptions,
350
- includeHeaders: checked as boolean,
351
- })
352
- }
353
- />
354
-
355
- {/* Column Selection */}
356
- <YStack gap="$2">
357
- <Text {...knobProps.label} fontWeight="400">
358
- Select Columns ({selectedColumns.size} of {availableColumns.length})
359
- </Text>
360
- <ScrollView maxHeight={200}>
361
- <YStack gap="$1">
362
- {availableColumns.map((col) => (
363
- <Checkbox
364
- key={col.key}
365
- label={col.header}
366
- checked={selectedColumns.has(col.key)}
367
- onCheckedChange={(checked) => {
368
- const newSelected = new Set(selectedColumns);
369
- if (checked) {
370
- newSelected.add(col.key);
371
- } else {
372
- newSelected.delete(col.key);
373
- }
374
- setSelectedColumns(newSelected);
375
- onOptionsChange({
376
- ...exportOptions,
377
- selectedColumns: Array.from(newSelected),
378
- });
379
- }}
380
- />
381
- ))}
382
- </YStack>
383
- </ScrollView>
384
- </YStack>
304
+ return (
305
+ // LC-06/LC-10: the option list is taller than most viewports. FloatingPanel
306
+ // clamps it inside the viewport and scrolls, so the Export Formats and
307
+ // Print rows below the fold stay reachable.
308
+ <FloatingPanel
309
+ open={open}
310
+ onOpenChange={setOpen}
311
+ trigger={trigger}
312
+ triggerSizing="content"
313
+ disabled={disabled}
314
+ scrollable
315
+ >
316
+ <YStack gap="$4" minWidth={popoverMinWidth} data-dismiss-class="compose">
317
+ <Text {...knobProps.label} fontWeight="400">
318
+ Export Options
319
+ </Text>
385
320
 
386
- <Separator />
387
-
388
- {/* Export Formats */}
389
- <YStack gap="$2">
390
- <Text {...knobProps.label} fontWeight="400">
391
- Export Formats
392
- </Text>
393
- {exportFormats.map((format) => (
394
- <Button
395
- key={format.id}
396
- size={knobProps.sizeToken}
397
- chromeless
398
- justifyContent="flex-start"
399
- disabled={disabled || isExporting === format.id || !format.enabled}
400
- onPress={() => onExport(format)}
401
- icon={format.icon}
402
- >
403
- <YStack gap="$1">
404
- <Text {...knobProps.label} fontWeight="400">
405
- {format.label}
406
- </Text>
407
- <Text fontSize="$2" color="$color10">
408
- {format.description}
409
- </Text>
410
- </YStack>
411
- {isExporting === format.id && (
412
- <Text fontSize="$2" color="$accentColor" marginInlineStart="auto">
413
- ...
414
- </Text>
415
- )}
416
- </Button>
321
+ {/* Filename */}
322
+ <YStack gap="$2">
323
+ <Text {...knobProps.label} fontWeight="400">
324
+ Filename
325
+ </Text>
326
+ <Input
327
+ value={exportOptions.filename || ""}
328
+ onChangeText={(text) =>
329
+ onOptionsChange({
330
+ ...exportOptions,
331
+ filename: text,
332
+ })
333
+ }
334
+ placeholder="Enter filename"
335
+ />
336
+ </YStack>
337
+
338
+ {/* Include Headers */}
339
+ <Checkbox
340
+ label="Include headers"
341
+ checked={exportOptions.includeHeaders ?? true}
342
+ onCheckedChange={(checked) =>
343
+ onOptionsChange({
344
+ ...exportOptions,
345
+ includeHeaders: checked as boolean,
346
+ })
347
+ }
348
+ />
349
+
350
+ {/* Column Selection */}
351
+ <YStack gap="$2">
352
+ <Text {...knobProps.label} fontWeight="400">
353
+ Select Columns ({selectedColumns.size} of {availableColumns.length})
354
+ </Text>
355
+ <ScrollView maxHeight={200}>
356
+ <YStack gap="$1">
357
+ {availableColumns.map((col) => (
358
+ <Checkbox
359
+ key={col.key}
360
+ label={col.header}
361
+ checked={selectedColumns.has(col.key)}
362
+ onCheckedChange={(checked) => {
363
+ const newSelected = new Set(selectedColumns);
364
+ if (checked) {
365
+ newSelected.add(col.key);
366
+ } else {
367
+ newSelected.delete(col.key);
368
+ }
369
+ setSelectedColumns(newSelected);
370
+ onOptionsChange({
371
+ ...exportOptions,
372
+ selectedColumns: Array.from(newSelected),
373
+ });
374
+ }}
375
+ />
417
376
  ))}
418
377
  </YStack>
378
+ </ScrollView>
379
+ </YStack>
419
380
 
420
- <Separator />
381
+ <Separator />
421
382
 
422
- {/* Print */}
383
+ {/* Export Formats */}
384
+ <YStack gap="$2">
385
+ <Text {...knobProps.label} fontWeight="400">
386
+ Export Formats
387
+ </Text>
388
+ {exportFormats.map((format) => (
423
389
  <Button
390
+ key={format.id}
424
391
  size={knobProps.sizeToken}
425
392
  chromeless
426
393
  justifyContent="flex-start"
427
- disabled={disabled || isExporting === "print"}
428
- onPress={onPrint}
429
- icon={<PrinterIcon size={iconPx} />}
394
+ disabled={disabled || isExporting === format.id || !format.enabled}
395
+ onPress={() => onExport(format)}
396
+ icon={format.icon}
430
397
  >
431
- Print Table
432
- {isExporting === "print" && (
398
+ <YStack gap="$1">
399
+ <Text {...knobProps.label} fontWeight="400">
400
+ {format.label}
401
+ </Text>
402
+ <Text fontSize="$2" color="$color10">
403
+ {format.description}
404
+ </Text>
405
+ </YStack>
406
+ {isExporting === format.id && (
433
407
  <Text fontSize="$2" color="$accentColor" marginInlineStart="auto">
434
408
  ...
435
409
  </Text>
436
410
  )}
437
411
  </Button>
438
- </YStack>
439
- </Popover.ScrollView>
440
- </Popover.Content>
441
- </Popover>
412
+ ))}
413
+ </YStack>
414
+
415
+ <Separator />
416
+
417
+ {/* Print */}
418
+ <Button
419
+ size={knobProps.sizeToken}
420
+ chromeless
421
+ justifyContent="flex-start"
422
+ disabled={disabled || isExporting === "print"}
423
+ onPress={onPrint}
424
+ icon={<PrinterIcon size={iconPx} />}
425
+ >
426
+ Print Table
427
+ {isExporting === "print" && (
428
+ <Text fontSize="$2" color="$accentColor" marginInlineStart="auto">
429
+ ...
430
+ </Text>
431
+ )}
432
+ </Button>
433
+ </YStack>
434
+ </FloatingPanel>
442
435
  );
443
436
  }
444
437
 
@@ -91,6 +91,14 @@ function GroupHeader({ children }: { children: string }) {
91
91
  }
92
92
 
93
93
  export function DataTableFilterButton() {
94
+ return <FilterButton />;
95
+ }
96
+
97
+ export function DataTableCardFilterButton() {
98
+ return <FilterButton contentTrigger />;
99
+ }
100
+
101
+ function FilterButton({ contentTrigger = false }: { contentTrigger?: boolean }) {
94
102
  const ctx = useDataTableState();
95
103
  const { knobProps } = useResolvedKnobs();
96
104
  // "Back to field list" points toward the panel's start edge — directional,
@@ -315,6 +323,7 @@ export function DataTableFilterButton() {
315
323
  open={open}
316
324
  onOpenChange={handleOpenChange}
317
325
  trigger={trigger}
326
+ {...(contentTrigger ? { triggerSizing: "content" as const } : {})}
318
327
  fitContent
319
328
  scrollable={false}
320
329
  >