@multiplatform.one/table 6.7.0 → 7.1.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
@@ -36,12 +36,14 @@ var import_DataTableStateContext = require("../DataTable/DataTableStateContext.c
36
36
  var import_t = require("../../shared/t.cjs");
37
37
  var import_withInterp = require("../../utils/withInterp.cjs");
38
38
  var import_jsx_runtime = require("react/jsx-runtime");
39
+ const iconSizeForToken = token => (0, import_theme.sizeRecipeForToken)(token).iconSize;
39
40
  function DataTableSearch(props) {
40
41
  const ctx = (0, import_DataTableStateContext.useDataTableState)();
41
42
  const data = props.data ?? ctx?.computed.filteredData ?? [];
42
43
  const columns = props.columns ?? [];
43
44
  const {
44
45
  onSearchResults,
46
+ onHighlightText,
45
47
  placeholder = (0, import_t.t)("Search across all columns..."),
46
48
  debounceMs = 300,
47
49
  showAdvancedOptions = true,
@@ -53,6 +55,9 @@ function DataTableSearch(props) {
53
55
  } = (0, import_theme.useResolvedKnobs)();
54
56
  const sz = knobProps.sizeToken;
55
57
  const searchMaxWidth = sz === "$3" ? 320 : sz === "$5" ? 480 : 400;
58
+ const iconPx = iconSizeForToken(String(sz));
59
+ const resultsId = (0, import_react2.useId)();
60
+ const rootRef = (0, import_react2.useRef)(null);
56
61
  const [searchTerm, setSearchTerm] = (0, import_react2.useState)("");
57
62
  const [debouncedSearchTerm, setDebouncedSearchTerm] = (0, import_react2.useState)("");
58
63
  const [searchOptions, setSearchOptions] = (0, import_react2.useState)({
@@ -63,23 +68,42 @@ function DataTableSearch(props) {
63
68
  regex: false,
64
69
  highlightResults: true
65
70
  });
71
+ const compiled = (0, import_react2.useMemo)(() => compileSearchPattern({
72
+ ...searchOptions,
73
+ searchTerm: debouncedSearchTerm
74
+ }), [searchOptions, debouncedSearchTerm]);
75
+ const results = (0, import_react2.useMemo)(() => {
76
+ if (!debouncedSearchTerm.trim()) return data;
77
+ if (compiled.invalid || !compiled.regex) return [];
78
+ return matchRows(data, searchOptions.columns, compiled.regex);
79
+ }, [data, debouncedSearchTerm, compiled, searchOptions.columns]);
66
80
  (0, import_react2.useEffect)(() => {
67
- if (debouncedSearchTerm.trim()) {
68
- const results = performSearch(data, {
69
- ...searchOptions,
70
- searchTerm: debouncedSearchTerm
71
- });
72
- onSearchResults?.(results, {
73
- ...searchOptions,
74
- searchTerm: debouncedSearchTerm
75
- });
81
+ onSearchResults?.(results, {
82
+ ...searchOptions,
83
+ searchTerm: debouncedSearchTerm
84
+ });
85
+ }, [results, data, searchOptions, debouncedSearchTerm, onSearchResults]);
86
+ (0, import_react2.useEffect)(() => {
87
+ if (!onHighlightText) return;
88
+ if (searchOptions.highlightResults && debouncedSearchTerm.trim() && !compiled.invalid) {
89
+ onHighlightText(debouncedSearchTerm);
76
90
  } else {
77
- onSearchResults?.(data, {
78
- ...searchOptions,
79
- searchTerm: ""
80
- });
91
+ onHighlightText("");
81
92
  }
82
- }, [debouncedSearchTerm, data, searchOptions, onSearchResults]);
93
+ }, [debouncedSearchTerm, searchOptions.highlightResults, compiled.invalid, onHighlightText]);
94
+ (0, import_react2.useEffect)(() => {
95
+ if (!import_tamagui.isWeb || disabled) return;
96
+ const onKey = e => {
97
+ if (e.key !== "/" || e.metaKey || e.ctrlKey || e.altKey || e.isComposing) return;
98
+ const target = e.target;
99
+ if (target?.closest("input, textarea, select, [contenteditable=true]")) return;
100
+ e.preventDefault();
101
+ const field = rootRef.current?.querySelector?.("[role='searchbox']");
102
+ field?.focus();
103
+ };
104
+ window.addEventListener("keydown", onKey);
105
+ return () => window.removeEventListener("keydown", onKey);
106
+ }, [disabled]);
83
107
  const handleOptionsChange = newOptions => {
84
108
  setSearchOptions(prev => ({
85
109
  ...prev,
@@ -89,20 +113,36 @@ function DataTableSearch(props) {
89
113
  const searchableColumns = columns.filter(col => col.searchable !== false);
90
114
  const selectedColumnCount = searchOptions.columns.length;
91
115
  const totalColumnCount = searchableColumns.length;
116
+ const optionsActive = searchOptions.caseSensitive || searchOptions.wholeWord || searchOptions.regex || !searchOptions.highlightResults || selectedColumnCount !== totalColumnCount;
117
+ const isSearching = searchTerm !== debouncedSearchTerm;
118
+ const showStatus = Boolean(debouncedSearchTerm.trim());
92
119
  return /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.XStack, {
93
- gap: "$2",
120
+ ref: rootRef,
121
+ ...{
122
+ role: "search"
123
+ },
124
+ "aria-busy": isSearching || void 0,
125
+ ...knobProps.gap,
94
126
  alignItems: "center",
95
127
  flex: 1,
96
128
  maxWidth: searchMaxWidth,
97
129
  children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.View, {
98
130
  flex: 1,
131
+ minWidth: 0,
99
132
  children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.SearchInput, {
100
133
  value: searchTerm,
101
134
  onChange: setSearchTerm,
102
135
  onSearch: setDebouncedSearchTerm,
103
136
  debounceMs,
104
137
  placeholder,
105
- disabled
138
+ disabled,
139
+ size: sz,
140
+ "aria-label": (0, import_t.t)("Search table"),
141
+ inputProps: {
142
+ "aria-describedby": showStatus ? resultsId : void 0,
143
+ "aria-keyshortcuts": "/",
144
+ "aria-invalid": compiled.invalid || void 0
145
+ }
106
146
  })
107
147
  }), showAdvancedOptions && /* @__PURE__ */(0, import_jsx_runtime.jsx)(SearchOptionsPopover, {
108
148
  searchOptions,
@@ -110,19 +150,21 @@ function DataTableSearch(props) {
110
150
  columns: searchableColumns,
111
151
  selectedColumnCount,
112
152
  totalColumnCount,
113
- disabled
114
- }), debouncedSearchTerm ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.View, {
115
- paddingHorizontal: "$2",
116
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
117
- fontSize: "$2",
118
- color: "$color10",
119
- children: (0, import_t.t)("{{count}} results", {
120
- count: performSearch(data, {
121
- ...searchOptions,
122
- searchTerm: debouncedSearchTerm
123
- }).length
124
- })
125
- })
153
+ disabled,
154
+ iconPx,
155
+ optionsActive
156
+ }), showStatus ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
157
+ id: resultsId,
158
+ role: "status",
159
+ "aria-live": "polite",
160
+ "aria-atomic": "true",
161
+ ...knobProps.label,
162
+ color: compiled.invalid ? import_forms.formCommonColors.error : import_forms.formCommonColors.muted,
163
+ flexShrink: 0,
164
+ children: compiled.invalid ? (0, import_t.t)("Invalid regex") : (0, import_withInterp.bidiIsolate)((0, import_t.t)("{{shown}} of {{total}}", {
165
+ shown: results.length,
166
+ total: data.length
167
+ }))
126
168
  }) : null]
127
169
  });
128
170
  }
@@ -132,191 +174,200 @@ function SearchOptionsPopover({
132
174
  columns,
133
175
  selectedColumnCount,
134
176
  totalColumnCount,
135
- disabled
177
+ disabled,
178
+ iconPx,
179
+ optionsActive
136
180
  }) {
137
181
  const {
138
182
  knobProps
139
183
  } = (0, import_theme.useResolvedKnobs)();
140
- const [columnVisibility, setColumnVisibility] = (0, import_react2.useState)(() => {
141
- const visibility = {};
142
- columns.forEach(col => {
143
- const key = col.accessorKey || col.id || "";
144
- visibility[key] = searchOptions.columns.includes(key);
145
- });
146
- return visibility;
147
- });
184
+ const [open, setOpen] = (0, import_react2.useState)(false);
148
185
  const handleColumnToggle = (columnKey, checked) => {
149
- const newVisibility = {
150
- ...columnVisibility,
151
- [columnKey]: checked
152
- };
153
- setColumnVisibility(newVisibility);
154
- const selectedColumns = Object.entries(newVisibility).filter(([_, isVisible]) => isVisible).map(([key]) => key);
186
+ const next = checked ? Array.from(/* @__PURE__ */new Set([...searchOptions.columns, columnKey])) : searchOptions.columns.filter(key => key !== columnKey);
155
187
  onOptionsChange({
156
- columns: selectedColumns
188
+ columns: next
157
189
  });
158
190
  };
159
191
  const handleSelectAllColumns = () => {
160
- const allColumns = columns.map(col => col.accessorKey || col.id || "");
161
- setColumnVisibility(Object.fromEntries(allColumns.map(key => [key, true])));
162
192
  onOptionsChange({
163
- columns: allColumns
193
+ columns: columns.map(col => col.accessorKey || col.id || "")
164
194
  });
165
195
  };
166
196
  const handleSelectNoColumns = () => {
167
- setColumnVisibility(Object.fromEntries(columns.map(col => [col.accessorKey || col.id || "", false])));
168
197
  onOptionsChange({
169
198
  columns: []
170
199
  });
171
200
  };
172
201
  const sz = knobProps.sizeToken;
173
202
  const panelMaxHeight = sz === "$3" ? 320 : sz === "$5" ? 480 : 400;
174
- return (
175
- // LC-06: anchored popover with collision handling — flip, shift, and
176
- // clamp inside the viewport (`resize` is a no-op on native).
177
- /* @__PURE__ */
178
- (0, import_jsx_runtime.jsxs)(import_tamagui.Popover, {
179
- stayInFrame: true,
180
- allowFlip: true,
181
- resize: true,
182
- children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Popover.Trigger, {
183
- asChild: true,
184
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
185
- size: knobProps.sizeToken,
186
- variant: "outlined",
187
- icon: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react.GearIcon, {
188
- size: 16
189
- }),
190
- disabled,
191
- "aria-label": (0, import_t.t)("Search options"),
192
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react.CaretDownIcon, {
193
- size: 16
194
- })
195
- })
196
- }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_components.PopoverContent, {
197
- padding: 0,
198
- overflow: "hidden",
199
- alignItems: "stretch",
200
- minWidth: 280,
201
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.ScrollView, {
202
- flexShrink: 1,
203
- maxHeight: panelMaxHeight,
204
- children: /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.YStack, {
205
- ...knobProps.panelPadding,
206
- ...knobProps.gapLg,
203
+ return /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.Popover, {
204
+ open,
205
+ onOpenChange: setOpen,
206
+ stayInFrame: true,
207
+ allowFlip: true,
208
+ resize: true,
209
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Popover.Trigger, {
210
+ asChild: true,
211
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
212
+ size: knobProps.sizeToken,
213
+ variant: "outlined",
214
+ accent: optionsActive,
215
+ icon: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react.SlidersHorizontalIcon, {
216
+ size: iconPx,
217
+ weight: optionsActive ? "fill" : "regular"
218
+ }),
219
+ disabled,
220
+ "aria-label": (0, import_t.t)("Search options"),
221
+ "aria-expanded": open,
222
+ "aria-haspopup": "dialog"
223
+ })
224
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_components.PopoverContent, {
225
+ padding: 0,
226
+ overflow: "hidden",
227
+ alignItems: "stretch",
228
+ minWidth: 280,
229
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.ScrollView, {
230
+ flexShrink: 1,
231
+ maxHeight: panelMaxHeight,
232
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.YStack, {
233
+ ...knobProps.panelPadding,
234
+ ...knobProps.gapLg,
235
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
236
+ ...knobProps.heading,
237
+ ...knobProps.label,
238
+ fontWeight: "600",
239
+ children: (0, import_t.t)("Search Options")
240
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.YStack, {
241
+ ...knobProps.gap,
207
242
  children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
208
- fontSize: "$5",
209
- fontWeight: "600",
210
- children: (0, import_t.t)("Search Options")
211
- }), /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.YStack, {
212
- ...knobProps.gap,
243
+ ...knobProps.label,
244
+ fontWeight: "500",
245
+ children: (0, import_t.t)("Search Settings")
246
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Checkbox, {
247
+ compact: true,
248
+ label: (0, import_t.t)("Case sensitive"),
249
+ checked: searchOptions.caseSensitive,
250
+ onCheckedChange: checked => onOptionsChange({
251
+ caseSensitive: checked
252
+ })
253
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Checkbox, {
254
+ compact: true,
255
+ label: (0, import_t.t)("Whole word only"),
256
+ checked: searchOptions.wholeWord,
257
+ onCheckedChange: checked => onOptionsChange({
258
+ wholeWord: checked
259
+ })
260
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Checkbox, {
261
+ compact: true,
262
+ label: (0, import_t.t)("Use regex"),
263
+ checked: searchOptions.regex,
264
+ onCheckedChange: checked => onOptionsChange({
265
+ regex: checked
266
+ })
267
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Checkbox, {
268
+ compact: true,
269
+ label: (0, import_t.t)("Highlight results"),
270
+ checked: searchOptions.highlightResults,
271
+ onCheckedChange: checked => onOptionsChange({
272
+ highlightResults: checked
273
+ })
274
+ })]
275
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Separator, {}), /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.YStack, {
276
+ ...knobProps.gap,
277
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.XStack, {
278
+ justifyContent: "space-between",
279
+ alignItems: "center",
213
280
  children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
214
- fontSize: "$4",
281
+ ...knobProps.label,
215
282
  fontWeight: "500",
216
- children: (0, import_t.t)("Search Settings")
217
- }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Checkbox, {
218
- label: (0, import_t.t)("Case sensitive"),
219
- checked: searchOptions.caseSensitive,
220
- onCheckedChange: checked => onOptionsChange({
221
- caseSensitive: checked
222
- })
223
- }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Checkbox, {
224
- label: (0, import_t.t)("Whole word only"),
225
- checked: searchOptions.wholeWord,
226
- onCheckedChange: checked => onOptionsChange({
227
- wholeWord: checked
228
- })
229
- }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Checkbox, {
230
- label: (0, import_t.t)("Use regex"),
231
- checked: searchOptions.regex,
232
- onCheckedChange: checked => onOptionsChange({
233
- regex: checked
234
- })
235
- }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Checkbox, {
236
- label: (0, import_t.t)("Highlight results"),
237
- checked: searchOptions.highlightResults,
238
- onCheckedChange: checked => onOptionsChange({
239
- highlightResults: checked
240
- })
283
+ children: (0, import_t.t)("Search Columns")
284
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
285
+ ...knobProps.label,
286
+ color: import_forms.formCommonColors.muted,
287
+ children: (0, import_withInterp.bidiIsolate)((0, import_t.t)("{{selected}} of {{total}}", {
288
+ selected: selectedColumnCount,
289
+ total: totalColumnCount
290
+ }))
241
291
  })]
242
- }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Separator, {}), /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.YStack, {
292
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.XStack, {
243
293
  ...knobProps.gap,
244
- children: [/* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.XStack, {
245
- justifyContent: "space-between",
246
- alignItems: "center",
247
- children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
248
- fontSize: "$4",
249
- fontWeight: "500",
250
- children: (0, import_t.t)("Search Columns")
251
- }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
252
- fontSize: "$2",
253
- color: "$color10",
254
- children: (0, import_withInterp.bidiIsolate)((0, import_t.t)("{{selected}} of {{total}}", {
255
- selected: selectedColumnCount,
256
- total: totalColumnCount
257
- }))
258
- })]
259
- }), /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.XStack, {
260
- gap: "$2",
261
- children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
262
- size: "$2",
263
- variant: "outlined",
264
- onPress: handleSelectAllColumns,
265
- children: (0, import_t.t)("All")
266
- }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
267
- size: "$2",
268
- variant: "outlined",
269
- onPress: handleSelectNoColumns,
270
- children: (0, import_t.t)("None")
271
- })]
272
- }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.YStack, {
273
- gap: "$1",
274
- children: columns.map(col => {
275
- const key = col.accessorKey || col.id || "";
276
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Checkbox, {
277
- label: col.header || key,
278
- checked: columnVisibility[key] || false,
279
- onCheckedChange: checked => handleColumnToggle(key, checked)
280
- }, key);
281
- })
294
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
295
+ size: "$2",
296
+ compact: true,
297
+ variant: "outlined",
298
+ onPress: handleSelectAllColumns,
299
+ children: (0, import_t.t)("All")
300
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
301
+ size: "$2",
302
+ compact: true,
303
+ variant: "outlined",
304
+ onPress: handleSelectNoColumns,
305
+ children: (0, import_t.t)("None")
282
306
  })]
307
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.YStack, {
308
+ gap: "$1",
309
+ children: columns.map(col => {
310
+ const key = col.accessorKey || col.id || "";
311
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Checkbox, {
312
+ compact: true,
313
+ label: col.header || key,
314
+ checked: searchOptions.columns.includes(key),
315
+ onCheckedChange: checked => handleColumnToggle(key, checked)
316
+ }, key);
317
+ })
283
318
  })]
284
- })
319
+ })]
285
320
  })
286
- })]
287
- })
288
- );
321
+ })
322
+ })]
323
+ });
289
324
  }
290
- function performSearch(data, options) {
325
+ function compileSearchPattern(options) {
291
326
  const {
292
327
  searchTerm,
293
- columns,
294
328
  caseSensitive,
295
329
  wholeWord,
296
330
  regex
297
331
  } = options;
298
332
  if (!searchTerm.trim()) {
299
- return data;
333
+ return {
334
+ regex: null,
335
+ invalid: false
336
+ };
300
337
  }
301
- let searchPattern;
338
+ const flags = caseSensitive ? "" : "i";
302
339
  try {
303
340
  if (regex) {
304
- searchPattern = new RegExp(searchTerm, caseSensitive ? "g" : "gi");
305
- } else {
306
- const pattern = wholeWord ? `\\b${escapeRegex(searchTerm)}\\b` : escapeRegex(searchTerm);
307
- searchPattern = new RegExp(pattern, caseSensitive ? "g" : "gi");
341
+ return {
342
+ regex: new RegExp(searchTerm, flags),
343
+ invalid: false
344
+ };
308
345
  }
346
+ const pattern = wholeWord ? `\\b${escapeRegex(searchTerm)}\\b` : escapeRegex(searchTerm);
347
+ return {
348
+ regex: new RegExp(pattern, flags),
349
+ invalid: false
350
+ };
309
351
  } catch {
310
- return [];
352
+ return {
353
+ regex: null,
354
+ invalid: true
355
+ };
311
356
  }
312
- return data.filter(item => {
313
- return columns.some(columnKey => {
314
- const value = item[columnKey];
315
- if (value == null) return false;
316
- const stringValue = String(value);
317
- return searchPattern.test(stringValue);
318
- });
319
- });
357
+ }
358
+ function matchRows(data, columns, searchPattern) {
359
+ return data.filter(item => columns.some(columnKey => {
360
+ const value = item[columnKey];
361
+ if (value == null) return false;
362
+ searchPattern.lastIndex = 0;
363
+ return searchPattern.test(String(value));
364
+ }));
365
+ }
366
+ function performSearch(data, options) {
367
+ const compiled = compileSearchPattern(options);
368
+ if (!options.searchTerm.trim()) return data;
369
+ if (compiled.invalid || !compiled.regex) return [];
370
+ return matchRows(data, options.columns, compiled.regex);
320
371
  }
321
372
  function escapeRegex(string) {
322
373
  return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
@@ -327,48 +378,38 @@ function highlightText(text, options) {
327
378
  caseSensitive = false,
328
379
  wholeWord = false,
329
380
  regex = false,
330
- highlightClassName = "search-highlight",
331
- highlightStyle: _highlightStyle = {
332
- backgroundColor: "var(--color-yellow3)",
333
- padding: "2px 4px",
334
- borderRadius: "3px",
335
- fontWeight: "bold"
336
- }
381
+ highlightClassName = "search-highlight"
337
382
  } = options;
338
383
  if (!searchTerm.trim() || !text) {
339
384
  return text;
340
385
  }
341
- let searchPattern;
342
- try {
343
- if (regex) {
344
- searchPattern = new RegExp(searchTerm, caseSensitive ? "g" : "gi");
345
- } else {
346
- const pattern = wholeWord ? `\\b${escapeRegex(searchTerm)}\\b` : escapeRegex(searchTerm);
347
- searchPattern = new RegExp(pattern, caseSensitive ? "g" : "gi");
348
- }
349
- } catch {
350
- return text;
351
- }
352
- const parts = text.split(searchPattern);
353
- if (parts.length === 1) {
354
- return text;
355
- }
356
- const matches = text.match(searchPattern) || [];
357
- const result = [];
358
- parts.forEach((part, index) => {
359
- result.push(part);
360
- if (index < parts.length - 1 && matches[index]) {
361
- result.push(/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
362
- className: highlightClassName,
363
- backgroundColor: "$yellow3",
364
- paddingHorizontal: "$1",
365
- borderRadius: "$1",
366
- fontWeight: "bold",
367
- children: matches[index]
368
- }, `highlight-${index}`));
369
- }
386
+ const compiled = compileSearchPattern({
387
+ searchTerm,
388
+ caseSensitive,
389
+ wholeWord,
390
+ regex
370
391
  });
371
- return result;
392
+ if (!compiled.regex) return text;
393
+ const global = new RegExp(compiled.regex.source, compiled.regex.flags.includes("i") ? "gi" : "g");
394
+ const parts = [];
395
+ let last = 0;
396
+ let index = 0;
397
+ for (const match of text.matchAll(global)) {
398
+ const start = match.index ?? 0;
399
+ if (start > last) parts.push(text.slice(last, start));
400
+ parts.push(/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
401
+ className: highlightClassName,
402
+ backgroundColor: "$yellow3",
403
+ paddingHorizontal: "$1",
404
+ borderRadius: "$1",
405
+ fontWeight: "bold",
406
+ children: match[0]
407
+ }, `highlight-${index}`));
408
+ last = start + match[0].length;
409
+ index += 1;
410
+ }
411
+ if (last < text.length) parts.push(text.slice(last));
412
+ return parts.length ? parts : text;
372
413
  }
373
414
  function useFullTextSearch({
374
415
  data,