@vuu-ui/vuu-filters 3.0.0 → 3.1.0-beta.2

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 (395) hide show
  1. package/package.json +21 -18
  2. package/src/FilterAggregator.js +107 -0
  3. package/src/FilterModel.js +161 -0
  4. package/src/column-filter/ColumnFilter.css.js +52 -0
  5. package/src/column-filter/ColumnFilter.js +59 -0
  6. package/src/column-filter/useColumnFilter.js +130 -0
  7. package/src/column-filter/utils.js +35 -0
  8. package/src/custom-filters/CustomFilters.js +74 -0
  9. package/src/custom-filters/filterBarFocusManagement.js +25 -0
  10. package/src/custom-filters/index.js +1 -0
  11. package/src/custom-filters/useCustomFilters.js +237 -0
  12. package/src/custom-filters/useFilterState.js +123 -0
  13. package/src/filter-bar/FilterBar.css.js +81 -0
  14. package/src/filter-bar/FilterBar.js +97 -0
  15. package/src/filter-bar/FilterBarMenu.js +14 -0
  16. package/src/filter-bar/index.js +1 -0
  17. package/src/filter-bar/useFilterBar.js +28 -0
  18. package/src/filter-clause/ExpandoCombobox.css.js +54 -0
  19. package/src/filter-clause/ExpandoCombobox.js +86 -0
  20. package/src/filter-clause/FilterClause.css.js +101 -0
  21. package/src/filter-clause/FilterClause.js +69 -0
  22. package/src/filter-clause/column-picker/ColumnPicker.js +25 -0
  23. package/src/filter-clause/column-picker/useColumnPicker.js +42 -0
  24. package/src/filter-clause/filterClauseFocusManagement.js +156 -0
  25. package/src/filter-clause/filterClauseTypes.js +0 -0
  26. package/src/filter-clause/index.js +5 -0
  27. package/src/filter-clause/operator-picker/OperatorPicker.js +25 -0
  28. package/src/filter-clause/operator-picker/operator-utils.js +23 -0
  29. package/src/filter-clause/operator-picker/useOperatorPicker.js +42 -0
  30. package/src/filter-clause/useFilterClause.js +135 -0
  31. package/src/filter-clause/value-editors/FilterClauseValueEditor.js +59 -0
  32. package/src/filter-clause/value-editors/FilterClauseValueEditorDate.js +55 -0
  33. package/src/filter-clause/value-editors/FilterClauseValueEditorNumber.js +32 -0
  34. package/src/filter-clause/value-editors/FilterClauseValueEditorText.js +182 -0
  35. package/src/filter-clause/value-editors/FilterClauseValueEditorTime.js +53 -0
  36. package/src/filter-container/ExtendedSingleValueFilterClause.js +35 -0
  37. package/src/filter-container/FilterContainer.css.js +13 -0
  38. package/src/filter-container/FilterContainer.js +121 -0
  39. package/src/filter-container/useFilterContainer.js +82 -0
  40. package/src/filter-context-menu/useFilterContextMenu.js +106 -0
  41. package/src/filter-display/FilterDisplay.css.js +31 -0
  42. package/src/filter-display/FilterDisplay.js +59 -0
  43. package/src/filter-editor/FilterClauseCombinator.css.js +15 -0
  44. package/src/filter-editor/FilterClauseCombinator.js +32 -0
  45. package/src/filter-editor/FilterEditor.css.js +13 -0
  46. package/src/filter-editor/FilterEditor.js +65 -0
  47. package/src/filter-editor/index.js +1 -0
  48. package/src/filter-editor/useFilterEditor.js +193 -0
  49. package/src/filter-panel/FilterPanel.css.js +22 -0
  50. package/src/filter-panel/FilterPanel.js +59 -0
  51. package/src/filter-panel/useFilterPanel.js +58 -0
  52. package/src/filter-pill/FilterMenu.js +48 -0
  53. package/src/filter-pill/FilterPill.css.js +15 -0
  54. package/src/filter-pill/FilterPill.js +114 -0
  55. package/src/filter-pill/FilterPillNext.css.js +12 -0
  56. package/src/filter-pill/FilterPillNext.js +65 -0
  57. package/src/filter-pill/filterAsReactNode.js +28 -0
  58. package/src/filter-pill/getFilterLabel.js +11 -0
  59. package/src/filter-pill/getFilterTooltipText.js +32 -0
  60. package/src/filter-pill/index.js +1 -0
  61. package/src/filter-pill/useFilterPillNext.js +53 -0
  62. package/src/filter-pill-menu/FilterPillMenu.css.js +8 -0
  63. package/src/filter-pill-menu/FilterPillMenu.js +46 -0
  64. package/src/filter-pill-menu/FilterPillMenuOptions.js +26 -0
  65. package/src/filter-pill-menu/index.js +1 -0
  66. package/src/filter-provider/FilterContext.js +71 -0
  67. package/src/filter-provider/FilterProvider.js +188 -0
  68. package/src/filter-provider/filter-descriptor-utils.js +41 -0
  69. package/src/filter-toggle-button/FilterToggleButton.css.js +22 -0
  70. package/src/filter-toggle-button/FilterToggleButton.js +103 -0
  71. package/src/filter-utils.js +300 -0
  72. package/src/index.js +21 -0
  73. package/src/inline-filter/InlineFilter.css.js +89 -0
  74. package/src/inline-filter/InlineFilter.js +56 -0
  75. package/src/inline-filter/index.js +1 -0
  76. package/src/inline-filter/useInlineFilter.js +11 -0
  77. package/src/quick-filters/QuickFilters.css.js +39 -0
  78. package/src/quick-filters/QuickFilters.js +81 -0
  79. package/src/quick-filters/index.js +1 -0
  80. package/src/quick-filters/useQuickFilters.js +108 -0
  81. package/src/saved-filters/DeleteFilterPrompt.js +23 -0
  82. package/src/saved-filters/FilterNamePrompt.css.js +19 -0
  83. package/src/saved-filters/FilterNamePrompt.js +74 -0
  84. package/src/saved-filters/SavedFilterPanel.css.js +21 -0
  85. package/src/saved-filters/SavedFilterPanel.js +53 -0
  86. package/src/saved-filters/useFilterNamePrompt.js +74 -0
  87. package/src/saved-filters/useSavedFilterPanel.js +19 -0
  88. package/src/tabbed-filter-container/TabbedFilterContainer.js +61 -0
  89. package/src/toggle-filter/ToggleFilter.css.js +10 -0
  90. package/src/toggle-filter/ToggleFilter.js +68 -0
  91. package/src/toggle-filter/useToggleFilter.js +57 -0
  92. package/cjs/FilterAggregator.js +0 -162
  93. package/cjs/FilterAggregator.js.map +0 -1
  94. package/cjs/FilterModel.js +0 -227
  95. package/cjs/FilterModel.js.map +0 -1
  96. package/cjs/column-filter/ColumnFilter.css.js +0 -6
  97. package/cjs/column-filter/ColumnFilter.css.js.map +0 -1
  98. package/cjs/column-filter/ColumnFilter.js +0 -83
  99. package/cjs/column-filter/ColumnFilter.js.map +0 -1
  100. package/cjs/column-filter/useColumnFilter.js +0 -139
  101. package/cjs/column-filter/useColumnFilter.js.map +0 -1
  102. package/cjs/custom-filters/CustomFilters.js +0 -99
  103. package/cjs/custom-filters/CustomFilters.js.map +0 -1
  104. package/cjs/custom-filters/filterBarFocusManagement.js +0 -35
  105. package/cjs/custom-filters/filterBarFocusManagement.js.map +0 -1
  106. package/cjs/custom-filters/useCustomFilters.js +0 -266
  107. package/cjs/custom-filters/useCustomFilters.js.map +0 -1
  108. package/cjs/custom-filters/useFilterState.js +0 -149
  109. package/cjs/custom-filters/useFilterState.js.map +0 -1
  110. package/cjs/filter-bar/FilterBar.css.js +0 -6
  111. package/cjs/filter-bar/FilterBar.css.js.map +0 -1
  112. package/cjs/filter-bar/FilterBar.js +0 -123
  113. package/cjs/filter-bar/FilterBar.js.map +0 -1
  114. package/cjs/filter-bar/useFilterBar.js +0 -37
  115. package/cjs/filter-bar/useFilterBar.js.map +0 -1
  116. package/cjs/filter-clause/ExpandoCombobox.css.js +0 -6
  117. package/cjs/filter-clause/ExpandoCombobox.css.js.map +0 -1
  118. package/cjs/filter-clause/ExpandoCombobox.js +0 -114
  119. package/cjs/filter-clause/ExpandoCombobox.js.map +0 -1
  120. package/cjs/filter-clause/FilterClause.css.js +0 -6
  121. package/cjs/filter-clause/FilterClause.css.js.map +0 -1
  122. package/cjs/filter-clause/FilterClause.js +0 -102
  123. package/cjs/filter-clause/FilterClause.js.map +0 -1
  124. package/cjs/filter-clause/column-picker/ColumnPicker.js +0 -39
  125. package/cjs/filter-clause/column-picker/ColumnPicker.js.map +0 -1
  126. package/cjs/filter-clause/column-picker/useColumnPicker.js +0 -61
  127. package/cjs/filter-clause/column-picker/useColumnPicker.js.map +0 -1
  128. package/cjs/filter-clause/filterClauseFocusManagement.js +0 -204
  129. package/cjs/filter-clause/filterClauseFocusManagement.js.map +0 -1
  130. package/cjs/filter-clause/operator-picker/OperatorPicker.js +0 -40
  131. package/cjs/filter-clause/operator-picker/OperatorPicker.js.map +0 -1
  132. package/cjs/filter-clause/operator-picker/operator-utils.js +0 -34
  133. package/cjs/filter-clause/operator-picker/operator-utils.js.map +0 -1
  134. package/cjs/filter-clause/operator-picker/useOperatorPicker.js +0 -61
  135. package/cjs/filter-clause/operator-picker/useOperatorPicker.js.map +0 -1
  136. package/cjs/filter-clause/useFilterClause.js +0 -172
  137. package/cjs/filter-clause/useFilterClause.js.map +0 -1
  138. package/cjs/filter-clause/value-editors/FilterClauseValueEditor.js +0 -93
  139. package/cjs/filter-clause/value-editors/FilterClauseValueEditor.js.map +0 -1
  140. package/cjs/filter-clause/value-editors/FilterClauseValueEditorDate.js +0 -64
  141. package/cjs/filter-clause/value-editors/FilterClauseValueEditorDate.js.map +0 -1
  142. package/cjs/filter-clause/value-editors/FilterClauseValueEditorNumber.js +0 -55
  143. package/cjs/filter-clause/value-editors/FilterClauseValueEditorNumber.js.map +0 -1
  144. package/cjs/filter-clause/value-editors/FilterClauseValueEditorText.js +0 -222
  145. package/cjs/filter-clause/value-editors/FilterClauseValueEditorText.js.map +0 -1
  146. package/cjs/filter-clause/value-editors/FilterClauseValueEditorTime.js +0 -62
  147. package/cjs/filter-clause/value-editors/FilterClauseValueEditorTime.js.map +0 -1
  148. package/cjs/filter-container/ExtendedSingleValueFilterClause.js +0 -63
  149. package/cjs/filter-container/ExtendedSingleValueFilterClause.js.map +0 -1
  150. package/cjs/filter-container/FilterContainer.css.js +0 -6
  151. package/cjs/filter-container/FilterContainer.css.js.map +0 -1
  152. package/cjs/filter-container/FilterContainer.js +0 -145
  153. package/cjs/filter-container/FilterContainer.js.map +0 -1
  154. package/cjs/filter-container/useFilterContainer.js +0 -137
  155. package/cjs/filter-container/useFilterContainer.js.map +0 -1
  156. package/cjs/filter-context-menu/useFilterContextMenu.js +0 -129
  157. package/cjs/filter-context-menu/useFilterContextMenu.js.map +0 -1
  158. package/cjs/filter-display/FilterDisplay.css.js +0 -6
  159. package/cjs/filter-display/FilterDisplay.css.js.map +0 -1
  160. package/cjs/filter-display/FilterDisplay.js +0 -79
  161. package/cjs/filter-display/FilterDisplay.js.map +0 -1
  162. package/cjs/filter-editor/FilterClauseCombinator.css.js +0 -6
  163. package/cjs/filter-editor/FilterClauseCombinator.css.js.map +0 -1
  164. package/cjs/filter-editor/FilterClauseCombinator.js +0 -42
  165. package/cjs/filter-editor/FilterClauseCombinator.js.map +0 -1
  166. package/cjs/filter-editor/FilterEditor.css.js +0 -6
  167. package/cjs/filter-editor/FilterEditor.css.js.map +0 -1
  168. package/cjs/filter-editor/FilterEditor.js +0 -101
  169. package/cjs/filter-editor/FilterEditor.js.map +0 -1
  170. package/cjs/filter-editor/useFilterEditor.js +0 -191
  171. package/cjs/filter-editor/useFilterEditor.js.map +0 -1
  172. package/cjs/filter-panel/FilterPanel.css.js +0 -6
  173. package/cjs/filter-panel/FilterPanel.css.js.map +0 -1
  174. package/cjs/filter-panel/FilterPanel.js +0 -91
  175. package/cjs/filter-panel/FilterPanel.js.map +0 -1
  176. package/cjs/filter-panel/useFilterPanel.js +0 -68
  177. package/cjs/filter-panel/useFilterPanel.js.map +0 -1
  178. package/cjs/filter-pill/FilterMenu.js +0 -63
  179. package/cjs/filter-pill/FilterMenu.js.map +0 -1
  180. package/cjs/filter-pill/FilterPill.css.js +0 -6
  181. package/cjs/filter-pill/FilterPill.css.js.map +0 -1
  182. package/cjs/filter-pill/FilterPill.js +0 -147
  183. package/cjs/filter-pill/FilterPill.js.map +0 -1
  184. package/cjs/filter-pill/FilterPillNext.css.js +0 -6
  185. package/cjs/filter-pill/FilterPillNext.css.js.map +0 -1
  186. package/cjs/filter-pill/FilterPillNext.js +0 -91
  187. package/cjs/filter-pill/FilterPillNext.js.map +0 -1
  188. package/cjs/filter-pill/filterAsReactNode.js +0 -27
  189. package/cjs/filter-pill/filterAsReactNode.js.map +0 -1
  190. package/cjs/filter-pill/getFilterLabel.js +0 -22
  191. package/cjs/filter-pill/getFilterLabel.js.map +0 -1
  192. package/cjs/filter-pill/getFilterTooltipText.js +0 -41
  193. package/cjs/filter-pill/getFilterTooltipText.js.map +0 -1
  194. package/cjs/filter-pill/useFilterPillNext.js +0 -65
  195. package/cjs/filter-pill/useFilterPillNext.js.map +0 -1
  196. package/cjs/filter-pill-menu/FilterPillMenuOptions.js +0 -32
  197. package/cjs/filter-pill-menu/FilterPillMenuOptions.js.map +0 -1
  198. package/cjs/filter-provider/FilterContext.js +0 -105
  199. package/cjs/filter-provider/FilterContext.js.map +0 -1
  200. package/cjs/filter-provider/FilterProvider.js +0 -240
  201. package/cjs/filter-provider/FilterProvider.js.map +0 -1
  202. package/cjs/filter-provider/filter-descriptor-utils.js +0 -67
  203. package/cjs/filter-provider/filter-descriptor-utils.js.map +0 -1
  204. package/cjs/filter-utils.js +0 -367
  205. package/cjs/filter-utils.js.map +0 -1
  206. package/cjs/index.js +0 -80
  207. package/cjs/index.js.map +0 -1
  208. package/cjs/inline-filter/InlineFilter.css.js +0 -6
  209. package/cjs/inline-filter/InlineFilter.css.js.map +0 -1
  210. package/cjs/inline-filter/InlineFilter.js +0 -70
  211. package/cjs/inline-filter/InlineFilter.js.map +0 -1
  212. package/cjs/inline-filter/useInlineFilter.js +0 -16
  213. package/cjs/inline-filter/useInlineFilter.js.map +0 -1
  214. package/cjs/quick-filters/QuickFilters.css.js +0 -6
  215. package/cjs/quick-filters/QuickFilters.css.js.map +0 -1
  216. package/cjs/quick-filters/QuickFilters.js +0 -98
  217. package/cjs/quick-filters/QuickFilters.js.map +0 -1
  218. package/cjs/quick-filters/useQuickFilters.js +0 -152
  219. package/cjs/quick-filters/useQuickFilters.js.map +0 -1
  220. package/cjs/saved-filters/DeleteFilterPrompt.js +0 -37
  221. package/cjs/saved-filters/DeleteFilterPrompt.js.map +0 -1
  222. package/cjs/saved-filters/FilterNamePrompt.css.js +0 -6
  223. package/cjs/saved-filters/FilterNamePrompt.css.js.map +0 -1
  224. package/cjs/saved-filters/FilterNamePrompt.js +0 -89
  225. package/cjs/saved-filters/FilterNamePrompt.js.map +0 -1
  226. package/cjs/saved-filters/SavedFilterPanel.css.js +0 -6
  227. package/cjs/saved-filters/SavedFilterPanel.css.js.map +0 -1
  228. package/cjs/saved-filters/SavedFilterPanel.js +0 -62
  229. package/cjs/saved-filters/SavedFilterPanel.js.map +0 -1
  230. package/cjs/saved-filters/useFilterNamePrompt.js +0 -98
  231. package/cjs/saved-filters/useFilterNamePrompt.js.map +0 -1
  232. package/cjs/saved-filters/useSavedFilterPanel.js +0 -29
  233. package/cjs/saved-filters/useSavedFilterPanel.js.map +0 -1
  234. package/cjs/tabbed-filter-container/TabbedFilterContainer.css.js +0 -6
  235. package/cjs/tabbed-filter-container/TabbedFilterContainer.css.js.map +0 -1
  236. package/cjs/tabbed-filter-container/TabbedFilterContainer.js +0 -57
  237. package/cjs/tabbed-filter-container/TabbedFilterContainer.js.map +0 -1
  238. package/cjs/toggle-filter/ToggleFilter.css.js +0 -6
  239. package/cjs/toggle-filter/ToggleFilter.css.js.map +0 -1
  240. package/cjs/toggle-filter/ToggleFilter.js +0 -85
  241. package/cjs/toggle-filter/ToggleFilter.js.map +0 -1
  242. package/cjs/toggle-filter/useToggleFilter.js +0 -67
  243. package/cjs/toggle-filter/useToggleFilter.js.map +0 -1
  244. package/esm/FilterAggregator.js +0 -160
  245. package/esm/FilterAggregator.js.map +0 -1
  246. package/esm/FilterModel.js +0 -224
  247. package/esm/FilterModel.js.map +0 -1
  248. package/esm/column-filter/ColumnFilter.css.js +0 -4
  249. package/esm/column-filter/ColumnFilter.css.js.map +0 -1
  250. package/esm/column-filter/ColumnFilter.js +0 -81
  251. package/esm/column-filter/ColumnFilter.js.map +0 -1
  252. package/esm/column-filter/useColumnFilter.js +0 -137
  253. package/esm/column-filter/useColumnFilter.js.map +0 -1
  254. package/esm/custom-filters/CustomFilters.js +0 -97
  255. package/esm/custom-filters/CustomFilters.js.map +0 -1
  256. package/esm/custom-filters/filterBarFocusManagement.js +0 -33
  257. package/esm/custom-filters/filterBarFocusManagement.js.map +0 -1
  258. package/esm/custom-filters/useCustomFilters.js +0 -263
  259. package/esm/custom-filters/useCustomFilters.js.map +0 -1
  260. package/esm/custom-filters/useFilterState.js +0 -147
  261. package/esm/custom-filters/useFilterState.js.map +0 -1
  262. package/esm/filter-bar/FilterBar.css.js +0 -4
  263. package/esm/filter-bar/FilterBar.css.js.map +0 -1
  264. package/esm/filter-bar/FilterBar.js +0 -121
  265. package/esm/filter-bar/FilterBar.js.map +0 -1
  266. package/esm/filter-bar/useFilterBar.js +0 -35
  267. package/esm/filter-bar/useFilterBar.js.map +0 -1
  268. package/esm/filter-clause/ExpandoCombobox.css.js +0 -4
  269. package/esm/filter-clause/ExpandoCombobox.css.js.map +0 -1
  270. package/esm/filter-clause/ExpandoCombobox.js +0 -112
  271. package/esm/filter-clause/ExpandoCombobox.js.map +0 -1
  272. package/esm/filter-clause/FilterClause.css.js +0 -4
  273. package/esm/filter-clause/FilterClause.css.js.map +0 -1
  274. package/esm/filter-clause/FilterClause.js +0 -100
  275. package/esm/filter-clause/FilterClause.js.map +0 -1
  276. package/esm/filter-clause/column-picker/ColumnPicker.js +0 -37
  277. package/esm/filter-clause/column-picker/ColumnPicker.js.map +0 -1
  278. package/esm/filter-clause/column-picker/useColumnPicker.js +0 -59
  279. package/esm/filter-clause/column-picker/useColumnPicker.js.map +0 -1
  280. package/esm/filter-clause/filterClauseFocusManagement.js +0 -191
  281. package/esm/filter-clause/filterClauseFocusManagement.js.map +0 -1
  282. package/esm/filter-clause/operator-picker/OperatorPicker.js +0 -38
  283. package/esm/filter-clause/operator-picker/OperatorPicker.js.map +0 -1
  284. package/esm/filter-clause/operator-picker/operator-utils.js +0 -30
  285. package/esm/filter-clause/operator-picker/operator-utils.js.map +0 -1
  286. package/esm/filter-clause/operator-picker/useOperatorPicker.js +0 -59
  287. package/esm/filter-clause/operator-picker/useOperatorPicker.js.map +0 -1
  288. package/esm/filter-clause/useFilterClause.js +0 -170
  289. package/esm/filter-clause/useFilterClause.js.map +0 -1
  290. package/esm/filter-clause/value-editors/FilterClauseValueEditor.js +0 -91
  291. package/esm/filter-clause/value-editors/FilterClauseValueEditor.js.map +0 -1
  292. package/esm/filter-clause/value-editors/FilterClauseValueEditorDate.js +0 -62
  293. package/esm/filter-clause/value-editors/FilterClauseValueEditorDate.js.map +0 -1
  294. package/esm/filter-clause/value-editors/FilterClauseValueEditorNumber.js +0 -53
  295. package/esm/filter-clause/value-editors/FilterClauseValueEditorNumber.js.map +0 -1
  296. package/esm/filter-clause/value-editors/FilterClauseValueEditorText.js +0 -220
  297. package/esm/filter-clause/value-editors/FilterClauseValueEditorText.js.map +0 -1
  298. package/esm/filter-clause/value-editors/FilterClauseValueEditorTime.js +0 -60
  299. package/esm/filter-clause/value-editors/FilterClauseValueEditorTime.js.map +0 -1
  300. package/esm/filter-container/ExtendedSingleValueFilterClause.js +0 -60
  301. package/esm/filter-container/ExtendedSingleValueFilterClause.js.map +0 -1
  302. package/esm/filter-container/FilterContainer.css.js +0 -4
  303. package/esm/filter-container/FilterContainer.css.js.map +0 -1
  304. package/esm/filter-container/FilterContainer.js +0 -142
  305. package/esm/filter-container/FilterContainer.js.map +0 -1
  306. package/esm/filter-container/useFilterContainer.js +0 -133
  307. package/esm/filter-container/useFilterContainer.js.map +0 -1
  308. package/esm/filter-context-menu/useFilterContextMenu.js +0 -127
  309. package/esm/filter-context-menu/useFilterContextMenu.js.map +0 -1
  310. package/esm/filter-display/FilterDisplay.css.js +0 -4
  311. package/esm/filter-display/FilterDisplay.css.js.map +0 -1
  312. package/esm/filter-display/FilterDisplay.js +0 -77
  313. package/esm/filter-display/FilterDisplay.js.map +0 -1
  314. package/esm/filter-editor/FilterClauseCombinator.css.js +0 -4
  315. package/esm/filter-editor/FilterClauseCombinator.css.js.map +0 -1
  316. package/esm/filter-editor/FilterClauseCombinator.js +0 -40
  317. package/esm/filter-editor/FilterClauseCombinator.js.map +0 -1
  318. package/esm/filter-editor/FilterEditor.css.js +0 -4
  319. package/esm/filter-editor/FilterEditor.css.js.map +0 -1
  320. package/esm/filter-editor/FilterEditor.js +0 -99
  321. package/esm/filter-editor/FilterEditor.js.map +0 -1
  322. package/esm/filter-editor/useFilterEditor.js +0 -189
  323. package/esm/filter-editor/useFilterEditor.js.map +0 -1
  324. package/esm/filter-panel/FilterPanel.css.js +0 -4
  325. package/esm/filter-panel/FilterPanel.css.js.map +0 -1
  326. package/esm/filter-panel/FilterPanel.js +0 -89
  327. package/esm/filter-panel/FilterPanel.js.map +0 -1
  328. package/esm/filter-panel/useFilterPanel.js +0 -66
  329. package/esm/filter-panel/useFilterPanel.js.map +0 -1
  330. package/esm/filter-pill/FilterMenu.js +0 -61
  331. package/esm/filter-pill/FilterMenu.js.map +0 -1
  332. package/esm/filter-pill/FilterPill.css.js +0 -4
  333. package/esm/filter-pill/FilterPill.css.js.map +0 -1
  334. package/esm/filter-pill/FilterPill.js +0 -145
  335. package/esm/filter-pill/FilterPill.js.map +0 -1
  336. package/esm/filter-pill/FilterPillNext.css.js +0 -4
  337. package/esm/filter-pill/FilterPillNext.css.js.map +0 -1
  338. package/esm/filter-pill/FilterPillNext.js +0 -89
  339. package/esm/filter-pill/FilterPillNext.js.map +0 -1
  340. package/esm/filter-pill/filterAsReactNode.js +0 -25
  341. package/esm/filter-pill/filterAsReactNode.js.map +0 -1
  342. package/esm/filter-pill/getFilterLabel.js +0 -20
  343. package/esm/filter-pill/getFilterLabel.js.map +0 -1
  344. package/esm/filter-pill/getFilterTooltipText.js +0 -39
  345. package/esm/filter-pill/getFilterTooltipText.js.map +0 -1
  346. package/esm/filter-pill/useFilterPillNext.js +0 -63
  347. package/esm/filter-pill/useFilterPillNext.js.map +0 -1
  348. package/esm/filter-pill-menu/FilterPillMenuOptions.js +0 -27
  349. package/esm/filter-pill-menu/FilterPillMenuOptions.js.map +0 -1
  350. package/esm/filter-provider/FilterContext.js +0 -94
  351. package/esm/filter-provider/FilterContext.js.map +0 -1
  352. package/esm/filter-provider/FilterProvider.js +0 -238
  353. package/esm/filter-provider/FilterProvider.js.map +0 -1
  354. package/esm/filter-provider/filter-descriptor-utils.js +0 -61
  355. package/esm/filter-provider/filter-descriptor-utils.js.map +0 -1
  356. package/esm/filter-utils.js +0 -344
  357. package/esm/filter-utils.js.map +0 -1
  358. package/esm/index.js +0 -26
  359. package/esm/index.js.map +0 -1
  360. package/esm/inline-filter/InlineFilter.css.js +0 -4
  361. package/esm/inline-filter/InlineFilter.css.js.map +0 -1
  362. package/esm/inline-filter/InlineFilter.js +0 -68
  363. package/esm/inline-filter/InlineFilter.js.map +0 -1
  364. package/esm/inline-filter/useInlineFilter.js +0 -14
  365. package/esm/inline-filter/useInlineFilter.js.map +0 -1
  366. package/esm/quick-filters/QuickFilters.css.js +0 -4
  367. package/esm/quick-filters/QuickFilters.css.js.map +0 -1
  368. package/esm/quick-filters/QuickFilters.js +0 -96
  369. package/esm/quick-filters/QuickFilters.js.map +0 -1
  370. package/esm/quick-filters/useQuickFilters.js +0 -150
  371. package/esm/quick-filters/useQuickFilters.js.map +0 -1
  372. package/esm/saved-filters/DeleteFilterPrompt.js +0 -35
  373. package/esm/saved-filters/DeleteFilterPrompt.js.map +0 -1
  374. package/esm/saved-filters/FilterNamePrompt.css.js +0 -4
  375. package/esm/saved-filters/FilterNamePrompt.css.js.map +0 -1
  376. package/esm/saved-filters/FilterNamePrompt.js +0 -87
  377. package/esm/saved-filters/FilterNamePrompt.js.map +0 -1
  378. package/esm/saved-filters/SavedFilterPanel.css.js +0 -4
  379. package/esm/saved-filters/SavedFilterPanel.css.js.map +0 -1
  380. package/esm/saved-filters/SavedFilterPanel.js +0 -60
  381. package/esm/saved-filters/SavedFilterPanel.js.map +0 -1
  382. package/esm/saved-filters/useFilterNamePrompt.js +0 -95
  383. package/esm/saved-filters/useFilterNamePrompt.js.map +0 -1
  384. package/esm/saved-filters/useSavedFilterPanel.js +0 -27
  385. package/esm/saved-filters/useSavedFilterPanel.js.map +0 -1
  386. package/esm/tabbed-filter-container/TabbedFilterContainer.css.js +0 -4
  387. package/esm/tabbed-filter-container/TabbedFilterContainer.css.js.map +0 -1
  388. package/esm/tabbed-filter-container/TabbedFilterContainer.js +0 -55
  389. package/esm/tabbed-filter-container/TabbedFilterContainer.js.map +0 -1
  390. package/esm/toggle-filter/ToggleFilter.css.js +0 -4
  391. package/esm/toggle-filter/ToggleFilter.css.js.map +0 -1
  392. package/esm/toggle-filter/ToggleFilter.js +0 -83
  393. package/esm/toggle-filter/ToggleFilter.js.map +0 -1
  394. package/esm/toggle-filter/useToggleFilter.js +0 -65
  395. package/esm/toggle-filter/useToggleFilter.js.map +0 -1
@@ -1,220 +0,0 @@
1
- import { jsx } from 'react/jsx-runtime';
2
- import { useTypeaheadSuggestions } from '@vuu-ui/vuu-data-react';
3
- import { ExpandoInput } from '@vuu-ui/vuu-ui-controls';
4
- import { dispatchKeyboardEvent, getVuuTable, NO_DATA_MATCH } from '@vuu-ui/vuu-utils';
5
- import { useForkRef, Option } from '@salt-ds/core';
6
- import { forwardRef, useRef, useState, useCallback, useEffect, useMemo } from 'react';
7
- import { ExpandoCombobox } from '../ExpandoCombobox.js';
8
-
9
- const FilterClauseValueEditorText = forwardRef(
10
- function FilterClauseTextValueEditor({
11
- inputProps: inputPropsProp,
12
- className,
13
- column,
14
- onChangeValue,
15
- onOpenChange,
16
- operator,
17
- table,
18
- value,
19
- dropdownOnAutofocus = true
20
- }, forwardedRef) {
21
- const isMultiValue = operator === "in";
22
- const expandoRef = useRef(null);
23
- const combinedRef = useForkRef(forwardedRef, expandoRef);
24
- const [valueInputValue, setValueInputValue] = useState(
25
- value?.toString() ?? ""
26
- );
27
- const [typeaheadValues, setTypeaheadValues] = useState(
28
- []
29
- );
30
- const getSuggestions = useTypeaheadSuggestions();
31
- const handleSingleValueSelectionChange = useCallback(
32
- (_, [value2]) => onChangeValue(value2),
33
- [onChangeValue]
34
- );
35
- const handleMultiValueSelectionChange = useCallback(
36
- // TODO when will this ever be final ?
37
- (_, values) => onChangeValue(values, false),
38
- [onChangeValue]
39
- );
40
- const highlightFirstOption = useCallback(() => {
41
- if (expandoRef.current) {
42
- const input = expandoRef.current?.querySelector(
43
- 'input[role="combobox"]'
44
- );
45
- if (input) {
46
- requestAnimationFrame(() => {
47
- dispatchKeyboardEvent(input, "keydown", "ArrowDown");
48
- });
49
- }
50
- }
51
- }, []);
52
- const handleOpenChange = useCallback(
53
- (open, reason) => {
54
- if (open && reason === "focus" && expandoRef.current) {
55
- highlightFirstOption();
56
- }
57
- },
58
- [highlightFirstOption]
59
- );
60
- useEffect(() => {
61
- if (table) {
62
- const vuuTable = getVuuTable(table);
63
- const params = valueInputValue && !isMultiValue ? [vuuTable, column.name, valueInputValue] : [vuuTable, column.name];
64
- getSuggestions(params).then((suggestions) => {
65
- if (suggestions === false) {
66
- setTypeaheadValues(false);
67
- } else if (suggestions.length === 0 && valueInputValue) {
68
- setTypeaheadValues(NO_DATA_MATCH);
69
- } else {
70
- setTypeaheadValues(suggestions);
71
- }
72
- }).catch((err) => {
73
- console.error("Error getting suggestions", err);
74
- });
75
- }
76
- }, [table, column, valueInputValue, getSuggestions, isMultiValue]);
77
- const handleInputChange = useCallback(
78
- (evt) => {
79
- const { value: value2 } = evt.target;
80
- setValueInputValue(value2);
81
- if (operator === "starts" || operator === "ends" || operator === "contains") {
82
- onChangeValue(value2, false);
83
- }
84
- },
85
- [onChangeValue, operator]
86
- );
87
- const handleInputCommit = useCallback(
88
- (_, value2 = "") => {
89
- if (typeof value2 === "string") {
90
- onChangeValue(value2);
91
- }
92
- },
93
- [onChangeValue]
94
- );
95
- const handleKeyDownFreeTextInput = useCallback(
96
- (evt) => {
97
- if ((evt.key === "Enter" || evt.key === "Tab") && valueInputValue !== "") {
98
- evt.stopPropagation();
99
- evt.preventDefault();
100
- onChangeValue(valueInputValue);
101
- } else {
102
- inputPropsProp?.onKeyDown?.(evt);
103
- }
104
- },
105
- [inputPropsProp, onChangeValue, valueInputValue]
106
- );
107
- const inputProps = useMemo(() => {
108
- if (operator === "starts" || operator === "ends") {
109
- return {
110
- ...inputPropsProp,
111
- onKeyDown: handleKeyDownFreeTextInput
112
- };
113
- } else {
114
- return inputPropsProp;
115
- }
116
- }, [inputPropsProp, handleKeyDownFreeTextInput, operator]);
117
- const getValueInputField = useCallback(() => {
118
- if (typeaheadValues === false) {
119
- return /* @__PURE__ */ jsx(
120
- ExpandoInput,
121
- {
122
- inputProps,
123
- className,
124
- "data-field": "value",
125
- value: valueInputValue,
126
- ref: forwardedRef,
127
- onChange: handleInputChange,
128
- onCommit: handleInputCommit
129
- }
130
- );
131
- }
132
- switch (operator) {
133
- case "in":
134
- return /* @__PURE__ */ jsx(
135
- ExpandoCombobox,
136
- {
137
- inputProps,
138
- className,
139
- "data-field": "value",
140
- onChange: handleInputChange,
141
- onOpenChange,
142
- onSelectionChange: handleMultiValueSelectionChange,
143
- ref: forwardedRef,
144
- multiselect: true,
145
- truncate: true,
146
- value,
147
- dropdownOnAutofocus,
148
- children: typeaheadValues.map((state) => /* @__PURE__ */ jsx(Option, { value: state }, state))
149
- }
150
- );
151
- case "starts": {
152
- return /* @__PURE__ */ jsx(
153
- ExpandoCombobox,
154
- {
155
- inputProps,
156
- className,
157
- "data-field": "value",
158
- dropdownOnAutofocus,
159
- onChange: handleInputChange,
160
- onSelectionChange: handleSingleValueSelectionChange,
161
- ref: forwardedRef,
162
- value,
163
- children: typeaheadValues.map((state) => /* @__PURE__ */ jsx(Option, { value: state, disabled: true }, state))
164
- }
165
- );
166
- }
167
- case "ends":
168
- return /* @__PURE__ */ jsx(
169
- ExpandoInput,
170
- {
171
- inputProps,
172
- className,
173
- "data-field": "value",
174
- value: valueInputValue,
175
- ref: forwardedRef,
176
- onChange: handleInputChange
177
- }
178
- );
179
- default: {
180
- return typeaheadValues.length > 0 ? /* @__PURE__ */ jsx(
181
- ExpandoCombobox,
182
- {
183
- className,
184
- "data-field": "value",
185
- dropdownOnAutofocus,
186
- inputProps,
187
- onChange: handleInputChange,
188
- onOpenChange: handleOpenChange,
189
- onSelectionChange: handleSingleValueSelectionChange,
190
- ref: combinedRef,
191
- title: "value",
192
- value,
193
- children: typeaheadValues.map((state) => /* @__PURE__ */ jsx(Option, { value: state }, state))
194
- }
195
- ) : null;
196
- }
197
- }
198
- }, [
199
- typeaheadValues,
200
- operator,
201
- inputProps,
202
- className,
203
- valueInputValue,
204
- forwardedRef,
205
- handleInputChange,
206
- handleInputCommit,
207
- onOpenChange,
208
- handleMultiValueSelectionChange,
209
- value,
210
- dropdownOnAutofocus,
211
- handleSingleValueSelectionChange,
212
- handleOpenChange,
213
- combinedRef
214
- ]);
215
- return getValueInputField();
216
- }
217
- );
218
-
219
- export { FilterClauseValueEditorText };
220
- //# sourceMappingURL=FilterClauseValueEditorText.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FilterClauseValueEditorText.js","sources":["../../../../../packages/vuu-filters/src/filter-clause/value-editors/FilterClauseValueEditorText.tsx"],"sourcesContent":["import { useTypeaheadSuggestions } from \"@vuu-ui/vuu-data-react\";\nimport type { TypeaheadParams } from \"@vuu-ui/vuu-protocol-types\";\nimport { ExpandoInput, MultiSelectionHandler } from \"@vuu-ui/vuu-ui-controls\";\nimport {\n CommitHandler,\n dispatchKeyboardEvent,\n getVuuTable,\n NO_DATA_MATCH,\n} from \"@vuu-ui/vuu-utils\";\nimport { Option, useForkRef } from \"@salt-ds/core\";\nimport {\n FormEvent,\n ForwardedRef,\n forwardRef,\n HTMLAttributes,\n KeyboardEventHandler,\n SyntheticEvent,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { ExpandoCombobox } from \"../ExpandoCombobox\";\nimport { FilterClauseValueEditor } from \"../filterClauseTypes\";\n\nexport interface FilterClauseTextValueEditorProps\n extends FilterClauseValueEditor,\n HTMLAttributes<HTMLDivElement> {\n \"data-field\"?: string;\n operator: string;\n value: string | string[];\n dropdownOnAutofocus?: boolean;\n}\n\nexport const FilterClauseValueEditorText = forwardRef(\n function FilterClauseTextValueEditor(\n {\n inputProps: inputPropsProp,\n className,\n column,\n onChangeValue,\n onOpenChange,\n operator,\n table,\n value,\n dropdownOnAutofocus = true,\n }: FilterClauseTextValueEditorProps,\n forwardedRef: ForwardedRef<HTMLDivElement>,\n ) {\n const isMultiValue = operator === \"in\";\n\n const expandoRef = useRef<HTMLDivElement>(null);\n const combinedRef = useForkRef(forwardedRef, expandoRef);\n\n // If we have a multiselect text value which we are editing, this will render\n // a comma delimited list of the selected values. That is not what we display\n // by default when using a multiselect combo. Its not a huge problem - as soon\n // as user focuses this component and we display dropdown, input text is cleared\n // (so user can type to filter list) until dropdown closes again. <ight need to\n // revisit.\n const [valueInputValue, setValueInputValue] = useState(\n value?.toString() ?? \"\",\n );\n const [typeaheadValues, setTypeaheadValues] = useState<string[] | false>(\n [],\n );\n\n const getSuggestions = useTypeaheadSuggestions();\n\n const handleSingleValueSelectionChange = useCallback(\n (_: SyntheticEvent, [value]: string[]) => onChangeValue(value),\n [onChangeValue],\n );\n\n const handleMultiValueSelectionChange = useCallback<MultiSelectionHandler>(\n // TODO when will this ever be final ?\n (_, values) => onChangeValue(values, false),\n [onChangeValue],\n );\n\n const highlightFirstOption = useCallback(() => {\n if (expandoRef.current) {\n const input = expandoRef.current?.querySelector<HTMLInputElement>(\n 'input[role=\"combobox\"]',\n );\n if (input) {\n requestAnimationFrame(() => {\n dispatchKeyboardEvent(input, \"keydown\", \"ArrowDown\");\n });\n }\n }\n }, []);\n\n const handleOpenChange = useCallback(\n (open: boolean, reason?: \"focus\" | \"input\" | \"manual\") => {\n if (open && reason === \"focus\" && expandoRef.current) {\n highlightFirstOption();\n }\n },\n [highlightFirstOption],\n );\n\n useEffect(() => {\n if (table) {\n const vuuTable = getVuuTable(table);\n const params: TypeaheadParams =\n valueInputValue && !isMultiValue\n ? [vuuTable, column.name, valueInputValue]\n : [vuuTable, column.name];\n getSuggestions(params)\n .then((suggestions) => {\n if (suggestions === false) {\n setTypeaheadValues(false);\n } else if (suggestions.length === 0 && valueInputValue) {\n setTypeaheadValues(NO_DATA_MATCH);\n } else {\n setTypeaheadValues(suggestions);\n }\n })\n .catch((err) => {\n console.error(\"Error getting suggestions\", err);\n });\n }\n }, [table, column, valueInputValue, getSuggestions, isMultiValue]);\n\n const handleInputChange = useCallback(\n (evt: FormEvent<HTMLInputElement>) => {\n const { value } = evt.target as HTMLInputElement;\n setValueInputValue(value);\n // we want to set the filterclause status to valid, but not trigger focus change\n if (\n operator === \"starts\" ||\n operator === \"ends\" ||\n operator === \"contains\"\n ) {\n onChangeValue(value, false);\n }\n },\n [onChangeValue, operator],\n );\n\n const handleInputCommit = useCallback<CommitHandler>(\n (_, value = \"\") => {\n if (typeof value === \"string\") {\n onChangeValue(value);\n }\n },\n [onChangeValue],\n );\n\n const handleKeyDownFreeTextInput = useCallback<\n KeyboardEventHandler<HTMLInputElement>\n >(\n (evt) => {\n if (\n (evt.key === \"Enter\" || evt.key === \"Tab\") &&\n valueInputValue !== \"\"\n ) {\n evt.stopPropagation();\n evt.preventDefault();\n onChangeValue(valueInputValue);\n } else {\n inputPropsProp?.onKeyDown?.(evt);\n }\n },\n [inputPropsProp, onChangeValue, valueInputValue],\n );\n\n const inputProps = useMemo(() => {\n if (operator === \"starts\" || operator === \"ends\") {\n return {\n ...inputPropsProp,\n onKeyDown: handleKeyDownFreeTextInput,\n };\n } else {\n return inputPropsProp;\n }\n }, [inputPropsProp, handleKeyDownFreeTextInput, operator]);\n\n const getValueInputField = useCallback(() => {\n if (typeaheadValues === false) {\n // No typeahead service available\n return (\n <ExpandoInput\n inputProps={inputProps}\n className={className}\n data-field=\"value\"\n value={valueInputValue}\n ref={forwardedRef}\n onChange={handleInputChange}\n onCommit={handleInputCommit}\n />\n );\n }\n switch (operator) {\n case \"in\":\n return (\n <ExpandoCombobox\n inputProps={inputProps}\n className={className}\n data-field=\"value\"\n onChange={handleInputChange}\n onOpenChange={onOpenChange}\n onSelectionChange={handleMultiValueSelectionChange}\n ref={forwardedRef}\n multiselect\n truncate\n value={value}\n dropdownOnAutofocus={dropdownOnAutofocus}\n >\n {typeaheadValues\n // .filter((typeaheadValue) =>\n // typeaheadValue\n // .toLowerCase()\n // .includes(value.trim().toLowerCase())\n // )\n .map((state) => (\n <Option value={state} key={state} />\n ))}\n </ExpandoCombobox>\n );\n case \"starts\": {\n return (\n <ExpandoCombobox\n inputProps={inputProps}\n className={className}\n data-field=\"value\"\n dropdownOnAutofocus={dropdownOnAutofocus}\n onChange={handleInputChange}\n onSelectionChange={handleSingleValueSelectionChange}\n ref={forwardedRef}\n value={value}\n >\n {typeaheadValues.map((state) => (\n <Option value={state} key={state} disabled />\n ))}\n </ExpandoCombobox>\n );\n }\n\n case \"ends\":\n return (\n <ExpandoInput\n inputProps={inputProps}\n className={className}\n data-field=\"value\"\n value={valueInputValue}\n ref={forwardedRef}\n onChange={handleInputChange}\n />\n );\n\n default: {\n return typeaheadValues.length > 0 ? (\n <ExpandoCombobox\n className={className}\n data-field=\"value\"\n dropdownOnAutofocus={dropdownOnAutofocus}\n inputProps={inputProps}\n onChange={handleInputChange}\n onOpenChange={handleOpenChange}\n onSelectionChange={handleSingleValueSelectionChange}\n ref={combinedRef}\n title=\"value\"\n value={value}\n >\n {typeaheadValues.map((state) => (\n <Option value={state} key={state} />\n ))}\n </ExpandoCombobox>\n ) : null;\n }\n }\n }, [\n typeaheadValues,\n operator,\n inputProps,\n className,\n valueInputValue,\n forwardedRef,\n handleInputChange,\n handleInputCommit,\n onOpenChange,\n handleMultiValueSelectionChange,\n value,\n dropdownOnAutofocus,\n handleSingleValueSelectionChange,\n handleOpenChange,\n combinedRef,\n ]);\n\n return getValueInputField();\n },\n);\n"],"names":["value"],"mappings":"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"}
@@ -1,60 +0,0 @@
1
- import { jsx } from 'react/jsx-runtime';
2
- import { useState, useCallback } from 'react';
3
- import { getLocalTimeZone } from '@internationalized/date';
4
- import { toCalendarDate } from '@vuu-ui/vuu-utils';
5
- import { VuuTimePicker } from '@vuu-ui/vuu-ui-controls';
6
-
7
- const FilterClauseValueEditorTime = (props) => {
8
- const { className, onChangeValue, operator, value } = props;
9
- const toEpochMilliS = getEpochMillisConverter(operator);
10
- const [date, setDate] = useState(
11
- () => getInitialState(value)
12
- );
13
- const handleCommit = useCallback(
14
- (e, selectedDateInputValue) => {
15
- console.log("change time");
16
- if (selectedDateInputValue) {
17
- const dateValue = toCalendarDate(new Date(selectedDateInputValue));
18
- setDate(dateValue);
19
- if (selectedDateInputValue) {
20
- onChangeValue(toEpochMilliS(dateValue));
21
- }
22
- }
23
- },
24
- [onChangeValue, toEpochMilliS]
25
- );
26
- const onBlur = useCallback(() => {
27
- date && onChangeValue(toEpochMilliS(date));
28
- }, [date, onChangeValue, toEpochMilliS]);
29
- return /* @__PURE__ */ jsx(
30
- VuuTimePicker,
31
- {
32
- "data-field": "value",
33
- className,
34
- onBlur,
35
- onCommit: handleCommit
36
- }
37
- );
38
- };
39
- function getInitialState(value) {
40
- return value ? toCalendarDate(new Date(value)) : void 0;
41
- }
42
- const getEpochMillisConverter = (op) => (date, timezone = getLocalTimeZone()) => {
43
- const d = date.toDate(timezone);
44
- switch (op) {
45
- case ">":
46
- case "<=":
47
- d.setHours(23, 59, 59, 999);
48
- return d.getTime();
49
- case ">=":
50
- case "<":
51
- case "=":
52
- // converted to "< `start of next day` and >= `start of this day`" when query is created
53
- case "!=":
54
- d.setHours(0, 0, 0, 0);
55
- return d.getTime();
56
- }
57
- };
58
-
59
- export { FilterClauseValueEditorTime };
60
- //# sourceMappingURL=FilterClauseValueEditorTime.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FilterClauseValueEditorTime.js","sources":["../../../../../packages/vuu-filters/src/filter-clause/value-editors/FilterClauseValueEditorTime.tsx"],"sourcesContent":["import { useCallback, useState } from \"react\";\nimport { getLocalTimeZone, DateValue } from \"@internationalized/date\";\nimport { CommitHandler, toCalendarDate } from \"@vuu-ui/vuu-utils\";\nimport { NumericFilterClauseOp } from \"@vuu-ui/vuu-filter-types\";\nimport { FilterClauseValueEditor } from \"../filterClauseTypes\";\nimport { VuuTimePicker } from \"@vuu-ui/vuu-ui-controls\";\n\ninterface FilterClauseValueEditorTimeProps\n extends Pick<FilterClauseValueEditor, \"onChangeValue\" | \"inputProps\"> {\n className?: string;\n value: number | undefined;\n operator: NumericFilterClauseOp;\n}\n\nexport const FilterClauseValueEditorTime = (\n props: FilterClauseValueEditorTimeProps,\n) => {\n const { className, onChangeValue, operator, value } = props;\n const toEpochMilliS = getEpochMillisConverter(operator);\n\n const [date, setDate] = useState<DateValue | undefined>(() =>\n getInitialState(value),\n );\n\n const handleCommit = useCallback<CommitHandler<HTMLInputElement, string>>(\n (e, selectedDateInputValue) => {\n console.log(\"change time\");\n if (selectedDateInputValue) {\n const dateValue = toCalendarDate(new Date(selectedDateInputValue));\n setDate(dateValue);\n if (selectedDateInputValue /* && source === \"calendar\"*/) {\n onChangeValue(toEpochMilliS(dateValue));\n }\n }\n },\n [onChangeValue, toEpochMilliS],\n );\n\n const onBlur = useCallback(() => {\n date && onChangeValue(toEpochMilliS(date));\n }, [date, onChangeValue, toEpochMilliS]);\n\n return (\n <VuuTimePicker\n data-field=\"value\"\n // inputProps={inputProps}\n className={className}\n onBlur={onBlur}\n onCommit={handleCommit}\n // selectedDate={date}\n />\n );\n};\n\nfunction getInitialState(value: FilterClauseValueEditorTimeProps[\"value\"]) {\n return value ? toCalendarDate(new Date(value)) : undefined;\n}\n\nconst getEpochMillisConverter =\n (op: NumericFilterClauseOp) =>\n (date: DateValue, timezone: string = getLocalTimeZone()): number => {\n const d = date.toDate(timezone);\n switch (op) {\n case \">\":\n case \"<=\":\n d.setHours(23, 59, 59, 999);\n return d.getTime();\n case \">=\":\n case \"<\":\n case \"=\": // converted to \"< `start of next day` and >= `start of this day`\" when query is created\n case \"!=\": // converted to \">= `start of next day` or < `start of this day`\" when query is created\n d.setHours(0, 0, 0, 0);\n return d.getTime();\n }\n };\n"],"names":[],"mappings":";;;;;;AAca,MAAA,2BAAA,GAA8B,CACzC,KACG,KAAA;AACH,EAAA,MAAM,EAAE,SAAA,EAAW,aAAe,EAAA,QAAA,EAAU,OAAU,GAAA,KAAA;AACtD,EAAM,MAAA,aAAA,GAAgB,wBAAwB,QAAQ,CAAA;AAEtD,EAAM,MAAA,CAAC,IAAM,EAAA,OAAO,CAAI,GAAA,QAAA;AAAA,IAAgC,MACtD,gBAAgB,KAAK;AAAA,GACvB;AAEA,EAAA,MAAM,YAAe,GAAA,WAAA;AAAA,IACnB,CAAC,GAAG,sBAA2B,KAAA;AAC7B,MAAA,OAAA,CAAQ,IAAI,aAAa,CAAA;AACzB,MAAA,IAAI,sBAAwB,EAAA;AAC1B,QAAA,MAAM,SAAY,GAAA,cAAA,CAAe,IAAI,IAAA,CAAK,sBAAsB,CAAC,CAAA;AACjE,QAAA,OAAA,CAAQ,SAAS,CAAA;AACjB,QAAA,IAAI,sBAAsD,EAAA;AACxD,UAAc,aAAA,CAAA,aAAA,CAAc,SAAS,CAAC,CAAA;AAAA;AACxC;AACF,KACF;AAAA,IACA,CAAC,eAAe,aAAa;AAAA,GAC/B;AAEA,EAAM,MAAA,MAAA,GAAS,YAAY,MAAM;AAC/B,IAAQ,IAAA,IAAA,aAAA,CAAc,aAAc,CAAA,IAAI,CAAC,CAAA;AAAA,GACxC,EAAA,CAAC,IAAM,EAAA,aAAA,EAAe,aAAa,CAAC,CAAA;AAEvC,EACE,uBAAA,GAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACC,YAAW,EAAA,OAAA;AAAA,MAEX,SAAA;AAAA,MACA,MAAA;AAAA,MACA,QAAU,EAAA;AAAA;AAAA,GAEZ;AAEJ;AAEA,SAAS,gBAAgB,KAAkD,EAAA;AACzE,EAAA,OAAO,QAAQ,cAAe,CAAA,IAAI,IAAK,CAAA,KAAK,CAAC,CAAI,GAAA,KAAA,CAAA;AACnD;AAEA,MAAM,0BACJ,CAAC,EAAA,KACD,CAAC,IAAiB,EAAA,QAAA,GAAmB,kBAA+B,KAAA;AAClE,EAAM,MAAA,CAAA,GAAI,IAAK,CAAA,MAAA,CAAO,QAAQ,CAAA;AAC9B,EAAA,QAAQ,EAAI;AAAA,IACV,KAAK,GAAA;AAAA,IACL,KAAK,IAAA;AACH,MAAA,CAAA,CAAE,QAAS,CAAA,EAAA,EAAI,EAAI,EAAA,EAAA,EAAI,GAAG,CAAA;AAC1B,MAAA,OAAO,EAAE,OAAQ,EAAA;AAAA,IACnB,KAAK,IAAA;AAAA,IACL,KAAK,GAAA;AAAA,IACL,KAAK,GAAA;AAAA;AAAA,IACL,KAAK,IAAA;AACH,MAAA,CAAA,CAAE,QAAS,CAAA,CAAA,EAAG,CAAG,EAAA,CAAA,EAAG,CAAC,CAAA;AACrB,MAAA,OAAO,EAAE,OAAQ,EAAA;AAAA;AAEvB,CAAA;;;;"}
@@ -1,60 +0,0 @@
1
- import { isValidTimeString, Time } from '@vuu-ui/vuu-utils';
2
-
3
- var __defProp = Object.defineProperty;
4
- var __typeError = (msg) => {
5
- throw TypeError(msg);
6
- };
7
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
- var __publicField = (obj, key, value) => __defNormalProp(obj, key + "" , value);
9
- var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
10
- var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
11
- var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
12
- var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
13
- var _options;
14
- const isTimeToday = (options) => options.type === "TimeString" && options.date === "today";
15
- class ExtendedSingleValueFilterClause {
16
- constructor(column, op, value, extendedOptions) {
17
- this.column = column;
18
- this.op = op;
19
- this.value = value;
20
- __privateAdd(this, _options);
21
- __publicField(this, "name");
22
- __privateSet(this, _options, extendedOptions);
23
- }
24
- asQuery() {
25
- const { column, op, value } = this;
26
- if (isTimeToday(__privateGet(this, _options))) {
27
- if (isValidTimeString(value)) {
28
- const timeValue = +Time(value).asDate();
29
- if (op === ">=") {
30
- return `${column} > ${timeValue - 1}`;
31
- } else if (op === "<=") {
32
- return `${column} < ${timeValue + 1}`;
33
- } else {
34
- return `${column} ${op} ${timeValue}`;
35
- }
36
- } else {
37
- throw Error(
38
- `[ExtendedSingleValueFilterClause] invalid TimeStrong ${value}`
39
- );
40
- }
41
- } else {
42
- throw Error(
43
- "[ExtendedSingleValueFilterClause] unhandled extended filter type"
44
- );
45
- }
46
- }
47
- toJSON() {
48
- const { column, op, value } = this;
49
- return {
50
- column,
51
- op,
52
- value,
53
- extendedOptions: __privateGet(this, _options)
54
- };
55
- }
56
- }
57
- _options = new WeakMap();
58
-
59
- export { ExtendedSingleValueFilterClause, isTimeToday };
60
- //# sourceMappingURL=ExtendedSingleValueFilterClause.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ExtendedSingleValueFilterClause.js","sources":["../../../../packages/vuu-filters/src/filter-container/ExtendedSingleValueFilterClause.ts"],"sourcesContent":["import type {\n ExtendedFilterOptions,\n SerializableSingleValueFilterClause,\n SingleValueFilterClauseOp,\n TimeTodayFilterOptions,\n} from \"@vuu-ui/vuu-filter-types\";\nimport { VuuRowDataItemType } from \"@vuu-ui/vuu-protocol-types\";\nimport { isValidTimeString, Time } from \"@vuu-ui/vuu-utils\";\n\nexport const isTimeToday = (\n options: ExtendedFilterOptions,\n): options is TimeTodayFilterOptions =>\n options.type === \"TimeString\" && options.date === \"today\";\n\nexport interface SerializableFilter {\n asQuery: () => string;\n}\n\nexport class ExtendedSingleValueFilterClause\n implements SerializableSingleValueFilterClause\n{\n #options: ExtendedFilterOptions;\n\n constructor(\n public column: string,\n public op: SingleValueFilterClauseOp,\n public value: VuuRowDataItemType,\n extendedOptions: ExtendedFilterOptions,\n ) {\n this.#options = extendedOptions;\n }\n name?: string | undefined;\n\n asQuery() {\n const { column, op, value } = this;\n if (isTimeToday(this.#options)) {\n if (isValidTimeString(value)) {\n const timeValue = +Time(value).asDate();\n if (op === \">=\") {\n return `${column} > ${timeValue - 1}`;\n } else if (op === \"<=\") {\n return `${column} < ${timeValue + 1}`;\n } else {\n return `${column} ${op} ${timeValue}`;\n }\n } else {\n throw Error(\n `[ExtendedSingleValueFilterClause] invalid TimeStrong ${value}`,\n );\n }\n } else {\n throw Error(\n \"[ExtendedSingleValueFilterClause] unhandled extended filter type\",\n );\n }\n }\n\n toJSON() {\n const { column, op, value } = this;\n return {\n column,\n op,\n value,\n extendedOptions: this.#options,\n };\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;AAAA,IAAA,QAAA;AASO,MAAM,cAAc,CACzB,OAAA,KAEA,QAAQ,IAAS,KAAA,YAAA,IAAgB,QAAQ,IAAS,KAAA;AAM7C,MAAM,+BAEb,CAAA;AAAA,EAGE,WACS,CAAA,MAAA,EACA,EACA,EAAA,KAAA,EACP,eACA,EAAA;AAJO,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AACA,IAAA,IAAA,CAAA,EAAA,GAAA,EAAA;AACA,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AALT,IAAA,YAAA,CAAA,IAAA,EAAA,QAAA,CAAA;AAUA,IAAA,aAAA,CAAA,IAAA,EAAA,MAAA,CAAA;AAFE,IAAA,YAAA,CAAA,IAAA,EAAK,QAAW,EAAA,eAAA,CAAA;AAAA;AAClB,EAGA,OAAU,GAAA;AACR,IAAA,MAAM,EAAE,MAAA,EAAQ,EAAI,EAAA,KAAA,EAAU,GAAA,IAAA;AAC9B,IAAI,IAAA,WAAA,CAAY,YAAK,CAAA,IAAA,EAAA,QAAA,CAAQ,CAAG,EAAA;AAC9B,MAAI,IAAA,iBAAA,CAAkB,KAAK,CAAG,EAAA;AAC5B,QAAA,MAAM,SAAY,GAAA,CAAC,IAAK,CAAA,KAAK,EAAE,MAAO,EAAA;AACtC,QAAA,IAAI,OAAO,IAAM,EAAA;AACf,UAAA,OAAO,CAAG,EAAA,MAAM,CAAM,GAAA,EAAA,SAAA,GAAY,CAAC,CAAA,CAAA;AAAA,SACrC,MAAA,IAAW,OAAO,IAAM,EAAA;AACtB,UAAA,OAAO,CAAG,EAAA,MAAM,CAAM,GAAA,EAAA,SAAA,GAAY,CAAC,CAAA,CAAA;AAAA,SAC9B,MAAA;AACL,UAAA,OAAO,CAAG,EAAA,MAAM,CAAI,CAAA,EAAA,EAAE,IAAI,SAAS,CAAA,CAAA;AAAA;AACrC,OACK,MAAA;AACL,QAAM,MAAA,KAAA;AAAA,UACJ,wDAAwD,KAAK,CAAA;AAAA,SAC/D;AAAA;AACF,KACK,MAAA;AACL,MAAM,MAAA,KAAA;AAAA,QACJ;AAAA,OACF;AAAA;AACF;AACF,EAEA,MAAS,GAAA;AACP,IAAA,MAAM,EAAE,MAAA,EAAQ,EAAI,EAAA,KAAA,EAAU,GAAA,IAAA;AAC9B,IAAO,OAAA;AAAA,MACL,MAAA;AAAA,MACA,EAAA;AAAA,MACA,KAAA;AAAA,MACA,iBAAiB,YAAK,CAAA,IAAA,EAAA,QAAA;AAAA,KACxB;AAAA;AAEJ;AA7CE,QAAA,GAAA,IAAA,OAAA,EAAA;;;;"}
@@ -1,4 +0,0 @@
1
- var filterContainerCss = ".vuuFilterContainer {\n display: var(--vuuFilterContainer-display,flex);\n flex: var(--vuuFilterContainer-flex);\n flex-direction: var(--vuuFilterContainer-flexDirection,column);\n gap: var(--salt-spacing-100);\n height: var(--vuuFilterContainer-height);\n overflow: auto;\n}";
2
-
3
- export { filterContainerCss as default };
4
- //# sourceMappingURL=FilterContainer.css.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FilterContainer.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -1,142 +0,0 @@
1
- import { jsx } from 'react/jsx-runtime';
2
- import cx from 'clsx';
3
- import { useMemo, useState, useRef, useCallback } from 'react';
4
- import { useFilterContext, useFilterContainer, ColumnFilterContext } from './useFilterContainer.js';
5
- import { ColumnFilter } from '../column-filter/ColumnFilter.js';
6
- import { useSavedFilters, isNullFilter, filterDescriptorHasFilter } from '../filter-provider/FilterContext.js';
7
- import { filtersAreEqual, getColumnValueFromFilter, isBetweenOperator } from '@vuu-ui/vuu-utils';
8
- import { useComponentCssInjection } from '@salt-ds/styles';
9
- import { useWindow } from '@salt-ds/window';
10
- import filterContainerCss from './FilterContainer.css.js';
11
-
12
- const classBase = "vuuFilterContainer";
13
- const notEmpty = (value) => Array.isArray(value) ? value[0] !== "" && value[1] !== "" : value !== "";
14
- const FilterContainerColumnFilter = ({
15
- column,
16
- operator = "=",
17
- variant,
18
- ...props
19
- }) => {
20
- const {
21
- filterProviderKey,
22
- onChange: onFilterContextChange,
23
- onCommit: onFilterContextCommit,
24
- register
25
- } = useFilterContext(column, true);
26
- const initialValue = useMemo(
27
- () => register(column, operator),
28
- [column, operator, register]
29
- );
30
- const [value, setValue] = useState(initialValue);
31
- const valueRef = useRef(initialValue);
32
- const { currentFilter } = useSavedFilters(filterProviderKey);
33
- const currentFilterRef = useRef(currentFilter);
34
- useMemo(() => {
35
- if (currentFilterRef.current.id !== currentFilter.id || !filtersAreEqual(currentFilterRef.current.filter, currentFilter.filter)) {
36
- currentFilterRef.current = currentFilter;
37
- if (isNullFilter(currentFilter) && notEmpty(valueRef.current)) {
38
- if (Array.isArray(valueRef.current)) {
39
- if (column.type === "time") {
40
- valueRef.current = ["00:00:00", "23:59:59"];
41
- } else {
42
- valueRef.current = ["", ""];
43
- }
44
- } else {
45
- valueRef.current = "";
46
- }
47
- setValue(valueRef.current);
48
- } else if (filterDescriptorHasFilter(currentFilter)) {
49
- const v = getColumnValueFromFilter(
50
- column,
51
- operator,
52
- currentFilter.filter
53
- );
54
- if (isBetweenOperator(operator) && !Array.isArray(v) && Array.isArray(valueRef.current)) {
55
- const [v1, v2] = valueRef.current;
56
- if (`${v}` === v1 && v2 === "") {
57
- return;
58
- } else {
59
- valueRef.current = [`${v}`, ""];
60
- setValue(valueRef.current);
61
- }
62
- } else if (v !== valueRef.current) {
63
- valueRef.current = v;
64
- setValue(v);
65
- }
66
- }
67
- }
68
- }, [column, currentFilter]);
69
- const handleCommit = useCallback(
70
- (column2, op, value2, extendedFilterOptions) => {
71
- valueRef.current = value2;
72
- setValue(value2);
73
- onFilterContextCommit(column2, op, value2, extendedFilterOptions);
74
- },
75
- [onFilterContextCommit]
76
- );
77
- const handleColumnFilterChange = useCallback(
78
- (value2, column2, op) => {
79
- const { current: v } = valueRef;
80
- valueRef.current = Array.isArray(v) ? [`${value2}`, v[1]] : value2;
81
- setValue(valueRef.current);
82
- onFilterContextChange(valueRef.current, column2, op);
83
- },
84
- [onFilterContextChange]
85
- );
86
- const handleColumnRangeFilterChange = useCallback(
87
- (value2, column2, op) => {
88
- const { current: v } = valueRef;
89
- valueRef.current = Array.isArray(v) ? [v[0], `${value2}`] : value2;
90
- setValue(valueRef.current);
91
- onFilterContextChange(valueRef.current, column2, op);
92
- },
93
- [onFilterContextChange]
94
- );
95
- return /* @__PURE__ */ jsx(
96
- ColumnFilter,
97
- {
98
- ...props,
99
- column,
100
- onColumnFilterChange: handleColumnFilterChange,
101
- onColumnRangeFilterChange: handleColumnRangeFilterChange,
102
- onCommit: handleCommit,
103
- operator,
104
- value,
105
- variant
106
- }
107
- );
108
- };
109
- const FilterContainer = ({
110
- children,
111
- className,
112
- filter,
113
- filterProviderKey,
114
- onFilterApplied,
115
- onFilterCleared,
116
- ...htmlAttributes
117
- }) => {
118
- const targetWindow = useWindow();
119
- useComponentCssInjection({
120
- testId: "vuu-filter-container",
121
- css: filterContainerCss,
122
- window: targetWindow
123
- });
124
- console.log(`[FilterContainer] current filter ${JSON.stringify(filter)}`);
125
- const filterContextProps = useFilterContainer({
126
- filter,
127
- filterProviderKey,
128
- onFilterApplied,
129
- onFilterCleared
130
- });
131
- return /* @__PURE__ */ jsx(ColumnFilterContext.Provider, { value: filterContextProps, children: /* @__PURE__ */ jsx(
132
- "div",
133
- {
134
- ...htmlAttributes,
135
- className: cx(classBase, className, "vuuScrollable"),
136
- children
137
- }
138
- ) });
139
- };
140
-
141
- export { FilterContainer, FilterContainerColumnFilter };
142
- //# sourceMappingURL=FilterContainer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FilterContainer.js","sources":["../../../../packages/vuu-filters/src/filter-container/FilterContainer.tsx"],"sourcesContent":["import cx from \"clsx\";\nimport {\n useCallback,\n useMemo,\n useRef,\n useState,\n type HTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport {\n ColumnFilterContext,\n useFilterContainer,\n useFilterContext,\n type ColumnFilterContainerHookProps,\n} from \"./useFilterContainer\";\nimport {\n ColumnFilterChangeHandler,\n ColumnFilterCommitHandler,\n ColumnFilterValue,\n} from \"@vuu-ui/vuu-filter-types\";\nimport { ColumnFilter, ColumnFilterProps } from \"../column-filter/ColumnFilter\";\nimport {\n filterDescriptorHasFilter,\n isNullFilter,\n useSavedFilters,\n} from \"../filter-provider/FilterContext\";\nimport {\n filtersAreEqual,\n getColumnValueFromFilter,\n isBetweenOperator,\n} from \"@vuu-ui/vuu-utils\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\n\nimport filterContainerCss from \"./FilterContainer.css\";\n\nconst classBase = \"vuuFilterContainer\";\n\nconst notEmpty = (value: ColumnFilterValue) =>\n Array.isArray(value) ? value[0] !== \"\" && value[1] !== \"\" : value !== \"\";\n\nexport interface FilterContainerProps\n extends HTMLAttributes<HTMLDivElement>,\n ColumnFilterContainerHookProps {\n children: ReactNode;\n filterProviderKey?: string;\n}\n\nexport interface FilterContainerColumnFilterProps\n extends Omit<ColumnFilterProps, \"defaultValue\" | \"onCommit\" | \"value\"> {\n defaultValue?: ColumnFilterValue;\n}\n\nexport const FilterContainerColumnFilter = ({\n column,\n operator = \"=\",\n variant,\n ...props\n}: FilterContainerColumnFilterProps) => {\n const {\n filterProviderKey,\n onChange: onFilterContextChange,\n onCommit: onFilterContextCommit,\n register,\n } = useFilterContext(column, true);\n\n const initialValue = useMemo(\n () => register(column, operator),\n [column, operator, register],\n );\n\n const [value, setValue] = useState(initialValue);\n const valueRef = useRef<ColumnFilterValue>(initialValue);\n const { currentFilter } = useSavedFilters(filterProviderKey);\n\n // This is primarily to guard against client passing non-stable 'column' reference\n // which would trigger the commit check below.\n const currentFilterRef = useRef(currentFilter);\n\n useMemo(() => {\n if (\n currentFilterRef.current.id !== currentFilter.id ||\n !filtersAreEqual(currentFilterRef.current.filter, currentFilter.filter)\n ) {\n currentFilterRef.current = currentFilter;\n\n if (isNullFilter(currentFilter) && notEmpty(valueRef.current)) {\n if (Array.isArray(valueRef.current)) {\n if (column.type === \"time\") {\n valueRef.current = [\"00:00:00\", \"23:59:59\"];\n } else {\n valueRef.current = [\"\", \"\"];\n }\n } else {\n valueRef.current = \"\";\n }\n setValue(valueRef.current);\n } else if (filterDescriptorHasFilter(currentFilter)) {\n const v = getColumnValueFromFilter(\n column,\n operator,\n currentFilter.filter,\n );\n if (\n isBetweenOperator(operator) &&\n !Array.isArray(v) &&\n Array.isArray(valueRef.current)\n ) {\n // A between filter with only the first item filled is converted to an '=' filter\n // in FilterAggregator. Translate value back to range value here\n const [v1, v2] = valueRef.current;\n if (`${v}` === v1 && v2 === \"\") {\n return;\n } else {\n valueRef.current = [`${v}`, \"\"];\n setValue(valueRef.current);\n }\n } else if (v !== valueRef.current) {\n valueRef.current = v;\n setValue(v);\n }\n }\n }\n // We only want this to run when the filter id changes, not when\n // filter instance changes.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [column, currentFilter]);\n\n const handleCommit = useCallback<ColumnFilterCommitHandler>(\n (column, op, value, extendedFilterOptions) => {\n valueRef.current = value;\n setValue(value);\n onFilterContextCommit(column, op, value, extendedFilterOptions);\n },\n [onFilterContextCommit],\n );\n\n const handleColumnFilterChange = useCallback<ColumnFilterChangeHandler>(\n (value, column, op) => {\n const { current: v } = valueRef;\n valueRef.current = Array.isArray(v) ? [`${value}`, v[1]] : value;\n setValue(valueRef.current);\n onFilterContextChange(valueRef.current, column, op);\n },\n [onFilterContextChange],\n );\n\n const handleColumnRangeFilterChange = useCallback<ColumnFilterChangeHandler>(\n (value, column, op) => {\n const { current: v } = valueRef;\n valueRef.current = Array.isArray(v) ? [v[0], `${value}`] : value;\n setValue(valueRef.current);\n onFilterContextChange(valueRef.current, column, op);\n },\n [onFilterContextChange],\n );\n\n return (\n <ColumnFilter\n {...props}\n column={column}\n onColumnFilterChange={handleColumnFilterChange}\n onColumnRangeFilterChange={handleColumnRangeFilterChange}\n onCommit={handleCommit}\n operator={operator}\n value={value}\n variant={variant}\n />\n );\n};\n\n/**\n * FilterContainer is a generic UI container for a collection of Filter\n * controls. Each control manages a single filter clause and the Filter\n * Container aggregates these clauses into a single filter. FilterContainer\n * provides a FilterContainerFilter which can be used to provide children.\n * This is a wrapper around ColumnFilter, which adds some plumbing to allow\n * the container to track changes and manage each individual contribution to\n * the top-level filter.\n * See FilterPanel and InlineFilter for examples of FilterContainer usage.\n */\nexport const FilterContainer = ({\n children,\n className,\n filter,\n filterProviderKey,\n onFilterApplied,\n onFilterCleared,\n ...htmlAttributes\n}: FilterContainerProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-filter-container\",\n css: filterContainerCss,\n window: targetWindow,\n });\n\n console.log(`[FilterContainer] current filter ${JSON.stringify(filter)}`);\n\n const filterContextProps = useFilterContainer({\n filter,\n filterProviderKey,\n onFilterApplied,\n onFilterCleared,\n });\n return (\n <ColumnFilterContext.Provider value={filterContextProps}>\n <div\n {...htmlAttributes}\n className={cx(classBase, className, \"vuuScrollable\")}\n >\n {children}\n </div>\n </ColumnFilterContext.Provider>\n );\n};\n"],"names":["column","value"],"mappings":"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"}