@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
@@ -38,6 +38,9 @@ var import_tamagui = require("tamagui");
38
38
  var import_DataTableStateContext = require("../DataTable/DataTableStateContext.native.js");
39
39
  var import_t = require("../../shared/t.native.js");
40
40
  var import_withInterp = require("../../utils/withInterp.native.js");
41
+ var iconSizeForToken = function iconSizeForToken2(token) {
42
+ return (0, import_theme.sizeRecipeForToken)(token).iconSize;
43
+ };
41
44
  function DataTableSearch(props) {
42
45
  var _ref, _props_data, _props_columns;
43
46
  var ctx = (0, import_DataTableStateContext.useDataTableState)();
@@ -45,6 +48,7 @@ function DataTableSearch(props) {
45
48
  var columns = (_props_columns = props.columns) !== null && _props_columns !== void 0 ? _props_columns : [];
46
49
  var {
47
50
  onSearchResults,
51
+ onHighlightText,
48
52
  placeholder = (0, import_t.t)("Search across all columns..."),
49
53
  debounceMs = 300,
50
54
  showAdvancedOptions = true,
@@ -56,6 +60,9 @@ function DataTableSearch(props) {
56
60
  } = (0, import_theme.useResolvedKnobs)();
57
61
  var sz = knobProps.sizeToken;
58
62
  var searchMaxWidth = sz === "$3" ? 320 : sz === "$5" ? 480 : 400;
63
+ var iconPx = iconSizeForToken(String(sz));
64
+ var resultsId = (0, import_react2.useId)();
65
+ var rootRef = (0, import_react2.useRef)(null);
59
66
  var [searchTerm, setSearchTerm] = (0, import_react2.useState)("");
60
67
  var [debouncedSearchTerm, setDebouncedSearchTerm] = (0, import_react2.useState)("");
61
68
  var [searchOptions, setSearchOptions] = (0, import_react2.useState)({
@@ -68,23 +75,47 @@ function DataTableSearch(props) {
68
75
  regex: false,
69
76
  highlightResults: true
70
77
  });
78
+ var compiled = (0, import_react2.useMemo)(function () {
79
+ return compileSearchPattern({
80
+ ...searchOptions,
81
+ searchTerm: debouncedSearchTerm
82
+ });
83
+ }, [searchOptions, debouncedSearchTerm]);
84
+ var results = (0, import_react2.useMemo)(function () {
85
+ if (!debouncedSearchTerm.trim()) return data;
86
+ if (compiled.invalid || !compiled.regex) return [];
87
+ return matchRows(data, searchOptions.columns, compiled.regex);
88
+ }, [data, debouncedSearchTerm, compiled, searchOptions.columns]);
89
+ (0, import_react2.useEffect)(function () {
90
+ onSearchResults === null || onSearchResults === void 0 ? void 0 : onSearchResults(results, {
91
+ ...searchOptions,
92
+ searchTerm: debouncedSearchTerm
93
+ });
94
+ }, [results, data, searchOptions, debouncedSearchTerm, onSearchResults]);
71
95
  (0, import_react2.useEffect)(function () {
72
- if (debouncedSearchTerm.trim()) {
73
- var results = performSearch(data, {
74
- ...searchOptions,
75
- searchTerm: debouncedSearchTerm
76
- });
77
- onSearchResults === null || onSearchResults === void 0 ? void 0 : onSearchResults(results, {
78
- ...searchOptions,
79
- searchTerm: debouncedSearchTerm
80
- });
96
+ if (!onHighlightText) return;
97
+ if (searchOptions.highlightResults && debouncedSearchTerm.trim() && !compiled.invalid) {
98
+ onHighlightText(debouncedSearchTerm);
81
99
  } else {
82
- onSearchResults === null || onSearchResults === void 0 ? void 0 : onSearchResults(data, {
83
- ...searchOptions,
84
- searchTerm: ""
85
- });
100
+ onHighlightText("");
86
101
  }
87
- }, [debouncedSearchTerm, data, searchOptions, onSearchResults]);
102
+ }, [debouncedSearchTerm, searchOptions.highlightResults, compiled.invalid, onHighlightText]);
103
+ (0, import_react2.useEffect)(function () {
104
+ if (!import_tamagui.isWeb || disabled) return;
105
+ var onKey = function onKey2(e) {
106
+ var _rootRef_current_querySelector, _rootRef_current;
107
+ if (e.key !== "/" || e.metaKey || e.ctrlKey || e.altKey || e.isComposing) return;
108
+ var target = e.target;
109
+ if (target === null || target === void 0 ? void 0 : target.closest("input, textarea, select, [contenteditable=true]")) return;
110
+ e.preventDefault();
111
+ var field = (_rootRef_current = rootRef.current) === null || _rootRef_current === void 0 ? void 0 : (_rootRef_current_querySelector = _rootRef_current.querySelector) === null || _rootRef_current_querySelector === void 0 ? void 0 : _rootRef_current_querySelector.call(_rootRef_current, "[role='searchbox']");
112
+ field === null || field === void 0 ? void 0 : field.focus();
113
+ };
114
+ window.addEventListener("keydown", onKey);
115
+ return function () {
116
+ return window.removeEventListener("keydown", onKey);
117
+ };
118
+ }, [disabled]);
88
119
  var handleOptionsChange = function handleOptionsChange2(newOptions) {
89
120
  setSearchOptions(function (prev) {
90
121
  return {
@@ -98,44 +129,66 @@ function DataTableSearch(props) {
98
129
  });
99
130
  var selectedColumnCount = searchOptions.columns.length;
100
131
  var totalColumnCount = searchableColumns.length;
132
+ var optionsActive = searchOptions.caseSensitive || searchOptions.wholeWord || searchOptions.regex || !searchOptions.highlightResults || selectedColumnCount !== totalColumnCount;
133
+ var isSearching = searchTerm !== debouncedSearchTerm;
134
+ var showStatus = Boolean(debouncedSearchTerm.trim());
101
135
  return /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.XStack, {
102
- gap: "$2",
136
+ ref: rootRef,
137
+ // role="search" is a valid ARIA landmark role but outside RN's `Role`
138
+ // union; this web-only bag forwards it to the DOM node (house Record
139
+ // cast).
140
+ ...{
141
+ role: "search"
142
+ },
143
+ "aria-busy": isSearching || void 0,
144
+ ...knobProps.gap,
103
145
  alignItems: "center",
104
146
  flex: 1,
105
147
  maxWidth: searchMaxWidth,
106
- children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.View, {
148
+ children: [
149
+ /* LC-71: SearchInput is the whole search box — ring lives on its
150
+ Input.Box (magnifier + field + clear). Do not fork or wrap the
151
+ field in extra chrome that would split that boundary. */
152
+ /* @__PURE__ */
153
+ (0, import_jsx_runtime.jsx)(import_tamagui.View, {
107
154
  flex: 1,
108
- children: (
109
- /* Catalog SearchInput (census item 6): owns the debounce and the
110
- icon + field + clear anatomy this file used to re-compose. */
111
- /* @__PURE__ */
112
- (0, import_jsx_runtime.jsx)(import_forms.SearchInput, {
155
+ minWidth: 0,
156
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.SearchInput, {
113
157
  value: searchTerm,
114
158
  onChange: setSearchTerm,
115
159
  onSearch: setDebouncedSearchTerm,
116
160
  debounceMs,
117
161
  placeholder,
118
- disabled
119
- }))
162
+ disabled,
163
+ size: sz,
164
+ "aria-label": (0, import_t.t)("Search table"),
165
+ inputProps: {
166
+ "aria-describedby": showStatus ? resultsId : void 0,
167
+ "aria-keyshortcuts": "/",
168
+ "aria-invalid": compiled.invalid || void 0
169
+ }
170
+ })
120
171
  }), showAdvancedOptions && /* @__PURE__ */(0, import_jsx_runtime.jsx)(SearchOptionsPopover, {
121
172
  searchOptions,
122
173
  onOptionsChange: handleOptionsChange,
123
174
  columns: searchableColumns,
124
175
  selectedColumnCount,
125
176
  totalColumnCount,
126
- disabled
127
- }), debouncedSearchTerm ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.View, {
128
- paddingHorizontal: "$2",
129
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
130
- fontSize: "$2",
131
- color: "$color10",
132
- children: (0, import_t.t)("{{count}} results", {
133
- count: performSearch(data, {
134
- ...searchOptions,
135
- searchTerm: debouncedSearchTerm
136
- }).length
137
- })
138
- })
177
+ disabled,
178
+ iconPx,
179
+ optionsActive
180
+ }), showStatus ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
181
+ id: resultsId,
182
+ role: "status",
183
+ "aria-live": "polite",
184
+ "aria-atomic": "true",
185
+ ...knobProps.label,
186
+ color: compiled.invalid ? import_forms.formCommonColors.error : import_forms.formCommonColors.muted,
187
+ flexShrink: 0,
188
+ children: compiled.invalid ? (0, import_t.t)("Invalid regex") : (0, import_withInterp.bidiIsolate)((0, import_t.t)("{{shown}} of {{total}}", {
189
+ shown: results.length,
190
+ total: data.length
191
+ }))
139
192
  }) : null]
140
193
  });
141
194
  }
@@ -146,231 +199,217 @@ function SearchOptionsPopover(param) {
146
199
  columns,
147
200
  selectedColumnCount,
148
201
  totalColumnCount,
149
- disabled
202
+ disabled,
203
+ iconPx,
204
+ optionsActive
150
205
  } = param;
151
206
  var {
152
207
  knobProps
153
208
  } = (0, import_theme.useResolvedKnobs)();
154
- var [columnVisibility, setColumnVisibility] = (0, import_react2.useState)(function () {
155
- var visibility = {};
156
- columns.forEach(function (col) {
157
- var key = col.accessorKey || col.id || "";
158
- visibility[key] = searchOptions.columns.includes(key);
159
- });
160
- return visibility;
161
- });
209
+ var [open, setOpen] = (0, import_react2.useState)(false);
162
210
  var handleColumnToggle = function handleColumnToggle2(columnKey, checked) {
163
- var newVisibility = {
164
- ...columnVisibility,
165
- [columnKey]: checked
166
- };
167
- setColumnVisibility(newVisibility);
168
- var selectedColumns = Object.entries(newVisibility).filter(function (param2) {
169
- var [_, isVisible] = param2;
170
- return isVisible;
171
- }).map(function (param2) {
172
- var [key] = param2;
173
- return key;
211
+ var next = checked ? Array.from(/* @__PURE__ */new Set([...searchOptions.columns, columnKey])) : searchOptions.columns.filter(function (key) {
212
+ return key !== columnKey;
174
213
  });
175
214
  onOptionsChange({
176
- columns: selectedColumns
215
+ columns: next
177
216
  });
178
217
  };
179
218
  var handleSelectAllColumns = function handleSelectAllColumns2() {
180
- var allColumns = columns.map(function (col) {
181
- return col.accessorKey || col.id || "";
182
- });
183
- setColumnVisibility(Object.fromEntries(allColumns.map(function (key) {
184
- return [key, true];
185
- })));
186
219
  onOptionsChange({
187
- columns: allColumns
220
+ columns: columns.map(function (col) {
221
+ return col.accessorKey || col.id || "";
222
+ })
188
223
  });
189
224
  };
190
225
  var handleSelectNoColumns = function handleSelectNoColumns2() {
191
- setColumnVisibility(Object.fromEntries(columns.map(function (col) {
192
- return [col.accessorKey || col.id || "", false];
193
- })));
194
226
  onOptionsChange({
195
227
  columns: []
196
228
  });
197
229
  };
198
230
  var sz = knobProps.sizeToken;
199
231
  var panelMaxHeight = sz === "$3" ? 320 : sz === "$5" ? 480 : 400;
200
- return (
201
- // LC-06: anchored popover with collision handling — flip, shift, and
202
- // clamp inside the viewport (`resize` is a no-op on native).
203
- /* @__PURE__ */
204
- (0, import_jsx_runtime.jsxs)(import_tamagui.Popover, {
205
- stayInFrame: true,
206
- allowFlip: true,
207
- resize: true,
208
- children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Popover.Trigger, {
209
- asChild: true,
210
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
211
- size: knobProps.sizeToken,
212
- variant: "outlined",
213
- icon: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react.GearIcon, {
214
- size: 16
215
- }),
216
- disabled,
217
- "aria-label": (0, import_t.t)("Search options"),
218
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react.CaretDownIcon, {
219
- size: 16
220
- })
221
- })
222
- }),
223
- /* SF-OVERLAY/E-OVERLAY: canonical elevated overlay (complete
224
- elevatedSurface knob fragment + transition). The frame owns only
225
- its border (inset lives on the panel YStack below); overflow
226
- hidden clips the scroll region to the radius knob. */
227
- /* @__PURE__ */
228
- (0, import_jsx_runtime.jsx)(import_components.PopoverContent, {
229
- padding: 0,
230
- overflow: "hidden",
231
- alignItems: "stretch",
232
- minWidth: 280,
233
- children: (
234
- /* LC-10: when clamped below content height the body scrolls
235
- internally — rows are never sliced at the frame edge. */
236
- /* @__PURE__ */
237
- (0, import_jsx_runtime.jsx)(import_tamagui.ScrollView, {
238
- flexShrink: 1,
239
- maxHeight: panelMaxHeight,
240
- children: /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.YStack, {
241
- ...knobProps.panelPadding,
242
- ...knobProps.gapLg,
232
+ return /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.Popover, {
233
+ open,
234
+ onOpenChange: setOpen,
235
+ stayInFrame: true,
236
+ allowFlip: true,
237
+ resize: true,
238
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Popover.Trigger, {
239
+ asChild: true,
240
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
241
+ size: knobProps.sizeToken,
242
+ variant: "outlined",
243
+ accent: optionsActive,
244
+ icon: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react.SlidersHorizontalIcon, {
245
+ size: iconPx,
246
+ weight: optionsActive ? "fill" : "regular"
247
+ }),
248
+ disabled,
249
+ "aria-label": (0, import_t.t)("Search options"),
250
+ "aria-expanded": open,
251
+ "aria-haspopup": "dialog"
252
+ })
253
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_components.PopoverContent, {
254
+ padding: 0,
255
+ overflow: "hidden",
256
+ alignItems: "stretch",
257
+ minWidth: 280,
258
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.ScrollView, {
259
+ flexShrink: 1,
260
+ maxHeight: panelMaxHeight,
261
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.YStack, {
262
+ ...knobProps.panelPadding,
263
+ ...knobProps.gapLg,
264
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
265
+ ...knobProps.heading,
266
+ ...knobProps.label,
267
+ fontWeight: "600",
268
+ children: (0, import_t.t)("Search Options")
269
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.YStack, {
270
+ ...knobProps.gap,
243
271
  children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
244
- fontSize: "$5",
245
- fontWeight: "600",
246
- children: (0, import_t.t)("Search Options")
247
- }), /* Search Settings */
248
- /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.YStack, {
249
- ...knobProps.gap,
272
+ ...knobProps.label,
273
+ fontWeight: "500",
274
+ children: (0, import_t.t)("Search Settings")
275
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Checkbox, {
276
+ compact: true,
277
+ label: (0, import_t.t)("Case sensitive"),
278
+ checked: searchOptions.caseSensitive,
279
+ onCheckedChange: function onCheckedChange(checked) {
280
+ return onOptionsChange({
281
+ caseSensitive: checked
282
+ });
283
+ }
284
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Checkbox, {
285
+ compact: true,
286
+ label: (0, import_t.t)("Whole word only"),
287
+ checked: searchOptions.wholeWord,
288
+ onCheckedChange: function onCheckedChange(checked) {
289
+ return onOptionsChange({
290
+ wholeWord: checked
291
+ });
292
+ }
293
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Checkbox, {
294
+ compact: true,
295
+ label: (0, import_t.t)("Use regex"),
296
+ checked: searchOptions.regex,
297
+ onCheckedChange: function onCheckedChange(checked) {
298
+ return onOptionsChange({
299
+ regex: checked
300
+ });
301
+ }
302
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Checkbox, {
303
+ compact: true,
304
+ label: (0, import_t.t)("Highlight results"),
305
+ checked: searchOptions.highlightResults,
306
+ onCheckedChange: function onCheckedChange(checked) {
307
+ return onOptionsChange({
308
+ highlightResults: checked
309
+ });
310
+ }
311
+ })]
312
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Separator, {}), /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.YStack, {
313
+ ...knobProps.gap,
314
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.XStack, {
315
+ justifyContent: "space-between",
316
+ alignItems: "center",
250
317
  children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
251
- fontSize: "$4",
318
+ ...knobProps.label,
252
319
  fontWeight: "500",
253
- children: (0, import_t.t)("Search Settings")
254
- }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Checkbox, {
255
- label: (0, import_t.t)("Case sensitive"),
256
- checked: searchOptions.caseSensitive,
257
- onCheckedChange: function onCheckedChange(checked) {
258
- return onOptionsChange({
259
- caseSensitive: checked
260
- });
261
- }
262
- }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Checkbox, {
263
- label: (0, import_t.t)("Whole word only"),
264
- checked: searchOptions.wholeWord,
265
- onCheckedChange: function onCheckedChange(checked) {
266
- return onOptionsChange({
267
- wholeWord: checked
268
- });
269
- }
270
- }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Checkbox, {
271
- label: (0, import_t.t)("Use regex"),
272
- checked: searchOptions.regex,
273
- onCheckedChange: function onCheckedChange(checked) {
274
- return onOptionsChange({
275
- regex: checked
276
- });
277
- }
278
- }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Checkbox, {
279
- label: (0, import_t.t)("Highlight results"),
280
- checked: searchOptions.highlightResults,
281
- onCheckedChange: function onCheckedChange(checked) {
282
- return onOptionsChange({
283
- highlightResults: checked
284
- });
285
- }
320
+ children: (0, import_t.t)("Search Columns")
321
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
322
+ ...knobProps.label,
323
+ color: import_forms.formCommonColors.muted,
324
+ children: (0, import_withInterp.bidiIsolate)((0, import_t.t)("{{selected}} of {{total}}", {
325
+ selected: selectedColumnCount,
326
+ total: totalColumnCount
327
+ }))
286
328
  })]
287
- }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Separator, {}), /* Column Selection */
288
- /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.YStack, {
329
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.XStack, {
289
330
  ...knobProps.gap,
290
- children: [/* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.XStack, {
291
- justifyContent: "space-between",
292
- alignItems: "center",
293
- children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
294
- fontSize: "$4",
295
- fontWeight: "500",
296
- children: (0, import_t.t)("Search Columns")
297
- }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
298
- fontSize: "$2",
299
- color: "$color10",
300
- children: (/* Bidi-isolated so RTL contexts can't reorder the count run */
301
- (0, import_withInterp.bidiIsolate)((0, import_t.t)("{{selected}} of {{total}}", {
302
- selected: selectedColumnCount,
303
- total: totalColumnCount
304
- })))
305
- })]
306
- }), /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.XStack, {
307
- gap: "$2",
308
- children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
309
- size: "$2",
310
- variant: "outlined",
311
- onPress: handleSelectAllColumns,
312
- children: (0, import_t.t)("All")
313
- }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
314
- size: "$2",
315
- variant: "outlined",
316
- onPress: handleSelectNoColumns,
317
- children: (0, import_t.t)("None")
318
- })]
319
- }),
320
- /* One scroll region for the whole panel body (above); a nested
321
- column scroller would trap wheel/drag inside 200px. */
322
- /* @__PURE__ */
323
- (0, import_jsx_runtime.jsx)(import_tamagui.YStack, {
324
- gap: "$1",
325
- children: columns.map(function (col) {
326
- var key = col.accessorKey || col.id || "";
327
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Checkbox, {
328
- label: col.header || key,
329
- checked: columnVisibility[key] || false,
330
- onCheckedChange: function onCheckedChange(checked) {
331
- return handleColumnToggle(key, checked);
332
- }
333
- }, key);
334
- })
331
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
332
+ size: "$2",
333
+ compact: true,
334
+ variant: "outlined",
335
+ onPress: handleSelectAllColumns,
336
+ children: (0, import_t.t)("All")
337
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
338
+ size: "$2",
339
+ compact: true,
340
+ variant: "outlined",
341
+ onPress: handleSelectNoColumns,
342
+ children: (0, import_t.t)("None")
335
343
  })]
344
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.YStack, {
345
+ gap: "$1",
346
+ children: columns.map(function (col) {
347
+ var key = col.accessorKey || col.id || "";
348
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Checkbox, {
349
+ compact: true,
350
+ label: col.header || key,
351
+ checked: searchOptions.columns.includes(key),
352
+ onCheckedChange: function onCheckedChange(checked) {
353
+ return handleColumnToggle(key, checked);
354
+ }
355
+ }, key);
356
+ })
336
357
  })]
337
- })
338
- }))
339
- })]
340
- })
341
- );
358
+ })]
359
+ })
360
+ })
361
+ })]
362
+ });
342
363
  }
343
- function performSearch(data, options) {
364
+ function compileSearchPattern(options) {
344
365
  var {
345
366
  searchTerm,
346
- columns,
347
367
  caseSensitive,
348
368
  wholeWord,
349
369
  regex
350
370
  } = options;
351
371
  if (!searchTerm.trim()) {
352
- return data;
372
+ return {
373
+ regex: null,
374
+ invalid: false
375
+ };
353
376
  }
354
- var searchPattern;
377
+ var flags = caseSensitive ? "" : "i";
355
378
  try {
356
379
  if (regex) {
357
- searchPattern = new RegExp(searchTerm, caseSensitive ? "g" : "gi");
358
- } else {
359
- var pattern = wholeWord ? `\\b${escapeRegex(searchTerm)}\\b` : escapeRegex(searchTerm);
360
- searchPattern = new RegExp(pattern, caseSensitive ? "g" : "gi");
380
+ return {
381
+ regex: new RegExp(searchTerm, flags),
382
+ invalid: false
383
+ };
361
384
  }
385
+ var pattern = wholeWord ? `\\b${escapeRegex(searchTerm)}\\b` : escapeRegex(searchTerm);
386
+ return {
387
+ regex: new RegExp(pattern, flags),
388
+ invalid: false
389
+ };
362
390
  } catch (unused) {
363
- return [];
391
+ return {
392
+ regex: null,
393
+ invalid: true
394
+ };
364
395
  }
396
+ }
397
+ function matchRows(data, columns, searchPattern) {
365
398
  return data.filter(function (item) {
366
399
  return columns.some(function (columnKey) {
367
400
  var value = item[columnKey];
368
401
  if (value == null) return false;
369
- var stringValue = String(value);
370
- return searchPattern.test(stringValue);
402
+ searchPattern.lastIndex = 0;
403
+ return searchPattern.test(String(value));
371
404
  });
372
405
  });
373
406
  }
407
+ function performSearch(data, options) {
408
+ var compiled = compileSearchPattern(options);
409
+ if (!options.searchTerm.trim()) return data;
410
+ if (compiled.invalid || !compiled.regex) return [];
411
+ return matchRows(data, options.columns, compiled.regex);
412
+ }
374
413
  function escapeRegex(string) {
375
414
  return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
376
415
  }
@@ -380,48 +419,58 @@ function highlightText(text, options) {
380
419
  caseSensitive = false,
381
420
  wholeWord = false,
382
421
  regex = false,
383
- highlightClassName = "search-highlight",
384
- highlightStyle: _highlightStyle = {
385
- backgroundColor: "var(--color-yellow3)",
386
- padding: "2px 4px",
387
- borderRadius: "3px",
388
- fontWeight: "bold"
389
- }
422
+ highlightClassName = "search-highlight"
390
423
  } = options;
391
424
  if (!searchTerm.trim() || !text) {
392
425
  return text;
393
426
  }
394
- var searchPattern;
427
+ var compiled = compileSearchPattern({
428
+ searchTerm,
429
+ caseSensitive,
430
+ wholeWord,
431
+ regex
432
+ });
433
+ if (!compiled.regex) return text;
434
+ var global = new RegExp(compiled.regex.source, compiled.regex.flags.includes("i") ? "gi" : "g");
435
+ var parts = [];
436
+ var last = 0;
437
+ var index = 0;
438
+ var _iteratorNormalCompletion = true,
439
+ _didIteratorError = false,
440
+ _iteratorError = void 0;
395
441
  try {
396
- if (regex) {
397
- searchPattern = new RegExp(searchTerm, caseSensitive ? "g" : "gi");
398
- } else {
399
- var pattern = wholeWord ? `\\b${escapeRegex(searchTerm)}\\b` : escapeRegex(searchTerm);
400
- searchPattern = new RegExp(pattern, caseSensitive ? "g" : "gi");
401
- }
402
- } catch (unused) {
403
- return text;
404
- }
405
- var parts = text.split(searchPattern);
406
- if (parts.length === 1) {
407
- return text;
408
- }
409
- var matches = text.match(searchPattern) || [];
410
- var result = [];
411
- parts.forEach(function (part, index) {
412
- result.push(part);
413
- if (index < parts.length - 1 && matches[index]) {
414
- result.push(/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
442
+ for (var _iterator = text.matchAll(global)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
443
+ var match = _step.value;
444
+ var _match_index;
445
+ var start = (_match_index = match.index) !== null && _match_index !== void 0 ? _match_index : 0;
446
+ if (start > last) parts.push(text.slice(last, start));
447
+ parts.push(/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
415
448
  className: highlightClassName,
416
449
  backgroundColor: "$yellow3",
417
450
  paddingHorizontal: "$1",
418
451
  borderRadius: "$1",
419
452
  fontWeight: "bold",
420
- children: matches[index]
453
+ children: match[0]
421
454
  }, `highlight-${index}`));
455
+ last = start + match[0].length;
456
+ index += 1;
422
457
  }
423
- });
424
- return result;
458
+ } catch (err) {
459
+ _didIteratorError = true;
460
+ _iteratorError = err;
461
+ } finally {
462
+ try {
463
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
464
+ _iterator.return();
465
+ }
466
+ } finally {
467
+ if (_didIteratorError) {
468
+ throw _iteratorError;
469
+ }
470
+ }
471
+ }
472
+ if (last < text.length) parts.push(text.slice(last));
473
+ return parts.length ? parts : text;
425
474
  }
426
475
  function useFullTextSearch(param) {
427
476
  var {