@vuu-ui/vuu-filters 2.1.18 → 2.1.19-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.
- package/package.json +15 -18
- package/src/FilterAggregator.js +107 -0
- package/src/FilterModel.js +161 -0
- package/src/column-filter/ColumnFilter.css.js +52 -0
- package/src/column-filter/ColumnFilter.js +59 -0
- package/src/column-filter/useColumnFilter.js +130 -0
- package/src/column-filter/utils.js +35 -0
- package/src/custom-filters/CustomFilters.js +74 -0
- package/src/custom-filters/filterBarFocusManagement.js +25 -0
- package/src/custom-filters/index.js +1 -0
- package/src/custom-filters/useCustomFilters.js +237 -0
- package/src/custom-filters/useFilterState.js +123 -0
- package/src/filter-bar/FilterBar.css.js +81 -0
- package/src/filter-bar/FilterBar.js +97 -0
- package/src/filter-bar/FilterBarMenu.js +14 -0
- package/src/filter-bar/index.js +1 -0
- package/src/filter-bar/useFilterBar.js +28 -0
- package/src/filter-clause/ExpandoCombobox.css.js +54 -0
- package/src/filter-clause/ExpandoCombobox.js +86 -0
- package/src/filter-clause/FilterClause.css.js +101 -0
- package/src/filter-clause/FilterClause.js +69 -0
- package/src/filter-clause/column-picker/ColumnPicker.js +25 -0
- package/src/filter-clause/column-picker/useColumnPicker.js +42 -0
- package/src/filter-clause/filterClauseFocusManagement.js +156 -0
- package/src/filter-clause/filterClauseTypes.js +0 -0
- package/src/filter-clause/index.js +5 -0
- package/src/filter-clause/operator-picker/OperatorPicker.js +25 -0
- package/src/filter-clause/operator-picker/operator-utils.js +23 -0
- package/src/filter-clause/operator-picker/useOperatorPicker.js +42 -0
- package/src/filter-clause/useFilterClause.js +135 -0
- package/src/filter-clause/value-editors/FilterClauseValueEditor.js +59 -0
- package/src/filter-clause/value-editors/FilterClauseValueEditorDate.js +55 -0
- package/src/filter-clause/value-editors/FilterClauseValueEditorNumber.js +32 -0
- package/src/filter-clause/value-editors/FilterClauseValueEditorText.js +182 -0
- package/src/filter-clause/value-editors/FilterClauseValueEditorTime.js +53 -0
- package/src/filter-container/ExtendedSingleValueFilterClause.js +35 -0
- package/src/filter-container/FilterContainer.css.js +13 -0
- package/src/filter-container/FilterContainer.js +121 -0
- package/src/filter-container/useFilterContainer.js +82 -0
- package/src/filter-context-menu/useFilterContextMenu.js +106 -0
- package/src/filter-display/FilterDisplay.css.js +31 -0
- package/src/filter-display/FilterDisplay.js +59 -0
- package/src/filter-editor/FilterClauseCombinator.css.js +15 -0
- package/src/filter-editor/FilterClauseCombinator.js +32 -0
- package/src/filter-editor/FilterEditor.css.js +13 -0
- package/src/filter-editor/FilterEditor.js +65 -0
- package/src/filter-editor/index.js +1 -0
- package/src/filter-editor/useFilterEditor.js +193 -0
- package/src/filter-panel/FilterPanel.css.js +22 -0
- package/src/filter-panel/FilterPanel.js +59 -0
- package/src/filter-panel/useFilterPanel.js +58 -0
- package/src/filter-pill/FilterMenu.js +48 -0
- package/src/filter-pill/FilterPill.css.js +15 -0
- package/src/filter-pill/FilterPill.js +114 -0
- package/src/filter-pill/FilterPillNext.css.js +12 -0
- package/src/filter-pill/FilterPillNext.js +65 -0
- package/src/filter-pill/filterAsReactNode.js +28 -0
- package/src/filter-pill/getFilterLabel.js +11 -0
- package/src/filter-pill/getFilterTooltipText.js +32 -0
- package/src/filter-pill/index.js +1 -0
- package/src/filter-pill/useFilterPillNext.js +53 -0
- package/src/filter-pill-menu/FilterPillMenu.css.js +8 -0
- package/src/filter-pill-menu/FilterPillMenu.js +46 -0
- package/src/filter-pill-menu/FilterPillMenuOptions.js +26 -0
- package/src/filter-pill-menu/index.js +1 -0
- package/src/filter-provider/FilterContext.js +71 -0
- package/src/filter-provider/FilterProvider.js +188 -0
- package/src/filter-provider/filter-descriptor-utils.js +41 -0
- package/src/filter-toggle-button/FilterToggleButton.css.js +22 -0
- package/src/filter-toggle-button/FilterToggleButton.js +103 -0
- package/src/filter-utils.js +300 -0
- package/src/index.js +21 -0
- package/src/inline-filter/InlineFilter.css.js +89 -0
- package/src/inline-filter/InlineFilter.js +56 -0
- package/src/inline-filter/index.js +1 -0
- package/src/inline-filter/useInlineFilter.js +11 -0
- package/src/quick-filters/QuickFilters.css.js +39 -0
- package/src/quick-filters/QuickFilters.js +81 -0
- package/src/quick-filters/index.js +1 -0
- package/src/quick-filters/useQuickFilters.js +108 -0
- package/src/saved-filters/DeleteFilterPrompt.js +23 -0
- package/src/saved-filters/FilterNamePrompt.css.js +19 -0
- package/src/saved-filters/FilterNamePrompt.js +74 -0
- package/src/saved-filters/SavedFilterPanel.css.js +21 -0
- package/src/saved-filters/SavedFilterPanel.js +53 -0
- package/src/saved-filters/useFilterNamePrompt.js +74 -0
- package/src/saved-filters/useSavedFilterPanel.js +19 -0
- package/src/tabbed-filter-container/TabbedFilterContainer.js +61 -0
- package/src/toggle-filter/ToggleFilter.css.js +10 -0
- package/src/toggle-filter/ToggleFilter.js +68 -0
- package/src/toggle-filter/useToggleFilter.js +57 -0
- package/types/filter-clause/column-picker/ColumnPicker.d.ts +1 -1
- package/types/filter-clause/operator-picker/OperatorPicker.d.ts +1 -1
- package/types/filter-clause/value-editors/FilterClauseValueEditor.d.ts +1 -1
- package/cjs/FilterAggregator.js +0 -162
- package/cjs/FilterAggregator.js.map +0 -1
- package/cjs/FilterModel.js +0 -227
- package/cjs/FilterModel.js.map +0 -1
- package/cjs/column-filter/ColumnFilter.css.js +0 -6
- package/cjs/column-filter/ColumnFilter.css.js.map +0 -1
- package/cjs/column-filter/ColumnFilter.js +0 -83
- package/cjs/column-filter/ColumnFilter.js.map +0 -1
- package/cjs/column-filter/useColumnFilter.js +0 -139
- package/cjs/column-filter/useColumnFilter.js.map +0 -1
- package/cjs/custom-filters/CustomFilters.js +0 -99
- package/cjs/custom-filters/CustomFilters.js.map +0 -1
- package/cjs/custom-filters/filterBarFocusManagement.js +0 -35
- package/cjs/custom-filters/filterBarFocusManagement.js.map +0 -1
- package/cjs/custom-filters/useCustomFilters.js +0 -266
- package/cjs/custom-filters/useCustomFilters.js.map +0 -1
- package/cjs/custom-filters/useFilterState.js +0 -149
- package/cjs/custom-filters/useFilterState.js.map +0 -1
- package/cjs/filter-bar/FilterBar.css.js +0 -6
- package/cjs/filter-bar/FilterBar.css.js.map +0 -1
- package/cjs/filter-bar/FilterBar.js +0 -123
- package/cjs/filter-bar/FilterBar.js.map +0 -1
- package/cjs/filter-bar/useFilterBar.js +0 -37
- package/cjs/filter-bar/useFilterBar.js.map +0 -1
- package/cjs/filter-clause/ExpandoCombobox.css.js +0 -6
- package/cjs/filter-clause/ExpandoCombobox.css.js.map +0 -1
- package/cjs/filter-clause/ExpandoCombobox.js +0 -114
- package/cjs/filter-clause/ExpandoCombobox.js.map +0 -1
- package/cjs/filter-clause/FilterClause.css.js +0 -6
- package/cjs/filter-clause/FilterClause.css.js.map +0 -1
- package/cjs/filter-clause/FilterClause.js +0 -102
- package/cjs/filter-clause/FilterClause.js.map +0 -1
- package/cjs/filter-clause/column-picker/ColumnPicker.js +0 -39
- package/cjs/filter-clause/column-picker/ColumnPicker.js.map +0 -1
- package/cjs/filter-clause/column-picker/useColumnPicker.js +0 -61
- package/cjs/filter-clause/column-picker/useColumnPicker.js.map +0 -1
- package/cjs/filter-clause/filterClauseFocusManagement.js +0 -204
- package/cjs/filter-clause/filterClauseFocusManagement.js.map +0 -1
- package/cjs/filter-clause/operator-picker/OperatorPicker.js +0 -40
- package/cjs/filter-clause/operator-picker/OperatorPicker.js.map +0 -1
- package/cjs/filter-clause/operator-picker/operator-utils.js +0 -34
- package/cjs/filter-clause/operator-picker/operator-utils.js.map +0 -1
- package/cjs/filter-clause/operator-picker/useOperatorPicker.js +0 -61
- package/cjs/filter-clause/operator-picker/useOperatorPicker.js.map +0 -1
- package/cjs/filter-clause/useFilterClause.js +0 -172
- package/cjs/filter-clause/useFilterClause.js.map +0 -1
- package/cjs/filter-clause/value-editors/FilterClauseValueEditor.js +0 -93
- package/cjs/filter-clause/value-editors/FilterClauseValueEditor.js.map +0 -1
- package/cjs/filter-clause/value-editors/FilterClauseValueEditorDate.js +0 -64
- package/cjs/filter-clause/value-editors/FilterClauseValueEditorDate.js.map +0 -1
- package/cjs/filter-clause/value-editors/FilterClauseValueEditorNumber.js +0 -55
- package/cjs/filter-clause/value-editors/FilterClauseValueEditorNumber.js.map +0 -1
- package/cjs/filter-clause/value-editors/FilterClauseValueEditorText.js +0 -222
- package/cjs/filter-clause/value-editors/FilterClauseValueEditorText.js.map +0 -1
- package/cjs/filter-clause/value-editors/FilterClauseValueEditorTime.js +0 -62
- package/cjs/filter-clause/value-editors/FilterClauseValueEditorTime.js.map +0 -1
- package/cjs/filter-container/ExtendedSingleValueFilterClause.js +0 -63
- package/cjs/filter-container/ExtendedSingleValueFilterClause.js.map +0 -1
- package/cjs/filter-container/FilterContainer.css.js +0 -6
- package/cjs/filter-container/FilterContainer.css.js.map +0 -1
- package/cjs/filter-container/FilterContainer.js +0 -145
- package/cjs/filter-container/FilterContainer.js.map +0 -1
- package/cjs/filter-container/useFilterContainer.js +0 -137
- package/cjs/filter-container/useFilterContainer.js.map +0 -1
- package/cjs/filter-context-menu/useFilterContextMenu.js +0 -129
- package/cjs/filter-context-menu/useFilterContextMenu.js.map +0 -1
- package/cjs/filter-display/FilterDisplay.css.js +0 -6
- package/cjs/filter-display/FilterDisplay.css.js.map +0 -1
- package/cjs/filter-display/FilterDisplay.js +0 -79
- package/cjs/filter-display/FilterDisplay.js.map +0 -1
- package/cjs/filter-editor/FilterClauseCombinator.css.js +0 -6
- package/cjs/filter-editor/FilterClauseCombinator.css.js.map +0 -1
- package/cjs/filter-editor/FilterClauseCombinator.js +0 -42
- package/cjs/filter-editor/FilterClauseCombinator.js.map +0 -1
- package/cjs/filter-editor/FilterEditor.css.js +0 -6
- package/cjs/filter-editor/FilterEditor.css.js.map +0 -1
- package/cjs/filter-editor/FilterEditor.js +0 -101
- package/cjs/filter-editor/FilterEditor.js.map +0 -1
- package/cjs/filter-editor/useFilterEditor.js +0 -191
- package/cjs/filter-editor/useFilterEditor.js.map +0 -1
- package/cjs/filter-panel/FilterPanel.css.js +0 -6
- package/cjs/filter-panel/FilterPanel.css.js.map +0 -1
- package/cjs/filter-panel/FilterPanel.js +0 -91
- package/cjs/filter-panel/FilterPanel.js.map +0 -1
- package/cjs/filter-panel/useFilterPanel.js +0 -68
- package/cjs/filter-panel/useFilterPanel.js.map +0 -1
- package/cjs/filter-pill/FilterMenu.js +0 -63
- package/cjs/filter-pill/FilterMenu.js.map +0 -1
- package/cjs/filter-pill/FilterPill.css.js +0 -6
- package/cjs/filter-pill/FilterPill.css.js.map +0 -1
- package/cjs/filter-pill/FilterPill.js +0 -147
- package/cjs/filter-pill/FilterPill.js.map +0 -1
- package/cjs/filter-pill/FilterPillNext.css.js +0 -6
- package/cjs/filter-pill/FilterPillNext.css.js.map +0 -1
- package/cjs/filter-pill/FilterPillNext.js +0 -91
- package/cjs/filter-pill/FilterPillNext.js.map +0 -1
- package/cjs/filter-pill/filterAsReactNode.js +0 -27
- package/cjs/filter-pill/filterAsReactNode.js.map +0 -1
- package/cjs/filter-pill/getFilterLabel.js +0 -22
- package/cjs/filter-pill/getFilterLabel.js.map +0 -1
- package/cjs/filter-pill/getFilterTooltipText.js +0 -41
- package/cjs/filter-pill/getFilterTooltipText.js.map +0 -1
- package/cjs/filter-pill/useFilterPillNext.js +0 -65
- package/cjs/filter-pill/useFilterPillNext.js.map +0 -1
- package/cjs/filter-pill-menu/FilterPillMenuOptions.js +0 -32
- package/cjs/filter-pill-menu/FilterPillMenuOptions.js.map +0 -1
- package/cjs/filter-provider/FilterContext.js +0 -105
- package/cjs/filter-provider/FilterContext.js.map +0 -1
- package/cjs/filter-provider/FilterProvider.js +0 -240
- package/cjs/filter-provider/FilterProvider.js.map +0 -1
- package/cjs/filter-provider/filter-descriptor-utils.js +0 -67
- package/cjs/filter-provider/filter-descriptor-utils.js.map +0 -1
- package/cjs/filter-utils.js +0 -367
- package/cjs/filter-utils.js.map +0 -1
- package/cjs/index.js +0 -80
- package/cjs/index.js.map +0 -1
- package/cjs/inline-filter/InlineFilter.css.js +0 -6
- package/cjs/inline-filter/InlineFilter.css.js.map +0 -1
- package/cjs/inline-filter/InlineFilter.js +0 -70
- package/cjs/inline-filter/InlineFilter.js.map +0 -1
- package/cjs/inline-filter/useInlineFilter.js +0 -16
- package/cjs/inline-filter/useInlineFilter.js.map +0 -1
- package/cjs/quick-filters/QuickFilters.css.js +0 -6
- package/cjs/quick-filters/QuickFilters.css.js.map +0 -1
- package/cjs/quick-filters/QuickFilters.js +0 -98
- package/cjs/quick-filters/QuickFilters.js.map +0 -1
- package/cjs/quick-filters/useQuickFilters.js +0 -152
- package/cjs/quick-filters/useQuickFilters.js.map +0 -1
- package/cjs/saved-filters/DeleteFilterPrompt.js +0 -37
- package/cjs/saved-filters/DeleteFilterPrompt.js.map +0 -1
- package/cjs/saved-filters/FilterNamePrompt.css.js +0 -6
- package/cjs/saved-filters/FilterNamePrompt.css.js.map +0 -1
- package/cjs/saved-filters/FilterNamePrompt.js +0 -89
- package/cjs/saved-filters/FilterNamePrompt.js.map +0 -1
- package/cjs/saved-filters/SavedFilterPanel.css.js +0 -6
- package/cjs/saved-filters/SavedFilterPanel.css.js.map +0 -1
- package/cjs/saved-filters/SavedFilterPanel.js +0 -62
- package/cjs/saved-filters/SavedFilterPanel.js.map +0 -1
- package/cjs/saved-filters/useFilterNamePrompt.js +0 -98
- package/cjs/saved-filters/useFilterNamePrompt.js.map +0 -1
- package/cjs/saved-filters/useSavedFilterPanel.js +0 -29
- package/cjs/saved-filters/useSavedFilterPanel.js.map +0 -1
- package/cjs/tabbed-filter-container/TabbedFilterContainer.css.js +0 -6
- package/cjs/tabbed-filter-container/TabbedFilterContainer.css.js.map +0 -1
- package/cjs/tabbed-filter-container/TabbedFilterContainer.js +0 -57
- package/cjs/tabbed-filter-container/TabbedFilterContainer.js.map +0 -1
- package/cjs/toggle-filter/ToggleFilter.css.js +0 -6
- package/cjs/toggle-filter/ToggleFilter.css.js.map +0 -1
- package/cjs/toggle-filter/ToggleFilter.js +0 -85
- package/cjs/toggle-filter/ToggleFilter.js.map +0 -1
- package/cjs/toggle-filter/useToggleFilter.js +0 -67
- package/cjs/toggle-filter/useToggleFilter.js.map +0 -1
- package/esm/FilterAggregator.js +0 -160
- package/esm/FilterAggregator.js.map +0 -1
- package/esm/FilterModel.js +0 -224
- package/esm/FilterModel.js.map +0 -1
- package/esm/column-filter/ColumnFilter.css.js +0 -4
- package/esm/column-filter/ColumnFilter.css.js.map +0 -1
- package/esm/column-filter/ColumnFilter.js +0 -81
- package/esm/column-filter/ColumnFilter.js.map +0 -1
- package/esm/column-filter/useColumnFilter.js +0 -137
- package/esm/column-filter/useColumnFilter.js.map +0 -1
- package/esm/custom-filters/CustomFilters.js +0 -97
- package/esm/custom-filters/CustomFilters.js.map +0 -1
- package/esm/custom-filters/filterBarFocusManagement.js +0 -33
- package/esm/custom-filters/filterBarFocusManagement.js.map +0 -1
- package/esm/custom-filters/useCustomFilters.js +0 -263
- package/esm/custom-filters/useCustomFilters.js.map +0 -1
- package/esm/custom-filters/useFilterState.js +0 -147
- package/esm/custom-filters/useFilterState.js.map +0 -1
- package/esm/filter-bar/FilterBar.css.js +0 -4
- package/esm/filter-bar/FilterBar.css.js.map +0 -1
- package/esm/filter-bar/FilterBar.js +0 -121
- package/esm/filter-bar/FilterBar.js.map +0 -1
- package/esm/filter-bar/useFilterBar.js +0 -35
- package/esm/filter-bar/useFilterBar.js.map +0 -1
- package/esm/filter-clause/ExpandoCombobox.css.js +0 -4
- package/esm/filter-clause/ExpandoCombobox.css.js.map +0 -1
- package/esm/filter-clause/ExpandoCombobox.js +0 -112
- package/esm/filter-clause/ExpandoCombobox.js.map +0 -1
- package/esm/filter-clause/FilterClause.css.js +0 -4
- package/esm/filter-clause/FilterClause.css.js.map +0 -1
- package/esm/filter-clause/FilterClause.js +0 -100
- package/esm/filter-clause/FilterClause.js.map +0 -1
- package/esm/filter-clause/column-picker/ColumnPicker.js +0 -37
- package/esm/filter-clause/column-picker/ColumnPicker.js.map +0 -1
- package/esm/filter-clause/column-picker/useColumnPicker.js +0 -59
- package/esm/filter-clause/column-picker/useColumnPicker.js.map +0 -1
- package/esm/filter-clause/filterClauseFocusManagement.js +0 -191
- package/esm/filter-clause/filterClauseFocusManagement.js.map +0 -1
- package/esm/filter-clause/operator-picker/OperatorPicker.js +0 -38
- package/esm/filter-clause/operator-picker/OperatorPicker.js.map +0 -1
- package/esm/filter-clause/operator-picker/operator-utils.js +0 -30
- package/esm/filter-clause/operator-picker/operator-utils.js.map +0 -1
- package/esm/filter-clause/operator-picker/useOperatorPicker.js +0 -59
- package/esm/filter-clause/operator-picker/useOperatorPicker.js.map +0 -1
- package/esm/filter-clause/useFilterClause.js +0 -170
- package/esm/filter-clause/useFilterClause.js.map +0 -1
- package/esm/filter-clause/value-editors/FilterClauseValueEditor.js +0 -91
- package/esm/filter-clause/value-editors/FilterClauseValueEditor.js.map +0 -1
- package/esm/filter-clause/value-editors/FilterClauseValueEditorDate.js +0 -62
- package/esm/filter-clause/value-editors/FilterClauseValueEditorDate.js.map +0 -1
- package/esm/filter-clause/value-editors/FilterClauseValueEditorNumber.js +0 -53
- package/esm/filter-clause/value-editors/FilterClauseValueEditorNumber.js.map +0 -1
- package/esm/filter-clause/value-editors/FilterClauseValueEditorText.js +0 -220
- package/esm/filter-clause/value-editors/FilterClauseValueEditorText.js.map +0 -1
- package/esm/filter-clause/value-editors/FilterClauseValueEditorTime.js +0 -60
- package/esm/filter-clause/value-editors/FilterClauseValueEditorTime.js.map +0 -1
- package/esm/filter-container/ExtendedSingleValueFilterClause.js +0 -60
- package/esm/filter-container/ExtendedSingleValueFilterClause.js.map +0 -1
- package/esm/filter-container/FilterContainer.css.js +0 -4
- package/esm/filter-container/FilterContainer.css.js.map +0 -1
- package/esm/filter-container/FilterContainer.js +0 -142
- package/esm/filter-container/FilterContainer.js.map +0 -1
- package/esm/filter-container/useFilterContainer.js +0 -133
- package/esm/filter-container/useFilterContainer.js.map +0 -1
- package/esm/filter-context-menu/useFilterContextMenu.js +0 -127
- package/esm/filter-context-menu/useFilterContextMenu.js.map +0 -1
- package/esm/filter-display/FilterDisplay.css.js +0 -4
- package/esm/filter-display/FilterDisplay.css.js.map +0 -1
- package/esm/filter-display/FilterDisplay.js +0 -77
- package/esm/filter-display/FilterDisplay.js.map +0 -1
- package/esm/filter-editor/FilterClauseCombinator.css.js +0 -4
- package/esm/filter-editor/FilterClauseCombinator.css.js.map +0 -1
- package/esm/filter-editor/FilterClauseCombinator.js +0 -40
- package/esm/filter-editor/FilterClauseCombinator.js.map +0 -1
- package/esm/filter-editor/FilterEditor.css.js +0 -4
- package/esm/filter-editor/FilterEditor.css.js.map +0 -1
- package/esm/filter-editor/FilterEditor.js +0 -99
- package/esm/filter-editor/FilterEditor.js.map +0 -1
- package/esm/filter-editor/useFilterEditor.js +0 -189
- package/esm/filter-editor/useFilterEditor.js.map +0 -1
- package/esm/filter-panel/FilterPanel.css.js +0 -4
- package/esm/filter-panel/FilterPanel.css.js.map +0 -1
- package/esm/filter-panel/FilterPanel.js +0 -89
- package/esm/filter-panel/FilterPanel.js.map +0 -1
- package/esm/filter-panel/useFilterPanel.js +0 -66
- package/esm/filter-panel/useFilterPanel.js.map +0 -1
- package/esm/filter-pill/FilterMenu.js +0 -61
- package/esm/filter-pill/FilterMenu.js.map +0 -1
- package/esm/filter-pill/FilterPill.css.js +0 -4
- package/esm/filter-pill/FilterPill.css.js.map +0 -1
- package/esm/filter-pill/FilterPill.js +0 -145
- package/esm/filter-pill/FilterPill.js.map +0 -1
- package/esm/filter-pill/FilterPillNext.css.js +0 -4
- package/esm/filter-pill/FilterPillNext.css.js.map +0 -1
- package/esm/filter-pill/FilterPillNext.js +0 -89
- package/esm/filter-pill/FilterPillNext.js.map +0 -1
- package/esm/filter-pill/filterAsReactNode.js +0 -25
- package/esm/filter-pill/filterAsReactNode.js.map +0 -1
- package/esm/filter-pill/getFilterLabel.js +0 -20
- package/esm/filter-pill/getFilterLabel.js.map +0 -1
- package/esm/filter-pill/getFilterTooltipText.js +0 -39
- package/esm/filter-pill/getFilterTooltipText.js.map +0 -1
- package/esm/filter-pill/useFilterPillNext.js +0 -63
- package/esm/filter-pill/useFilterPillNext.js.map +0 -1
- package/esm/filter-pill-menu/FilterPillMenuOptions.js +0 -27
- package/esm/filter-pill-menu/FilterPillMenuOptions.js.map +0 -1
- package/esm/filter-provider/FilterContext.js +0 -94
- package/esm/filter-provider/FilterContext.js.map +0 -1
- package/esm/filter-provider/FilterProvider.js +0 -238
- package/esm/filter-provider/FilterProvider.js.map +0 -1
- package/esm/filter-provider/filter-descriptor-utils.js +0 -61
- package/esm/filter-provider/filter-descriptor-utils.js.map +0 -1
- package/esm/filter-utils.js +0 -344
- package/esm/filter-utils.js.map +0 -1
- package/esm/index.js +0 -26
- package/esm/index.js.map +0 -1
- package/esm/inline-filter/InlineFilter.css.js +0 -4
- package/esm/inline-filter/InlineFilter.css.js.map +0 -1
- package/esm/inline-filter/InlineFilter.js +0 -68
- package/esm/inline-filter/InlineFilter.js.map +0 -1
- package/esm/inline-filter/useInlineFilter.js +0 -14
- package/esm/inline-filter/useInlineFilter.js.map +0 -1
- package/esm/quick-filters/QuickFilters.css.js +0 -4
- package/esm/quick-filters/QuickFilters.css.js.map +0 -1
- package/esm/quick-filters/QuickFilters.js +0 -96
- package/esm/quick-filters/QuickFilters.js.map +0 -1
- package/esm/quick-filters/useQuickFilters.js +0 -150
- package/esm/quick-filters/useQuickFilters.js.map +0 -1
- package/esm/saved-filters/DeleteFilterPrompt.js +0 -35
- package/esm/saved-filters/DeleteFilterPrompt.js.map +0 -1
- package/esm/saved-filters/FilterNamePrompt.css.js +0 -4
- package/esm/saved-filters/FilterNamePrompt.css.js.map +0 -1
- package/esm/saved-filters/FilterNamePrompt.js +0 -87
- package/esm/saved-filters/FilterNamePrompt.js.map +0 -1
- package/esm/saved-filters/SavedFilterPanel.css.js +0 -4
- package/esm/saved-filters/SavedFilterPanel.css.js.map +0 -1
- package/esm/saved-filters/SavedFilterPanel.js +0 -60
- package/esm/saved-filters/SavedFilterPanel.js.map +0 -1
- package/esm/saved-filters/useFilterNamePrompt.js +0 -95
- package/esm/saved-filters/useFilterNamePrompt.js.map +0 -1
- package/esm/saved-filters/useSavedFilterPanel.js +0 -27
- package/esm/saved-filters/useSavedFilterPanel.js.map +0 -1
- package/esm/tabbed-filter-container/TabbedFilterContainer.css.js +0 -4
- package/esm/tabbed-filter-container/TabbedFilterContainer.css.js.map +0 -1
- package/esm/tabbed-filter-container/TabbedFilterContainer.js +0 -55
- package/esm/tabbed-filter-container/TabbedFilterContainer.js.map +0 -1
- package/esm/toggle-filter/ToggleFilter.css.js +0 -4
- package/esm/toggle-filter/ToggleFilter.css.js.map +0 -1
- package/esm/toggle-filter/ToggleFilter.js +0 -83
- package/esm/toggle-filter/ToggleFilter.js.map +0 -1
- package/esm/toggle-filter/useToggleFilter.js +0 -65
- package/esm/toggle-filter/useToggleFilter.js.map +0 -1
package/esm/FilterModel.js
DELETED
|
@@ -1,224 +0,0 @@
|
|
|
1
|
-
import { EventEmitter, isSingleValueFilter, isMultiClauseFilter, isMultiValueFilter } 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, typeof key !== "symbol" ? key + "" : 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 _filterClause, _isValid, _children, _isValid2, _op;
|
|
14
|
-
const hasValues = ({ values }) => Array.isArray(values) && values.length > 0;
|
|
15
|
-
const isValidFilterClause = (filterClause) => {
|
|
16
|
-
if (filterClause.op === void 0 || filterClause.column === void 0) {
|
|
17
|
-
return false;
|
|
18
|
-
} else if (isMultiValueFilter(filterClause)) {
|
|
19
|
-
return hasValues(filterClause);
|
|
20
|
-
} else if (isSingleValueFilter(filterClause)) {
|
|
21
|
-
return filterClause.value !== void 0 && filterClause.value !== "";
|
|
22
|
-
}
|
|
23
|
-
throw Error("isValidFilterClause should never reach this far");
|
|
24
|
-
};
|
|
25
|
-
const isValidFilter = (filter) => {
|
|
26
|
-
if (filter === void 0) {
|
|
27
|
-
return false;
|
|
28
|
-
} else if (isMultiClauseFilter(filter)) {
|
|
29
|
-
return filter.filters.every(isValidFilter);
|
|
30
|
-
} else {
|
|
31
|
-
return isValidFilterClause(filter);
|
|
32
|
-
}
|
|
33
|
-
};
|
|
34
|
-
const isValidFilterModel = (filterModel) => {
|
|
35
|
-
if (filterModel.isMultiClauseFilter) {
|
|
36
|
-
return filterModel.filterClauses.every((f) => f.isValid);
|
|
37
|
-
} else {
|
|
38
|
-
return filterModel.filterClauses.length === 1 && filterModel.filterClauses[0].isValid;
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
class FilterClauseModel extends EventEmitter {
|
|
42
|
-
constructor(filterClause) {
|
|
43
|
-
super();
|
|
44
|
-
__privateAdd(this, _filterClause);
|
|
45
|
-
__privateAdd(this, _isValid);
|
|
46
|
-
__privateSet(this, _filterClause, filterClause);
|
|
47
|
-
__privateSet(this, _isValid, isValidFilterClause(filterClause));
|
|
48
|
-
}
|
|
49
|
-
get isValid() {
|
|
50
|
-
return __privateGet(this, _isValid);
|
|
51
|
-
}
|
|
52
|
-
setIsValid(isValid) {
|
|
53
|
-
__privateSet(this, _isValid, isValid);
|
|
54
|
-
this.emit("isValid", isValid);
|
|
55
|
-
}
|
|
56
|
-
get column() {
|
|
57
|
-
return __privateGet(this, _filterClause).column;
|
|
58
|
-
}
|
|
59
|
-
set column(column) {
|
|
60
|
-
__privateSet(this, _filterClause, {
|
|
61
|
-
column
|
|
62
|
-
});
|
|
63
|
-
const isValid = isValidFilterClause(__privateGet(this, _filterClause));
|
|
64
|
-
this.emit("filterClause", __privateGet(this, _filterClause), isValid);
|
|
65
|
-
if (isValid !== __privateGet(this, _isValid)) {
|
|
66
|
-
this.setIsValid(isValid);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
get op() {
|
|
70
|
-
return __privateGet(this, _filterClause).op;
|
|
71
|
-
}
|
|
72
|
-
setOp(op) {
|
|
73
|
-
__privateSet(this, _filterClause, {
|
|
74
|
-
...__privateGet(this, _filterClause),
|
|
75
|
-
op
|
|
76
|
-
});
|
|
77
|
-
const isValid = isValidFilterClause(__privateGet(this, _filterClause));
|
|
78
|
-
this.emit("filterClause", __privateGet(this, _filterClause), isValid);
|
|
79
|
-
if (isValid !== __privateGet(this, _isValid)) {
|
|
80
|
-
this.setIsValid(isValid);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
setValue(value, isFinal = true) {
|
|
84
|
-
if (isSingleValueFilter(__privateGet(this, _filterClause))) {
|
|
85
|
-
__privateSet(this, _filterClause, {
|
|
86
|
-
...__privateGet(this, _filterClause),
|
|
87
|
-
value
|
|
88
|
-
});
|
|
89
|
-
} else if (Array.isArray(value)) {
|
|
90
|
-
__privateSet(this, _filterClause, {
|
|
91
|
-
...__privateGet(this, _filterClause),
|
|
92
|
-
values: value
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
const isValid = isValidFilterClause(__privateGet(this, _filterClause));
|
|
96
|
-
if (isValid !== __privateGet(this, _isValid)) {
|
|
97
|
-
this.setIsValid(isValid);
|
|
98
|
-
}
|
|
99
|
-
if (isFinal) {
|
|
100
|
-
this.emit("filterClause", __privateGet(this, _filterClause), isValid);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
asFilter(throwIfInvalid = true) {
|
|
104
|
-
if (throwIfInvalid && !__privateGet(this, _isValid)) {
|
|
105
|
-
throw Error("Invalid filter model cannot be returned as Filter");
|
|
106
|
-
}
|
|
107
|
-
return __privateGet(this, _filterClause);
|
|
108
|
-
}
|
|
109
|
-
commit() {
|
|
110
|
-
this.emit("filterClause", __privateGet(this, _filterClause), true);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
_filterClause = new WeakMap();
|
|
114
|
-
_isValid = new WeakMap();
|
|
115
|
-
class FilterModel extends EventEmitter {
|
|
116
|
-
constructor(filter) {
|
|
117
|
-
super();
|
|
118
|
-
__privateAdd(this, _children, []);
|
|
119
|
-
__privateAdd(this, _isValid2);
|
|
120
|
-
__privateAdd(this, _op);
|
|
121
|
-
__publicField(this, "onFilterClauseChange", () => {
|
|
122
|
-
this.emit("filter", this.asFilter(false), __privateGet(this, _isValid2));
|
|
123
|
-
});
|
|
124
|
-
__publicField(this, "onFilterClauseStatusChange", (isValid) => {
|
|
125
|
-
if (!isValid && __privateGet(this, _isValid2)) {
|
|
126
|
-
this.setIsValid(false);
|
|
127
|
-
} else {
|
|
128
|
-
this.checkValidStatus();
|
|
129
|
-
}
|
|
130
|
-
});
|
|
131
|
-
if (isMultiClauseFilter(filter)) {
|
|
132
|
-
__privateSet(this, _op, filter.op);
|
|
133
|
-
filter.filters.forEach((f) => this.addFilterClause(f));
|
|
134
|
-
} else if (filter) {
|
|
135
|
-
this.addFilterClause(filter);
|
|
136
|
-
} else {
|
|
137
|
-
this.addNewFilterClause();
|
|
138
|
-
}
|
|
139
|
-
__privateSet(this, _isValid2, isValidFilter(filter));
|
|
140
|
-
}
|
|
141
|
-
get isValid() {
|
|
142
|
-
return __privateGet(this, _isValid2);
|
|
143
|
-
}
|
|
144
|
-
setIsValid(isValid) {
|
|
145
|
-
__privateSet(this, _isValid2, isValid);
|
|
146
|
-
this.emit("isValid", isValid);
|
|
147
|
-
}
|
|
148
|
-
addNewFilterClause(operator) {
|
|
149
|
-
const count = __privateGet(this, _children).length;
|
|
150
|
-
if (!operator && !__privateGet(this, _op) && count === 1) {
|
|
151
|
-
__privateSet(this, _op, "and");
|
|
152
|
-
} else if (operator && !__privateGet(this, _op) && count === 1) {
|
|
153
|
-
__privateSet(this, _op, operator);
|
|
154
|
-
} else if (operator && __privateGet(this, _op) && operator !== __privateGet(this, _op)) {
|
|
155
|
-
throw Error(
|
|
156
|
-
"FilterModel: use setOp to change the Filter combinator operator"
|
|
157
|
-
);
|
|
158
|
-
}
|
|
159
|
-
const filterClauseModel = new FilterClauseModel({});
|
|
160
|
-
filterClauseModel.on("isValid", this.onFilterClauseStatusChange);
|
|
161
|
-
filterClauseModel.on("filterClause", this.onFilterClauseChange);
|
|
162
|
-
__privateGet(this, _children).push(filterClauseModel);
|
|
163
|
-
this.setIsValid(false);
|
|
164
|
-
}
|
|
165
|
-
addFilterClause(filterClause = {}) {
|
|
166
|
-
const filterClauseModel = new FilterClauseModel(filterClause);
|
|
167
|
-
filterClauseModel.on("isValid", this.onFilterClauseStatusChange);
|
|
168
|
-
filterClauseModel.on("filterClause", this.onFilterClauseChange);
|
|
169
|
-
__privateGet(this, _children).push(filterClauseModel);
|
|
170
|
-
}
|
|
171
|
-
removeFilterClause(filterClause) {
|
|
172
|
-
if (this.isMultiClauseFilter) {
|
|
173
|
-
const doomedFilter = this.filterClauses.indexOf(filterClause);
|
|
174
|
-
if (doomedFilter !== -1) {
|
|
175
|
-
this.filterClauses.splice(doomedFilter, 1);
|
|
176
|
-
if (this.filterClauses.length === 1) {
|
|
177
|
-
__privateSet(this, _op, void 0);
|
|
178
|
-
}
|
|
179
|
-
this.checkValidStatus();
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
checkValidStatus() {
|
|
184
|
-
const nowValid = isValidFilterModel(this);
|
|
185
|
-
if (nowValid !== __privateGet(this, _isValid2)) {
|
|
186
|
-
this.setIsValid(nowValid);
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
getFilterClause(index) {
|
|
190
|
-
return __privateGet(this, _children)[index];
|
|
191
|
-
}
|
|
192
|
-
get op() {
|
|
193
|
-
return __privateGet(this, _op);
|
|
194
|
-
}
|
|
195
|
-
setOp(op) {
|
|
196
|
-
__privateSet(this, _op, op);
|
|
197
|
-
this.emit("filter", this.asFilter(false), __privateGet(this, _isValid2));
|
|
198
|
-
}
|
|
199
|
-
get filterClauses() {
|
|
200
|
-
return __privateGet(this, _children);
|
|
201
|
-
}
|
|
202
|
-
get isMultiClauseFilter() {
|
|
203
|
-
return __privateGet(this, _op) === "and" || __privateGet(this, _op) === "or";
|
|
204
|
-
}
|
|
205
|
-
asFilter(throwIfInvalid = true) {
|
|
206
|
-
if (throwIfInvalid && !__privateGet(this, _isValid2)) {
|
|
207
|
-
throw Error("Invalid filter model cannot be returned as Filter");
|
|
208
|
-
}
|
|
209
|
-
if (__privateGet(this, _op) === "and" || __privateGet(this, _op) === "or") {
|
|
210
|
-
return {
|
|
211
|
-
op: __privateGet(this, _op),
|
|
212
|
-
filters: __privateGet(this, _children).map((f) => f.asFilter(throwIfInvalid))
|
|
213
|
-
};
|
|
214
|
-
} else {
|
|
215
|
-
return __privateGet(this, _children)[0].asFilter(throwIfInvalid);
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
_children = new WeakMap();
|
|
220
|
-
_isValid2 = new WeakMap();
|
|
221
|
-
_op = new WeakMap();
|
|
222
|
-
|
|
223
|
-
export { FilterClauseModel, FilterModel };
|
|
224
|
-
//# sourceMappingURL=FilterModel.js.map
|
package/esm/FilterModel.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FilterModel.js","sources":["../../../packages/vuu-filters/src/FilterModel.ts"],"sourcesContent":["import {\n Filter,\n FilterClause,\n FilterClauseOp,\n FilterCombinatorOp,\n MultiClauseFilter,\n MultiValueFilterClause,\n SingleValueFilterClause,\n} from \"@vuu-ui/vuu-filter-types\";\nimport {\n EventEmitter,\n isMultiClauseFilter,\n isMultiValueFilter,\n isSingleValueFilter,\n} from \"@vuu-ui/vuu-utils\";\n\nexport type FilterStatusChangeHandler = (isValid: boolean) => void;\nexport type FilterChangeHandler = (\n filter: Partial<Filter>,\n isValid: boolean,\n) => void;\nexport type FilterClauseChangeHandler = (\n filter: Partial<FilterClause>,\n isValid: boolean,\n) => void;\n\nconst hasValues = ({ values }: MultiValueFilterClause) =>\n Array.isArray(values) && values.length > 0;\n\nconst isValidFilterClause = (\n filterClause: Partial<FilterClause>,\n): filterClause is FilterClause => {\n if (filterClause.op === undefined || filterClause.column === undefined) {\n return false;\n } else if (isMultiValueFilter(filterClause)) {\n return hasValues(filterClause);\n } else if (isSingleValueFilter(filterClause)) {\n return filterClause.value !== undefined && filterClause.value !== \"\";\n }\n throw Error(\"isValidFilterClause should never reach this far\");\n};\n\nconst isValidFilter = (filter?: Filter): boolean => {\n if (filter === undefined) {\n return false;\n } else if (isMultiClauseFilter(filter)) {\n return filter.filters.every(isValidFilter);\n } else {\n return isValidFilterClause(filter);\n }\n};\n\nconst isValidFilterModel = (filterModel: FilterModel) => {\n if (filterModel.isMultiClauseFilter) {\n return filterModel.filterClauses.every((f) => f.isValid);\n } else {\n return (\n filterModel.filterClauses.length === 1 &&\n filterModel.filterClauses[0].isValid\n );\n }\n};\n\nexport type FilterClauseModelEvents = {\n filterClause: FilterClauseChangeHandler;\n isValid: FilterStatusChangeHandler;\n};\n\nexport type FilterModelEvents = {\n // TODO do we need an incomplate filter type\n filter: FilterChangeHandler;\n isValid: FilterStatusChangeHandler;\n};\n\nexport class FilterClauseModel extends EventEmitter<FilterClauseModelEvents> {\n #filterClause: Partial<FilterClause>;\n #isValid: boolean;\n constructor(filterClause: Partial<FilterClause>) {\n super();\n this.#filterClause = filterClause;\n this.#isValid = isValidFilterClause(filterClause);\n }\n get isValid() {\n return this.#isValid;\n }\n\n private setIsValid(isValid: boolean) {\n this.#isValid = isValid;\n this.emit(\"isValid\", isValid);\n }\n\n get column() {\n return this.#filterClause.column;\n }\n\n set column(column: undefined | string) {\n // TODO set op, value to empty\n this.#filterClause = {\n column,\n };\n\n const isValid = isValidFilterClause(this.#filterClause);\n this.emit(\"filterClause\", this.#filterClause, isValid);\n if (isValid !== this.#isValid) {\n this.setIsValid(isValid);\n }\n }\n\n get op() {\n return this.#filterClause.op;\n }\n\n setOp(op: undefined | FilterClauseOp) {\n this.#filterClause = {\n ...this.#filterClause,\n op,\n };\n const isValid = isValidFilterClause(this.#filterClause);\n this.emit(\"filterClause\", this.#filterClause, isValid);\n if (isValid !== this.#isValid) {\n this.setIsValid(isValid);\n }\n }\n\n setValue(\n value:\n | undefined\n | string\n | string[]\n | number\n | number[]\n | boolean\n | boolean[],\n isFinal = true,\n ) {\n if (isSingleValueFilter(this.#filterClause)) {\n this.#filterClause = {\n ...this.#filterClause,\n value,\n } as SingleValueFilterClause;\n } else if (Array.isArray(value)) {\n this.#filterClause = {\n ...this.#filterClause,\n values: value,\n } as MultiValueFilterClause;\n }\n\n const isValid = isValidFilterClause(this.#filterClause);\n if (isValid !== this.#isValid) {\n this.setIsValid(isValid);\n }\n if (isFinal) {\n this.emit(\"filterClause\", this.#filterClause, isValid);\n }\n }\n\n asFilter(throwIfInvalid = true): FilterClause {\n if (throwIfInvalid && !this.#isValid) {\n throw Error(\"Invalid filter model cannot be returned as Filter\");\n }\n return this.#filterClause as FilterClause;\n }\n\n commit() {\n this.emit(\"filterClause\", this.#filterClause, true);\n }\n}\n\nexport class FilterModel extends EventEmitter<FilterModelEvents> {\n #children: FilterClauseModel[] = [];\n #isValid: boolean;\n #op?: FilterCombinatorOp;\n\n constructor(filter?: Filter) {\n super();\n if (isMultiClauseFilter(filter)) {\n this.#op = filter.op;\n filter.filters.forEach((f) => this.addFilterClause(f as FilterClause));\n } else if (filter) {\n this.addFilterClause(filter);\n } else {\n this.addNewFilterClause();\n }\n\n this.#isValid = isValidFilter(filter);\n }\n get isValid() {\n return this.#isValid;\n }\n\n private setIsValid(isValid: boolean) {\n this.#isValid = isValid;\n this.emit(\"isValid\", isValid);\n }\n\n addNewFilterClause(operator?: FilterCombinatorOp) {\n const count = this.#children.length;\n if (!operator && !this.#op && count === 1) {\n this.#op = \"and\";\n } else if (operator && !this.#op && count === 1) {\n this.#op = operator;\n } else if (operator && this.#op && operator !== this.#op) {\n throw Error(\n \"FilterModel: use setOp to change the Filter combinator operator\",\n );\n }\n\n const filterClauseModel = new FilterClauseModel({});\n filterClauseModel.on(\"isValid\", this.onFilterClauseStatusChange);\n filterClauseModel.on(\"filterClause\", this.onFilterClauseChange);\n this.#children.push(filterClauseModel);\n this.setIsValid(false);\n }\n\n addFilterClause(filterClause: Partial<FilterClause> = {}) {\n const filterClauseModel = new FilterClauseModel(filterClause);\n filterClauseModel.on(\"isValid\", this.onFilterClauseStatusChange);\n filterClauseModel.on(\"filterClause\", this.onFilterClauseChange);\n this.#children.push(filterClauseModel);\n }\n\n removeFilterClause(filterClause: FilterClauseModel) {\n // We never allow the last clause to be removed\n if (this.isMultiClauseFilter) {\n const doomedFilter = this.filterClauses.indexOf(filterClause);\n if (doomedFilter !== -1) {\n this.filterClauses.splice(doomedFilter, 1);\n // If we're down the the last clause, we are no longer multi-clause\n if (this.filterClauses.length === 1) {\n this.#op = undefined;\n }\n this.checkValidStatus();\n }\n }\n }\n\n checkValidStatus() {\n const nowValid = isValidFilterModel(this);\n\n if (nowValid !== this.#isValid) {\n this.setIsValid(nowValid);\n }\n }\n\n onFilterClauseChange: FilterChangeHandler = () => {\n this.emit(\"filter\", this.asFilter(false), this.#isValid);\n };\n\n onFilterClauseStatusChange = (isValid: boolean) => {\n if (!isValid && this.#isValid) {\n this.setIsValid(false);\n } else {\n this.checkValidStatus();\n }\n };\n\n getFilterClause(index: number) {\n return this.#children[index];\n }\n\n get op() {\n return this.#op;\n }\n\n setOp(op: FilterCombinatorOp) {\n this.#op = op;\n this.emit(\"filter\", this.asFilter(false), this.#isValid);\n }\n\n get filterClauses() {\n return this.#children;\n }\n\n get isMultiClauseFilter() {\n return this.#op === \"and\" || this.#op === \"or\";\n }\n\n asFilter(throwIfInvalid = true): Filter {\n if (throwIfInvalid && !this.#isValid) {\n throw Error(\"Invalid filter model cannot be returned as Filter\");\n }\n if (this.#op === \"and\" || this.#op === \"or\") {\n return {\n op: this.#op,\n filters: this.#children.map((f) => f.asFilter(throwIfInvalid)),\n } as MultiClauseFilter;\n } else {\n return this.#children[0].asFilter(throwIfInvalid);\n }\n }\n}\n"],"names":["_isValid"],"mappings":"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"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
var columnFilterCss = ".vuuColumnFilter {\n --vuuTimeInput-outline: none;\n \n border: solid 1px var(--salt-editable-borderColor);\n max-width: 200px;\n padding-left: 4px;\n padding-right: 4px;\n width: var(--vuuColumnFilter-width, fit-content);\n\n .vuuColumnFilter-rangeHigh {\n position: relative;\n }\n\n .vuuColumnFilter-rangeHigh::before {\n content: \"\";\n width: 1px;\n position: absolute;\n background: var(--salt-separable-primary-borderColor);\n /* Accomodate button border */\n left: calc(-1 * var(--salt-spacing-100));\n top: -1px;\n bottom: -1px;\n }\n\n .vuuTimePicker {\n border-radius: 6px;\n }\n\n .vuuTimePicker + .vuuTimePicker {\n margin-left: var(--salt-spacing-100);\n }\n\n .vuuTimeInput {\n border: none;\n }\n\n .vuuTimeInput:focus-visible {\n outline: none;\n }\n\n}\n\n.vuuColumnFilter-trigger {\n --saltButton-borderRadius: 4px 0px 0px 4px;\n --saltButton-padding: var(--salt-spacing-200);\n}\n\n.vuuColumnFilter-invalid {\n border-color: red;\n}";
|
|
2
|
-
|
|
3
|
-
export { columnFilterCss as default };
|
|
4
|
-
//# sourceMappingURL=ColumnFilter.css.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ColumnFilter.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import { jsxs } from 'react/jsx-runtime';
|
|
2
|
-
import { SegmentedButtonGroup } from '@salt-ds/core';
|
|
3
|
-
import { getDataItemEditControl } from '@vuu-ui/vuu-data-react';
|
|
4
|
-
import cx from 'clsx';
|
|
5
|
-
import { forwardRef } from 'react';
|
|
6
|
-
import { useColumnFilter } from './useColumnFilter.js';
|
|
7
|
-
import { useComponentCssInjection } from '@salt-ds/styles';
|
|
8
|
-
import { useWindow } from '@salt-ds/window';
|
|
9
|
-
import columnFilterCss from './ColumnFilter.css.js';
|
|
10
|
-
import { isBetweenOperator } from '@vuu-ui/vuu-utils';
|
|
11
|
-
|
|
12
|
-
const classBase = "vuuColumnFilter";
|
|
13
|
-
const ColumnFilter = forwardRef(function ColumnFilter2({
|
|
14
|
-
InputProps: InputPropsProp,
|
|
15
|
-
TypeaheadProps,
|
|
16
|
-
className,
|
|
17
|
-
column,
|
|
18
|
-
defaultValue,
|
|
19
|
-
extendedFilterOptions,
|
|
20
|
-
onColumnFilterChange,
|
|
21
|
-
onColumnRangeFilterChange,
|
|
22
|
-
onCommit: onCommitProp,
|
|
23
|
-
operator = "=",
|
|
24
|
-
table,
|
|
25
|
-
value: valueProp,
|
|
26
|
-
values,
|
|
27
|
-
variant,
|
|
28
|
-
...buttonGroupProps
|
|
29
|
-
}, forwardRef2) {
|
|
30
|
-
const targetWindow = useWindow();
|
|
31
|
-
useComponentCssInjection({
|
|
32
|
-
testId: "vuu-filter-editor",
|
|
33
|
-
css: columnFilterCss,
|
|
34
|
-
window: targetWindow
|
|
35
|
-
});
|
|
36
|
-
const { InputProps, InputPropsRange, isInvalid, onCommit, onCommitRange } = useColumnFilter({
|
|
37
|
-
InputProps: InputPropsProp,
|
|
38
|
-
column,
|
|
39
|
-
defaultValue,
|
|
40
|
-
extendedFilterOptions,
|
|
41
|
-
onColumnFilterChange,
|
|
42
|
-
onColumnRangeFilterChange,
|
|
43
|
-
onCommit: onCommitProp,
|
|
44
|
-
operator,
|
|
45
|
-
value: valueProp
|
|
46
|
-
});
|
|
47
|
-
return /* @__PURE__ */ jsxs(
|
|
48
|
-
SegmentedButtonGroup,
|
|
49
|
-
{
|
|
50
|
-
...buttonGroupProps,
|
|
51
|
-
className: cx(classBase, className, {
|
|
52
|
-
[`${classBase}-invalid`]: isInvalid
|
|
53
|
-
}),
|
|
54
|
-
ref: forwardRef2,
|
|
55
|
-
children: [
|
|
56
|
-
getDataItemEditControl({
|
|
57
|
-
InputProps,
|
|
58
|
-
TypeaheadProps,
|
|
59
|
-
commitWhenCleared: true,
|
|
60
|
-
dataDescriptor: column,
|
|
61
|
-
onCommit,
|
|
62
|
-
table,
|
|
63
|
-
values,
|
|
64
|
-
variant
|
|
65
|
-
}),
|
|
66
|
-
isBetweenOperator(operator) ? getDataItemEditControl({
|
|
67
|
-
InputProps: InputPropsRange,
|
|
68
|
-
className: `${classBase}-rangeHigh`,
|
|
69
|
-
commitWhenCleared: true,
|
|
70
|
-
variant,
|
|
71
|
-
dataDescriptor: column,
|
|
72
|
-
onCommit: onCommitRange,
|
|
73
|
-
table
|
|
74
|
-
}) : null
|
|
75
|
-
]
|
|
76
|
-
}
|
|
77
|
-
);
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
export { ColumnFilter };
|
|
81
|
-
//# sourceMappingURL=ColumnFilter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ColumnFilter.js","sources":["../../../../packages/vuu-filters/src/column-filter/ColumnFilter.tsx"],"sourcesContent":["import {\n SegmentedButtonGroup,\n type SegmentedButtonGroupProps,\n} from \"@salt-ds/core\";\nimport {\n DataItemEditControlProps,\n getDataItemEditControl,\n} from \"@vuu-ui/vuu-data-react\";\nimport cx from \"clsx\";\nimport { ForwardedRef, forwardRef } from \"react\";\nimport { ColumnFilterHookProps, useColumnFilter } from \"./useColumnFilter\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\n\nimport columnFilterCss from \"./ColumnFilter.css\";\nimport { isBetweenOperator } from \"@vuu-ui/vuu-utils\";\n\nconst classBase = \"vuuColumnFilter\";\n\nexport interface ColumnFilterProps\n extends ColumnFilterHookProps,\n Omit<SegmentedButtonGroupProps, \"defaultValue\">,\n Pick<\n DataItemEditControlProps,\n \"TypeaheadProps\" | \"table\" | \"values\" | \"variant\"\n > {}\n\nexport const ColumnFilter = forwardRef(function ColumnFilter(\n {\n InputProps: InputPropsProp,\n TypeaheadProps,\n className,\n column,\n defaultValue,\n extendedFilterOptions,\n onColumnFilterChange,\n onColumnRangeFilterChange,\n onCommit: onCommitProp,\n operator = \"=\",\n table,\n value: valueProp,\n values,\n variant,\n ...buttonGroupProps\n }: ColumnFilterProps,\n forwardRef: ForwardedRef<HTMLDivElement>,\n) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-filter-editor\",\n css: columnFilterCss,\n window: targetWindow,\n });\n\n const { InputProps, InputPropsRange, isInvalid, onCommit, onCommitRange } =\n useColumnFilter({\n InputProps: InputPropsProp,\n column,\n defaultValue,\n extendedFilterOptions,\n onColumnFilterChange,\n onColumnRangeFilterChange,\n onCommit: onCommitProp,\n operator,\n value: valueProp,\n });\n\n return (\n <SegmentedButtonGroup\n {...buttonGroupProps}\n className={cx(classBase, className, {\n [`${classBase}-invalid`]: isInvalid,\n })}\n ref={forwardRef}\n >\n {getDataItemEditControl({\n InputProps,\n TypeaheadProps,\n commitWhenCleared: true,\n dataDescriptor: column,\n onCommit,\n table,\n values,\n variant,\n })}\n {isBetweenOperator(operator)\n ? getDataItemEditControl({\n InputProps: InputPropsRange,\n className: `${classBase}-rangeHigh`,\n commitWhenCleared: true,\n variant,\n dataDescriptor: column,\n onCommit: onCommitRange,\n table,\n })\n : null}\n </SegmentedButtonGroup>\n );\n});\n"],"names":["ColumnFilter","forwardRef"],"mappings":";;;;;;;;;;;AAiBA,MAAM,SAAY,GAAA,iBAAA;AAUL,MAAA,YAAA,GAAe,UAAW,CAAA,SAASA,aAC9C,CAAA;AAAA,EACE,UAAY,EAAA,cAAA;AAAA,EACZ,cAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA;AAAA,EACA,YAAA;AAAA,EACA,qBAAA;AAAA,EACA,oBAAA;AAAA,EACA,yBAAA;AAAA,EACA,QAAU,EAAA,YAAA;AAAA,EACV,QAAW,GAAA,GAAA;AAAA,EACX,KAAA;AAAA,EACA,KAAO,EAAA,SAAA;AAAA,EACP,MAAA;AAAA,EACA,OAAA;AAAA,EACA,GAAG;AACL,CAAA,EACAC,WACA,EAAA;AACA,EAAA,MAAM,eAAe,SAAU,EAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,mBAAA;AAAA,IACR,GAAK,EAAA,eAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAA,MAAM,EAAE,UAAY,EAAA,eAAA,EAAiB,WAAW,QAAU,EAAA,aAAA,KACxD,eAAgB,CAAA;AAAA,IACd,UAAY,EAAA,cAAA;AAAA,IACZ,MAAA;AAAA,IACA,YAAA;AAAA,IACA,qBAAA;AAAA,IACA,oBAAA;AAAA,IACA,yBAAA;AAAA,IACA,QAAU,EAAA,YAAA;AAAA,IACV,QAAA;AAAA,IACA,KAAO,EAAA;AAAA,GACR,CAAA;AAEH,EACE,uBAAA,IAAA;AAAA,IAAC,oBAAA;AAAA,IAAA;AAAA,MACE,GAAG,gBAAA;AAAA,MACJ,SAAA,EAAW,EAAG,CAAA,SAAA,EAAW,SAAW,EAAA;AAAA,QAClC,CAAC,CAAA,EAAG,SAAS,CAAA,QAAA,CAAU,GAAG;AAAA,OAC3B,CAAA;AAAA,MACD,GAAKA,EAAAA,WAAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,QAAuB,sBAAA,CAAA;AAAA,UACtB,UAAA;AAAA,UACA,cAAA;AAAA,UACA,iBAAmB,EAAA,IAAA;AAAA,UACnB,cAAgB,EAAA,MAAA;AAAA,UAChB,QAAA;AAAA,UACA,KAAA;AAAA,UACA,MAAA;AAAA,UACA;AAAA,SACD,CAAA;AAAA,QACA,iBAAA,CAAkB,QAAQ,CAAA,GACvB,sBAAuB,CAAA;AAAA,UACrB,UAAY,EAAA,eAAA;AAAA,UACZ,SAAA,EAAW,GAAG,SAAS,CAAA,UAAA,CAAA;AAAA,UACvB,iBAAmB,EAAA,IAAA;AAAA,UACnB,OAAA;AAAA,UACA,cAAgB,EAAA,MAAA;AAAA,UAChB,QAAU,EAAA,aAAA;AAAA,UACV;AAAA,SACD,CACD,GAAA;AAAA;AAAA;AAAA,GACN;AAEJ,CAAC;;;;"}
|
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
import { useControlled } from '@salt-ds/core';
|
|
2
|
-
import { useState, useCallback, useMemo } from 'react';
|
|
3
|
-
import { isBetweenOperator, isValidRange } from '@vuu-ui/vuu-utils';
|
|
4
|
-
|
|
5
|
-
const injectInputProps = (InputProps2, inputProps) => {
|
|
6
|
-
if (InputProps2 === void 0) {
|
|
7
|
-
return {
|
|
8
|
-
inputProps
|
|
9
|
-
};
|
|
10
|
-
} else {
|
|
11
|
-
return {
|
|
12
|
-
...InputProps2,
|
|
13
|
-
inputProps: {
|
|
14
|
-
...InputProps2.inputProps,
|
|
15
|
-
...inputProps
|
|
16
|
-
}
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
};
|
|
20
|
-
const useColumnFilter = ({
|
|
21
|
-
InputProps: InputPropsProp,
|
|
22
|
-
column,
|
|
23
|
-
defaultValue,
|
|
24
|
-
extendedFilterOptions,
|
|
25
|
-
onColumnFilterChange,
|
|
26
|
-
onColumnRangeFilterChange,
|
|
27
|
-
onCommit,
|
|
28
|
-
operator = "=",
|
|
29
|
-
value: valueProp
|
|
30
|
-
}) => {
|
|
31
|
-
const [isInvalid, setIsInvalid] = useState(false);
|
|
32
|
-
const [value, setValue] = useControlled({
|
|
33
|
-
controlled: valueProp,
|
|
34
|
-
default: defaultValue,
|
|
35
|
-
name: "ColumnFilterNext",
|
|
36
|
-
state: "value"
|
|
37
|
-
});
|
|
38
|
-
const handleCommit = useCallback(
|
|
39
|
-
(_e, newValue = "") => {
|
|
40
|
-
if (Array.isArray(value)) {
|
|
41
|
-
if (isBetweenOperator(operator)) {
|
|
42
|
-
setValue([`${newValue}`, value[1]]);
|
|
43
|
-
onCommit?.(
|
|
44
|
-
column,
|
|
45
|
-
operator,
|
|
46
|
-
[`${newValue}`, value[1]],
|
|
47
|
-
extendedFilterOptions
|
|
48
|
-
);
|
|
49
|
-
} else {
|
|
50
|
-
throw Error(
|
|
51
|
-
`[useColumnFilterNext] value has been initialised incorrectly for non-range filter`
|
|
52
|
-
);
|
|
53
|
-
}
|
|
54
|
-
} else {
|
|
55
|
-
setValue(newValue);
|
|
56
|
-
onCommit?.(column, operator, `${newValue}`, extendedFilterOptions);
|
|
57
|
-
}
|
|
58
|
-
},
|
|
59
|
-
[value, operator, setValue, onCommit, column, extendedFilterOptions]
|
|
60
|
-
);
|
|
61
|
-
const handleRangeCommit = useCallback(
|
|
62
|
-
(_e, newValue = "") => {
|
|
63
|
-
if (Array.isArray(value)) {
|
|
64
|
-
const [firstValue] = value;
|
|
65
|
-
const newRange = [value[0], `${newValue}`];
|
|
66
|
-
setValue(newRange);
|
|
67
|
-
const validRange = isValidRange(newRange);
|
|
68
|
-
setIsInvalid(!validRange);
|
|
69
|
-
if (validRange) {
|
|
70
|
-
onCommit?.(
|
|
71
|
-
column,
|
|
72
|
-
operator,
|
|
73
|
-
[firstValue, `${newValue}`],
|
|
74
|
-
extendedFilterOptions
|
|
75
|
-
);
|
|
76
|
-
}
|
|
77
|
-
} else if (value !== "") {
|
|
78
|
-
const currentValue = `${value}`;
|
|
79
|
-
setValue([currentValue, `${newValue}`]);
|
|
80
|
-
onCommit?.(
|
|
81
|
-
column,
|
|
82
|
-
operator,
|
|
83
|
-
[currentValue, `${newValue}`],
|
|
84
|
-
extendedFilterOptions
|
|
85
|
-
);
|
|
86
|
-
} else {
|
|
87
|
-
throw Error(
|
|
88
|
-
`[useColumnFilterNext] value has been initialised incorrectly for range filter`
|
|
89
|
-
);
|
|
90
|
-
}
|
|
91
|
-
},
|
|
92
|
-
[value, setValue, onCommit, column, operator, extendedFilterOptions]
|
|
93
|
-
);
|
|
94
|
-
const onChange = useCallback(
|
|
95
|
-
(e) => {
|
|
96
|
-
const { value: value2 = "" } = e.target;
|
|
97
|
-
setValue((v) => Array.isArray(v) ? [value2, v[1]] : value2);
|
|
98
|
-
onColumnFilterChange?.(e.target.value, column, operator);
|
|
99
|
-
},
|
|
100
|
-
[column, onColumnFilterChange, operator, setValue]
|
|
101
|
-
);
|
|
102
|
-
const onRangeInputChange = useCallback(
|
|
103
|
-
(e) => {
|
|
104
|
-
const { value: value2 = "" } = e.target;
|
|
105
|
-
setValue((v) => Array.isArray(v) ? [v[0], value2] : value2);
|
|
106
|
-
onColumnRangeFilterChange?.(value2, column, operator);
|
|
107
|
-
},
|
|
108
|
-
[setValue, onColumnRangeFilterChange, column, operator]
|
|
109
|
-
);
|
|
110
|
-
const InputProps2 = useMemo(
|
|
111
|
-
() => injectInputProps(InputPropsProp, {
|
|
112
|
-
onChange,
|
|
113
|
-
value: Array.isArray(value) ? value[0] : value
|
|
114
|
-
}),
|
|
115
|
-
[InputPropsProp, onChange, value]
|
|
116
|
-
);
|
|
117
|
-
const InputPropsRange = useMemo(
|
|
118
|
-
() => injectInputProps(
|
|
119
|
-
InputPropsProp,
|
|
120
|
-
Array.isArray(value) ? {
|
|
121
|
-
onChange: onRangeInputChange,
|
|
122
|
-
value: value[1]
|
|
123
|
-
} : void 0
|
|
124
|
-
),
|
|
125
|
-
[InputPropsProp, onRangeInputChange, value]
|
|
126
|
-
);
|
|
127
|
-
return {
|
|
128
|
-
InputProps: InputProps2,
|
|
129
|
-
InputPropsRange,
|
|
130
|
-
isInvalid,
|
|
131
|
-
onCommit: handleCommit,
|
|
132
|
-
onCommitRange: handleRangeCommit
|
|
133
|
-
};
|
|
134
|
-
};
|
|
135
|
-
|
|
136
|
-
export { useColumnFilter };
|
|
137
|
-
//# sourceMappingURL=useColumnFilter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useColumnFilter.js","sources":["../../../../packages/vuu-filters/src/column-filter/useColumnFilter.ts"],"sourcesContent":["import {\n ColumnFilterChangeHandler,\n ColumnFilterCommitHandler,\n ColumnFilterOp,\n ColumnFilterValue,\n ExtendedFilterOptions,\n} from \"@vuu-ui/vuu-filter-types\";\nimport { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { InputProps, useControlled } from \"@salt-ds/core\";\nimport { ChangeEventHandler, useCallback, useMemo, useState } from \"react\";\nimport {\n CommitHandler,\n isBetweenOperator,\n isValidRange,\n} from \"@vuu-ui/vuu-utils\";\nimport { DataItemEditControlProps } from \"@vuu-ui/vuu-data-react\";\n\nconst injectInputProps = (\n InputProps: InputProps | undefined,\n inputProps: InputProps[\"inputProps\"],\n): InputProps => {\n if (InputProps === undefined) {\n return {\n inputProps,\n };\n } else {\n return {\n ...InputProps,\n inputProps: {\n ...InputProps.inputProps,\n ...inputProps,\n },\n };\n }\n};\n\nexport interface ColumnFilterHookProps\n extends Pick<DataItemEditControlProps, \"InputProps\"> {\n column: ColumnDescriptor;\n /**\n * Filter defaultValue. Pair of values expected when operator is\n * 'between'. If provided, component is uncontrolled\n */\n\n defaultValue?: ColumnFilterValue;\n /**\n * Provides for custom filters.\n */\n extendedFilterOptions?: ExtendedFilterOptions;\n\n /**\n * Filter change events.\n */\n onColumnFilterChange?: ColumnFilterChangeHandler;\n /**\n * Filter change events on second control in range filter\n */\n onColumnRangeFilterChange?: ColumnFilterChangeHandler;\n /**\n * Called when user 'commits' filter value, either by pressing enter,\n * tabbing away from control or making selection from list\n */\n onCommit: ColumnFilterCommitHandler;\n operator?: ColumnFilterOp;\n /**\n * Filter value. Pair of values expected when operator is\n * 'between'. If provided, component is controlled.\n */\n value?: ColumnFilterValue;\n}\n\nexport const useColumnFilter = ({\n InputProps: InputPropsProp,\n column,\n defaultValue,\n extendedFilterOptions,\n onColumnFilterChange,\n onColumnRangeFilterChange,\n onCommit,\n operator = \"=\",\n value: valueProp,\n}: ColumnFilterHookProps) => {\n const [isInvalid, setIsInvalid] = useState(false);\n const [value, setValue] = useControlled({\n controlled: valueProp,\n default: defaultValue,\n name: \"ColumnFilterNext\",\n state: \"value\",\n });\n\n const handleCommit = useCallback<CommitHandler<HTMLElement>>(\n (_e, newValue = \"\") => {\n if (Array.isArray(value)) {\n if (isBetweenOperator(operator)) {\n setValue([`${newValue}`, value[1]]);\n onCommit?.(\n column,\n operator,\n [`${newValue}`, value[1]],\n extendedFilterOptions,\n );\n } else {\n throw Error(\n `[useColumnFilterNext] value has been initialised incorrectly for non-range filter`,\n );\n }\n } else {\n setValue(newValue as ColumnFilterValue);\n onCommit?.(column, operator, `${newValue}`, extendedFilterOptions);\n }\n },\n [value, operator, setValue, onCommit, column, extendedFilterOptions],\n );\n\n const handleRangeCommit = useCallback<CommitHandler<HTMLElement>>(\n (_e, newValue = \"\") => {\n if (Array.isArray(value)) {\n const [firstValue] = value as [string, string];\n const newRange: [string, string] = [value[0], `${newValue}`];\n setValue(newRange);\n const validRange = isValidRange(newRange);\n setIsInvalid(!validRange);\n if (validRange) {\n onCommit?.(\n column,\n operator,\n [firstValue, `${newValue}`],\n extendedFilterOptions,\n );\n }\n } else if (value !== \"\") {\n // If we have already committed the first value, filter has been\n // saved as a single value '='.\n const currentValue = `${value}`;\n setValue([currentValue, `${newValue}`]);\n onCommit?.(\n column,\n operator,\n [currentValue, `${newValue}`],\n extendedFilterOptions,\n );\n } else {\n throw Error(\n `[useColumnFilterNext] value has been initialised incorrectly for range filter`,\n );\n }\n },\n [value, setValue, onCommit, column, operator, extendedFilterOptions],\n );\n\n const onChange = useCallback<ChangeEventHandler<HTMLInputElement>>(\n (e) => {\n const { value = \"\" } = e.target;\n setValue((v) => (Array.isArray(v) ? [value, v[1]] : value));\n onColumnFilterChange?.(e.target.value, column, operator);\n },\n [column, onColumnFilterChange, operator, setValue],\n );\n\n const onRangeInputChange = useCallback<ChangeEventHandler<HTMLInputElement>>(\n (e) => {\n const { value = \"\" } = e.target;\n setValue((v) => (Array.isArray(v) ? [v[0], value] : value));\n\n onColumnRangeFilterChange?.(value, column, operator);\n },\n [setValue, onColumnRangeFilterChange, column, operator],\n );\n\n const InputProps = useMemo(\n () =>\n injectInputProps(InputPropsProp, {\n onChange,\n value: Array.isArray(value) ? value[0] : value,\n }),\n [InputPropsProp, onChange, value],\n );\n\n const InputPropsRange = useMemo(\n () =>\n injectInputProps(\n InputPropsProp,\n Array.isArray(value)\n ? {\n onChange: onRangeInputChange,\n value: value[1],\n }\n : undefined,\n ),\n [InputPropsProp, onRangeInputChange, value],\n );\n\n return {\n InputProps,\n InputPropsRange,\n isInvalid,\n onCommit: handleCommit,\n onCommitRange: handleRangeCommit,\n };\n};\n"],"names":["InputProps","value"],"mappings":"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"}
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { useRef, createElement } from 'react';
|
|
3
|
-
import { IconButton, Prompt } from '@vuu-ui/vuu-ui-controls';
|
|
4
|
-
import { FilterEditor } from '../filter-editor/FilterEditor.js';
|
|
5
|
-
import { FilterPill } from '../filter-pill/FilterPill.js';
|
|
6
|
-
import { FilterModel } from '../FilterModel.js';
|
|
7
|
-
import { useCustomFilters, isEditFilterState } from './useCustomFilters.js';
|
|
8
|
-
|
|
9
|
-
const classBase = "vuuCustomFilters";
|
|
10
|
-
const CustomFilters = ({
|
|
11
|
-
columnDescriptors,
|
|
12
|
-
defaultFilterState,
|
|
13
|
-
filterState,
|
|
14
|
-
onApplyFilter,
|
|
15
|
-
onClearFilter,
|
|
16
|
-
onFilterDeleted,
|
|
17
|
-
onFilterRenamed,
|
|
18
|
-
onFilterStateChanged,
|
|
19
|
-
vuuTable
|
|
20
|
-
}) => {
|
|
21
|
-
const rootRef = useRef(null);
|
|
22
|
-
const {
|
|
23
|
-
activeFilterIndex,
|
|
24
|
-
addButtonProps,
|
|
25
|
-
columnsByName,
|
|
26
|
-
filters,
|
|
27
|
-
interactedFilterState,
|
|
28
|
-
onCancelEdit,
|
|
29
|
-
onSave,
|
|
30
|
-
FilterPillProps,
|
|
31
|
-
promptProps
|
|
32
|
-
} = useCustomFilters({
|
|
33
|
-
containerRef: rootRef,
|
|
34
|
-
columnDescriptors,
|
|
35
|
-
defaultFilterState,
|
|
36
|
-
filterState,
|
|
37
|
-
onApplyFilter,
|
|
38
|
-
onClearFilter,
|
|
39
|
-
onFilterStateChanged,
|
|
40
|
-
onFilterDeleted,
|
|
41
|
-
onFilterRenamed
|
|
42
|
-
});
|
|
43
|
-
const indexOfFilterBeingRenamed = interactedFilterState?.state === "rename" ? interactedFilterState.index : -1;
|
|
44
|
-
const filterModel = isEditFilterState(interactedFilterState?.state) ? new FilterModel(interactedFilterState.filter) : void 0;
|
|
45
|
-
const getFilterPills = () => {
|
|
46
|
-
const items = [];
|
|
47
|
-
filters.forEach((filter, i) => {
|
|
48
|
-
items.push(
|
|
49
|
-
/* @__PURE__ */ createElement(
|
|
50
|
-
FilterPill,
|
|
51
|
-
{
|
|
52
|
-
...FilterPillProps,
|
|
53
|
-
editing: indexOfFilterBeingRenamed === i,
|
|
54
|
-
columnsByName,
|
|
55
|
-
"data-index": i,
|
|
56
|
-
filter,
|
|
57
|
-
key: `filter-${i}`,
|
|
58
|
-
selected: activeFilterIndex.includes(i)
|
|
59
|
-
}
|
|
60
|
-
)
|
|
61
|
-
);
|
|
62
|
-
});
|
|
63
|
-
return items;
|
|
64
|
-
};
|
|
65
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
66
|
-
/* @__PURE__ */ jsxs("div", { className: "vuuCustomFilters", ref: rootRef, children: [
|
|
67
|
-
/* @__PURE__ */ jsx("div", { className: `${classBase}-filters`, children: getFilterPills() }),
|
|
68
|
-
/* @__PURE__ */ createElement(
|
|
69
|
-
IconButton,
|
|
70
|
-
{
|
|
71
|
-
...addButtonProps,
|
|
72
|
-
"aria-label": "Add filter",
|
|
73
|
-
"data-selectable": false,
|
|
74
|
-
icon: "plus",
|
|
75
|
-
key: "filter-add",
|
|
76
|
-
tabIndex: 0,
|
|
77
|
-
variant: "secondary"
|
|
78
|
-
}
|
|
79
|
-
),
|
|
80
|
-
promptProps ? /* @__PURE__ */ jsx(Prompt, { ...promptProps, open: true }) : null
|
|
81
|
-
] }),
|
|
82
|
-
filterModel && vuuTable && /* @__PURE__ */ jsx(
|
|
83
|
-
FilterEditor,
|
|
84
|
-
{
|
|
85
|
-
columnDescriptors,
|
|
86
|
-
onCancel: onCancelEdit,
|
|
87
|
-
onSave,
|
|
88
|
-
filter: interactedFilterState?.filter,
|
|
89
|
-
vuuTable
|
|
90
|
-
},
|
|
91
|
-
"filter-editor"
|
|
92
|
-
)
|
|
93
|
-
] });
|
|
94
|
-
};
|
|
95
|
-
|
|
96
|
-
export { CustomFilters };
|
|
97
|
-
//# sourceMappingURL=CustomFilters.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CustomFilters.js","sources":["../../../../packages/vuu-filters/src/custom-filters/CustomFilters.tsx"],"sourcesContent":["import { Prompt } from \"@vuu-ui/vuu-ui-controls\";\nimport type { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { IconButton } from \"@vuu-ui/vuu-ui-controls\";\nimport { HTMLAttributes, ReactElement, useRef } from \"react\";\nimport { type FilterBarProps } from \"../filter-bar\";\nimport { FilterEditor } from \"../filter-editor\";\nimport { FilterPill } from \"../filter-pill\";\nimport { FilterModel } from \"../FilterModel\";\nimport { isEditFilterState, useCustomFilters } from \"./useCustomFilters\";\n\nconst classBase = \"vuuCustomFilters\";\n\nexport interface CustomFilterProps\n extends HTMLAttributes<HTMLDivElement>,\n Pick<\n FilterBarProps,\n | \"defaultFilterState\"\n | \"filterState\"\n | \"onApplyFilter\"\n | \"onClearFilter\"\n | \"onFilterDeleted\"\n | \"onFilterRenamed\"\n | \"onFilterStateChanged\"\n | \"vuuTable\"\n > {\n columnDescriptors: readonly ColumnDescriptor[];\n}\n\nexport const CustomFilters = ({\n columnDescriptors,\n defaultFilterState,\n filterState,\n onApplyFilter,\n onClearFilter,\n onFilterDeleted,\n onFilterRenamed,\n onFilterStateChanged,\n vuuTable,\n}: CustomFilterProps) => {\n const rootRef = useRef<HTMLDivElement>(null);\n\n const {\n activeFilterIndex,\n addButtonProps,\n columnsByName,\n filters,\n interactedFilterState,\n onCancelEdit,\n onSave,\n FilterPillProps,\n promptProps,\n } = useCustomFilters({\n containerRef: rootRef,\n columnDescriptors,\n defaultFilterState,\n filterState,\n onApplyFilter,\n onClearFilter,\n onFilterStateChanged,\n onFilterDeleted,\n onFilterRenamed,\n });\n\n const indexOfFilterBeingRenamed =\n interactedFilterState?.state === \"rename\"\n ? interactedFilterState.index\n : -1;\n\n const filterModel = isEditFilterState(interactedFilterState?.state)\n ? new FilterModel(interactedFilterState.filter)\n : undefined;\n\n const getFilterPills = () => {\n const items: ReactElement[] = [];\n filters.forEach((filter, i) => {\n items.push(\n <FilterPill\n {...FilterPillProps}\n editing={indexOfFilterBeingRenamed === i}\n columnsByName={columnsByName}\n data-index={i}\n filter={filter}\n key={`filter-${i}`}\n selected={activeFilterIndex.includes(i)}\n />,\n );\n });\n return items;\n };\n\n return (\n <>\n <div className=\"vuuCustomFilters\" ref={rootRef}>\n <div className={`${classBase}-filters`}>{getFilterPills()}</div>\n <IconButton\n {...addButtonProps}\n aria-label=\"Add filter\"\n data-selectable={false}\n icon=\"plus\"\n key=\"filter-add\"\n tabIndex={0}\n variant=\"secondary\"\n />\n\n {promptProps ? <Prompt {...promptProps} open /> : null}\n </div>\n {filterModel && vuuTable && (\n <FilterEditor\n columnDescriptors={columnDescriptors}\n key=\"filter-editor\"\n onCancel={onCancelEdit}\n onSave={onSave}\n filter={interactedFilterState?.filter}\n vuuTable={vuuTable}\n />\n )}\n </>\n );\n};\n"],"names":[],"mappings":";;;;;;;;AAUA,MAAM,SAAY,GAAA,kBAAA;AAkBX,MAAM,gBAAgB,CAAC;AAAA,EAC5B,iBAAA;AAAA,EACA,kBAAA;AAAA,EACA,WAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,oBAAA;AAAA,EACA;AACF,CAAyB,KAAA;AACvB,EAAM,MAAA,OAAA,GAAU,OAAuB,IAAI,CAAA;AAE3C,EAAM,MAAA;AAAA,IACJ,iBAAA;AAAA,IACA,cAAA;AAAA,IACA,aAAA;AAAA,IACA,OAAA;AAAA,IACA,qBAAA;AAAA,IACA,YAAA;AAAA,IACA,MAAA;AAAA,IACA,eAAA;AAAA,IACA;AAAA,MACE,gBAAiB,CAAA;AAAA,IACnB,YAAc,EAAA,OAAA;AAAA,IACd,iBAAA;AAAA,IACA,kBAAA;AAAA,IACA,WAAA;AAAA,IACA,aAAA;AAAA,IACA,aAAA;AAAA,IACA,oBAAA;AAAA,IACA,eAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,MAAM,yBACJ,GAAA,qBAAA,EAAuB,KAAU,KAAA,QAAA,GAC7B,sBAAsB,KACtB,GAAA,CAAA,CAAA;AAEN,EAAM,MAAA,WAAA,GAAc,kBAAkB,qBAAuB,EAAA,KAAK,IAC9D,IAAI,WAAA,CAAY,qBAAsB,CAAA,MAAM,CAC5C,GAAA,KAAA,CAAA;AAEJ,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,MAAM,QAAwB,EAAC;AAC/B,IAAQ,OAAA,CAAA,OAAA,CAAQ,CAAC,MAAA,EAAQ,CAAM,KAAA;AAC7B,MAAM,KAAA,CAAA,IAAA;AAAA,wBACJ,aAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACE,GAAG,eAAA;AAAA,YACJ,SAAS,yBAA8B,KAAA,CAAA;AAAA,YACvC,aAAA;AAAA,YACA,YAAY,EAAA,CAAA;AAAA,YACZ,MAAA;AAAA,YACA,GAAA,EAAK,UAAU,CAAC,CAAA,CAAA;AAAA,YAChB,QAAA,EAAU,iBAAkB,CAAA,QAAA,CAAS,CAAC;AAAA;AAAA;AACxC,OACF;AAAA,KACD,CAAA;AACD,IAAO,OAAA,KAAA;AAAA,GACT;AAEA,EAAA,uBAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,kBAAmB,EAAA,GAAA,EAAK,OACrC,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,SAAI,SAAW,EAAA,CAAA,EAAG,SAAS,CAAA,QAAA,CAAA,EAAa,0BAAiB,EAAA,CAAA;AAAA,sBAC1D,aAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACE,GAAG,cAAA;AAAA,UACJ,YAAW,EAAA,YAAA;AAAA,UACX,iBAAiB,EAAA,KAAA;AAAA,UACjB,IAAK,EAAA,MAAA;AAAA,UACL,GAAI,EAAA,YAAA;AAAA,UACJ,QAAU,EAAA,CAAA;AAAA,UACV,OAAQ,EAAA;AAAA;AAAA,OACV;AAAA,MAEC,8BAAe,GAAA,CAAA,MAAA,EAAA,EAAQ,GAAG,WAAa,EAAA,IAAA,EAAI,MAAC,CAAK,GAAA;AAAA,KACpD,EAAA,CAAA;AAAA,IACC,eAAe,QACd,oBAAA,GAAA;AAAA,MAAC,YAAA;AAAA,MAAA;AAAA,QACC,iBAAA;AAAA,QAEA,QAAU,EAAA,YAAA;AAAA,QACV,MAAA;AAAA,QACA,QAAQ,qBAAuB,EAAA,MAAA;AAAA,QAC/B;AAAA,OAAA;AAAA,MAJI;AAAA;AAKN,GAEJ,EAAA,CAAA;AAEJ;;;;"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { queryClosest, getElementDataIndex, getElementByDataIndex } from '@vuu-ui/vuu-utils';
|
|
2
|
-
|
|
3
|
-
const QUERY_ADD_BUTTON = '.saltButton:has([aria-label="Add filter"])';
|
|
4
|
-
const navigateToNextItem = (el, direction = "fwd") => {
|
|
5
|
-
const pill = queryClosest(el, ".vuuFilterPill");
|
|
6
|
-
if (pill) {
|
|
7
|
-
const index = getElementDataIndex(pill);
|
|
8
|
-
if (typeof index === "number") {
|
|
9
|
-
const target = direction === "fwd" ? getElementByDataIndex(pill.parentElement, index + 1) : getElementByDataIndex(pill.parentElement, index - 1);
|
|
10
|
-
if (target) {
|
|
11
|
-
target.focus();
|
|
12
|
-
} else if (direction === "fwd") {
|
|
13
|
-
const filterBar = queryClosest(el, ".vuuFilterBar");
|
|
14
|
-
const addButton = filterBar?.querySelector(
|
|
15
|
-
QUERY_ADD_BUTTON
|
|
16
|
-
);
|
|
17
|
-
addButton?.focus();
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
} else {
|
|
21
|
-
const button = queryClosest(el, QUERY_ADD_BUTTON);
|
|
22
|
-
if (button) {
|
|
23
|
-
const filterBar = queryClosest(el, ".vuuFilterBar");
|
|
24
|
-
const target = filterBar?.querySelector(
|
|
25
|
-
".vuuFilterPill:last-child"
|
|
26
|
-
);
|
|
27
|
-
target?.focus();
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
export { navigateToNextItem };
|
|
33
|
-
//# sourceMappingURL=filterBarFocusManagement.js.map
|