@multiplatform.one/table 6.6.0 → 7.0.0

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