@multiplatform.one/table 7.7.4 → 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 (359) 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 +51 -15
  31. package/dist/cjs/components/DataTablePagination/index.native.js +54 -16
  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 +54 -18
  116. package/dist/esm/components/DataTablePagination/index.mjs.map +1 -1
  117. package/dist/esm/components/DataTablePagination/index.native.js +57 -19
  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 +54 -18
  216. package/dist/jsx/components/DataTablePagination/index.mjs.map +1 -1
  217. package/dist/jsx/components/DataTablePagination/index.native.js +54 -16
  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.spec.tsx +9 -2
  300. package/src/components/DataTablePagination/DataTablePagination.stories.tsx +32 -0
  301. package/src/components/DataTablePagination/DataTablePagination.width.spec.tsx +109 -0
  302. package/src/components/DataTablePagination/index.tsx +100 -20
  303. package/src/components/DataTableSearch/index.tsx +2 -3
  304. package/src/components/DataTableToolbar/DataTableToolbar.stories.tsx +2 -4
  305. package/src/components/DataTableToolbar/index.tsx +1 -5
  306. package/src/components/DataTableViewOptions/index.tsx +2 -13
  307. package/src/components/FilterManager.tsx +1 -3
  308. package/src/components/FilterOperatorValueEditor/FilterOperatorValueEditor.spec.tsx +1 -1
  309. package/src/components/FilterOperatorValueEditor/FilterOperatorValueEditor.stories.tsx +1 -0
  310. package/src/components/FilterOperatorValueEditor/index.tsx +10 -2
  311. package/src/components/TableInput/index.native.tsx +3 -2
  312. package/src/components/TableInput/index.tsx +3 -2
  313. package/src/hooks/useDataTable.ts +43 -7
  314. package/src/index.ts +13 -0
  315. package/src/shared/devWarn.ts +97 -0
  316. package/src/types.ts +71 -2
  317. package/src/utils/columnAlign.ts +9 -1
  318. package/src/utils/filterFields.ts +23 -1
  319. package/src/utils/filterUtils.ts +50 -1
  320. package/src/utils/money.spec.ts +156 -0
  321. package/src/utils/money.ts +202 -0
  322. package/src/utils/rowAccumulator.ts +136 -0
  323. package/types/components/ColumnHeaderFilter/index.d.ts +9 -2
  324. package/types/components/ColumnHeaderFilter/index.d.ts.map +1 -1
  325. package/types/components/DataTable/DataTableCardControls.d.ts.map +1 -1
  326. package/types/components/DataTable/DataTableRoot.d.ts +1 -1
  327. package/types/components/DataTable/DataTableRoot.d.ts.map +1 -1
  328. package/types/components/DataTable/DataTableStateContext.d.ts +7 -0
  329. package/types/components/DataTable/DataTableStateContext.d.ts.map +1 -1
  330. package/types/components/DataTableBulkActions/index.d.ts.map +1 -1
  331. package/types/components/DataTableCell/index.d.ts.map +1 -1
  332. package/types/components/DataTableDateFilter/index.d.ts.map +1 -1
  333. package/types/components/DataTableFilterChips/FilterChip.d.ts.map +1 -1
  334. package/types/components/DataTableGrouping/index.d.ts.map +1 -1
  335. package/types/components/DataTablePagination/index.d.ts +1 -1
  336. package/types/components/DataTablePagination/index.d.ts.map +1 -1
  337. package/types/components/DataTableSearch/index.d.ts.map +1 -1
  338. package/types/components/DataTableToolbar/index.d.ts.map +1 -1
  339. package/types/components/DataTableViewOptions/index.d.ts.map +1 -1
  340. package/types/components/FilterManager.d.ts.map +1 -1
  341. package/types/components/FilterOperatorValueEditor/index.d.ts.map +1 -1
  342. package/types/components/TableInput/index.d.ts.map +1 -1
  343. package/types/components/TableInput/index.native.d.ts.map +1 -1
  344. package/types/hooks/useDataTable.d.ts +1 -1
  345. package/types/hooks/useDataTable.d.ts.map +1 -1
  346. package/types/index.d.ts +3 -0
  347. package/types/index.d.ts.map +1 -1
  348. package/types/shared/devWarn.d.ts +50 -0
  349. package/types/shared/devWarn.d.ts.map +1 -0
  350. package/types/types.d.ts +71 -3
  351. package/types/types.d.ts.map +1 -1
  352. package/types/utils/columnAlign.d.ts.map +1 -1
  353. package/types/utils/filterFields.d.ts.map +1 -1
  354. package/types/utils/filterUtils.d.ts +1 -1
  355. package/types/utils/filterUtils.d.ts.map +1 -1
  356. package/types/utils/money.d.ts +94 -0
  357. package/types/utils/money.d.ts.map +1 -0
  358. package/types/utils/rowAccumulator.d.ts +107 -0
  359. package/types/utils/rowAccumulator.d.ts.map +1 -0
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Money — exact decimal arithmetic on the wire strings (MPO-252).
3
+ *
4
+ * A Currency field arrives as a decimal STRING ("-455.87"). That is
5
+ * deliberate: a float would round it, and money that rounds is money that
6
+ * disagrees with the ledger. The consequence is that money is not `number`
7
+ * and it is not `text` either, and treating it as text is silently wrong in
8
+ * one specific way that nothing on screen reveals:
9
+ *
10
+ * "9.00" > "10.00" // true, for strings
11
+ *
12
+ * So a table sorted on an amount column is not approximately right, it is
13
+ * nonsense. The answer downstream was to make NO money column sortable
14
+ * anywhere, which gives up a real capability to avoid a wrong answer. These
15
+ * helpers exist so the kit can offer the capability instead: a comparator
16
+ * that orders decimal strings numerically, and exact add/sum so anything
17
+ * folding money client-side (a running balance, a tree rolling leaves into
18
+ * parents, a per-currency total) never touches a float.
19
+ *
20
+ * ─── The mixed-currency rule ──────────────────────────────────────────────
21
+ *
22
+ * TWO CURRENCIES ARE TWO FIGURES, AND NEITHER CONVERTS. There is no rate in
23
+ * the table, no rate on the row, and a sum that silently added USD to INR
24
+ * would produce a number that is wrong in a way nobody can see. So:
25
+ *
26
+ * - `addMoney` and `sumMoney` take amounts ONLY. They do not know about
27
+ * currency and will happily add two figures — it is the caller's job not
28
+ * to hand them different currencies.
29
+ * - `sumMoneyByCurrency` is the safe total: it returns one exact figure PER
30
+ * currency code. A ledger that genuinely mixes currencies gets N figures
31
+ * and prints them all.
32
+ * - `compareMoney` orders by magnitude only. Sorting a mixed-currency column
33
+ * by amount is meaningful only if the reader can see the codes differ,
34
+ * which is why a money column formats from the row's own currency.
35
+ *
36
+ * ─── Implementation ───────────────────────────────────────────────────────
37
+ *
38
+ * Each operand is scaled to an integer of its own fraction length, the two
39
+ * are combined as BigInt at the wider scale, and the result renders back at
40
+ * that scale: "10.50" + "0.125" is "10.625", never 10.625000000000002.
41
+ * BigInt is ES2020 and Hermes has shipped it since RN 0.70. The `BigInt()`
42
+ * call form is used instead of `10n` literals so no transform in the chain
43
+ * has to know the syntax.
44
+ *
45
+ * Malformed input throws. A NaN folded quietly into a running balance is the
46
+ * one outcome worse than a crash.
47
+ */
48
+ /** True when `raw` is a decimal string these helpers can operate on. */
49
+ export declare function isMoneyString(raw: unknown): raw is string;
50
+ /** `a + b`, exact, at the wider of the two scales. Amounts only — see the mixed-currency rule. */
51
+ export declare function addMoney(a: string, b: string): string;
52
+ /** `a - b`, exact, at the wider of the two scales. */
53
+ export declare function subtractMoney(a: string, b: string): string;
54
+ /**
55
+ * Exact sum of decimal strings, at the widest scale present. `[]` sums to
56
+ * `"0"`. Amounts only: this does not look at currency, so do not hand it two.
57
+ */
58
+ export declare function sumMoney(values: readonly string[]): string;
59
+ /**
60
+ * One exact total PER currency code — the safe total for a ledger that mixes
61
+ * currencies, because two currencies are two figures and neither converts.
62
+ * Rows whose amount is not a decimal string are skipped, not coerced.
63
+ *
64
+ * @param rows - Anything carrying an amount and a currency
65
+ * @param amountOf - Reads the decimal-string amount off a row
66
+ * @param currencyOf - Reads the currency code off a row. Rows carrying none
67
+ * group under "—", so an unlabelled figure is never merged into a labelled
68
+ * one.
69
+ */
70
+ export declare function sumMoneyByCurrency<TRow>(rows: readonly TRow[], amountOf: (row: TRow) => unknown, currencyOf: (row: TRow) => unknown): Record<string, string>;
71
+ /**
72
+ * Numeric ordering of two money strings: negative, zero or positive.
73
+ * `compareMoney("9.00", "10.00")` is negative — which string comparison gets
74
+ * backwards, and which is the whole reason this type exists.
75
+ */
76
+ export declare function compareMoney(a: string, b: string): number;
77
+ /**
78
+ * Sort comparator for a money column: `compareMoney`, but total over anything
79
+ * a row can hold. Blanks and non-decimal values sort BEFORE every real figure
80
+ * rather than throwing, because a sort must not crash the table on one bad
81
+ * row; the value is still visible in its own cell.
82
+ */
83
+ export declare function moneyComparator(a: unknown, b: unknown): number;
84
+ /** True when the money string is negative — for colour, not for arithmetic. */
85
+ export declare function isNegativeMoney(raw: unknown): boolean;
86
+ /**
87
+ * Locale-formatted money for DISPLAY. Parsing here goes one way only: the
88
+ * parsed number is never written back into the data.
89
+ *
90
+ * A non-decimal value comes back as its own string rather than as "NaN" or
91
+ * "0.00", so a bad row reads as bad instead of as zero.
92
+ */
93
+ export declare function formatMoney(raw: unknown, currency?: string, locale?: string): string;
94
+ //# sourceMappingURL=money.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"money.d.ts","sourceRoot":"","sources":["../../src/utils/money.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAiCH,wEAAwE;AACxE,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,MAAM,CAIzD;AAED,kGAAkG;AAClG,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAKrD;AAED,sDAAsD;AACtD,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAK1D;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAQ1D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EACrC,IAAI,EAAE,SAAS,IAAI,EAAE,EACrB,QAAQ,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,OAAO,EAChC,UAAU,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,OAAO,GACjC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAWxB;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAQzD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,CAO9D;AAED,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAErD;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAepF"}
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Row accumulator — a column that is a function of every row BEFORE it
3
+ * (MPO-250).
4
+ *
5
+ * A running balance is the canonical case, and it is the default column in
6
+ * the oldest data view there is: every register, statement, ledger,
7
+ * reconciliation and audit trail needs one. It is a FOLD over the rows in a
8
+ * total order, and the value on row N depends on rows 1..N-1, so it has to be
9
+ * computed before the table paginates, sorts or filters — otherwise page two
10
+ * starts from zero and a sort by payee scrambles every figure on screen.
11
+ *
12
+ * A column `cell` renderer sees ONE row and never the rows before it, so this
13
+ * is a separate seam: the table folds the whole row set once, merges the
14
+ * derived fields onto each row, and hands the finished rows to the row model.
15
+ * Everything downstream (filter, sort, group, paginate) then operates on rows
16
+ * that already carry the derived value.
17
+ *
18
+ * ─── The ordering contract ────────────────────────────────────────────────
19
+ *
20
+ * 1. The fold runs over the FULL row set the table was handed, before
21
+ * filtering, sorting and pagination. In infinite/loader mode that is the
22
+ * pages loaded so far, not the whole server-side table.
23
+ *
24
+ * 2. `order` establishes the fold order, and the rows come out IN it — a fold
25
+ * order is the order the derived column reads down, so it is also the
26
+ * table's default row order. Omit `order` and the rows fold in the order
27
+ * they arrived (typically the server's `order_by`).
28
+ *
29
+ * 3. When the user sorts on ANOTHER column, the table reorders rows for
30
+ * display and does NOT refold. The derived value stays attached to its row
31
+ * and keeps meaning "the fold value at this row's position in the fold
32
+ * order". So a running balance under a payee sort is still a correct
33
+ * per-row figure, but it no longer reads down the column as a progression.
34
+ * That is deliberate: recomputing a running balance in payee order would
35
+ * produce a number that means nothing. Say so in the column header, or
36
+ * mark the derived column `sortable: false` and let the reader sort
37
+ * elsewhere.
38
+ *
39
+ * 4. Filtering hides rows without refolding. A balance on a visible row still
40
+ * counts the rows the filter hid — which is what a statement filter does,
41
+ * and the only answer that stays consistent with the account's real total.
42
+ *
43
+ * 5. Server-side mode (`manualPagination`) folds only the page the server
44
+ * sent, because that is the only row set the client has. A running balance
45
+ * over a server-paginated table therefore needs the server to send the
46
+ * running figure, or the table to hold every row. The fold cannot invent
47
+ * rows it was never given.
48
+ *
49
+ * ─── Totals ───────────────────────────────────────────────────────────────
50
+ *
51
+ * `total` reads the finished accumulator once, after every row. Its result is
52
+ * published on the table state as `computed.foldTotal`, which a column's
53
+ * TanStack `footer` renderer reads through `useDataTableState()` — the table
54
+ * already renders a footer row whenever any column defines `footer`, so a
55
+ * total row needs no new chrome. Same fold, read once at the end.
56
+ */
57
+ import type { DataTableData } from "../types";
58
+ /**
59
+ * A fold over the ordered row set, run once before the table's row model.
60
+ *
61
+ * The object must be a STABLE reference (module constant or `useMemo`) — the
62
+ * fold re-runs and produces new row objects whenever its identity changes,
63
+ * the same contract `loadPage` and `getSubRows` already carry.
64
+ *
65
+ * @typeParam TData - The row type
66
+ * @typeParam TAcc - The accumulator carried between rows
67
+ */
68
+ export interface RowAccumulator<TData extends DataTableData = DataTableData, TAcc = any> {
69
+ /**
70
+ * Seed value. Pass a factory when the seed is mutable, so one accumulator
71
+ * object can be reused across folds without leaking state between them.
72
+ */
73
+ initial: TAcc | (() => TAcc);
74
+ /** Fold step: the accumulator so far, this row, its index in fold order. */
75
+ reduce: (accumulator: TAcc, row: TData, index: number) => TAcc;
76
+ /**
77
+ * Fields merged onto the row from the accumulator AFTER this row has been
78
+ * folded in. Declare them on the row type so a column can name one in
79
+ * `accessorKey`. Return `{}` (or nothing) to leave the row untouched.
80
+ */
81
+ derive: (accumulator: TAcc, row: TData, index: number) => Record<string, unknown> | undefined;
82
+ /**
83
+ * Comparator establishing the fold order. The rows come out in this order —
84
+ * see the ordering contract above. Omit to fold in the incoming order.
85
+ */
86
+ order?: (a: TData, b: TData) => number;
87
+ /**
88
+ * Read the finished accumulator once, after every row. Published as
89
+ * `computed.foldTotal` for a footer cell.
90
+ */
91
+ total?: (accumulator: TAcc, rowCount: number) => unknown;
92
+ }
93
+ export interface RowAccumulatorResult<TData> {
94
+ /** Rows in fold order, each carrying its derived fields. */
95
+ rows: TData[];
96
+ /** `total(finalAccumulator, rowCount)`, or undefined when no `total`. */
97
+ total: unknown;
98
+ }
99
+ /**
100
+ * Run a {@link RowAccumulator} over rows.
101
+ *
102
+ * Returns the input array untouched (same identity) when there is no
103
+ * accumulator, so a table without a fold pays nothing and its row model is
104
+ * not invalidated.
105
+ */
106
+ export declare function accumulateRows<TData extends DataTableData>(data: TData[], accumulator?: RowAccumulator<TData>): RowAccumulatorResult<TData>;
107
+ //# sourceMappingURL=rowAccumulator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rowAccumulator.d.ts","sourceRoot":"","sources":["../../src/utils/rowAccumulator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C;;;;;;;;;GASG;AACH,MAAM,WAAW,cAAc,CAAC,KAAK,SAAS,aAAa,GAAG,aAAa,EAAE,IAAI,GAAG,GAAG;IACrF;;;OAGG;IACH,OAAO,EAAE,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;IAC7B,4EAA4E;IAC5E,MAAM,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/D;;;;OAIG;IACH,MAAM,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAC9F;;;OAGG;IACH,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,KAAK,MAAM,CAAC;IACvC;;;OAGG;IACH,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;CAC1D;AAED,MAAM,WAAW,oBAAoB,CAAC,KAAK;IACzC,4DAA4D;IAC5D,IAAI,EAAE,KAAK,EAAE,CAAC;IACd,yEAAyE;IACzE,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,SAAS,aAAa,EACxD,IAAI,EAAE,KAAK,EAAE,EACb,WAAW,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,GAClC,oBAAoB,CAAC,KAAK,CAAC,CAuB7B"}