@multiplatform.one/table 7.7.6 → 7.8.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 (357) hide show
  1. package/dist/cjs/components/ColumnHeaderFilter/index.cjs +74 -38
  2. package/dist/cjs/components/ColumnHeaderFilter/index.native.js +97 -51
  3. package/dist/cjs/components/ColumnHeaderFilter/index.native.js.map +1 -1
  4. package/dist/cjs/components/DataTable/DataTableCardControls.cjs +0 -1
  5. package/dist/cjs/components/DataTable/DataTableCardControls.native.js +0 -1
  6. package/dist/cjs/components/DataTable/DataTableCardControls.native.js.map +1 -1
  7. package/dist/cjs/components/DataTable/DataTableRoot.cjs +33 -6
  8. package/dist/cjs/components/DataTable/DataTableRoot.native.js +29 -4
  9. package/dist/cjs/components/DataTable/DataTableRoot.native.js.map +1 -1
  10. package/dist/cjs/components/DataTable/DataTableStateContext.native.js.map +1 -1
  11. package/dist/cjs/components/DataTableBulkActions/index.cjs +0 -4
  12. package/dist/cjs/components/DataTableBulkActions/index.native.js +0 -4
  13. package/dist/cjs/components/DataTableBulkActions/index.native.js.map +1 -1
  14. package/dist/cjs/components/DataTableCell/index.cjs +16 -1
  15. package/dist/cjs/components/DataTableCell/index.native.js +16 -1
  16. package/dist/cjs/components/DataTableCell/index.native.js.map +1 -1
  17. package/dist/cjs/components/DataTableDateFilter/index.cjs +0 -7
  18. package/dist/cjs/components/DataTableDateFilter/index.native.js +0 -7
  19. package/dist/cjs/components/DataTableDateFilter/index.native.js.map +1 -1
  20. package/dist/cjs/components/DataTableFilterButton/index.cjs +0 -1
  21. package/dist/cjs/components/DataTableFilterButton/index.native.js +0 -1
  22. package/dist/cjs/components/DataTableFilterChips/FilterChip.cjs +2 -1
  23. package/dist/cjs/components/DataTableFilterChips/FilterChip.native.js +4 -1
  24. package/dist/cjs/components/DataTableFilterChips/FilterChip.native.js.map +1 -1
  25. package/dist/cjs/components/DataTableFilters/index.cjs +0 -1
  26. package/dist/cjs/components/DataTableFilters/index.native.js +0 -1
  27. package/dist/cjs/components/DataTableGrouping/index.cjs +0 -8
  28. package/dist/cjs/components/DataTableGrouping/index.native.js +0 -8
  29. package/dist/cjs/components/DataTableGrouping/index.native.js.map +1 -1
  30. package/dist/cjs/components/DataTablePagination/index.cjs +29 -13
  31. package/dist/cjs/components/DataTablePagination/index.native.js +30 -14
  32. package/dist/cjs/components/DataTablePagination/index.native.js.map +1 -1
  33. package/dist/cjs/components/DataTableSearch/index.cjs +0 -3
  34. package/dist/cjs/components/DataTableSearch/index.native.js +0 -3
  35. package/dist/cjs/components/DataTableSearch/index.native.js.map +1 -1
  36. package/dist/cjs/components/DataTableToolbar/index.cjs +0 -1
  37. package/dist/cjs/components/DataTableToolbar/index.native.js +0 -1
  38. package/dist/cjs/components/DataTableToolbar/index.native.js.map +1 -1
  39. package/dist/cjs/components/DataTableViewOptions/index.cjs +0 -5
  40. package/dist/cjs/components/DataTableViewOptions/index.native.js +0 -5
  41. package/dist/cjs/components/DataTableViewOptions/index.native.js.map +1 -1
  42. package/dist/cjs/components/FilterManager.cjs +0 -1
  43. package/dist/cjs/components/FilterManager.native.js +0 -1
  44. package/dist/cjs/components/FilterManager.native.js.map +1 -1
  45. package/dist/cjs/components/FilterOperatorValueEditor/index.cjs +2 -2
  46. package/dist/cjs/components/FilterOperatorValueEditor/index.native.js +2 -2
  47. package/dist/cjs/components/FilterOperatorValueEditor/index.native.js.map +1 -1
  48. package/dist/cjs/components/TableInput/index.cjs +2 -1
  49. package/dist/cjs/components/TableInput/index.native.js +4 -2
  50. package/dist/cjs/components/TableInput/index.native.js.map +1 -1
  51. package/dist/cjs/hooks/useDataTable.cjs +24 -8
  52. package/dist/cjs/hooks/useDataTable.native.js +28 -8
  53. package/dist/cjs/hooks/useDataTable.native.js.map +1 -1
  54. package/dist/cjs/index.cjs +12 -0
  55. package/dist/cjs/index.native.js +12 -0
  56. package/dist/cjs/index.native.js.map +1 -1
  57. package/dist/cjs/shared/devWarn.cjs +70 -0
  58. package/dist/cjs/shared/devWarn.native.js +84 -0
  59. package/dist/cjs/shared/devWarn.native.js.map +1 -0
  60. package/dist/cjs/utils/columnAlign.cjs +4 -1
  61. package/dist/cjs/utils/columnAlign.native.js +4 -1
  62. package/dist/cjs/utils/columnAlign.native.js.map +1 -1
  63. package/dist/cjs/utils/filterFields.cjs +5 -0
  64. package/dist/cjs/utils/filterFields.native.js +5 -0
  65. package/dist/cjs/utils/filterFields.native.js.map +1 -1
  66. package/dist/cjs/utils/filterUtils.cjs +30 -0
  67. package/dist/cjs/utils/filterUtils.native.js +50 -0
  68. package/dist/cjs/utils/filterUtils.native.js.map +1 -1
  69. package/dist/cjs/utils/money.cjs +137 -0
  70. package/dist/cjs/utils/money.native.js +165 -0
  71. package/dist/cjs/utils/money.native.js.map +1 -0
  72. package/dist/cjs/utils/rowAccumulator.cjs +48 -0
  73. package/dist/cjs/utils/rowAccumulator.native.js +51 -0
  74. package/dist/cjs/utils/rowAccumulator.native.js.map +1 -0
  75. package/dist/esm/components/ColumnHeaderFilter/index.mjs +78 -42
  76. package/dist/esm/components/ColumnHeaderFilter/index.mjs.map +1 -1
  77. package/dist/esm/components/ColumnHeaderFilter/index.native.js +101 -55
  78. package/dist/esm/components/ColumnHeaderFilter/index.native.js.map +1 -1
  79. package/dist/esm/components/DataTable/DataTableCardControls.mjs +0 -1
  80. package/dist/esm/components/DataTable/DataTableCardControls.mjs.map +1 -1
  81. package/dist/esm/components/DataTable/DataTableCardControls.native.js +0 -1
  82. package/dist/esm/components/DataTable/DataTableCardControls.native.js.map +1 -1
  83. package/dist/esm/components/DataTable/DataTableRoot.mjs +33 -6
  84. package/dist/esm/components/DataTable/DataTableRoot.mjs.map +1 -1
  85. package/dist/esm/components/DataTable/DataTableRoot.native.js +29 -4
  86. package/dist/esm/components/DataTable/DataTableRoot.native.js.map +1 -1
  87. package/dist/esm/components/DataTable/DataTableStateContext.mjs.map +1 -1
  88. package/dist/esm/components/DataTable/DataTableStateContext.native.js.map +1 -1
  89. package/dist/esm/components/DataTableBulkActions/index.mjs +0 -4
  90. package/dist/esm/components/DataTableBulkActions/index.mjs.map +1 -1
  91. package/dist/esm/components/DataTableBulkActions/index.native.js +0 -4
  92. package/dist/esm/components/DataTableBulkActions/index.native.js.map +1 -1
  93. package/dist/esm/components/DataTableCell/index.mjs +17 -2
  94. package/dist/esm/components/DataTableCell/index.mjs.map +1 -1
  95. package/dist/esm/components/DataTableCell/index.native.js +17 -2
  96. package/dist/esm/components/DataTableCell/index.native.js.map +1 -1
  97. package/dist/esm/components/DataTableDateFilter/index.mjs +0 -7
  98. package/dist/esm/components/DataTableDateFilter/index.mjs.map +1 -1
  99. package/dist/esm/components/DataTableDateFilter/index.native.js +0 -7
  100. package/dist/esm/components/DataTableDateFilter/index.native.js.map +1 -1
  101. package/dist/esm/components/DataTableFilterButton/index.mjs +0 -1
  102. package/dist/esm/components/DataTableFilterButton/index.mjs.map +1 -1
  103. package/dist/esm/components/DataTableFilterButton/index.native.js +0 -1
  104. package/dist/esm/components/DataTableFilterChips/FilterChip.mjs +3 -2
  105. package/dist/esm/components/DataTableFilterChips/FilterChip.mjs.map +1 -1
  106. package/dist/esm/components/DataTableFilterChips/FilterChip.native.js +5 -2
  107. package/dist/esm/components/DataTableFilterChips/FilterChip.native.js.map +1 -1
  108. package/dist/esm/components/DataTableFilters/index.mjs +0 -1
  109. package/dist/esm/components/DataTableFilters/index.mjs.map +1 -1
  110. package/dist/esm/components/DataTableFilters/index.native.js +0 -1
  111. package/dist/esm/components/DataTableGrouping/index.mjs +0 -8
  112. package/dist/esm/components/DataTableGrouping/index.mjs.map +1 -1
  113. package/dist/esm/components/DataTableGrouping/index.native.js +0 -8
  114. package/dist/esm/components/DataTableGrouping/index.native.js.map +1 -1
  115. package/dist/esm/components/DataTablePagination/index.mjs +30 -14
  116. package/dist/esm/components/DataTablePagination/index.mjs.map +1 -1
  117. package/dist/esm/components/DataTablePagination/index.native.js +31 -15
  118. package/dist/esm/components/DataTablePagination/index.native.js.map +1 -1
  119. package/dist/esm/components/DataTableSearch/index.mjs +0 -3
  120. package/dist/esm/components/DataTableSearch/index.mjs.map +1 -1
  121. package/dist/esm/components/DataTableSearch/index.native.js +0 -3
  122. package/dist/esm/components/DataTableSearch/index.native.js.map +1 -1
  123. package/dist/esm/components/DataTableToolbar/index.mjs +0 -1
  124. package/dist/esm/components/DataTableToolbar/index.mjs.map +1 -1
  125. package/dist/esm/components/DataTableToolbar/index.native.js +0 -1
  126. package/dist/esm/components/DataTableToolbar/index.native.js.map +1 -1
  127. package/dist/esm/components/DataTableViewOptions/index.mjs +0 -5
  128. package/dist/esm/components/DataTableViewOptions/index.mjs.map +1 -1
  129. package/dist/esm/components/DataTableViewOptions/index.native.js +0 -5
  130. package/dist/esm/components/DataTableViewOptions/index.native.js.map +1 -1
  131. package/dist/esm/components/FilterManager.mjs +0 -1
  132. package/dist/esm/components/FilterManager.mjs.map +1 -1
  133. package/dist/esm/components/FilterManager.native.js +0 -1
  134. package/dist/esm/components/FilterManager.native.js.map +1 -1
  135. package/dist/esm/components/FilterOperatorValueEditor/index.mjs +2 -2
  136. package/dist/esm/components/FilterOperatorValueEditor/index.mjs.map +1 -1
  137. package/dist/esm/components/FilterOperatorValueEditor/index.native.js +2 -2
  138. package/dist/esm/components/FilterOperatorValueEditor/index.native.js.map +1 -1
  139. package/dist/esm/components/TableInput/index.mjs +3 -2
  140. package/dist/esm/components/TableInput/index.mjs.map +1 -1
  141. package/dist/esm/components/TableInput/index.native.js +5 -3
  142. package/dist/esm/components/TableInput/index.native.js.map +1 -1
  143. package/dist/esm/hooks/useDataTable.mjs +24 -8
  144. package/dist/esm/hooks/useDataTable.mjs.map +1 -1
  145. package/dist/esm/hooks/useDataTable.native.js +28 -8
  146. package/dist/esm/hooks/useDataTable.native.js.map +1 -1
  147. package/dist/esm/index.mjs +3 -1
  148. package/dist/esm/index.mjs.map +1 -1
  149. package/dist/esm/index.native.js +3 -1
  150. package/dist/esm/index.native.js.map +1 -1
  151. package/dist/esm/shared/devWarn.mjs +43 -0
  152. package/dist/esm/shared/devWarn.mjs.map +1 -0
  153. package/dist/esm/shared/devWarn.native.js +54 -0
  154. package/dist/esm/shared/devWarn.native.js.map +1 -0
  155. package/dist/esm/utils/columnAlign.mjs +4 -1
  156. package/dist/esm/utils/columnAlign.mjs.map +1 -1
  157. package/dist/esm/utils/columnAlign.native.js +4 -1
  158. package/dist/esm/utils/columnAlign.native.js.map +1 -1
  159. package/dist/esm/utils/filterFields.mjs +5 -0
  160. package/dist/esm/utils/filterFields.mjs.map +1 -1
  161. package/dist/esm/utils/filterFields.native.js +5 -0
  162. package/dist/esm/utils/filterFields.native.js.map +1 -1
  163. package/dist/esm/utils/filterUtils.mjs +30 -0
  164. package/dist/esm/utils/filterUtils.mjs.map +1 -1
  165. package/dist/esm/utils/filterUtils.native.js +50 -0
  166. package/dist/esm/utils/filterUtils.native.js.map +1 -1
  167. package/dist/esm/utils/money.mjs +104 -0
  168. package/dist/esm/utils/money.mjs.map +1 -0
  169. package/dist/esm/utils/money.native.js +129 -0
  170. package/dist/esm/utils/money.native.js.map +1 -0
  171. package/dist/esm/utils/rowAccumulator.mjs +23 -0
  172. package/dist/esm/utils/rowAccumulator.mjs.map +1 -0
  173. package/dist/esm/utils/rowAccumulator.native.js +23 -0
  174. package/dist/esm/utils/rowAccumulator.native.js.map +1 -0
  175. package/dist/jsx/components/ColumnHeaderFilter/index.mjs +78 -42
  176. package/dist/jsx/components/ColumnHeaderFilter/index.mjs.map +1 -1
  177. package/dist/jsx/components/ColumnHeaderFilter/index.native.js +97 -51
  178. package/dist/jsx/components/ColumnHeaderFilter/index.native.js.map +1 -1
  179. package/dist/jsx/components/DataTable/DataTableCardControls.mjs +0 -1
  180. package/dist/jsx/components/DataTable/DataTableCardControls.mjs.map +1 -1
  181. package/dist/jsx/components/DataTable/DataTableCardControls.native.js +0 -1
  182. package/dist/jsx/components/DataTable/DataTableCardControls.native.js.map +1 -1
  183. package/dist/jsx/components/DataTable/DataTableRoot.mjs +33 -6
  184. package/dist/jsx/components/DataTable/DataTableRoot.mjs.map +1 -1
  185. package/dist/jsx/components/DataTable/DataTableRoot.native.js +29 -4
  186. package/dist/jsx/components/DataTable/DataTableRoot.native.js.map +1 -1
  187. package/dist/jsx/components/DataTable/DataTableStateContext.mjs.map +1 -1
  188. package/dist/jsx/components/DataTable/DataTableStateContext.native.js.map +1 -1
  189. package/dist/jsx/components/DataTableBulkActions/index.mjs +0 -4
  190. package/dist/jsx/components/DataTableBulkActions/index.mjs.map +1 -1
  191. package/dist/jsx/components/DataTableBulkActions/index.native.js +0 -4
  192. package/dist/jsx/components/DataTableBulkActions/index.native.js.map +1 -1
  193. package/dist/jsx/components/DataTableCell/index.mjs +17 -2
  194. package/dist/jsx/components/DataTableCell/index.mjs.map +1 -1
  195. package/dist/jsx/components/DataTableCell/index.native.js +16 -1
  196. package/dist/jsx/components/DataTableCell/index.native.js.map +1 -1
  197. package/dist/jsx/components/DataTableDateFilter/index.mjs +0 -7
  198. package/dist/jsx/components/DataTableDateFilter/index.mjs.map +1 -1
  199. package/dist/jsx/components/DataTableDateFilter/index.native.js +0 -7
  200. package/dist/jsx/components/DataTableDateFilter/index.native.js.map +1 -1
  201. package/dist/jsx/components/DataTableFilterButton/index.mjs +0 -1
  202. package/dist/jsx/components/DataTableFilterButton/index.mjs.map +1 -1
  203. package/dist/jsx/components/DataTableFilterButton/index.native.js +0 -1
  204. package/dist/jsx/components/DataTableFilterChips/FilterChip.mjs +3 -2
  205. package/dist/jsx/components/DataTableFilterChips/FilterChip.mjs.map +1 -1
  206. package/dist/jsx/components/DataTableFilterChips/FilterChip.native.js +4 -1
  207. package/dist/jsx/components/DataTableFilterChips/FilterChip.native.js.map +1 -1
  208. package/dist/jsx/components/DataTableFilters/index.mjs +0 -1
  209. package/dist/jsx/components/DataTableFilters/index.mjs.map +1 -1
  210. package/dist/jsx/components/DataTableFilters/index.native.js +0 -1
  211. package/dist/jsx/components/DataTableGrouping/index.mjs +0 -8
  212. package/dist/jsx/components/DataTableGrouping/index.mjs.map +1 -1
  213. package/dist/jsx/components/DataTableGrouping/index.native.js +0 -8
  214. package/dist/jsx/components/DataTableGrouping/index.native.js.map +1 -1
  215. package/dist/jsx/components/DataTablePagination/index.mjs +30 -14
  216. package/dist/jsx/components/DataTablePagination/index.mjs.map +1 -1
  217. package/dist/jsx/components/DataTablePagination/index.native.js +30 -14
  218. package/dist/jsx/components/DataTablePagination/index.native.js.map +1 -1
  219. package/dist/jsx/components/DataTableSearch/index.mjs +0 -3
  220. package/dist/jsx/components/DataTableSearch/index.mjs.map +1 -1
  221. package/dist/jsx/components/DataTableSearch/index.native.js +0 -3
  222. package/dist/jsx/components/DataTableSearch/index.native.js.map +1 -1
  223. package/dist/jsx/components/DataTableToolbar/index.mjs +0 -1
  224. package/dist/jsx/components/DataTableToolbar/index.mjs.map +1 -1
  225. package/dist/jsx/components/DataTableToolbar/index.native.js +0 -1
  226. package/dist/jsx/components/DataTableToolbar/index.native.js.map +1 -1
  227. package/dist/jsx/components/DataTableViewOptions/index.mjs +0 -5
  228. package/dist/jsx/components/DataTableViewOptions/index.mjs.map +1 -1
  229. package/dist/jsx/components/DataTableViewOptions/index.native.js +0 -5
  230. package/dist/jsx/components/DataTableViewOptions/index.native.js.map +1 -1
  231. package/dist/jsx/components/FilterManager.mjs +0 -1
  232. package/dist/jsx/components/FilterManager.mjs.map +1 -1
  233. package/dist/jsx/components/FilterManager.native.js +0 -1
  234. package/dist/jsx/components/FilterManager.native.js.map +1 -1
  235. package/dist/jsx/components/FilterOperatorValueEditor/index.mjs +2 -2
  236. package/dist/jsx/components/FilterOperatorValueEditor/index.mjs.map +1 -1
  237. package/dist/jsx/components/FilterOperatorValueEditor/index.native.js +2 -2
  238. package/dist/jsx/components/FilterOperatorValueEditor/index.native.js.map +1 -1
  239. package/dist/jsx/components/TableInput/index.mjs +3 -2
  240. package/dist/jsx/components/TableInput/index.mjs.map +1 -1
  241. package/dist/jsx/components/TableInput/index.native.js +4 -2
  242. package/dist/jsx/components/TableInput/index.native.js.map +1 -1
  243. package/dist/jsx/hooks/useDataTable.mjs +24 -8
  244. package/dist/jsx/hooks/useDataTable.mjs.map +1 -1
  245. package/dist/jsx/hooks/useDataTable.native.js +28 -8
  246. package/dist/jsx/hooks/useDataTable.native.js.map +1 -1
  247. package/dist/jsx/index.js +3 -1
  248. package/dist/jsx/index.js.map +1 -1
  249. package/dist/jsx/index.mjs +3 -1
  250. package/dist/jsx/index.mjs.map +1 -1
  251. package/dist/jsx/index.native.js +12 -0
  252. package/dist/jsx/index.native.js.map +1 -1
  253. package/dist/jsx/shared/devWarn.mjs +43 -0
  254. package/dist/jsx/shared/devWarn.mjs.map +1 -0
  255. package/dist/jsx/shared/devWarn.native.js +84 -0
  256. package/dist/jsx/shared/devWarn.native.js.map +1 -0
  257. package/dist/jsx/utils/columnAlign.mjs +4 -1
  258. package/dist/jsx/utils/columnAlign.mjs.map +1 -1
  259. package/dist/jsx/utils/columnAlign.native.js +4 -1
  260. package/dist/jsx/utils/columnAlign.native.js.map +1 -1
  261. package/dist/jsx/utils/filterFields.mjs +5 -0
  262. package/dist/jsx/utils/filterFields.mjs.map +1 -1
  263. package/dist/jsx/utils/filterFields.native.js +5 -0
  264. package/dist/jsx/utils/filterFields.native.js.map +1 -1
  265. package/dist/jsx/utils/filterUtils.mjs +30 -0
  266. package/dist/jsx/utils/filterUtils.mjs.map +1 -1
  267. package/dist/jsx/utils/filterUtils.native.js +50 -0
  268. package/dist/jsx/utils/filterUtils.native.js.map +1 -1
  269. package/dist/jsx/utils/money.mjs +104 -0
  270. package/dist/jsx/utils/money.mjs.map +1 -0
  271. package/dist/jsx/utils/money.native.js +165 -0
  272. package/dist/jsx/utils/money.native.js.map +1 -0
  273. package/dist/jsx/utils/rowAccumulator.mjs +23 -0
  274. package/dist/jsx/utils/rowAccumulator.mjs.map +1 -0
  275. package/dist/jsx/utils/rowAccumulator.native.js +51 -0
  276. package/dist/jsx/utils/rowAccumulator.native.js.map +1 -0
  277. package/package.json +12 -12
  278. package/src/components/ColumnHeaderFilter/ColumnHeaderFilter.spec.tsx +142 -7
  279. package/src/components/ColumnHeaderFilter/ColumnHeaderFilter.stories.tsx +46 -9
  280. package/src/components/ColumnHeaderFilter/index.tsx +104 -47
  281. package/src/components/DataTable/DataTable.stories.tsx +186 -14
  282. package/src/components/DataTable/DataTableCardControls.tsx +11 -13
  283. package/src/components/DataTable/DataTableRoot.tsx +40 -14
  284. package/src/components/DataTable/DataTableStateContext.ts +7 -0
  285. package/src/components/DataTable/columnWidthLayout.spec.tsx +195 -0
  286. package/src/components/DataTable/headerSorting.spec.tsx +25 -0
  287. package/src/components/DataTable/moneyColumn.spec.tsx +151 -0
  288. package/src/components/DataTable/rowAccumulator.spec.tsx +171 -0
  289. package/src/components/DataTableBulkActions/index.tsx +0 -4
  290. package/src/components/DataTableCell/index.tsx +28 -2
  291. package/src/components/DataTableColumnPinning/DataTableColumnPinning.stories.tsx +0 -4
  292. package/src/components/DataTableDateFilter/index.tsx +0 -7
  293. package/src/components/DataTableFilterButton/index.tsx +1 -1
  294. package/src/components/DataTableFilterChips/FilterChip.spec.tsx +6 -0
  295. package/src/components/DataTableFilterChips/FilterChip.tsx +3 -2
  296. package/src/components/DataTableFilters/index.tsx +1 -1
  297. package/src/components/DataTableGrouping/DataTableGrouping.stories.tsx +0 -4
  298. package/src/components/DataTableGrouping/index.tsx +1 -13
  299. package/src/components/DataTablePagination/DataTablePagination.stories.tsx +14 -1
  300. package/src/components/DataTablePagination/DataTablePagination.width.spec.tsx +51 -0
  301. package/src/components/DataTablePagination/index.tsx +60 -16
  302. package/src/components/DataTableSearch/index.tsx +2 -3
  303. package/src/components/DataTableToolbar/DataTableToolbar.stories.tsx +2 -4
  304. package/src/components/DataTableToolbar/index.tsx +1 -5
  305. package/src/components/DataTableViewOptions/index.tsx +2 -13
  306. package/src/components/FilterManager.tsx +1 -3
  307. package/src/components/FilterOperatorValueEditor/FilterOperatorValueEditor.spec.tsx +1 -1
  308. package/src/components/FilterOperatorValueEditor/FilterOperatorValueEditor.stories.tsx +1 -0
  309. package/src/components/FilterOperatorValueEditor/index.tsx +10 -2
  310. package/src/components/TableInput/index.native.tsx +3 -2
  311. package/src/components/TableInput/index.tsx +3 -2
  312. package/src/hooks/useDataTable.ts +43 -7
  313. package/src/index.ts +13 -0
  314. package/src/shared/devWarn.ts +97 -0
  315. package/src/types.ts +71 -2
  316. package/src/utils/columnAlign.ts +9 -1
  317. package/src/utils/filterFields.ts +23 -1
  318. package/src/utils/filterUtils.ts +50 -1
  319. package/src/utils/money.spec.ts +156 -0
  320. package/src/utils/money.ts +202 -0
  321. package/src/utils/rowAccumulator.ts +136 -0
  322. package/types/components/ColumnHeaderFilter/index.d.ts +9 -2
  323. package/types/components/ColumnHeaderFilter/index.d.ts.map +1 -1
  324. package/types/components/DataTable/DataTableCardControls.d.ts.map +1 -1
  325. package/types/components/DataTable/DataTableRoot.d.ts +1 -1
  326. package/types/components/DataTable/DataTableRoot.d.ts.map +1 -1
  327. package/types/components/DataTable/DataTableStateContext.d.ts +7 -0
  328. package/types/components/DataTable/DataTableStateContext.d.ts.map +1 -1
  329. package/types/components/DataTableBulkActions/index.d.ts.map +1 -1
  330. package/types/components/DataTableCell/index.d.ts.map +1 -1
  331. package/types/components/DataTableDateFilter/index.d.ts.map +1 -1
  332. package/types/components/DataTableFilterChips/FilterChip.d.ts.map +1 -1
  333. package/types/components/DataTableGrouping/index.d.ts.map +1 -1
  334. package/types/components/DataTablePagination/index.d.ts.map +1 -1
  335. package/types/components/DataTableSearch/index.d.ts.map +1 -1
  336. package/types/components/DataTableToolbar/index.d.ts.map +1 -1
  337. package/types/components/DataTableViewOptions/index.d.ts.map +1 -1
  338. package/types/components/FilterManager.d.ts.map +1 -1
  339. package/types/components/FilterOperatorValueEditor/index.d.ts.map +1 -1
  340. package/types/components/TableInput/index.d.ts.map +1 -1
  341. package/types/components/TableInput/index.native.d.ts.map +1 -1
  342. package/types/hooks/useDataTable.d.ts +1 -1
  343. package/types/hooks/useDataTable.d.ts.map +1 -1
  344. package/types/index.d.ts +3 -0
  345. package/types/index.d.ts.map +1 -1
  346. package/types/shared/devWarn.d.ts +50 -0
  347. package/types/shared/devWarn.d.ts.map +1 -0
  348. package/types/types.d.ts +71 -3
  349. package/types/types.d.ts.map +1 -1
  350. package/types/utils/columnAlign.d.ts.map +1 -1
  351. package/types/utils/filterFields.d.ts.map +1 -1
  352. package/types/utils/filterUtils.d.ts +1 -1
  353. package/types/utils/filterUtils.d.ts.map +1 -1
  354. package/types/utils/money.d.ts +94 -0
  355. package/types/utils/money.d.ts.map +1 -0
  356. package/types/utils/rowAccumulator.d.ts +107 -0
  357. package/types/utils/rowAccumulator.d.ts.map +1 -0
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
+ };
22
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
23
+ value: true
24
+ }), mod);
25
+ var money_exports = {};
26
+ __export(money_exports, {
27
+ addMoney: () => addMoney,
28
+ compareMoney: () => compareMoney,
29
+ formatMoney: () => formatMoney,
30
+ isMoneyString: () => isMoneyString,
31
+ isNegativeMoney: () => isNegativeMoney,
32
+ moneyComparator: () => moneyComparator,
33
+ subtractMoney: () => subtractMoney,
34
+ sumMoney: () => sumMoney,
35
+ sumMoneyByCurrency: () => sumMoneyByCurrency
36
+ });
37
+ module.exports = __toCommonJS(money_exports);
38
+ var moneyPattern = /^\s*([+-]?)(\d*)(?:\.(\d*))?\s*$/;
39
+ function scaleMoney(raw) {
40
+ var _ref, _ref1;
41
+ var match = moneyPattern.exec(raw);
42
+ var whole = (_ref = match === null || match === void 0 ? void 0 : match[2]) !== null && _ref !== void 0 ? _ref : "";
43
+ var fraction = (_ref1 = match === null || match === void 0 ? void 0 : match[3]) !== null && _ref1 !== void 0 ? _ref1 : "";
44
+ if (!match || whole === "" && fraction === "") {
45
+ throw new Error(`money: not a decimal string: ${JSON.stringify(raw)}`);
46
+ }
47
+ var magnitude = BigInt((whole || "0") + fraction);
48
+ return {
49
+ units: match[1] === "-" ? -magnitude : magnitude,
50
+ scale: fraction.length
51
+ };
52
+ }
53
+ function atScale(money, scale) {
54
+ return money.units * Math.pow(BigInt(10), BigInt(scale - money.scale));
55
+ }
56
+ function renderScaled(units, scale) {
57
+ var negative = units < BigInt(0);
58
+ var digits = (negative ? -units : units).toString().padStart(scale + 1, "0");
59
+ var split = digits.length - scale;
60
+ var whole = digits.slice(0, split);
61
+ var fraction = digits.slice(split);
62
+ return `${negative ? "-" : ""}${whole}${scale > 0 ? `.${fraction}` : ""}`;
63
+ }
64
+ function isMoneyString(raw) {
65
+ var _match_;
66
+ if (typeof raw !== "string") return false;
67
+ var match = moneyPattern.exec(raw);
68
+ return !!match && !(match[2] === "" && ((_match_ = match[3]) !== null && _match_ !== void 0 ? _match_ : "") === "");
69
+ }
70
+ function addMoney(a, b) {
71
+ var x = scaleMoney(a);
72
+ var y = scaleMoney(b);
73
+ var scale = Math.max(x.scale, y.scale);
74
+ return renderScaled(atScale(x, scale) + atScale(y, scale), scale);
75
+ }
76
+ function subtractMoney(a, b) {
77
+ var x = scaleMoney(a);
78
+ var y = scaleMoney(b);
79
+ var scale = Math.max(x.scale, y.scale);
80
+ return renderScaled(atScale(x, scale) - atScale(y, scale), scale);
81
+ }
82
+ function sumMoney(values) {
83
+ if (values.length === 0) return "0";
84
+ var scaled = values.map(scaleMoney);
85
+ var scale = scaled.reduce(function (widest, m) {
86
+ return Math.max(widest, m.scale);
87
+ }, 0);
88
+ return renderScaled(scaled.reduce(function (total, m) {
89
+ return total + atScale(m, scale);
90
+ }, BigInt(0)), scale);
91
+ }
92
+ function sumMoneyByCurrency(rows, amountOf, currencyOf) {
93
+ var totals = {};
94
+ var _iteratorNormalCompletion = true,
95
+ _didIteratorError = false,
96
+ _iteratorError = void 0;
97
+ try {
98
+ for (var _iterator = rows[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
99
+ var row = _step.value;
100
+ var amount = amountOf(row);
101
+ if (!isMoneyString(amount)) continue;
102
+ var raw = currencyOf(row);
103
+ var code = typeof raw === "string" && raw ? raw : "\u2014";
104
+ var running = totals[code];
105
+ totals[code] = running ? addMoney(running, amount) : amount;
106
+ }
107
+ } catch (err) {
108
+ _didIteratorError = true;
109
+ _iteratorError = err;
110
+ } finally {
111
+ try {
112
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
113
+ _iterator.return();
114
+ }
115
+ } finally {
116
+ if (_didIteratorError) {
117
+ throw _iteratorError;
118
+ }
119
+ }
120
+ }
121
+ return totals;
122
+ }
123
+ function compareMoney(a, b) {
124
+ var x = scaleMoney(a);
125
+ var y = scaleMoney(b);
126
+ var scale = Math.max(x.scale, y.scale);
127
+ var delta = atScale(x, scale) - atScale(y, scale);
128
+ if (delta < BigInt(0)) return -1;
129
+ if (delta > BigInt(0)) return 1;
130
+ return 0;
131
+ }
132
+ function moneyComparator(a, b) {
133
+ var left = isMoneyString(a) ? a : null;
134
+ var right = isMoneyString(b) ? b : null;
135
+ if (left === null && right === null) return 0;
136
+ if (left === null) return -1;
137
+ if (right === null) return 1;
138
+ return compareMoney(left, right);
139
+ }
140
+ function isNegativeMoney(raw) {
141
+ return typeof raw === "string" && raw.trimStart().startsWith("-");
142
+ }
143
+ function formatMoney(raw, currency, locale) {
144
+ if (typeof raw !== "string" || raw === "") return "";
145
+ if (!isMoneyString(raw)) return raw;
146
+ var value = Number(raw);
147
+ if (!Number.isFinite(value)) return raw;
148
+ if (!currency) {
149
+ return value.toLocaleString(locale, {
150
+ minimumFractionDigits: 2
151
+ });
152
+ }
153
+ try {
154
+ return value.toLocaleString(locale, {
155
+ style: "currency",
156
+ currency,
157
+ minimumFractionDigits: 2
158
+ });
159
+ } catch (unused) {
160
+ return `${currency} ${value.toLocaleString(locale, {
161
+ minimumFractionDigits: 2
162
+ })}`;
163
+ }
164
+ }
165
+ //# sourceMappingURL=money.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","money_exports","addMoney","compareMoney","formatMoney","isMoneyString","isNegativeMoney","moneyComparator","subtractMoney","sumMoney","sumMoneyByCurrency","module","exports","moneyPattern","scaleMoney","raw","_ref","_ref1","match","exec","whole","fraction","Error","JSON","stringify","magnitude","BigInt","units","scale","length","atScale","money","Math","pow","renderScaled","negative","digits","toString","padStart","split","slice","_match_","a","b","x","y","max","values","scaled","map","reduce","widest","m","total","rows","amountOf","currencyOf","totals","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","next","done","row","amount"],"sources":["../../../src/utils/money.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,23 @@
1
+ function accumulateRows(data, accumulator) {
2
+ if (!accumulator) return {
3
+ rows: data,
4
+ total: void 0
5
+ };
6
+ const ordered = accumulator.order ? [...data].sort(accumulator.order) : data;
7
+ let carried = typeof accumulator.initial === "function" ? accumulator.initial() : accumulator.initial;
8
+ const rows = ordered.map((row, index) => {
9
+ carried = accumulator.reduce(carried, row, index);
10
+ const derived = accumulator.derive(carried, row, index);
11
+ if (!derived) return row;
12
+ return {
13
+ ...row,
14
+ ...derived
15
+ };
16
+ });
17
+ return {
18
+ rows,
19
+ total: accumulator.total ? accumulator.total(carried, rows.length) : void 0
20
+ };
21
+ }
22
+ export { accumulateRows };
23
+ //# sourceMappingURL=rowAccumulator.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["accumulateRows","data","accumulator","rows","total","ordered","order","sort","carried","initial","map","row","index","reduce","derived","derive","length"],"sources":["../../../src/utils/rowAccumulator.ts"],"sourcesContent":[null],"mappings":"AA6GO,SAASA,eACdC,IAAA,EACAC,WAAA,EAC6B;EAC7B,IAAI,CAACA,WAAA,EAAa,OAAO;IAAEC,IAAA,EAAMF,IAAA;IAAMG,KAAA,EAAO;EAAU;EAExD,MAAMC,OAAA,GAAUH,WAAA,CAAYI,KAAA,GAAQ,CAAC,GAAGL,IAAI,EAAEM,IAAA,CAAKL,WAAA,CAAYI,KAAK,IAAIL,IAAA;EAExE,IAAIO,OAAA,GACF,OAAON,WAAA,CAAYO,OAAA,KAAY,aAC1BP,WAAA,CAAYO,OAAA,CAA0B,IACvCP,WAAA,CAAYO,OAAA;EAElB,MAAMN,IAAA,GAAOE,OAAA,CAAQK,GAAA,CAAI,CAACC,GAAA,EAAKC,KAAA,KAAU;IACvCJ,OAAA,GAAUN,WAAA,CAAYW,MAAA,CAAOL,OAAA,EAASG,GAAA,EAAKC,KAAK;IAChD,MAAME,OAAA,GAAUZ,WAAA,CAAYa,MAAA,CAAOP,OAAA,EAASG,GAAA,EAAKC,KAAK;IAGtD,IAAI,CAACE,OAAA,EAAS,OAAOH,GAAA;IACrB,OAAO;MAAE,GAAGA,GAAA;MAAK,GAAGG;IAAQ;EAC9B,CAAC;EAED,OAAO;IACLX,IAAA;IACAC,KAAA,EAAOF,WAAA,CAAYE,KAAA,GAAQF,WAAA,CAAYE,KAAA,CAAMI,OAAA,EAASL,IAAA,CAAKa,MAAM,IAAI;EACvE;AACF","ignoreList":[]}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
+ };
22
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
23
+ value: true
24
+ }), mod);
25
+ var rowAccumulator_exports = {};
26
+ __export(rowAccumulator_exports, {
27
+ accumulateRows: () => accumulateRows
28
+ });
29
+ module.exports = __toCommonJS(rowAccumulator_exports);
30
+ function accumulateRows(data, accumulator) {
31
+ if (!accumulator) return {
32
+ rows: data,
33
+ total: void 0
34
+ };
35
+ var ordered = accumulator.order ? [...data].sort(accumulator.order) : data;
36
+ var carried = typeof accumulator.initial === "function" ? accumulator.initial() : accumulator.initial;
37
+ var rows = ordered.map(function (row, index) {
38
+ carried = accumulator.reduce(carried, row, index);
39
+ var derived = accumulator.derive(carried, row, index);
40
+ if (!derived) return row;
41
+ return {
42
+ ...row,
43
+ ...derived
44
+ };
45
+ });
46
+ return {
47
+ rows,
48
+ total: accumulator.total ? accumulator.total(carried, rows.length) : void 0
49
+ };
50
+ }
51
+ //# sourceMappingURL=rowAccumulator.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call"],"sources":["../../../src/utils/rowAccumulator.ts"],"sourcesContent":[null],"mappings":"AA6GO,YAAS;;AAId,IAAAA,SAAK,GAAAC,MAAa,CAAAC,cAAe;AAEjC,IAAAC,gBAAgB,GAAAF,MAAA,CAAYG,wBAAuB;AAEnD,IAAAC,iBACE,GAAOJ,MAAA,CAAAK,mBAAwB;AAIjC,IAAAC,YAAa,GAAAN,MAAQ,CAAAO,SAAU,CAAAC,cAAU;AACvC,IAAAC,QAAA,GAAUA,CAAAC,MAAA,EAAAC,GAAY;EACtB,SAAMC,IAAA,IAAAD,GAAU,EAGhBZ,SAAK,CAAAW,MAAS,EAAAE,IAAO;IAAAC,GAAA,EAAAF,GAAA,CAAAC,IAAA;IAAAE,UAAA;EAAA;AACrB;AAA4B,IAC7BC,WAAA,GAAAA,CAAAC,EAAA,EAAAC,IAAA,EAAAC,MAAA,EAAAC,IAAA;EAED,IAAAF,IAAO,WAAAA,IAAA,wBAAAA,IAAA;IACL,SAAAG,GAAA,IAAAhB,iBAAA,CAAAa,IAAA,GACA,KAAOX,YAAY,CAAAe,IAAA,CAAAL,EAAQ,EAAAI,GAAA,KAAAA,GAAY,KAAMF,MAAA,EAC/CnB,SAAA,CAAAiB,EAAA,EAAAI,GAAA;MAAAP,GAAA,EAAAA,CAAA,KAAAI,IAAA,CAAAG,GAAA;MAAAN,UAAA,IAAAK,IAAA,GAAAjB,gBAAA,CAAAe,IAAA,EAAAG,GAAA,MAAAD,IAAA,CAAAL;IAAA;EACF","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@multiplatform.one/table",
3
- "version": "7.7.6",
3
+ "version": "7.8.0",
4
4
  "description": "Advanced table components with filtering, pagination, sorting, and URL state management",
5
5
  "keywords": [
6
6
  "cross-platform",
@@ -80,13 +80,13 @@
80
80
  "@tanstack/react-table": "^8.21.3",
81
81
  "@tanstack/table-core": "^8.21.3",
82
82
  "tamagui": "2.7.6",
83
- "@multiplatform.one/components": "7.7.6",
84
- "@multiplatform.one/forms": "7.7.6",
85
- "@multiplatform.one/platform": "7.7.6",
86
- "@multiplatform.one/rich-text": "7.7.6",
87
- "@multiplatform.one/router": "7.7.6",
88
- "@multiplatform.one/table-primitives": "7.7.6",
89
- "@multiplatform.one/theme": "7.7.6"
83
+ "@multiplatform.one/components": "7.8.0",
84
+ "@multiplatform.one/router": "7.8.0",
85
+ "@multiplatform.one/platform": "7.8.0",
86
+ "@multiplatform.one/table-primitives": "7.8.0",
87
+ "@multiplatform.one/forms": "7.8.0",
88
+ "@multiplatform.one/rich-text": "7.8.0",
89
+ "@multiplatform.one/theme": "7.8.0"
90
90
  },
91
91
  "devDependencies": {
92
92
  "@tamagui/build": "2.7.6",
@@ -98,10 +98,10 @@
98
98
  "react": "19.2.5",
99
99
  "react-dom": "19.2.5",
100
100
  "vitest": "^4.1.5",
101
- "@multiplatform.one/config": "7.7.6",
102
- "@multiplatform.one/router": "7.7.6",
103
- "@multiplatform.one/storybook": "7.7.6",
104
- "@multiplatform.one/test-utils": "7.7.6"
101
+ "@multiplatform.one/router": "7.8.0",
102
+ "@multiplatform.one/storybook": "7.8.0",
103
+ "@multiplatform.one/test-utils": "7.8.0",
104
+ "@multiplatform.one/config": "7.8.0"
105
105
  },
106
106
  "peerDependencies": {
107
107
  "i18next": "^25.0.0",
@@ -1,6 +1,7 @@
1
- import { fireEvent } from "@testing-library/react";
1
+ import { createEvent, fireEvent, screen, waitFor } from "@testing-library/react";
2
2
  import { describe, expect, it, vi } from "vitest";
3
3
  import { renderWithProviders } from "@multiplatform.one/test-utils";
4
+ import { useTheme } from "tamagui";
4
5
  import { ColumnHeaderFilter } from "./index";
5
6
 
6
7
  const renderTrigger = (props: Partial<Parameters<typeof ColumnHeaderFilter>[0]> = {}) =>
@@ -18,6 +19,33 @@ const trigger = (container: HTMLElement) =>
18
19
  container.querySelector('[aria-label="Filter column Status"]') as HTMLElement;
19
20
 
20
21
  describe("ColumnHeaderFilter trigger", () => {
22
+ it.each(["Enter", " "])("opens with %s without triggering header shortcuts", (key) => {
23
+ const parentKeyDown = vi.fn();
24
+ const { container } = renderWithProviders(
25
+ <div onKeyDown={parentKeyDown}>
26
+ <ColumnHeaderFilter
27
+ columnId="status"
28
+ columnLabel="Status"
29
+ columnType="text"
30
+ onFilterChange={() => {}}
31
+ />
32
+ </div>,
33
+ );
34
+ const floor = trigger(container);
35
+ expect(floor.tabIndex).toBe(0);
36
+ const event = createEvent.keyDown(floor, { key, bubbles: true, cancelable: true });
37
+ fireEvent(floor, event);
38
+ expect(event.defaultPrevented).toBe(true);
39
+ expect(parentKeyDown).not.toHaveBeenCalled();
40
+ expect(document.body.textContent).toContain("Filter: Status");
41
+ });
42
+
43
+ it("keeps ordinary typing out of the opener", () => {
44
+ const { container } = renderTrigger();
45
+ fireEvent.keyDown(trigger(container), { key: "x" });
46
+ expect(document.body.textContent).not.toContain("Filter: Status");
47
+ });
48
+
21
49
  it("renders the funnel trigger with its column-scoped name", () => {
22
50
  const { container } = renderTrigger();
23
51
  expect(trigger(container)).not.toBeNull();
@@ -61,6 +89,8 @@ describe("ColumnHeaderFilter press-floor paint (LC-54 amendment)", () => {
61
89
  const { container } = renderTrigger();
62
90
  const floor = trigger(container);
63
91
  expect(floor.className).not.toMatch(paintedStateAtom);
92
+ expect(floor.className).toContain("mp-chip-dismiss");
93
+ expect(floor.firstElementChild?.className).toContain("mp-chip-dismiss-ring");
64
94
  });
65
95
 
66
96
  it("positive control: the glyph-scale ring is where the hover fill lives", () => {
@@ -75,11 +105,116 @@ describe("ColumnHeaderFilter press-floor paint (LC-54 amendment)", () => {
75
105
  expect(ring.querySelector("svg")).not.toBeNull();
76
106
  });
77
107
 
78
- it("an applied filter keeps full rest opacity (honest active state)", () => {
79
- // 0.7 compiles to the `_o-0--7` atom (dots escape as double dashes).
80
- const idle = renderTrigger();
81
- expect(trigger(idle.container).className).toMatch(/_o-0--7/);
82
- const filtered = renderTrigger({ isFiltered: true });
83
- expect(trigger(filtered.container).className).not.toMatch(/_o-0--7/);
108
+ for (const isFiltered of [false, true]) {
109
+ it(`keeps enabled glyph ink at full rest opacity (filtered=${isFiltered})`, () => {
110
+ let expectedInk = "";
111
+ function Sample() {
112
+ const theme = useTheme();
113
+ // This provider has no accent ramp; the active hook uses readable ink.
114
+ expectedInk = String(isFiltered ? theme.color12?.val : theme.color11?.val);
115
+ return (
116
+ <ColumnHeaderFilter
117
+ columnId="status"
118
+ columnLabel="Status"
119
+ columnType="text"
120
+ onFilterChange={() => {}}
121
+ isFiltered={isFiltered}
122
+ />
123
+ );
124
+ }
125
+ const { container } = renderWithProviders(<Sample />);
126
+ const svg = trigger(container).querySelector("svg")!;
127
+ expect(svg.getAttribute("fill")).toBe(expectedInk);
128
+ expect(svg.getAttribute("fill")).not.toContain("var(");
129
+ for (
130
+ let node = svg.parentElement;
131
+ node && node !== document.body;
132
+ node = node.parentElement
133
+ ) {
134
+ expect(Number(getComputedStyle(node).opacity || 1)).toBe(1);
135
+ }
136
+ });
137
+ }
138
+ });
139
+
140
+ describe("ColumnHeaderFilter applied draft", () => {
141
+ const input = () => screen.getByPlaceholderText("Enter value...") as HTMLInputElement;
142
+ const apply = () => fireEvent.click(screen.getByRole("button", { name: "Apply" }));
143
+ const sample = (filterValue: { operator: string; value: unknown } | undefined) => (
144
+ <ColumnHeaderFilter
145
+ columnId="status"
146
+ columnLabel="Status"
147
+ columnType="text"
148
+ filterValue={filterValue}
149
+ isFiltered={filterValue !== undefined}
150
+ onFilterChange={() => {}}
151
+ />
152
+ );
153
+
154
+ it("opens with the supplied operator and value", () => {
155
+ const { container } = renderTrigger({ filterValue: { operator: "is", value: "corp" } });
156
+ fireEvent.click(trigger(container));
157
+ expect(input().value).toBe("corp");
158
+ expect(screen.getByRole("combobox", { name: "Condition" }).textContent).toBe("Is");
159
+ });
160
+
161
+ it("keeps an open draft when an external filter update arrives", () => {
162
+ const result = renderWithProviders(sample({ operator: "contains", value: "corp" }));
163
+ fireEvent.click(trigger(result.container));
164
+ fireEvent.change(input(), { target: { value: "draft" } });
165
+ result.rerender(sample({ operator: "is", value: "external" }));
166
+ expect(input().value).toBe("draft");
167
+ expect(screen.getByRole("combobox", { name: "Condition" }).textContent).toBe("Contains");
168
+ });
169
+
170
+ it("reads the latest external filter when reopened", async () => {
171
+ const result = renderWithProviders(sample({ operator: "contains", value: "corp" }));
172
+ fireEvent.click(trigger(result.container));
173
+ apply();
174
+ await waitFor(() => expect(screen.queryByPlaceholderText("Enter value...")).toBeNull());
175
+ result.rerender(sample({ operator: "is", value: "external" }));
176
+ fireEvent.click(trigger(result.container));
177
+ expect(input().value).toBe("external");
178
+ expect(screen.getByRole("combobox", { name: "Condition" }).textContent).toBe("Is");
179
+ });
180
+
181
+ it("clears without closing, then applies the newly composed draft", () => {
182
+ const onFilterChange = vi.fn();
183
+ const { container } = renderTrigger({
184
+ isFiltered: true,
185
+ filterValue: { operator: "contains", value: "corp" },
186
+ onFilterChange,
187
+ });
188
+ fireEvent.click(trigger(container));
189
+ fireEvent.click(screen.getByRole("button", { name: "Clear" }));
190
+ expect(onFilterChange).toHaveBeenLastCalledWith(undefined);
191
+ expect(input().value).toBe("");
192
+ fireEvent.change(input(), { target: { value: "next" } });
193
+ apply();
194
+ expect(onFilterChange).toHaveBeenLastCalledWith({ operator: "contains", value: "next" });
195
+ });
196
+
197
+ it("resets to the default when the applied filter was removed while closed", async () => {
198
+ const result = renderWithProviders(sample({ operator: "is", value: "corp" }));
199
+ fireEvent.click(trigger(result.container));
200
+ fireEvent.change(input(), { target: { value: "draft" } });
201
+ apply();
202
+ await waitFor(() => expect(screen.queryByPlaceholderText("Enter value...")).toBeNull());
203
+ result.rerender(sample(undefined));
204
+ fireEvent.click(trigger(result.container));
205
+ expect(input().value).toBe("");
206
+ expect(screen.getByRole("combobox", { name: "Condition" }).textContent).toBe("Contains");
207
+ });
208
+
209
+ it("uses an offered numeric condition initially and after Clear", () => {
210
+ const onFilterChange = vi.fn();
211
+ const { container } = renderTrigger({ columnType: "number", isFiltered: true, onFilterChange });
212
+ fireEvent.click(trigger(container));
213
+ expect(screen.getByRole("combobox", { name: "Condition" }).textContent).toBe("Is");
214
+ fireEvent.click(screen.getByRole("button", { name: "Clear" }));
215
+ expect(screen.getByRole("combobox", { name: "Condition" }).textContent).toBe("Is");
216
+ fireEvent.change(input(), { target: { value: "50" } });
217
+ apply();
218
+ expect(onFilterChange).toHaveBeenLastCalledWith({ operator: "is", value: "50" });
84
219
  });
85
220
  });
@@ -1,8 +1,12 @@
1
1
  import type { Meta } from "@storybook/react-native-web-vite";
2
- import { YStack, Text } from "tamagui";
2
+ import { useState } from "react";
3
+ import { useResolvedKnobs } from "@multiplatform.one/theme";
4
+ import { YStack, XStack, Text } from "tamagui";
5
+ import { ColumnHeaderFilter, type ColumnFilterType } from "./index";
3
6
 
4
7
  const meta: Meta = {
5
8
  title: "Table/ColumnHeaderFilter",
9
+ component: ColumnHeaderFilter,
6
10
  parameters: {
7
11
  status: { type: "stable" },
8
12
  },
@@ -10,14 +14,47 @@ const meta: Meta = {
10
14
 
11
15
  export default meta;
12
16
 
13
- export const Default = {
14
- name: "Main",
15
- render: () => (
16
- <YStack padding="$4">
17
- <Text fontSize="$2" color="$color10">
18
- ColumnHeaderFilter provides AG Grid-style column filtering with operators and value inputs.
19
- It requires a DataTable column context. See DataTable stories for integrated usage.
17
+ function ControlledColumn({
18
+ initiallyFiltered = false,
19
+ columnType = "text",
20
+ }: {
21
+ initiallyFiltered?: boolean;
22
+ columnType?: ColumnFilterType;
23
+ }) {
24
+ const label = columnType === "number" ? "Amount" : "Invoice";
25
+ const { knobProps } = useResolvedKnobs();
26
+ const [filter, setFilter] = useState<{ operator: string; value: string } | undefined>(
27
+ initiallyFiltered ? { operator: "contains", value: "corp" } : undefined,
28
+ );
29
+ return (
30
+ <YStack {...knobProps.panelPadding} {...knobProps.gap}>
31
+ <XStack alignItems="center" {...knobProps.gap}>
32
+ <Text {...knobProps.label}>{label}</Text>
33
+ <ColumnHeaderFilter
34
+ columnId="invoice"
35
+ columnLabel={label}
36
+ columnType={columnType}
37
+ filterValue={filter}
38
+ isFiltered={filter !== undefined}
39
+ onFilterChange={setFilter}
40
+ />
41
+ </XStack>
42
+ <Text {...knobProps.body} aria-live="polite">
43
+ {filter ? `Applied: ${filter.operator} ${filter.value ?? ""}` : "No filter applied"}
20
44
  </Text>
21
45
  </YStack>
22
- ),
46
+ );
47
+ }
48
+
49
+ export const Default = {
50
+ name: "Main",
51
+ render: () => <ControlledColumn />,
52
+ };
53
+
54
+ export const Filtered = {
55
+ render: () => <ControlledColumn initiallyFiltered />,
56
+ };
57
+
58
+ export const NumberColumn = {
59
+ render: () => <ControlledColumn columnType="number" />,
23
60
  };