@multiplatform.one/table 6.7.0 → 7.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (473) hide show
  1. package/README.md +4 -3
  2. package/dist/cjs/components/ChildTable/index.cjs +2 -1
  3. package/dist/cjs/components/ChildTable/index.native.js +2 -1
  4. package/dist/cjs/components/ChildTable/index.native.js.map +1 -1
  5. package/dist/cjs/components/ColumnHeaderFilter/index.cjs +17 -9
  6. package/dist/cjs/components/ColumnHeaderFilter/index.native.js +32 -11
  7. package/dist/cjs/components/ColumnHeaderFilter/index.native.js.map +1 -1
  8. package/dist/cjs/components/DataTable/DataTableDocumentList.cjs +222 -0
  9. package/dist/cjs/components/DataTable/DataTableDocumentList.native.js +237 -0
  10. package/dist/cjs/components/DataTable/DataTableDocumentList.native.js.map +1 -0
  11. package/dist/cjs/components/DataTable/DataTableMobileCards.cjs +5 -2
  12. package/dist/cjs/components/DataTable/DataTableMobileCards.native.js +6 -2
  13. package/dist/cjs/components/DataTable/DataTableMobileCards.native.js.map +1 -1
  14. package/dist/cjs/components/DataTable/DataTableRoot.cjs +92 -41
  15. package/dist/cjs/components/DataTable/DataTableRoot.native.js +97 -43
  16. package/dist/cjs/components/DataTable/DataTableRoot.native.js.map +1 -1
  17. package/dist/cjs/components/DataTable/DataTableVirtualized.cjs +8 -2
  18. package/dist/cjs/components/DataTable/DataTableVirtualized.native.js +9 -3
  19. package/dist/cjs/components/DataTable/DataTableVirtualized.native.js.map +1 -1
  20. package/dist/cjs/components/DataTable/documentListSlots.cjs +59 -0
  21. package/dist/cjs/components/DataTable/documentListSlots.native.js +85 -0
  22. package/dist/cjs/components/DataTable/documentListSlots.native.js.map +1 -0
  23. package/dist/cjs/components/DataTable/index.native.js +74 -59
  24. package/dist/cjs/components/DataTable/index.native.js.map +1 -1
  25. package/dist/cjs/components/DataTable/rowStateChrome.cjs +55 -0
  26. package/dist/cjs/components/DataTable/rowStateChrome.native.js +59 -0
  27. package/dist/cjs/components/DataTable/rowStateChrome.native.js.map +1 -0
  28. package/dist/cjs/components/DataTableCell/CellModalEditor.cjs +24 -3
  29. package/dist/cjs/components/DataTableCell/CellModalEditor.native.js +6 -1
  30. package/dist/cjs/components/DataTableCell/CellModalEditor.native.js.map +1 -1
  31. package/dist/cjs/components/DataTableCell/CellOptionsEditor.cjs +9 -2
  32. package/dist/cjs/components/DataTableCell/CellOptionsEditor.native.js +11 -2
  33. package/dist/cjs/components/DataTableCell/CellOptionsEditor.native.js.map +1 -1
  34. package/dist/cjs/components/DataTableCell/index.cjs +74 -63
  35. package/dist/cjs/components/DataTableCell/index.native.js +94 -82
  36. package/dist/cjs/components/DataTableCell/index.native.js.map +1 -1
  37. package/dist/cjs/components/DataTableColumnPinning/index.cjs +54 -37
  38. package/dist/cjs/components/DataTableColumnPinning/index.native.js +59 -38
  39. package/dist/cjs/components/DataTableColumnPinning/index.native.js.map +1 -1
  40. package/dist/cjs/components/DataTableDateFilter/index.cjs +33 -14
  41. package/dist/cjs/components/DataTableDateFilter/index.native.js +33 -12
  42. package/dist/cjs/components/DataTableDateFilter/index.native.js.map +1 -1
  43. package/dist/cjs/components/DataTableExport/index.cjs +35 -7
  44. package/dist/cjs/components/DataTableExport/index.native.js +42 -7
  45. package/dist/cjs/components/DataTableExport/index.native.js.map +1 -1
  46. package/dist/cjs/components/DataTableFacetMenu/index.cjs +140 -0
  47. package/dist/cjs/components/DataTableFacetMenu/index.native.js +156 -0
  48. package/dist/cjs/components/DataTableFacetMenu/index.native.js.map +1 -0
  49. package/dist/cjs/components/DataTableFilterButton/index.cjs +51 -32
  50. package/dist/cjs/components/DataTableFilterButton/index.native.js +63 -40
  51. package/dist/cjs/components/DataTableFilterButton/index.native.js.map +1 -1
  52. package/dist/cjs/components/DataTableFilterChips/FilterChip.cjs +143 -0
  53. package/dist/cjs/components/DataTableFilterChips/FilterChip.native.js +148 -0
  54. package/dist/cjs/components/DataTableFilterChips/FilterChip.native.js.map +1 -0
  55. package/dist/cjs/components/DataTableFilterChips/index.cjs +9 -31
  56. package/dist/cjs/components/DataTableFilterChips/index.native.js +9 -32
  57. package/dist/cjs/components/DataTableFilterChips/index.native.js.map +1 -1
  58. package/dist/cjs/components/DataTableFilters/index.cjs +145 -502
  59. package/dist/cjs/components/DataTableFilters/index.native.js +171 -544
  60. package/dist/cjs/components/DataTableFilters/index.native.js.map +1 -1
  61. package/dist/cjs/components/DataTableGrouping/index.cjs +273 -108
  62. package/dist/cjs/components/DataTableGrouping/index.native.js +310 -157
  63. package/dist/cjs/components/DataTableGrouping/index.native.js.map +1 -1
  64. package/dist/cjs/components/DataTablePagination/index.cjs +147 -95
  65. package/dist/cjs/components/DataTablePagination/index.native.js +159 -106
  66. package/dist/cjs/components/DataTablePagination/index.native.js.map +1 -1
  67. package/dist/cjs/components/DataTableSearch/index.cjs +251 -210
  68. package/dist/cjs/components/DataTableSearch/index.native.js +292 -243
  69. package/dist/cjs/components/DataTableSearch/index.native.js.map +1 -1
  70. package/dist/cjs/components/DataTableToolbar/index.cjs +141 -115
  71. package/dist/cjs/components/DataTableToolbar/index.native.js +163 -148
  72. package/dist/cjs/components/DataTableToolbar/index.native.js.map +1 -1
  73. package/dist/cjs/components/DataTableViewOptions/index.cjs +25 -21
  74. package/dist/cjs/components/DataTableViewOptions/index.native.js +6 -4
  75. package/dist/cjs/components/DataTableViewOptions/index.native.js.map +1 -1
  76. package/dist/cjs/components/SimpleTable/index.cjs +336 -46
  77. package/dist/cjs/components/SimpleTable/index.native.js +356 -48
  78. package/dist/cjs/components/SimpleTable/index.native.js.map +1 -1
  79. package/dist/cjs/components/TableInput/index.cjs +147 -38
  80. package/dist/cjs/components/TableInput/index.native.js +54 -38
  81. package/dist/cjs/components/TableInput/index.native.js.map +1 -1
  82. package/dist/cjs/components/TableInput/shared.cjs +36 -1
  83. package/dist/cjs/components/TableInput/shared.native.js +35 -0
  84. package/dist/cjs/components/TableInput/shared.native.js.map +1 -1
  85. package/dist/cjs/hooks/useDataTable.cjs +33 -2
  86. package/dist/cjs/hooks/useDataTable.native.js +41 -2
  87. package/dist/cjs/hooks/useDataTable.native.js.map +1 -1
  88. package/dist/cjs/hooks/useInfiniteRows.cjs +20 -3
  89. package/dist/cjs/hooks/useInfiniteRows.native.js +20 -3
  90. package/dist/cjs/hooks/useInfiniteRows.native.js.map +1 -1
  91. package/dist/cjs/index.cjs +2 -0
  92. package/dist/cjs/index.native.js +2 -0
  93. package/dist/cjs/index.native.js.map +1 -1
  94. package/dist/cjs/utils/filterUtils.cjs +12 -5
  95. package/dist/cjs/utils/filterUtils.native.js +20 -5
  96. package/dist/cjs/utils/filterUtils.native.js.map +1 -1
  97. package/dist/esm/components/ChildTable/index.mjs +2 -1
  98. package/dist/esm/components/ChildTable/index.mjs.map +1 -1
  99. package/dist/esm/components/ChildTable/index.native.js +2 -1
  100. package/dist/esm/components/ChildTable/index.native.js.map +1 -1
  101. package/dist/esm/components/ColumnHeaderFilter/index.mjs +17 -9
  102. package/dist/esm/components/ColumnHeaderFilter/index.mjs.map +1 -1
  103. package/dist/esm/components/ColumnHeaderFilter/index.native.js +32 -11
  104. package/dist/esm/components/ColumnHeaderFilter/index.native.js.map +1 -1
  105. package/dist/esm/components/DataTable/DataTableDocumentList.mjs +196 -0
  106. package/dist/esm/components/DataTable/DataTableDocumentList.mjs.map +1 -0
  107. package/dist/esm/components/DataTable/DataTableDocumentList.native.js +208 -0
  108. package/dist/esm/components/DataTable/DataTableDocumentList.native.js.map +1 -0
  109. package/dist/esm/components/DataTable/DataTableMobileCards.mjs +5 -2
  110. package/dist/esm/components/DataTable/DataTableMobileCards.mjs.map +1 -1
  111. package/dist/esm/components/DataTable/DataTableMobileCards.native.js +6 -2
  112. package/dist/esm/components/DataTable/DataTableMobileCards.native.js.map +1 -1
  113. package/dist/esm/components/DataTable/DataTableRoot.mjs +93 -42
  114. package/dist/esm/components/DataTable/DataTableRoot.mjs.map +1 -1
  115. package/dist/esm/components/DataTable/DataTableRoot.native.js +98 -44
  116. package/dist/esm/components/DataTable/DataTableRoot.native.js.map +1 -1
  117. package/dist/esm/components/DataTable/DataTableVirtualized.mjs +8 -2
  118. package/dist/esm/components/DataTable/DataTableVirtualized.mjs.map +1 -1
  119. package/dist/esm/components/DataTable/DataTableVirtualized.native.js +9 -3
  120. package/dist/esm/components/DataTable/DataTableVirtualized.native.js.map +1 -1
  121. package/dist/esm/components/DataTable/documentListSlots.mjs +33 -0
  122. package/dist/esm/components/DataTable/documentListSlots.mjs.map +1 -0
  123. package/dist/esm/components/DataTable/documentListSlots.native.js +56 -0
  124. package/dist/esm/components/DataTable/documentListSlots.native.js.map +1 -0
  125. package/dist/esm/components/DataTable/index.native.js +52 -37
  126. package/dist/esm/components/DataTable/index.native.js.map +1 -1
  127. package/dist/esm/components/DataTable/rowStateChrome.mjs +28 -0
  128. package/dist/esm/components/DataTable/rowStateChrome.mjs.map +1 -0
  129. package/dist/esm/components/DataTable/rowStateChrome.native.js +29 -0
  130. package/dist/esm/components/DataTable/rowStateChrome.native.js.map +1 -0
  131. package/dist/esm/components/DataTableCell/CellModalEditor.mjs +25 -4
  132. package/dist/esm/components/DataTableCell/CellModalEditor.mjs.map +1 -1
  133. package/dist/esm/components/DataTableCell/CellModalEditor.native.js +6 -1
  134. package/dist/esm/components/DataTableCell/CellModalEditor.native.js.map +1 -1
  135. package/dist/esm/components/DataTableCell/CellOptionsEditor.mjs +9 -2
  136. package/dist/esm/components/DataTableCell/CellOptionsEditor.mjs.map +1 -1
  137. package/dist/esm/components/DataTableCell/CellOptionsEditor.native.js +11 -2
  138. package/dist/esm/components/DataTableCell/CellOptionsEditor.native.js.map +1 -1
  139. package/dist/esm/components/DataTableCell/index.mjs +75 -64
  140. package/dist/esm/components/DataTableCell/index.mjs.map +1 -1
  141. package/dist/esm/components/DataTableCell/index.native.js +95 -83
  142. package/dist/esm/components/DataTableCell/index.native.js.map +1 -1
  143. package/dist/esm/components/DataTableColumnPinning/index.mjs +54 -37
  144. package/dist/esm/components/DataTableColumnPinning/index.mjs.map +1 -1
  145. package/dist/esm/components/DataTableColumnPinning/index.native.js +59 -38
  146. package/dist/esm/components/DataTableColumnPinning/index.native.js.map +1 -1
  147. package/dist/esm/components/DataTableDateFilter/index.mjs +34 -15
  148. package/dist/esm/components/DataTableDateFilter/index.mjs.map +1 -1
  149. package/dist/esm/components/DataTableDateFilter/index.native.js +34 -13
  150. package/dist/esm/components/DataTableDateFilter/index.native.js.map +1 -1
  151. package/dist/esm/components/DataTableExport/index.mjs +36 -8
  152. package/dist/esm/components/DataTableExport/index.mjs.map +1 -1
  153. package/dist/esm/components/DataTableExport/index.native.js +43 -8
  154. package/dist/esm/components/DataTableExport/index.native.js.map +1 -1
  155. package/dist/esm/components/DataTableFacetMenu/index.mjs +115 -0
  156. package/dist/esm/components/DataTableFacetMenu/index.mjs.map +1 -0
  157. package/dist/esm/components/DataTableFacetMenu/index.native.js +128 -0
  158. package/dist/esm/components/DataTableFacetMenu/index.native.js.map +1 -0
  159. package/dist/esm/components/DataTableFilterButton/index.mjs +54 -35
  160. package/dist/esm/components/DataTableFilterButton/index.mjs.map +1 -1
  161. package/dist/esm/components/DataTableFilterButton/index.native.js +66 -43
  162. package/dist/esm/components/DataTableFilterButton/index.native.js.map +1 -1
  163. package/dist/esm/components/DataTableFilterChips/FilterChip.mjs +118 -0
  164. package/dist/esm/components/DataTableFilterChips/FilterChip.mjs.map +1 -0
  165. package/dist/esm/components/DataTableFilterChips/FilterChip.native.js +120 -0
  166. package/dist/esm/components/DataTableFilterChips/FilterChip.native.js.map +1 -0
  167. package/dist/esm/components/DataTableFilterChips/index.mjs +9 -32
  168. package/dist/esm/components/DataTableFilterChips/index.mjs.map +1 -1
  169. package/dist/esm/components/DataTableFilterChips/index.native.js +9 -33
  170. package/dist/esm/components/DataTableFilterChips/index.native.js.map +1 -1
  171. package/dist/esm/components/DataTableFilters/index.mjs +149 -506
  172. package/dist/esm/components/DataTableFilters/index.mjs.map +1 -1
  173. package/dist/esm/components/DataTableFilters/index.native.js +175 -548
  174. package/dist/esm/components/DataTableFilters/index.native.js.map +1 -1
  175. package/dist/esm/components/DataTableGrouping/index.mjs +275 -110
  176. package/dist/esm/components/DataTableGrouping/index.mjs.map +1 -1
  177. package/dist/esm/components/DataTableGrouping/index.native.js +287 -134
  178. package/dist/esm/components/DataTableGrouping/index.native.js.map +1 -1
  179. package/dist/esm/components/DataTablePagination/index.mjs +148 -96
  180. package/dist/esm/components/DataTablePagination/index.mjs.map +1 -1
  181. package/dist/esm/components/DataTablePagination/index.native.js +160 -107
  182. package/dist/esm/components/DataTablePagination/index.native.js.map +1 -1
  183. package/dist/esm/components/DataTableSearch/index.mjs +256 -215
  184. package/dist/esm/components/DataTableSearch/index.mjs.map +1 -1
  185. package/dist/esm/components/DataTableSearch/index.native.js +297 -248
  186. package/dist/esm/components/DataTableSearch/index.native.js.map +1 -1
  187. package/dist/esm/components/DataTableToolbar/index.mjs +145 -119
  188. package/dist/esm/components/DataTableToolbar/index.mjs.map +1 -1
  189. package/dist/esm/components/DataTableToolbar/index.native.js +167 -152
  190. package/dist/esm/components/DataTableToolbar/index.native.js.map +1 -1
  191. package/dist/esm/components/DataTableViewOptions/index.mjs +26 -22
  192. package/dist/esm/components/DataTableViewOptions/index.mjs.map +1 -1
  193. package/dist/esm/components/DataTableViewOptions/index.native.js +7 -5
  194. package/dist/esm/components/DataTableViewOptions/index.native.js.map +1 -1
  195. package/dist/esm/components/SimpleTable/index.mjs +338 -48
  196. package/dist/esm/components/SimpleTable/index.mjs.map +1 -1
  197. package/dist/esm/components/SimpleTable/index.native.js +358 -50
  198. package/dist/esm/components/SimpleTable/index.native.js.map +1 -1
  199. package/dist/esm/components/TableInput/index.mjs +150 -41
  200. package/dist/esm/components/TableInput/index.mjs.map +1 -1
  201. package/dist/esm/components/TableInput/index.native.js +55 -39
  202. package/dist/esm/components/TableInput/index.native.js.map +1 -1
  203. package/dist/esm/components/TableInput/shared.mjs +34 -1
  204. package/dist/esm/components/TableInput/shared.mjs.map +1 -1
  205. package/dist/esm/components/TableInput/shared.native.js +34 -1
  206. package/dist/esm/components/TableInput/shared.native.js.map +1 -1
  207. package/dist/esm/hooks/useDataTable.mjs +33 -2
  208. package/dist/esm/hooks/useDataTable.mjs.map +1 -1
  209. package/dist/esm/hooks/useDataTable.native.js +41 -2
  210. package/dist/esm/hooks/useDataTable.native.js.map +1 -1
  211. package/dist/esm/hooks/useInfiniteRows.mjs +20 -3
  212. package/dist/esm/hooks/useInfiniteRows.mjs.map +1 -1
  213. package/dist/esm/hooks/useInfiniteRows.native.js +20 -3
  214. package/dist/esm/hooks/useInfiniteRows.native.js.map +1 -1
  215. package/dist/esm/index.mjs +2 -1
  216. package/dist/esm/index.mjs.map +1 -1
  217. package/dist/esm/index.native.js +2 -1
  218. package/dist/esm/index.native.js.map +1 -1
  219. package/dist/esm/utils/filterUtils.mjs +12 -5
  220. package/dist/esm/utils/filterUtils.mjs.map +1 -1
  221. package/dist/esm/utils/filterUtils.native.js +20 -5
  222. package/dist/esm/utils/filterUtils.native.js.map +1 -1
  223. package/dist/jsx/components/ChildTable/index.mjs +2 -1
  224. package/dist/jsx/components/ChildTable/index.mjs.map +1 -1
  225. package/dist/jsx/components/ChildTable/index.native.js +2 -1
  226. package/dist/jsx/components/ChildTable/index.native.js.map +1 -1
  227. package/dist/jsx/components/ColumnHeaderFilter/index.mjs +17 -9
  228. package/dist/jsx/components/ColumnHeaderFilter/index.mjs.map +1 -1
  229. package/dist/jsx/components/ColumnHeaderFilter/index.native.js +32 -11
  230. package/dist/jsx/components/ColumnHeaderFilter/index.native.js.map +1 -1
  231. package/dist/jsx/components/DataTable/DataTableDocumentList.mjs +196 -0
  232. package/dist/jsx/components/DataTable/DataTableDocumentList.mjs.map +1 -0
  233. package/dist/jsx/components/DataTable/DataTableDocumentList.native.js +237 -0
  234. package/dist/jsx/components/DataTable/DataTableDocumentList.native.js.map +1 -0
  235. package/dist/jsx/components/DataTable/DataTableMobileCards.mjs +5 -2
  236. package/dist/jsx/components/DataTable/DataTableMobileCards.mjs.map +1 -1
  237. package/dist/jsx/components/DataTable/DataTableMobileCards.native.js +6 -2
  238. package/dist/jsx/components/DataTable/DataTableMobileCards.native.js.map +1 -1
  239. package/dist/jsx/components/DataTable/DataTableRoot.mjs +93 -42
  240. package/dist/jsx/components/DataTable/DataTableRoot.mjs.map +1 -1
  241. package/dist/jsx/components/DataTable/DataTableRoot.native.js +97 -43
  242. package/dist/jsx/components/DataTable/DataTableRoot.native.js.map +1 -1
  243. package/dist/jsx/components/DataTable/DataTableVirtualized.mjs +8 -2
  244. package/dist/jsx/components/DataTable/DataTableVirtualized.mjs.map +1 -1
  245. package/dist/jsx/components/DataTable/DataTableVirtualized.native.js +9 -3
  246. package/dist/jsx/components/DataTable/DataTableVirtualized.native.js.map +1 -1
  247. package/dist/jsx/components/DataTable/documentListSlots.mjs +33 -0
  248. package/dist/jsx/components/DataTable/documentListSlots.mjs.map +1 -0
  249. package/dist/jsx/components/DataTable/documentListSlots.native.js +85 -0
  250. package/dist/jsx/components/DataTable/documentListSlots.native.js.map +1 -0
  251. package/dist/jsx/components/DataTable/index.native.js +74 -59
  252. package/dist/jsx/components/DataTable/index.native.js.map +1 -1
  253. package/dist/jsx/components/DataTable/rowStateChrome.mjs +28 -0
  254. package/dist/jsx/components/DataTable/rowStateChrome.mjs.map +1 -0
  255. package/dist/jsx/components/DataTable/rowStateChrome.native.js +59 -0
  256. package/dist/jsx/components/DataTable/rowStateChrome.native.js.map +1 -0
  257. package/dist/jsx/components/DataTableCell/CellModalEditor.mjs +25 -4
  258. package/dist/jsx/components/DataTableCell/CellModalEditor.mjs.map +1 -1
  259. package/dist/jsx/components/DataTableCell/CellModalEditor.native.js +6 -1
  260. package/dist/jsx/components/DataTableCell/CellModalEditor.native.js.map +1 -1
  261. package/dist/jsx/components/DataTableCell/CellOptionsEditor.mjs +9 -2
  262. package/dist/jsx/components/DataTableCell/CellOptionsEditor.mjs.map +1 -1
  263. package/dist/jsx/components/DataTableCell/CellOptionsEditor.native.js +11 -2
  264. package/dist/jsx/components/DataTableCell/CellOptionsEditor.native.js.map +1 -1
  265. package/dist/jsx/components/DataTableCell/index.mjs +75 -64
  266. package/dist/jsx/components/DataTableCell/index.mjs.map +1 -1
  267. package/dist/jsx/components/DataTableCell/index.native.js +94 -82
  268. package/dist/jsx/components/DataTableCell/index.native.js.map +1 -1
  269. package/dist/jsx/components/DataTableColumnPinning/index.mjs +54 -37
  270. package/dist/jsx/components/DataTableColumnPinning/index.mjs.map +1 -1
  271. package/dist/jsx/components/DataTableColumnPinning/index.native.js +59 -38
  272. package/dist/jsx/components/DataTableColumnPinning/index.native.js.map +1 -1
  273. package/dist/jsx/components/DataTableDateFilter/index.mjs +34 -15
  274. package/dist/jsx/components/DataTableDateFilter/index.mjs.map +1 -1
  275. package/dist/jsx/components/DataTableDateFilter/index.native.js +33 -12
  276. package/dist/jsx/components/DataTableDateFilter/index.native.js.map +1 -1
  277. package/dist/jsx/components/DataTableExport/index.mjs +36 -8
  278. package/dist/jsx/components/DataTableExport/index.mjs.map +1 -1
  279. package/dist/jsx/components/DataTableExport/index.native.js +42 -7
  280. package/dist/jsx/components/DataTableExport/index.native.js.map +1 -1
  281. package/dist/jsx/components/DataTableFacetMenu/index.mjs +115 -0
  282. package/dist/jsx/components/DataTableFacetMenu/index.mjs.map +1 -0
  283. package/dist/jsx/components/DataTableFacetMenu/index.native.js +156 -0
  284. package/dist/jsx/components/DataTableFacetMenu/index.native.js.map +1 -0
  285. package/dist/jsx/components/DataTableFilterButton/index.mjs +54 -35
  286. package/dist/jsx/components/DataTableFilterButton/index.mjs.map +1 -1
  287. package/dist/jsx/components/DataTableFilterButton/index.native.js +63 -40
  288. package/dist/jsx/components/DataTableFilterButton/index.native.js.map +1 -1
  289. package/dist/jsx/components/DataTableFilterChips/FilterChip.mjs +118 -0
  290. package/dist/jsx/components/DataTableFilterChips/FilterChip.mjs.map +1 -0
  291. package/dist/jsx/components/DataTableFilterChips/FilterChip.native.js +148 -0
  292. package/dist/jsx/components/DataTableFilterChips/FilterChip.native.js.map +1 -0
  293. package/dist/jsx/components/DataTableFilterChips/index.mjs +9 -32
  294. package/dist/jsx/components/DataTableFilterChips/index.mjs.map +1 -1
  295. package/dist/jsx/components/DataTableFilterChips/index.native.js +9 -32
  296. package/dist/jsx/components/DataTableFilterChips/index.native.js.map +1 -1
  297. package/dist/jsx/components/DataTableFilters/index.mjs +149 -506
  298. package/dist/jsx/components/DataTableFilters/index.mjs.map +1 -1
  299. package/dist/jsx/components/DataTableFilters/index.native.js +171 -544
  300. package/dist/jsx/components/DataTableFilters/index.native.js.map +1 -1
  301. package/dist/jsx/components/DataTableGrouping/index.mjs +275 -110
  302. package/dist/jsx/components/DataTableGrouping/index.mjs.map +1 -1
  303. package/dist/jsx/components/DataTableGrouping/index.native.js +310 -157
  304. package/dist/jsx/components/DataTableGrouping/index.native.js.map +1 -1
  305. package/dist/jsx/components/DataTablePagination/index.mjs +148 -96
  306. package/dist/jsx/components/DataTablePagination/index.mjs.map +1 -1
  307. package/dist/jsx/components/DataTablePagination/index.native.js +159 -106
  308. package/dist/jsx/components/DataTablePagination/index.native.js.map +1 -1
  309. package/dist/jsx/components/DataTableSearch/index.mjs +256 -215
  310. package/dist/jsx/components/DataTableSearch/index.mjs.map +1 -1
  311. package/dist/jsx/components/DataTableSearch/index.native.js +292 -243
  312. package/dist/jsx/components/DataTableSearch/index.native.js.map +1 -1
  313. package/dist/jsx/components/DataTableToolbar/index.mjs +145 -119
  314. package/dist/jsx/components/DataTableToolbar/index.mjs.map +1 -1
  315. package/dist/jsx/components/DataTableToolbar/index.native.js +163 -148
  316. package/dist/jsx/components/DataTableToolbar/index.native.js.map +1 -1
  317. package/dist/jsx/components/DataTableViewOptions/index.mjs +26 -22
  318. package/dist/jsx/components/DataTableViewOptions/index.mjs.map +1 -1
  319. package/dist/jsx/components/DataTableViewOptions/index.native.js +6 -4
  320. package/dist/jsx/components/DataTableViewOptions/index.native.js.map +1 -1
  321. package/dist/jsx/components/SimpleTable/index.mjs +338 -48
  322. package/dist/jsx/components/SimpleTable/index.mjs.map +1 -1
  323. package/dist/jsx/components/SimpleTable/index.native.js +356 -48
  324. package/dist/jsx/components/SimpleTable/index.native.js.map +1 -1
  325. package/dist/jsx/components/TableInput/index.mjs +150 -41
  326. package/dist/jsx/components/TableInput/index.mjs.map +1 -1
  327. package/dist/jsx/components/TableInput/index.native.js +54 -38
  328. package/dist/jsx/components/TableInput/index.native.js.map +1 -1
  329. package/dist/jsx/components/TableInput/shared.mjs +34 -1
  330. package/dist/jsx/components/TableInput/shared.mjs.map +1 -1
  331. package/dist/jsx/components/TableInput/shared.native.js +35 -0
  332. package/dist/jsx/components/TableInput/shared.native.js.map +1 -1
  333. package/dist/jsx/hooks/useDataTable.mjs +33 -2
  334. package/dist/jsx/hooks/useDataTable.mjs.map +1 -1
  335. package/dist/jsx/hooks/useDataTable.native.js +41 -2
  336. package/dist/jsx/hooks/useDataTable.native.js.map +1 -1
  337. package/dist/jsx/hooks/useInfiniteRows.mjs +20 -3
  338. package/dist/jsx/hooks/useInfiniteRows.mjs.map +1 -1
  339. package/dist/jsx/hooks/useInfiniteRows.native.js +20 -3
  340. package/dist/jsx/hooks/useInfiniteRows.native.js.map +1 -1
  341. package/dist/jsx/index.js +2 -1
  342. package/dist/jsx/index.js.map +1 -1
  343. package/dist/jsx/index.mjs +2 -1
  344. package/dist/jsx/index.mjs.map +1 -1
  345. package/dist/jsx/index.native.js +2 -0
  346. package/dist/jsx/index.native.js.map +1 -1
  347. package/dist/jsx/utils/filterUtils.mjs +12 -5
  348. package/dist/jsx/utils/filterUtils.mjs.map +1 -1
  349. package/dist/jsx/utils/filterUtils.native.js +20 -5
  350. package/dist/jsx/utils/filterUtils.native.js.map +1 -1
  351. package/package.json +15 -15
  352. package/src/components/ChildTable/index.tsx +1 -0
  353. package/src/components/ColumnHeaderFilter/ColumnHeaderFilter.spec.tsx +85 -0
  354. package/src/components/ColumnHeaderFilter/index.tsx +28 -10
  355. package/src/components/DataTable/DataTable.stories.tsx +30 -0
  356. package/src/components/DataTable/DataTableDocumentList.tsx +224 -0
  357. package/src/components/DataTable/DataTableMobileCards.tsx +20 -8
  358. package/src/components/DataTable/DataTableRoot.tsx +135 -58
  359. package/src/components/DataTable/DataTableVirtualized.tsx +8 -11
  360. package/src/components/DataTable/cardLayout.spec.tsx +89 -0
  361. package/src/components/DataTable/documentListSlots.ts +57 -0
  362. package/src/components/DataTable/index.native.tsx +76 -50
  363. package/src/components/DataTable/keepPreviousData.spec.tsx +137 -0
  364. package/src/components/DataTable/rowRing.spec.tsx +118 -0
  365. package/src/components/DataTable/rowStateChrome.ts +38 -0
  366. package/src/components/DataTableCell/CellModalEditor.native.tsx +4 -0
  367. package/src/components/DataTableCell/CellModalEditor.tsx +31 -3
  368. package/src/components/DataTableCell/CellOptionsEditor.tsx +29 -12
  369. package/src/components/DataTableCell/DataTableCell.stories.tsx +3 -3
  370. package/src/components/DataTableCell/cellDraftPolicy.spec.tsx +131 -4
  371. package/src/components/DataTableCell/dataTableCell.spec.tsx +36 -1
  372. package/src/components/DataTableCell/index.tsx +121 -86
  373. package/src/components/DataTableColumnPinning/DataTableColumnPinning.spec.tsx +66 -0
  374. package/src/components/DataTableColumnPinning/index.tsx +32 -17
  375. package/src/components/DataTableDateFilter/DataTableDateFilter.spec.tsx +9 -1
  376. package/src/components/DataTableDateFilter/dateFilterZones.spec.ts +316 -0
  377. package/src/components/DataTableDateFilter/index.tsx +42 -22
  378. package/src/components/DataTableExport/exportDateZones.spec.tsx +348 -0
  379. package/src/components/DataTableExport/index.tsx +107 -63
  380. package/src/components/DataTableFacetMenu/DataTableFacetMenu.spec.tsx +264 -0
  381. package/src/components/DataTableFacetMenu/DataTableFacetMenu.stories.tsx +212 -0
  382. package/src/components/DataTableFacetMenu/index.tsx +202 -0
  383. package/src/components/DataTableFilterButton/index.tsx +66 -49
  384. package/src/components/DataTableFilterChips/DataTableFilterChips.spec.tsx +22 -0
  385. package/src/components/DataTableFilterChips/FilterChip.tsx +122 -0
  386. package/src/components/DataTableFilterChips/index.tsx +13 -29
  387. package/src/components/DataTableFilters/DataTableFilters.spec.tsx +56 -0
  388. package/src/components/DataTableFilters/index.tsx +169 -584
  389. package/src/components/DataTableGrouping/DataTableGrouping.spec.tsx +85 -0
  390. package/src/components/DataTableGrouping/index.tsx +270 -130
  391. package/src/components/DataTablePagination/DataTablePagination.spec.tsx +79 -4
  392. package/src/components/DataTablePagination/index.tsx +168 -112
  393. package/src/components/DataTableSearch/DataTableSearch.spec.tsx +40 -0
  394. package/src/components/DataTableSearch/DataTableSearch.stories.tsx +1 -1
  395. package/src/components/DataTableSearch/index.tsx +192 -163
  396. package/src/components/DataTableToolbar/DataTableToolbar.spec.tsx +48 -18
  397. package/src/components/DataTableToolbar/DataTableToolbar.stories.tsx +5 -45
  398. package/src/components/DataTableToolbar/index.tsx +128 -99
  399. package/src/components/DataTableViewOptions/index.tsx +29 -22
  400. package/src/components/SimpleTable/SimpleTable.stories.tsx +29 -5
  401. package/src/components/SimpleTable/index.tsx +442 -61
  402. package/src/components/SimpleTable/simpleTable.spec.tsx +140 -12
  403. package/src/components/TableInput/index.native.tsx +91 -81
  404. package/src/components/TableInput/index.tsx +191 -50
  405. package/src/components/TableInput/shared.ts +57 -0
  406. package/src/components/TableInput/tableInput.spec.tsx +104 -0
  407. package/src/hooks/useDataTable.spec.ts +100 -3
  408. package/src/hooks/useDataTable.ts +44 -1
  409. package/src/hooks/useInfiniteRows.spec.tsx +37 -0
  410. package/src/hooks/useInfiniteRows.ts +34 -4
  411. package/src/index.ts +7 -0
  412. package/src/types.ts +54 -3
  413. package/src/utils/filterUtils.ts +27 -5
  414. package/types/components/ChildTable/index.d.ts.map +1 -1
  415. package/types/components/ColumnHeaderFilter/index.d.ts.map +1 -1
  416. package/types/components/DataTable/DataTableDocumentList.d.ts +32 -0
  417. package/types/components/DataTable/DataTableDocumentList.d.ts.map +1 -0
  418. package/types/components/DataTable/DataTableMobileCards.d.ts +3 -1
  419. package/types/components/DataTable/DataTableMobileCards.d.ts.map +1 -1
  420. package/types/components/DataTable/DataTableRoot.d.ts +1 -1
  421. package/types/components/DataTable/DataTableRoot.d.ts.map +1 -1
  422. package/types/components/DataTable/DataTableVirtualized.d.ts +1 -2
  423. package/types/components/DataTable/DataTableVirtualized.d.ts.map +1 -1
  424. package/types/components/DataTable/documentListSlots.d.ts +26 -0
  425. package/types/components/DataTable/documentListSlots.d.ts.map +1 -0
  426. package/types/components/DataTable/index.native.d.ts +1 -1
  427. package/types/components/DataTable/index.native.d.ts.map +1 -1
  428. package/types/components/DataTable/rowStateChrome.d.ts +18 -0
  429. package/types/components/DataTable/rowStateChrome.d.ts.map +1 -0
  430. package/types/components/DataTableCell/CellModalEditor.d.ts +6 -1
  431. package/types/components/DataTableCell/CellModalEditor.d.ts.map +1 -1
  432. package/types/components/DataTableCell/CellModalEditor.native.d.ts +1 -1
  433. package/types/components/DataTableCell/CellModalEditor.native.d.ts.map +1 -1
  434. package/types/components/DataTableCell/CellOptionsEditor.d.ts +11 -3
  435. package/types/components/DataTableCell/CellOptionsEditor.d.ts.map +1 -1
  436. package/types/components/DataTableCell/index.d.ts +1 -1
  437. package/types/components/DataTableCell/index.d.ts.map +1 -1
  438. package/types/components/DataTableColumnPinning/index.d.ts.map +1 -1
  439. package/types/components/DataTableDateFilter/index.d.ts.map +1 -1
  440. package/types/components/DataTableExport/index.d.ts +17 -6
  441. package/types/components/DataTableExport/index.d.ts.map +1 -1
  442. package/types/components/DataTableFacetMenu/index.d.ts +84 -0
  443. package/types/components/DataTableFacetMenu/index.d.ts.map +1 -0
  444. package/types/components/DataTableFilterButton/index.d.ts.map +1 -1
  445. package/types/components/DataTableFilterChips/FilterChip.d.ts +15 -0
  446. package/types/components/DataTableFilterChips/FilterChip.d.ts.map +1 -0
  447. package/types/components/DataTableFilterChips/index.d.ts +5 -0
  448. package/types/components/DataTableFilterChips/index.d.ts.map +1 -1
  449. package/types/components/DataTableFilters/index.d.ts +11 -0
  450. package/types/components/DataTableFilters/index.d.ts.map +1 -1
  451. package/types/components/DataTableGrouping/index.d.ts.map +1 -1
  452. package/types/components/DataTablePagination/index.d.ts +5 -0
  453. package/types/components/DataTablePagination/index.d.ts.map +1 -1
  454. package/types/components/DataTableSearch/index.d.ts.map +1 -1
  455. package/types/components/DataTableToolbar/index.d.ts +2 -0
  456. package/types/components/DataTableToolbar/index.d.ts.map +1 -1
  457. package/types/components/SimpleTable/index.d.ts +27 -5
  458. package/types/components/SimpleTable/index.d.ts.map +1 -1
  459. package/types/components/TableInput/index.d.ts +6 -1
  460. package/types/components/TableInput/index.d.ts.map +1 -1
  461. package/types/components/TableInput/index.native.d.ts +6 -1
  462. package/types/components/TableInput/index.native.d.ts.map +1 -1
  463. package/types/components/TableInput/shared.d.ts +38 -0
  464. package/types/components/TableInput/shared.d.ts.map +1 -1
  465. package/types/hooks/useDataTable.d.ts +1 -1
  466. package/types/hooks/useDataTable.d.ts.map +1 -1
  467. package/types/hooks/useInfiniteRows.d.ts +8 -1
  468. package/types/hooks/useInfiniteRows.d.ts.map +1 -1
  469. package/types/index.d.ts +1 -0
  470. package/types/index.d.ts.map +1 -1
  471. package/types/types.d.ts +54 -3
  472. package/types/types.d.ts.map +1 -1
  473. package/types/utils/filterUtils.d.ts.map +1 -1
@@ -30,14 +30,15 @@ var import_theme = require("@multiplatform.one/theme");
30
30
  var import_react2 = require("react");
31
31
  var import_forms = require("@multiplatform.one/forms");
32
32
  var import_tamagui = require("tamagui");
33
- var import_filterUtils = require("../../utils/filterUtils.cjs");
33
+ var import_filterFields = require("../../utils/filterFields.cjs");
34
34
  var import_t = require("../../shared/t.cjs");
35
35
  var import_DataTableStateContext = require("../DataTable/DataTableStateContext.cjs");
36
+ var import_DataTableFilterChips = require("../DataTableFilterChips/index.cjs");
37
+ var import_FilterOperatorValueEditor = require("../FilterOperatorValueEditor/index.cjs");
36
38
  var import_jsx_runtime = require("react/jsx-runtime");
37
39
  function DataTableFilters(props) {
38
40
  const ctx = (0, import_DataTableStateContext.useDataTableState)();
39
41
  const filters = props.filters ?? ctx?.state.filters ?? [];
40
- const onFiltersChange = props.onFiltersChange ?? ctx?.actions.setFilters ?? (() => {});
41
42
  const onAddFilter = props.onAddFilter ?? ctx?.actions.addFilter ?? (() => {});
42
43
  const onRemoveFilter = props.onRemoveFilter ?? ctx?.actions.removeFilter ?? (() => {});
43
44
  const onClearFilters = props.onClearFilters ?? ctx?.actions.clearFilters ?? (() => {});
@@ -47,559 +48,201 @@ function DataTableFilters(props) {
47
48
  showFilterCount = true,
48
49
  compact = false
49
50
  } = props;
50
- const [showFilterBuilder, setShowFilterBuilder] = (0, import_react2.useState)(false);
51
+ const [builderOpen, setBuilderOpen] = (0, import_react2.useState)(false);
52
+ const [editingId, setEditingId] = (0, import_react2.useState)(null);
51
53
  const {
52
54
  knobProps
53
- } = (0, import_theme.useResolvedKnobs)();
55
+ } = (0, import_theme.useResolvedKnobs)({
56
+ compact
57
+ });
54
58
  const canAddMoreFilters = filters.length < maxFilters;
55
- const handleAddFilter = filter => {
59
+ const editingFilter = editingId ? filters.find(f => f.id === editingId) ?? null : null;
60
+ const triggerName = compact ? (0, import_t.t)("Add Filter") : (0, import_t.t)("Filter");
61
+ const triggerLabel = showFilterCount && filters.length > 0 ? `${triggerName} (${filters.length})` : triggerName;
62
+ const handleCommit = filter => {
63
+ if (editingId) {
64
+ const updated = filters.map(row => row.id === editingId ? {
65
+ ...row,
66
+ ...filter
67
+ } : row);
68
+ (props.onFiltersChange ?? ctx?.actions.setFilters ?? (() => {}))(updated);
69
+ setEditingId(null);
70
+ return;
71
+ }
56
72
  onAddFilter(filter);
57
73
  };
58
- const handleUpdateFilter = (filterId, updates) => {
59
- const updatedFilters = filters.map(filter => filter.id === filterId ? {
60
- ...filter,
61
- ...updates
62
- } : filter);
63
- onFiltersChange(updatedFilters);
74
+ const openBuilder = filterId => {
75
+ setEditingId(filterId ?? null);
76
+ setBuilderOpen(true);
64
77
  };
65
- if (compact) {
66
- return /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.XStack, {
78
+ const handleOpenChange = next => {
79
+ setBuilderOpen(next);
80
+ if (!next) setEditingId(null);
81
+ };
82
+ const trigger = /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
83
+ size: "$3",
84
+ compact: true,
85
+ ...(filters.length > 0 ? {
86
+ accent: true
87
+ } : {
88
+ variant: "outlined"
89
+ }),
90
+ icon: compact ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react.PlusIcon, {
91
+ size: 14
92
+ }) : /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react.FunnelIcon, {
93
+ size: 14,
94
+ weight: filters.length > 0 ? "fill" : "regular"
95
+ }),
96
+ "aria-label": triggerName,
97
+ "aria-expanded": builderOpen,
98
+ "aria-haspopup": "dialog",
99
+ children: triggerLabel
100
+ });
101
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.YStack, {
102
+ "data-testid": "data-table-filters",
103
+ "aria-label": (0, import_t.t)("Table filters"),
104
+ "aria-live": "polite",
105
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.XStack, {
106
+ flexWrap: "wrap",
67
107
  alignItems: "center",
68
- gap: "$2",
69
- children: [filters.length > 0 && showFilterCount && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.View, {
70
- backgroundColor: "$accentBackground",
71
- paddingHorizontal: "$2",
72
- paddingVertical: "$1",
73
- borderRadius: knobProps.borderRadius.borderRadius,
74
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
75
- color: "$accentColor",
76
- fontSize: "$2",
77
- children: filters.length
78
- })
79
- }), /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.Popover, {
80
- open: showFilterBuilder,
81
- onOpenChange: setShowFilterBuilder,
82
- children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Popover.Trigger, {
83
- asChild: true,
84
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
85
- size: knobProps.sizeToken,
86
- variant: "outlined",
87
- icon: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react.PlusIcon, {
88
- size: 16
89
- }),
90
- disabled: !canAddMoreFilters,
91
- children: (0, import_t.t)("Add Filter")
92
- })
93
- }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Popover.Content, {
94
- ...knobProps.borderRadius,
95
- borderWidth: 1,
96
- borderColor: "$color6",
97
- backgroundColor: "$background",
98
- enterStyle: {
99
- x: 0,
100
- y: -10,
101
- opacity: 0
102
- },
103
- exitStyle: {
104
- x: 0,
105
- y: -10,
106
- opacity: 0
107
- },
108
- transition: ["quick", {
109
- opacity: {
110
- overshootClamping: true
111
- }
112
- }],
108
+ ...knobProps.gap,
109
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.View, {
110
+ alignSelf: "flex-start",
111
+ flexShrink: 0,
112
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.FloatingPanel, {
113
+ open: builderOpen,
114
+ onOpenChange: handleOpenChange,
115
+ trigger,
116
+ fitContent: true,
117
+ scrollable: false,
113
118
  children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(FilterBuilder, {
114
119
  availableColumns,
115
- onAddFilter: handleAddFilter,
116
- onCancel: () => setShowFilterBuilder(false)
120
+ editingFilter,
121
+ onCommit: handleCommit,
122
+ onCancel: () => handleOpenChange(false),
123
+ canAdd: canAddMoreFilters || !!editingFilter
117
124
  })
118
- })]
119
- }), filters.length > 0 && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
120
- size: knobProps.sizeToken,
121
- variant: "outlined",
125
+ })
126
+ }), !compact && filters.map(filter => {
127
+ const column = availableColumns.find(col => col.id === filter.columnId);
128
+ const label = (0, import_filterFields.getFilterChipLabel)(column?.label ?? filter.label ?? filter.columnId, filter.value, column?.options);
129
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_DataTableFilterChips.FilterChip, {
130
+ label,
131
+ onRemove: () => onRemoveFilter(filter.id),
132
+ onPress: () => openBuilder(filter.id)
133
+ }, filter.id);
134
+ }), compact && filters.length > 0 && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
135
+ size: "$2",
136
+ chromeless: true,
137
+ compact: true,
122
138
  onPress: onClearFilters,
123
- icon: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react.XIcon, {
124
- size: 16
125
- }),
139
+ "aria-label": (0, import_t.t)("Clear"),
126
140
  children: (0, import_t.t)("Clear")
141
+ }), !compact && filters.length >= 2 && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
142
+ size: "$2",
143
+ chromeless: true,
144
+ compact: true,
145
+ onPress: onClearFilters,
146
+ "aria-label": (0, import_t.t)("Clear all"),
147
+ children: (0, import_t.t)("Clear all")
127
148
  })]
128
- });
129
- }
130
- return /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.YStack, {
131
- ...knobProps.borderRadius,
132
- gap: "$4",
133
- padding: "$4",
134
- backgroundColor: "$background",
135
- borderWidth: 1,
136
- borderColor: "$color6",
137
- "aria-label": "Table filters",
138
- "aria-live": "polite",
139
- children: [/* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.XStack, {
140
- alignItems: "center",
141
- justifyContent: "space-between",
142
- children: [/* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.XStack, {
143
- alignItems: "center",
144
- gap: "$2",
145
- children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react.FunnelIcon, {
146
- size: 16,
147
- "aria-hidden": true
148
- }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
149
- fontSize: "$4",
150
- fontWeight: "600",
151
- id: "filters-heading",
152
- children: (0, import_t.t)("Filters")
153
- }), showFilterCount && filters.length > 0 && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.View, {
154
- backgroundColor: "$accentBackground",
155
- paddingHorizontal: "$2",
156
- paddingVertical: "$1",
157
- borderRadius: knobProps.borderRadius.borderRadius,
158
- "aria-label": `${filters.length} active filters`,
159
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
160
- color: "$accentColor",
161
- fontSize: "$2",
162
- children: filters.length
163
- })
164
- })]
165
- }), /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.XStack, {
166
- ...{
167
- render: "fieldset"
168
- },
169
- borderWidth: 0,
170
- margin: 0,
171
- padding: 0,
172
- minWidth: 0,
173
- alignItems: "center",
174
- gap: "$2",
175
- "aria-label": "Filter management actions",
176
- children: [/* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.Popover, {
177
- open: showFilterBuilder,
178
- onOpenChange: setShowFilterBuilder,
179
- children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Popover.Trigger, {
180
- asChild: true,
181
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
182
- size: knobProps.sizeToken,
183
- variant: "outlined",
184
- icon: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react.PlusIcon, {
185
- size: 16
186
- }),
187
- disabled: !canAddMoreFilters,
188
- "aria-label": "Add new filter",
189
- "aria-expanded": showFilterBuilder,
190
- "aria-haspopup": "dialog",
191
- children: (0, import_t.t)("Add Filter")
192
- })
193
- }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Popover.Content, {
194
- ...knobProps.borderRadius,
195
- borderWidth: 1,
196
- borderColor: "$color6",
197
- backgroundColor: "$background",
198
- enterStyle: {
199
- x: 0,
200
- y: -10,
201
- opacity: 0
202
- },
203
- exitStyle: {
204
- x: 0,
205
- y: -10,
206
- opacity: 0
207
- },
208
- transition: ["quick", {
209
- opacity: {
210
- opacity: {
211
- overshootClamping: true
212
- }
213
- }
214
- }],
215
- maxWidth: 400,
216
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(FilterBuilder, {
217
- availableColumns,
218
- onAddFilter: handleAddFilter,
219
- onCancel: () => setShowFilterBuilder(false)
220
- })
221
- })]
222
- }), filters.length > 0 && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
223
- size: knobProps.sizeToken,
224
- variant: "outlined",
225
- onPress: onClearFilters,
226
- icon: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react.XIcon, {
227
- size: 16
228
- }),
229
- "aria-label": "Clear all filters",
230
- children: (0, import_t.t)("Clear All")
231
- })]
232
- })]
233
- }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Separator, {}), filters.length > 0 ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.ScrollView, {
234
- maxHeight: 200,
235
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.YStack, {
236
- ...{
237
- render: "ul"
238
- },
239
- gap: "$2",
240
- padding: 0,
241
- margin: 0,
242
- "aria-label": "Active filters",
243
- "aria-describedby": "filters-heading",
244
- children: filters.map((filter, index) => /* @__PURE__ */(0, import_jsx_runtime.jsx)(ActiveFilter, {
245
- filter,
246
- availableColumns,
247
- onUpdate: updates => handleUpdateFilter(filter.id, updates),
248
- onRemove: () => onRemoveFilter(filter.id),
249
- index
250
- }, filter.id))
251
- })
252
- }) : /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.View, {
253
- ...{
254
- render: "output"
255
- },
256
- padding: "$4",
257
- alignItems: "center",
258
- "aria-live": "polite",
259
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
260
- fontSize: "$3",
261
- color: "$color10",
262
- children: (0, import_t.t)("No filters applied")
263
- })
264
- })]
149
+ })
265
150
  });
266
151
  }
267
152
  function FilterBuilder({
268
153
  availableColumns,
269
- onAddFilter,
270
- onCancel
154
+ editingFilter,
155
+ onCommit,
156
+ onCancel,
157
+ canAdd
271
158
  }) {
272
159
  const {
273
160
  knobProps
274
- } = (0, import_theme.useResolvedKnobs)();
275
- const sz = knobProps.sizeToken;
276
- const builderMinWidth = sz === "$3" ? 240 : sz === "$5" ? 360 : 300;
161
+ } = (0, import_theme.useResolvedKnobs)({
162
+ compact: true
163
+ });
277
164
  const [selectedColumnId, setSelectedColumnId] = (0, import_react2.useState)("");
278
- const [selectedOperator, setSelectedOperator] = (0, import_react2.useState)("is");
165
+ const [selectedOperator, setSelectedOperator] = (0, import_react2.useState)("contains");
279
166
  const [filterValue, setFilterValue] = (0, import_react2.useState)("");
280
- const [filterValues, setFilterValues] = (0, import_react2.useState)([]);
281
167
  const selectedColumn = availableColumns.find(col => col.id === selectedColumnId);
282
- const availableOperators = (0, import_react2.useMemo)(() => {
283
- if (!selectedColumn) return [];
284
- const baseOperators = ["is", "isNot"];
285
- switch (selectedColumn.type) {
286
- case "text":
287
- return [...baseOperators, "contains", "doesNotContain", "startsWith", "endsWith", "isEmpty", "isNotEmpty"];
288
- case "number":
289
- return [...baseOperators, "isLessThan", "isGreaterThan", "isLessThanOrEqual", "isGreaterThanOrEqual", "isBetween", "isNotBetween"];
290
- case "date":
291
- return [...baseOperators, "isBefore", "isAfter", "isOnOrBefore", "isOnOrAfter", "isBetween", "isNotBetween"];
292
- case "boolean":
293
- return baseOperators;
294
- default:
295
- return baseOperators;
168
+ (0, import_react2.useEffect)(() => {
169
+ if (editingFilter) {
170
+ setSelectedColumnId(editingFilter.columnId);
171
+ setSelectedOperator(editingFilter.value.operator);
172
+ setFilterValue(String(editingFilter.value.value ?? ""));
173
+ return;
296
174
  }
297
- }, [selectedColumn]);
298
- const columnOptions = (0, import_react2.useMemo)(() => availableColumns.map(col => ({
175
+ setSelectedColumnId("");
176
+ setSelectedOperator("contains");
177
+ setFilterValue("");
178
+ }, [editingFilter]);
179
+ const columnOptions = availableColumns.map(col => ({
299
180
  value: col.id,
300
181
  label: col.label
301
- })), [availableColumns]);
302
- const operatorOptions = (0, import_react2.useMemo)(() => availableOperators.map(op => ({
303
- value: op,
304
- label: getOperatorLabel(op)
305
- })), [availableOperators]);
306
- const handleAddFilter = () => {
182
+ }));
183
+ const handleCommit = () => {
307
184
  if (!selectedColumnId || !selectedOperator) return;
308
- const filterValueObj = {
185
+ const value = {
309
186
  operator: selectedOperator,
310
- value: null
187
+ value: (0, import_filterFields.operatorNeedsNoValue)(selectedOperator) ? null : filterValue
311
188
  };
312
- if (["isBetween", "isNotBetween"].includes(selectedOperator)) {
313
- filterValueObj.values = filterValues;
314
- } else if (["isAnyOf", "isNoneOf"].includes(selectedOperator)) {
315
- filterValueObj.values = filterValues;
316
- } else if (!["isEmpty", "isNotEmpty"].includes(selectedOperator)) {
317
- filterValueObj.value = filterValue;
318
- }
319
- onAddFilter({
189
+ onCommit({
320
190
  columnId: selectedColumnId,
321
- value: filterValueObj,
191
+ value,
322
192
  label: selectedColumn?.label
323
193
  });
324
194
  setSelectedColumnId("");
325
- setSelectedOperator("is");
195
+ setSelectedOperator("contains");
326
196
  setFilterValue("");
327
- setFilterValues([]);
328
- };
329
- const renderValueInput = () => {
330
- if (!selectedColumn || ["isEmpty", "isNotEmpty"].includes(selectedOperator)) {
331
- return null;
332
- }
333
- if (["isBetween", "isNotBetween"].includes(selectedOperator)) {
334
- return /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.XStack, {
335
- gap: "$2",
336
- children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Input, {
337
- placeholder: (0, import_t.t)("Min value"),
338
- value: filterValues[0] || "",
339
- onChangeText: text => {
340
- const newValues = [...filterValues];
341
- newValues[0] = text;
342
- setFilterValues(newValues);
343
- }
344
- }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Input, {
345
- placeholder: (0, import_t.t)("Max value"),
346
- value: filterValues[1] || "",
347
- onChangeText: text => {
348
- const newValues = [...filterValues];
349
- newValues[1] = text;
350
- setFilterValues(newValues);
351
- }
352
- })]
353
- });
354
- }
355
- if (["isAnyOf", "isNoneOf"].includes(selectedOperator)) {
356
- if (selectedColumn.options) {
357
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.ScrollView, {
358
- maxHeight: 120,
359
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.YStack, {
360
- gap: "$1",
361
- children: selectedColumn.options.map(option => /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.XStack, {
362
- alignItems: "center",
363
- gap: "$2",
364
- children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)("input", {
365
- type: "checkbox",
366
- checked: filterValues.includes(option.value),
367
- onChange: e => {
368
- if (e.target.checked) {
369
- setFilterValues([...filterValues, option.value]);
370
- } else {
371
- setFilterValues(filterValues.filter(v => v !== option.value));
372
- }
373
- }
374
- }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
375
- fontSize: "$3",
376
- children: option.label
377
- }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.View, {
378
- backgroundColor: "$color5",
379
- paddingHorizontal: "$1",
380
- paddingVertical: "$0.5",
381
- borderRadius: "$1",
382
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
383
- color: "$color10",
384
- fontSize: "$1",
385
- children: option.count
386
- })
387
- })]
388
- }, String(option.value)))
389
- })
390
- });
391
- }
392
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Input, {
393
- placeholder: (0, import_t.t)("Enter values separated by commas"),
394
- value: filterValues.join(", "),
395
- onChangeText: text => {
396
- setFilterValues(text.split(",").map(v => v.trim()));
397
- }
398
- });
399
- }
400
- if (selectedColumn.type === "date") {
401
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Input, {
402
- label: (0, import_t.t)("Value"),
403
- placeholder: (0, import_t.t)("YYYY-MM-DD"),
404
- value: filterValue,
405
- onChangeText: setFilterValue
406
- });
407
- }
408
- if (selectedColumn.type === "boolean") {
409
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Select, {
410
- label: (0, import_t.t)("Value"),
411
- value: filterValue,
412
- onValueChange: v => {
413
- if (typeof v === "string") {
414
- setFilterValue(v);
415
- }
416
- },
417
- options: [{
418
- value: "true",
419
- label: (0, import_t.t)("True")
420
- }, {
421
- value: "false",
422
- label: (0, import_t.t)("False")
423
- }],
424
- placeholder: (0, import_t.t)("Select value")
425
- });
426
- }
427
- if (selectedColumn.options) {
428
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Select, {
429
- label: (0, import_t.t)("Value"),
430
- value: filterValue,
431
- onValueChange: v => {
432
- if (typeof v === "string") {
433
- setFilterValue(v);
434
- }
435
- },
436
- options: selectedColumn.options.map(option => ({
437
- value: option.value.toString(),
438
- label: option.label
439
- })),
440
- placeholder: (0, import_t.t)("Select value")
441
- });
442
- }
443
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Input, {
444
- label: (0, import_t.t)("Value"),
445
- placeholder: (0, import_t.t)("Enter value"),
446
- value: filterValue,
447
- onChangeText: setFilterValue,
448
- ...(selectedColumn.type === "number" && {
449
- keyboardType: "numeric"
450
- })
451
- });
452
197
  };
453
198
  return /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.YStack, {
454
199
  ...knobProps.panelPadding,
455
- gap: "$4",
456
- minWidth: builderMinWidth,
200
+ gap: "$3",
201
+ minWidth: 280,
202
+ maxWidth: 360,
457
203
  children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
458
- fontSize: "$4",
204
+ fontSize: "$3",
459
205
  fontWeight: "600",
460
- children: (0, import_t.t)("Add Filter")
206
+ color: "$color12",
207
+ children: editingFilter ? (0, import_t.t)("Edit filter") : (0, import_t.t)("Add filter")
461
208
  }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Select, {
462
209
  label: (0, import_t.t)("Column"),
463
210
  value: selectedColumnId,
464
211
  onValueChange: v => {
465
- if (typeof v === "string") {
466
- setSelectedColumnId(v);
467
- }
212
+ if (typeof v !== "string") return;
213
+ setSelectedColumnId(v);
214
+ const col = availableColumns.find(c => c.id === v);
215
+ setSelectedOperator((0, import_filterFields.defaultOperatorForFilterType)(col?.type ?? "text"));
216
+ setFilterValue("");
468
217
  },
469
218
  options: columnOptions,
470
- placeholder: (0, import_t.t)("Select column")
471
- }), selectedColumnId && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Select, {
472
- label: (0, import_t.t)("Condition"),
473
- value: selectedOperator,
474
- onValueChange: v => {
475
- if (typeof v === "string") {
476
- setSelectedOperator(v);
477
- }
478
- },
479
- options: operatorOptions
480
- }), selectedColumnId && renderValueInput(), /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.XStack, {
219
+ placeholder: (0, import_t.t)("Select column"),
220
+ size: "$3",
221
+ compact: true
222
+ }), selectedColumn ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_FilterOperatorValueEditor.FilterOperatorValueEditor, {
223
+ fieldType: selectedColumn.type,
224
+ operator: selectedOperator,
225
+ value: filterValue,
226
+ onOperatorChange: setSelectedOperator,
227
+ onValueChange: setFilterValue,
228
+ options: selectedColumn.options
229
+ }) : null, /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.XStack, {
481
230
  gap: "$2",
482
231
  justifyContent: "flex-end",
483
232
  children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
484
- size: knobProps.sizeToken,
233
+ size: "$3",
234
+ compact: true,
485
235
  variant: "outlined",
486
236
  onPress: onCancel,
487
237
  children: (0, import_t.t)("Cancel")
488
238
  }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
489
- size: knobProps.sizeToken,
490
- onPress: handleAddFilter,
491
- disabled: !selectedColumnId || !selectedOperator,
492
- children: (0, import_t.t)("Add Filter")
493
- })]
494
- })]
495
- });
496
- }
497
- function ActiveFilter({
498
- filter,
499
- availableColumns,
500
- onUpdate: _onUpdate,
501
- onRemove,
502
- index
503
- }) {
504
- const {
505
- knobProps
506
- } = (0, import_theme.useResolvedKnobs)();
507
- const column = availableColumns.find(col => col.id === filter.columnId);
508
- return /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.XStack, {
509
- ...{
510
- render: "li"
511
- },
512
- alignItems: "center",
513
- justifyContent: "space-between",
514
- padding: "$3",
515
- ...{
516
- backgroundColor: "$color2"
517
- },
518
- ...knobProps.borderRadius,
519
- borderColor: "$color6",
520
- "aria-label": `Filter ${index + 1}: ${(0, import_filterUtils.getFilterDescription)(filter)}`,
521
- children: [/* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.XStack, {
522
- alignItems: "center",
523
- gap: "$2",
524
- flex: 1,
525
- children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(ColumnTypeIcon, {
526
- type: column?.type || "text",
527
- size: 14
528
- }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
529
- fontSize: "$3",
530
- color: "$color10",
531
- children: (0, import_filterUtils.getFilterDescription)(filter)
239
+ size: "$3",
240
+ compact: true,
241
+ accent: true,
242
+ onPress: handleCommit,
243
+ disabled: !selectedColumnId || !selectedOperator || !canAdd,
244
+ children: editingFilter ? (0, import_t.t)("Update") : (0, import_t.t)("Add filter")
532
245
  })]
533
- }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
534
- size: "$2",
535
- variant: "outlined",
536
- onPress: onRemove,
537
- icon: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react.XIcon, {
538
- size: 16
539
- }),
540
- "aria-label": `Remove filter: ${(0, import_filterUtils.getFilterDescription)(filter)}`
541
246
  })]
542
247
  });
543
- }
544
- function ColumnTypeIcon({
545
- type,
546
- size
547
- }) {
548
- switch (type) {
549
- case "text":
550
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react.TextTIcon, {
551
- size,
552
- color: "$color10"
553
- });
554
- case "number":
555
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react.HashIcon, {
556
- size,
557
- color: "$color10"
558
- });
559
- case "date":
560
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react.CalendarBlankIcon, {
561
- size,
562
- color: "$color10"
563
- });
564
- case "boolean":
565
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react.CheckSquareIcon, {
566
- size,
567
- color: "$color10"
568
- });
569
- default:
570
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react.TextTIcon, {
571
- size,
572
- color: "$color10"
573
- });
574
- }
575
- }
576
- function getOperatorLabel(operator) {
577
- const labels = {
578
- // Text
579
- contains: "Contains",
580
- doesNotContain: "Does not contain",
581
- is: "Is",
582
- isNot: "Is not",
583
- startsWith: "Starts with",
584
- endsWith: "Ends with",
585
- isEmpty: "Is empty",
586
- isNotEmpty: "Is not empty",
587
- // Number
588
- isLessThan: "Is less than",
589
- isGreaterThan: "Is greater than",
590
- isLessThanOrEqual: "Is less than or equal to",
591
- isGreaterThanOrEqual: "Is greater than or equal to",
592
- isBetween: "Is between",
593
- isNotBetween: "Is not between",
594
- // Date
595
- isBefore: "Is before",
596
- isAfter: "Is after",
597
- isOnOrBefore: "Is on or before",
598
- isOnOrAfter: "Is on or after",
599
- // Option
600
- isAnyOf: "Is any of",
601
- isNoneOf: "Is none of"
602
- };
603
- const label = labels[operator];
604
- return label ? (0, import_t.t)(label) : operator;
605
248
  }