@vuu-ui/vuu-filters 0.13.45 → 0.13.46
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/cjs/column-filter/ColumnFilter.js +4 -1
- package/cjs/column-filter/ColumnFilter.js.map +1 -1
- package/cjs/column-filter/useColumnFilter.js.map +1 -1
- package/cjs/filter-container/FilterContainer.css.js +6 -0
- package/cjs/filter-container/FilterContainer.css.js.map +1 -0
- package/cjs/filter-container/FilterContainer.js +14 -4
- package/cjs/filter-container/FilterContainer.js.map +1 -1
- package/cjs/filter-container/useFilterContainer.js.map +1 -1
- package/cjs/filter-display/FilterDisplay.js.map +1 -1
- package/cjs/filter-panel/FilterPanel.css.js +1 -1
- package/cjs/filter-panel/useFilterPanel.js +7 -9
- package/cjs/filter-panel/useFilterPanel.js.map +1 -1
- package/cjs/filter-pill/FilterPillNext.js +2 -1
- package/cjs/filter-pill/FilterPillNext.js.map +1 -1
- package/cjs/filter-pill/useFilterPillNext.js.map +1 -1
- package/cjs/filter-provider/FilterContext.js +67 -0
- package/cjs/filter-provider/FilterContext.js.map +1 -0
- package/cjs/filter-provider/FilterProvider.js +46 -76
- package/cjs/filter-provider/FilterProvider.js.map +1 -1
- package/cjs/filter-utils.js +9 -1
- package/cjs/filter-utils.js.map +1 -1
- package/cjs/index.js +11 -7
- package/cjs/index.js.map +1 -1
- package/cjs/inline-filter/InlineFilter.js +1 -1
- package/cjs/inline-filter/InlineFilter.js.map +1 -1
- package/cjs/saved-filters/FilterNamePrompt.css.js +6 -0
- package/cjs/saved-filters/FilterNamePrompt.css.js.map +1 -0
- package/cjs/saved-filters/FilterNamePrompt.js +50 -48
- package/cjs/saved-filters/FilterNamePrompt.js.map +1 -1
- package/cjs/saved-filters/SavedFilterPanel.js +4 -2
- package/cjs/saved-filters/SavedFilterPanel.js.map +1 -1
- package/cjs/saved-filters/useFilterNamePrompt.js +98 -0
- package/cjs/saved-filters/useFilterNamePrompt.js.map +1 -0
- package/cjs/saved-filters/useSavedFilterPanel.js +2 -2
- package/cjs/saved-filters/useSavedFilterPanel.js.map +1 -1
- package/cjs/tabbed-filter-container/TabbedFilterContainer.js +2 -1
- package/cjs/tabbed-filter-container/TabbedFilterContainer.js.map +1 -1
- package/cjs/toggle-filter/ToggleFilter.js +69 -0
- package/cjs/toggle-filter/ToggleFilter.js.map +1 -0
- package/esm/column-filter/ColumnFilter.js +4 -1
- package/esm/column-filter/ColumnFilter.js.map +1 -1
- package/esm/column-filter/useColumnFilter.js.map +1 -1
- package/esm/filter-container/FilterContainer.css.js +4 -0
- package/esm/filter-container/FilterContainer.css.js.map +1 -0
- package/esm/filter-container/FilterContainer.js +13 -3
- package/esm/filter-container/FilterContainer.js.map +1 -1
- package/esm/filter-container/useFilterContainer.js.map +1 -1
- package/esm/filter-display/FilterDisplay.js.map +1 -1
- package/esm/filter-panel/FilterPanel.css.js +1 -1
- package/esm/filter-panel/useFilterPanel.js +3 -5
- package/esm/filter-panel/useFilterPanel.js.map +1 -1
- package/esm/filter-pill/FilterPillNext.js +2 -1
- package/esm/filter-pill/FilterPillNext.js.map +1 -1
- package/esm/filter-pill/useFilterPillNext.js.map +1 -1
- package/esm/filter-provider/FilterContext.js +57 -0
- package/esm/filter-provider/FilterContext.js.map +1 -0
- package/esm/filter-provider/FilterProvider.js +42 -65
- package/esm/filter-provider/FilterProvider.js.map +1 -1
- package/esm/filter-utils.js +10 -3
- package/esm/filter-utils.js.map +1 -1
- package/esm/index.js +6 -4
- package/esm/index.js.map +1 -1
- package/esm/inline-filter/InlineFilter.js +2 -2
- package/esm/inline-filter/InlineFilter.js.map +1 -1
- package/esm/saved-filters/FilterNamePrompt.css.js +4 -0
- package/esm/saved-filters/FilterNamePrompt.css.js.map +1 -0
- package/esm/saved-filters/FilterNamePrompt.js +53 -51
- package/esm/saved-filters/FilterNamePrompt.js.map +1 -1
- package/esm/saved-filters/SavedFilterPanel.js +4 -2
- package/esm/saved-filters/SavedFilterPanel.js.map +1 -1
- package/esm/saved-filters/useFilterNamePrompt.js +95 -0
- package/esm/saved-filters/useFilterNamePrompt.js.map +1 -0
- package/esm/saved-filters/useSavedFilterPanel.js +1 -1
- package/esm/saved-filters/useSavedFilterPanel.js.map +1 -1
- package/esm/tabbed-filter-container/TabbedFilterContainer.js +2 -1
- package/esm/tabbed-filter-container/TabbedFilterContainer.js.map +1 -1
- package/esm/toggle-filter/ToggleFilter.js +67 -0
- package/esm/toggle-filter/ToggleFilter.js.map +1 -0
- package/package.json +11 -11
- package/types/vuu-context-menu/src/ContextMenu.d.ts +10 -0
- package/types/vuu-context-menu/src/ContextMenuProvider.d.ts +16 -0
- package/types/vuu-context-menu/src/index.d.ts +3 -0
- package/types/vuu-context-menu/src/menu-utils.d.ts +17 -0
- package/types/vuu-context-menu/src/useContextMenu.d.ts +10 -0
- package/types/{column-filter → vuu-filters/src/column-filter}/ColumnFilter.d.ts +1 -1
- package/types/{column-filter → vuu-filters/src/column-filter}/useColumnFilter.d.ts +1 -2
- package/types/{filter-clause → vuu-filters/src/filter-clause}/useFilterClause.d.ts +1 -1
- package/types/{filter-clause → vuu-filters/src/filter-clause}/value-editors/FilterClauseValueEditor.d.ts +1 -1
- package/types/{filter-container → vuu-filters/src/filter-container}/FilterContainer.d.ts +2 -2
- package/types/{filter-container → vuu-filters/src/filter-container}/useFilterContainer.d.ts +1 -3
- package/types/{filter-display → vuu-filters/src/filter-display}/FilterDisplay.d.ts +2 -2
- package/types/vuu-filters/src/filter-pill/FilterPillNext.d.ts +15 -0
- package/types/{filter-pill → vuu-filters/src/filter-pill}/useFilterPillNext.d.ts +2 -2
- package/types/{filter-provider/FilterProvider.d.ts → vuu-filters/src/filter-provider/FilterContext.d.ts} +7 -12
- package/types/vuu-filters/src/filter-provider/FilterProvider.d.ts +9 -0
- package/types/{filter-utils.d.ts → vuu-filters/src/filter-utils.d.ts} +12 -2
- package/types/{index.d.ts → vuu-filters/src/index.d.ts} +7 -4
- package/types/{inline-filter → vuu-filters/src/inline-filter}/useInlineFilter.d.ts +1 -1
- package/types/vuu-filters/src/saved-filters/FilterNamePrompt.d.ts +6 -0
- package/types/vuu-filters/src/saved-filters/SavedFilterPanel.d.ts +13 -0
- package/types/vuu-filters/src/saved-filters/useFilterNamePrompt.d.ts +27 -0
- package/types/{saved-filters → vuu-filters/src/saved-filters}/useSavedFilterPanel.d.ts +1 -1
- package/types/vuu-filters/src/tabbed-filter-container/TabbedFilterContainer.d.ts +7 -0
- package/types/vuu-filters/src/toggle-filter/ToggleFilter.d.ts +10 -0
- package/types/vuu-popups/src/index.d.ts +5 -0
- package/types/vuu-popups/src/notifications/NotificationsCenter.d.ts +5 -0
- package/types/vuu-popups/src/notifications/NotificationsContext.d.ts +36 -0
- package/types/vuu-popups/src/notifications/NotificationsProvider.d.ts +9 -0
- package/types/vuu-popups/src/notifications/ToastNotification.d.ts +7 -0
- package/types/vuu-popups/src/notifications/WorkspaceNotification.d.ts +5 -0
- package/types/vuu-popups/src/notifications/index.d.ts +3 -0
- package/types/vuu-popups/src/popup/Popup.d.ts +12 -0
- package/types/vuu-popups/src/popup/getPositionRelativeToAnchor.d.ts +19 -0
- package/types/vuu-popups/src/popup/index.d.ts +2 -0
- package/types/vuu-popups/src/popup/useAnchoredPosition.d.ts +7 -0
- package/types/vuu-popups/src/popup-menu/PopupMenu.d.ts +45 -0
- package/types/vuu-popups/src/popup-menu/index.d.ts +1 -0
- package/types/vuu-popups/src/popup-menu/usePopupMenu.d.ts +19 -0
- package/types/vuu-popups/src/portal/Portal.d.ts +42 -0
- package/types/vuu-popups/src/portal/index.d.ts +1 -0
- package/types/vuu-popups/src/tooltip/Tooltip.d.ts +15 -0
- package/types/vuu-popups/src/tooltip/index.d.ts +2 -0
- package/types/vuu-popups/src/tooltip/useTooltip.d.ts +19 -0
- package/types/vuu-popups/src/tooltip/useTooltipAnchoredPosition.d.ts +7 -0
- package/types/vuu-ui-controls/src/calendar/Calendar.d.ts +13 -0
- package/types/vuu-ui-controls/src/calendar/index.d.ts +4 -0
- package/types/vuu-ui-controls/src/calendar/internal/CalendarCarousel.d.ts +3 -0
- package/types/vuu-ui-controls/src/calendar/internal/CalendarContext.d.ts +8 -0
- package/types/vuu-ui-controls/src/calendar/internal/CalendarDay.d.ts +14 -0
- package/types/vuu-ui-controls/src/calendar/internal/CalendarMonth.d.ts +10 -0
- package/types/vuu-ui-controls/src/calendar/internal/CalendarNavigation.d.ts +16 -0
- package/types/vuu-ui-controls/src/calendar/internal/CalendarWeekHeader.d.ts +3 -0
- package/types/vuu-ui-controls/src/calendar/internal/useFocusManagement.d.ts +9 -0
- package/types/vuu-ui-controls/src/calendar/internal/utils.d.ts +15 -0
- package/types/vuu-ui-controls/src/calendar/useCalendar.d.ts +54 -0
- package/types/vuu-ui-controls/src/calendar/useCalendarDay.d.ts +22 -0
- package/types/vuu-ui-controls/src/calendar/useSelection.d.ts +78 -0
- package/types/vuu-ui-controls/src/column-picker/ColumnPicker.d.ts +7 -0
- package/types/vuu-ui-controls/src/column-picker/ColumnSearch.d.ts +12 -0
- package/types/vuu-ui-controls/src/column-picker/index.d.ts +2 -0
- package/types/vuu-ui-controls/src/common-hooks/index.d.ts +3 -0
- package/types/vuu-ui-controls/src/common-hooks/selectionTypes.d.ts +70 -0
- package/types/vuu-ui-controls/src/common-hooks/use-resize-observer.d.ts +16 -0
- package/types/vuu-ui-controls/src/common-hooks/useControlled.d.ts +24 -0
- package/types/vuu-ui-controls/src/context-panel-provider/ContextPanelProvider.d.ts +17 -0
- package/types/vuu-ui-controls/src/cycle-state-button/CycleStateButton.d.ts +11 -0
- package/types/vuu-ui-controls/src/cycle-state-button/index.d.ts +1 -0
- package/types/vuu-ui-controls/src/date-input/DateInput.d.ts +60 -0
- package/types/vuu-ui-controls/src/date-input/index.d.ts +1 -0
- package/types/vuu-ui-controls/src/date-picker/DatePicker.d.ts +66 -0
- package/types/vuu-ui-controls/src/date-picker/DatePickerContext.d.ts +19 -0
- package/types/vuu-ui-controls/src/date-picker/DatePickerPanel.d.ts +10 -0
- package/types/vuu-ui-controls/src/date-picker/index.d.ts +1 -0
- package/types/vuu-ui-controls/src/drag-drop/DragDropProvider.d.ts +38 -0
- package/types/vuu-ui-controls/src/drag-drop/DragDropState.d.ts +15 -0
- package/types/vuu-ui-controls/src/drag-drop/Draggable.d.ts +13 -0
- package/types/vuu-ui-controls/src/drag-drop/dragDropTypes.d.ts +100 -0
- package/types/vuu-ui-controls/src/drag-drop/drop-target-utils.d.ts +82 -0
- package/types/vuu-ui-controls/src/drag-drop/index.d.ts +6 -0
- package/types/vuu-ui-controls/src/drag-drop/useAutoScroll.d.ts +11 -0
- package/types/vuu-ui-controls/src/drag-drop/useDragDisplacers.d.ts +17 -0
- package/types/vuu-ui-controls/src/drag-drop/useDragDrop.d.ts +2 -0
- package/types/vuu-ui-controls/src/drag-drop/useDragDropCopy.d.ts +6 -0
- package/types/vuu-ui-controls/src/drag-drop/useDragDropIndicator.d.ts +2 -0
- package/types/vuu-ui-controls/src/drag-drop/useDragDropNaturalMovement.d.ts +2 -0
- package/types/vuu-ui-controls/src/drag-drop/useDropIndicator.d.ts +8 -0
- package/types/vuu-ui-controls/src/drag-drop/useGlobalDragDrop.d.ts +11 -0
- package/types/vuu-ui-controls/src/editable/index.d.ts +1 -0
- package/types/vuu-ui-controls/src/editable/useEditableText.d.ts +19 -0
- package/types/vuu-ui-controls/src/editable-label/EditableLabel.d.ts +19 -0
- package/types/vuu-ui-controls/src/editable-label/index.d.ts +1 -0
- package/types/vuu-ui-controls/src/expando-input/ExpandoInput.d.ts +6 -0
- package/types/vuu-ui-controls/src/expando-input/index.d.ts +1 -0
- package/types/vuu-ui-controls/src/icon-button/Icon.d.ts +6 -0
- package/types/vuu-ui-controls/src/icon-button/IconButton.d.ts +6 -0
- package/types/vuu-ui-controls/src/icon-button/ToggleIconButton.d.ts +5 -0
- package/types/vuu-ui-controls/src/icon-button/index.d.ts +3 -0
- package/types/vuu-ui-controls/src/index.d.ts +30 -0
- package/types/vuu-ui-controls/src/instrument-picker/TablePicker.d.ts +10 -0
- package/types/vuu-ui-controls/src/instrument-picker/index.d.ts +1 -0
- package/types/vuu-ui-controls/src/instrument-picker/useTablePicker.d.ts +47 -0
- package/types/vuu-ui-controls/src/measured-container/MeasuredContainer.d.ts +14 -0
- package/types/vuu-ui-controls/src/measured-container/index.d.ts +2 -0
- package/types/vuu-ui-controls/src/measured-container/useMeasuredContainer.d.ts +23 -0
- package/types/vuu-ui-controls/src/measured-container/useResizeObserver.d.ts +15 -0
- package/types/vuu-ui-controls/src/modal-provider/ModalProvider.d.ts +13 -0
- package/types/vuu-ui-controls/src/overflow-container/OverflowContainer.d.ts +15 -0
- package/types/vuu-ui-controls/src/overflow-container/index.d.ts +2 -0
- package/types/vuu-ui-controls/src/overflow-container/overflow-utils.d.ts +48 -0
- package/types/vuu-ui-controls/src/overflow-container/useOverflowContainer.d.ts +19 -0
- package/types/vuu-ui-controls/src/price-ticker/PriceTicker.d.ts +7 -0
- package/types/vuu-ui-controls/src/price-ticker/index.d.ts +1 -0
- package/types/vuu-ui-controls/src/prompt/Prompt.d.ts +48 -0
- package/types/vuu-ui-controls/src/sortable-list/SortableList.d.ts +8 -0
- package/types/vuu-ui-controls/src/split-button/SplitButton.d.ts +11 -0
- package/types/vuu-ui-controls/src/split-button/SplitStateButton.d.ts +5 -0
- package/types/vuu-ui-controls/src/split-button/index.d.ts +2 -0
- package/types/vuu-ui-controls/src/split-button/useSplitButton.d.ts +311 -0
- package/types/vuu-ui-controls/src/table-search/SearchCell.d.ts +2 -0
- package/types/vuu-ui-controls/src/table-search/TableSearch.d.ts +9 -0
- package/types/vuu-ui-controls/src/table-search/index.d.ts +1 -0
- package/types/vuu-ui-controls/src/table-search/useTableSearch.d.ts +15 -0
- package/types/vuu-ui-controls/src/tabs-next/TabBar.d.ts +12 -0
- package/types/vuu-ui-controls/src/tabs-next/TabListNext.d.ts +12 -0
- package/types/vuu-ui-controls/src/tabs-next/TabNext.d.ts +12 -0
- package/types/vuu-ui-controls/src/tabs-next/TabNextAction.d.ts +5 -0
- package/types/vuu-ui-controls/src/tabs-next/TabNextContext.d.ts +12 -0
- package/types/vuu-ui-controls/src/tabs-next/TabNextPanel.d.ts +8 -0
- package/types/vuu-ui-controls/src/tabs-next/TabNextTrigger.d.ts +5 -0
- package/types/vuu-ui-controls/src/tabs-next/TabOverflowList.d.ts +11 -0
- package/types/vuu-ui-controls/src/tabs-next/TabsNext.d.ts +17 -0
- package/types/vuu-ui-controls/src/tabs-next/TabsNextContext.d.ts +21 -0
- package/types/vuu-ui-controls/src/tabs-next/hooks/useCollection.d.ts +18 -0
- package/types/vuu-ui-controls/src/tabs-next/hooks/useFocusOutside.d.ts +2 -0
- package/types/vuu-ui-controls/src/tabs-next/hooks/useOverflow.d.ts +11 -0
- package/types/vuu-ui-controls/src/tabs-next/index.d.ts +7 -0
- package/types/vuu-ui-controls/src/tabstrip/Tab.d.ts +27 -0
- package/types/vuu-ui-controls/src/tabstrip/TabMenu.d.ts +23 -0
- package/types/vuu-ui-controls/src/tabstrip/TabMenuOptions.d.ts +10 -0
- package/types/vuu-ui-controls/src/tabstrip/TabsTypes.d.ts +127 -0
- package/types/vuu-ui-controls/src/tabstrip/Tabstrip.d.ts +2 -0
- package/types/vuu-ui-controls/src/tabstrip/index.d.ts +5 -0
- package/types/vuu-ui-controls/src/tabstrip/tabstrip-dom-utils.d.ts +2 -0
- package/types/vuu-ui-controls/src/tabstrip/useAnimatedSelectionThumb.d.ts +7 -0
- package/types/vuu-ui-controls/src/tabstrip/useKeyboardNavigation.d.ts +29 -0
- package/types/vuu-ui-controls/src/tabstrip/useSelection.d.ts +13 -0
- package/types/vuu-ui-controls/src/tabstrip/useTabstrip.d.ts +55 -0
- package/types/vuu-ui-controls/src/time-input/MaskedInput.d.ts +49 -0
- package/types/vuu-ui-controls/src/time-input/TimeInput.d.ts +5 -0
- package/types/vuu-ui-controls/src/time-input/useTimeInput.d.ts +21 -0
- package/types/vuu-ui-controls/src/toolbar/Toolbar.d.ts +19 -0
- package/types/vuu-ui-controls/src/toolbar/index.d.ts +1 -0
- package/types/vuu-ui-controls/src/toolbar/toolbar-dom-utils.d.ts +3 -0
- package/types/vuu-ui-controls/src/toolbar/useKeyboardNavigation.d.ts +32 -0
- package/types/vuu-ui-controls/src/toolbar/useSelection.d.ts +22 -0
- package/types/vuu-ui-controls/src/toolbar/useToolbar.d.ts +28 -0
- package/types/vuu-ui-controls/src/utils/deprecated-types.d.ts +2 -0
- package/types/vuu-ui-controls/src/utils/escapeRegExp.d.ts +1 -0
- package/types/vuu-ui-controls/src/utils/forwardCallbackProps.d.ts +3 -0
- package/types/vuu-ui-controls/src/utils/index.d.ts +5 -0
- package/types/vuu-ui-controls/src/utils/isOverflowElement.d.ts +1 -0
- package/types/vuu-ui-controls/src/utils/isPlainObject.d.ts +1 -0
- package/types/vuu-ui-controls/src/vuu-date-picker/VuuDatePicker.d.ts +7 -0
- package/types/vuu-ui-controls/src/vuu-date-picker/index.d.ts +1 -0
- package/types/vuu-ui-controls/src/vuu-input/VuuInput.d.ts +18 -0
- package/types/vuu-ui-controls/src/vuu-input/index.d.ts +1 -0
- package/types/vuu-ui-controls/src/vuu-time-picker/VuuTimePicker.d.ts +7 -0
- package/types/vuu-ui-controls/src/vuu-typeahead-input/VuuTypeaheadInput.d.ts +6 -0
- package/types/vuu-ui-controls/src/vuu-typeahead-input/index.d.ts +1 -0
- package/types/vuu-ui-controls/src/vuu-typeahead-input/useVuuTypeaheadInput.d.ts +49 -0
- package/types/vuu-utils/src/Clock.d.ts +20 -0
- package/types/vuu-utils/src/DataWindow.d.ts +39 -0
- package/types/vuu-utils/src/ShellContext.d.ts +11 -0
- package/types/vuu-utils/src/ThemeProvider.d.ts +32 -0
- package/types/vuu-utils/src/array-utils.d.ts +8 -0
- package/types/vuu-utils/src/box-utils.d.ts +24 -0
- package/types/vuu-utils/src/broadcast-channel.d.ts +16 -0
- package/types/vuu-utils/src/column-utils.d.ts +181 -0
- package/types/vuu-utils/src/common-types.d.ts +6 -0
- package/types/vuu-utils/src/component-registry.d.ts +65 -0
- package/types/vuu-utils/src/context-definitions/DataContext.d.ts +18 -0
- package/types/vuu-utils/src/context-definitions/DataProvider.d.ts +7 -0
- package/types/vuu-utils/src/context-definitions/DataSourceProvider.d.ts +12 -0
- package/types/vuu-utils/src/context-definitions/WorkspaceContext.d.ts +17 -0
- package/types/vuu-utils/src/cookie-utils.d.ts +1 -0
- package/types/vuu-utils/src/css-utils.d.ts +1 -0
- package/types/vuu-utils/src/data-utils.d.ts +19 -0
- package/types/vuu-utils/src/datasource/BaseDataSource.d.ts +60 -0
- package/types/vuu-utils/src/datasource/datasource-action-utils.d.ts +7 -0
- package/types/vuu-utils/src/datasource/datasource-filter-utils.d.ts +2 -0
- package/types/vuu-utils/src/datasource/datasource-utils.d.ts +49 -0
- package/types/vuu-utils/src/date/date-utils.d.ts +36 -0
- package/types/vuu-utils/src/date/dateTimePattern.d.ts +8 -0
- package/types/vuu-utils/src/date/formatter.d.ts +4 -0
- package/types/vuu-utils/src/date/index.d.ts +4 -0
- package/types/vuu-utils/src/date/types.d.ts +24 -0
- package/types/vuu-utils/src/debug-utils.d.ts +9 -0
- package/types/vuu-utils/src/event-emitter.d.ts +21 -0
- package/types/vuu-utils/src/feature-utils.d.ts +110 -0
- package/types/vuu-utils/src/filters/filter-utils.d.ts +82 -0
- package/types/vuu-utils/src/filters/filterAsQuery.d.ts +7 -0
- package/types/vuu-utils/src/filters/index.d.ts +2 -0
- package/types/vuu-utils/src/form-utils.d.ts +23 -0
- package/types/vuu-utils/src/formatting-utils.d.ts +14 -0
- package/types/vuu-utils/src/getUniqueId.d.ts +1 -0
- package/types/vuu-utils/src/group-utils.d.ts +10 -0
- package/types/vuu-utils/src/html-utils.d.ts +21 -0
- package/types/vuu-utils/src/index.d.ts +74 -0
- package/types/vuu-utils/src/input-utils.d.ts +2 -0
- package/types/vuu-utils/src/invariant.d.ts +1 -0
- package/types/vuu-utils/src/itemToString.d.ts +2 -0
- package/types/vuu-utils/src/json-types.d.ts +52 -0
- package/types/vuu-utils/src/json-utils.d.ts +6 -0
- package/types/vuu-utils/src/keyboard-utils.d.ts +15 -0
- package/types/vuu-utils/src/keyset.d.ts +16 -0
- package/types/vuu-utils/src/layout-types.d.ts +22 -0
- package/types/vuu-utils/src/list-utils.d.ts +2 -0
- package/types/vuu-utils/src/local-storage-utils.d.ts +3 -0
- package/types/vuu-utils/src/logging-utils.d.ts +45 -0
- package/types/vuu-utils/src/menu-utils.d.ts +6 -0
- package/types/vuu-utils/src/module-utils.d.ts +8 -0
- package/types/vuu-utils/src/moving-window.d.ts +18 -0
- package/types/vuu-utils/src/nanoid/index.d.ts +1 -0
- package/types/vuu-utils/src/perf-utils.d.ts +5 -0
- package/types/vuu-utils/src/promise-utils.d.ts +8 -0
- package/types/vuu-utils/src/protocol-message-utils.d.ts +34 -0
- package/types/vuu-utils/src/range-utils.d.ts +31 -0
- package/types/vuu-utils/src/react-utils.d.ts +8 -0
- package/types/vuu-utils/src/round-decimal.d.ts +1 -0
- package/types/vuu-utils/src/row-utils.d.ts +27 -0
- package/types/vuu-utils/src/selection-utils.d.ts +4 -0
- package/types/vuu-utils/src/shell-layout-types.d.ts +15 -0
- package/types/vuu-utils/src/sort-utils.d.ts +11 -0
- package/types/vuu-utils/src/table-schema-utils.d.ts +3 -0
- package/types/vuu-utils/src/text-utils.d.ts +2 -0
- package/types/vuu-utils/src/tree-types.d.ts +9 -0
- package/types/vuu-utils/src/tree-utils.d.ts +9 -0
- package/types/vuu-utils/src/ts-utils.d.ts +20 -0
- package/types/vuu-utils/src/typeahead-utils.d.ts +1 -0
- package/types/vuu-utils/src/url-utils.d.ts +2 -0
- package/types/vuu-utils/src/useId.d.ts +1 -0
- package/types/vuu-utils/src/useLayoutEffectSkipFirst.d.ts +2 -0
- package/types/vuu-utils/src/useStateRef.d.ts +2 -0
- package/types/vuu-utils/src/user-types.d.ts +4 -0
- package/types/filter-pill/FilterPillNext.d.ts +0 -9
- package/types/saved-filters/FilterNamePrompt.d.ts +0 -7
- package/types/saved-filters/SavedFilterPanel.d.ts +0 -5
- package/types/tabbed-filter-container/TabbedFilterContainer.d.ts +0 -6
- /package/types/{FilterModel.d.ts → vuu-filters/src/FilterModel.d.ts} +0 -0
- /package/types/{column-filter → vuu-filters/src/column-filter}/utils.d.ts +0 -0
- /package/types/{custom-filters → vuu-filters/src/custom-filters}/CustomFilters.d.ts +0 -0
- /package/types/{custom-filters → vuu-filters/src/custom-filters}/filterBarFocusManagement.d.ts +0 -0
- /package/types/{custom-filters → vuu-filters/src/custom-filters}/index.d.ts +0 -0
- /package/types/{custom-filters → vuu-filters/src/custom-filters}/useCustomFilters.d.ts +0 -0
- /package/types/{custom-filters → vuu-filters/src/custom-filters}/useFilterState.d.ts +0 -0
- /package/types/{filter-bar → vuu-filters/src/filter-bar}/FilterBar.d.ts +0 -0
- /package/types/{filter-bar → vuu-filters/src/filter-bar}/FilterBarMenu.d.ts +0 -0
- /package/types/{filter-bar → vuu-filters/src/filter-bar}/index.d.ts +0 -0
- /package/types/{filter-bar → vuu-filters/src/filter-bar}/useFilterBar.d.ts +0 -0
- /package/types/{filter-clause → vuu-filters/src/filter-clause}/ColumnPicker.d.ts +0 -0
- /package/types/{filter-clause → vuu-filters/src/filter-clause}/ExpandoCombobox.d.ts +0 -0
- /package/types/{filter-clause → vuu-filters/src/filter-clause}/FilterClause.d.ts +0 -0
- /package/types/{filter-clause → vuu-filters/src/filter-clause}/FilterMenu.d.ts +0 -0
- /package/types/{filter-clause → vuu-filters/src/filter-clause}/FilterMenuOptions.d.ts +0 -0
- /package/types/{filter-clause → vuu-filters/src/filter-clause}/OperatorPicker.d.ts +0 -0
- /package/types/{filter-clause → vuu-filters/src/filter-clause}/filterClauseFocusManagement.d.ts +0 -0
- /package/types/{filter-clause → vuu-filters/src/filter-clause}/filterClauseTypes.d.ts +0 -0
- /package/types/{filter-clause → vuu-filters/src/filter-clause}/index.d.ts +0 -0
- /package/types/{filter-clause → vuu-filters/src/filter-clause}/operator-utils.d.ts +0 -0
- /package/types/{filter-clause → vuu-filters/src/filter-clause}/useExpandoCombobox.d.ts +0 -0
- /package/types/{filter-clause → vuu-filters/src/filter-clause}/value-editors/FilterClauseValueEditorDate.d.ts +0 -0
- /package/types/{filter-clause → vuu-filters/src/filter-clause}/value-editors/FilterClauseValueEditorNumber.d.ts +0 -0
- /package/types/{filter-clause → vuu-filters/src/filter-clause}/value-editors/FilterClauseValueEditorText.d.ts +0 -0
- /package/types/{filter-clause → vuu-filters/src/filter-clause}/value-editors/FilterClauseValueEditorTime.d.ts +0 -0
- /package/types/{filter-editor → vuu-filters/src/filter-editor}/FilterClauseCombinator.d.ts +0 -0
- /package/types/{filter-editor → vuu-filters/src/filter-editor}/FilterEditor.d.ts +0 -0
- /package/types/{filter-editor → vuu-filters/src/filter-editor}/index.d.ts +0 -0
- /package/types/{filter-editor → vuu-filters/src/filter-editor}/useFilterEditor.d.ts +0 -0
- /package/types/{filter-panel → vuu-filters/src/filter-panel}/FilterPanel.d.ts +0 -0
- /package/types/{filter-panel → vuu-filters/src/filter-panel}/useFilterPanel.d.ts +0 -0
- /package/types/{filter-pill → vuu-filters/src/filter-pill}/FilterMenu.d.ts +0 -0
- /package/types/{filter-pill → vuu-filters/src/filter-pill}/FilterPill.d.ts +0 -0
- /package/types/{filter-pill → vuu-filters/src/filter-pill}/filterAsReactNode.d.ts +0 -0
- /package/types/{filter-pill → vuu-filters/src/filter-pill}/getFilterLabel.d.ts +0 -0
- /package/types/{filter-pill → vuu-filters/src/filter-pill}/getFilterTooltipText.d.ts +0 -0
- /package/types/{filter-pill → vuu-filters/src/filter-pill}/index.d.ts +0 -0
- /package/types/{filter-pill-menu → vuu-filters/src/filter-pill-menu}/FilterPillMenu.d.ts +0 -0
- /package/types/{filter-pill-menu → vuu-filters/src/filter-pill-menu}/FilterPillMenuOptions.d.ts +0 -0
- /package/types/{filter-pill-menu → vuu-filters/src/filter-pill-menu}/index.d.ts +0 -0
- /package/types/{filter-provider → vuu-filters/src/filter-provider}/filter-descriptor-utils.d.ts +0 -0
- /package/types/{inline-filter → vuu-filters/src/inline-filter}/InlineFilter.d.ts +0 -0
- /package/types/{inline-filter → vuu-filters/src/inline-filter}/index.d.ts +0 -0
- /package/types/{quick-filters → vuu-filters/src/quick-filters}/QuickFilters.d.ts +0 -0
- /package/types/{quick-filters → vuu-filters/src/quick-filters}/index.d.ts +0 -0
- /package/types/{quick-filters → vuu-filters/src/quick-filters}/useQuickFilters.d.ts +0 -0
- /package/types/{saved-filters → vuu-filters/src/saved-filters}/DeleteFilterPrompt.d.ts +0 -0
|
@@ -20,6 +20,7 @@ const ColumnFilter = react.forwardRef(function ColumnFilter2({
|
|
|
20
20
|
operator = "=",
|
|
21
21
|
table,
|
|
22
22
|
value: valueProp,
|
|
23
|
+
values,
|
|
23
24
|
variant,
|
|
24
25
|
...buttonGroupProps
|
|
25
26
|
}, forwardRef2) {
|
|
@@ -46,7 +47,9 @@ const ColumnFilter = react.forwardRef(function ColumnFilter2({
|
|
|
46
47
|
commitWhenCleared: true,
|
|
47
48
|
dataDescriptor: column,
|
|
48
49
|
onCommit,
|
|
49
|
-
table
|
|
50
|
+
table,
|
|
51
|
+
values,
|
|
52
|
+
variant
|
|
50
53
|
}),
|
|
51
54
|
operator === "between" ? vuuDataReact.getDataItemEditControl({
|
|
52
55
|
InputProps: InputPropsRange,
|
|
@@ -1 +1 @@
|
|
|
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\";\n\nconst classBase = \"vuuColumnFilter\";\n\nexport interface ColumnFilterProps\n extends ColumnFilterHookProps,\n Omit<SegmentedButtonGroupProps, \"defaultValue\">,\n Pick
|
|
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\";\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 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 { InputProps, InputPropsRange, onCommit, onCommitRange } =\n useColumnFilter({\n InputProps: InputPropsProp,\n column,\n defaultValue,\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 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 {operator === \"between\"\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":["forwardRef","ColumnFilter","useColumnFilter","jsxs","SegmentedButtonGroup","getDataItemEditControl"],"mappings":";;;;;;;;;AAYA,MAAM,SAAY,GAAA,iBAAA;AAUL,MAAA,YAAA,GAAeA,gBAAW,CAAA,SAASC,aAC9C,CAAA;AAAA,EACE,UAAY,EAAA,cAAA;AAAA,EACZ,cAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA;AAAA,EACA,YAAA;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,EACAD,WACA,EAAA;AACA,EAAA,MAAM,EAAE,UAAY,EAAA,eAAA,EAAiB,QAAU,EAAA,aAAA,KAC7CE,+BAAgB,CAAA;AAAA,IACd,UAAY,EAAA,cAAA;AAAA,IACZ,MAAA;AAAA,IACA,YAAA;AAAA,IACA,oBAAA;AAAA,IACA,yBAAA;AAAA,IACA,QAAU,EAAA,YAAA;AAAA,IACV,QAAA;AAAA,IACA,KAAO,EAAA;AAAA,GACR,CAAA;AAEH,EACE,uBAAAC,eAAA;AAAA,IAACC,yBAAA;AAAA,IAAA;AAAA,MACE,GAAG,gBAAA;AAAA,MACJ,SAAA,EAAW,EAAG,CAAA,SAAA,EAAW,SAAS,CAAA;AAAA,MAClC,GAAKJ,EAAAA,WAAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,QAAuBK,mCAAA,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,QAAA,KAAa,YACVA,mCAAuB,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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useColumnFilter.js","sources":["../../../../packages/vuu-filters/src/column-filter/useColumnFilter.ts"],"sourcesContent":["import {\n ColumnFilterChangeHandler,\n
|
|
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} 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 } from \"react\";\nimport { CommitHandler } 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 * 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 onColumnFilterChange,\n onColumnRangeFilterChange,\n onCommit,\n operator = \"=\",\n value: valueProp,\n}: ColumnFilterHookProps) => {\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 setValue([`${newValue}`, value[1]]);\n onCommit?.(column, operator, [`${newValue}`, value[1]]);\n } else {\n setValue(newValue as ColumnFilterValue);\n onCommit?.(column, operator, `${newValue}`);\n }\n },\n [value, setValue, onCommit, column, operator],\n );\n\n const handleRangeCommit = useCallback<CommitHandler<HTMLElement>>(\n (_e, newValue = \"\") => {\n if (Array.isArray(value)) {\n const [firstValue] = value as [string, string];\n setValue([value[0], `${newValue}`]);\n onCommit?.(column, operator, [firstValue, `${newValue}`]);\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?.(column, operator, [currentValue, `${newValue}`]);\n } else {\n throw Error(\n `[useColumnFilterNext] value has been initialised incorrectly for range filter`,\n );\n }\n },\n [value, setValue, onCommit, column, operator],\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 onCommit: handleCommit,\n onCommitRange: handleRangeCommit,\n };\n};\n"],"names":["InputProps","useControlled","useCallback","value","useMemo"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FilterContainer.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -6,15 +6,25 @@ var react = require('react');
|
|
|
6
6
|
var useFilterContainer = require('./useFilterContainer.js');
|
|
7
7
|
var ColumnFilter = require('../column-filter/ColumnFilter.js');
|
|
8
8
|
var FilterProvider = require('../filter-provider/FilterProvider.js');
|
|
9
|
+
var FilterContext = require('../filter-provider/FilterContext.js');
|
|
9
10
|
var vuuUtils = require('@vuu-ui/vuu-utils');
|
|
11
|
+
var styles = require('@salt-ds/styles');
|
|
12
|
+
var window = require('@salt-ds/window');
|
|
13
|
+
var FilterContainer$1 = require('./FilterContainer.css.js');
|
|
10
14
|
|
|
11
15
|
const classBase = "vuuFilterContainer";
|
|
12
16
|
const notEmpty = (value) => Array.isArray(value) ? value[0] !== "" && value[1] !== "" : value !== "";
|
|
13
|
-
const
|
|
17
|
+
const FilterContainerColumnFilter = ({
|
|
14
18
|
column,
|
|
15
19
|
operator = "=",
|
|
16
20
|
...props
|
|
17
21
|
}) => {
|
|
22
|
+
const targetWindow = window.useWindow();
|
|
23
|
+
styles.useComponentCssInjection({
|
|
24
|
+
testId: "vuu-filter-container",
|
|
25
|
+
css: FilterContainer$1,
|
|
26
|
+
window: targetWindow
|
|
27
|
+
});
|
|
18
28
|
const {
|
|
19
29
|
onChange: onFilterContextChange,
|
|
20
30
|
onCommit: onFilterContextCommit,
|
|
@@ -26,12 +36,12 @@ const FilterContainerFilter = ({
|
|
|
26
36
|
);
|
|
27
37
|
const [value, setValue] = react.useState(initialValue);
|
|
28
38
|
const valueRef = react.useRef(initialValue);
|
|
29
|
-
const { currentFilter } =
|
|
39
|
+
const { currentFilter } = FilterContext.useCurrentFilter();
|
|
30
40
|
const currentFilterRef = react.useRef(currentFilter.id);
|
|
31
41
|
react.useMemo(() => {
|
|
32
42
|
if (currentFilterRef.current !== currentFilter.id) {
|
|
33
43
|
currentFilterRef.current = currentFilter.id;
|
|
34
|
-
if (
|
|
44
|
+
if (FilterContext.isNullFilter(currentFilter) && notEmpty(valueRef.current)) {
|
|
35
45
|
valueRef.current = Array.isArray(valueRef.current) ? ["", ""] : "";
|
|
36
46
|
setValue(valueRef.current);
|
|
37
47
|
} else if (FilterProvider.filterDescriptorHasFilter(currentFilter)) {
|
|
@@ -111,5 +121,5 @@ const FilterContainer = ({
|
|
|
111
121
|
};
|
|
112
122
|
|
|
113
123
|
exports.FilterContainer = FilterContainer;
|
|
114
|
-
exports.
|
|
124
|
+
exports.FilterContainerColumnFilter = FilterContainerColumnFilter;
|
|
115
125
|
//# sourceMappingURL=FilterContainer.js.map
|
|
@@ -1 +1 @@
|
|
|
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 ColumnFilterValue,\n} from \"@vuu-ui/vuu-filter-types\";\nimport { ColumnFilter, ColumnFilterProps } from \"../column-filter/ColumnFilter\";\nimport { ColumnFilterCommitHandler } from \"../column-filter/useColumnFilter\";\nimport {\n filterDescriptorHasFilter,\n isNullFilter,\n useCurrentFilter,\n} from \"../filter-provider/FilterProvider\";\nimport { getColumnValueFromFilter } from \"@vuu-ui/vuu-utils\";\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}\n\nexport interface FilterContainerFilterProps\n extends Omit<ColumnFilterProps, \"defaultValue\" | \"onCommit\" | \"value\"> {\n defaultValue?: ColumnFilterValue;\n}\n\nexport const FilterContainerFilter = ({\n column,\n operator = \"=\",\n ...props\n}: FilterContainerFilterProps) => {\n const {\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 } = useCurrentFilter();\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.id);\n\n useMemo(() => {\n if (currentFilterRef.current !== currentFilter.id) {\n currentFilterRef.current = currentFilter.id;\n\n if (isNullFilter(currentFilter) && notEmpty(valueRef.current)) {\n valueRef.current = Array.isArray(valueRef.current) ? [\"\", \"\"] : \"\";\n setValue(valueRef.current);\n } else if (filterDescriptorHasFilter(currentFilter)) {\n const v = getColumnValueFromFilter(\n column,\n operator,\n currentFilter.filter,\n );\n if (\n operator === \"between\" &&\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.id]);\n\n const handleCommit = useCallback<ColumnFilterCommitHandler>(\n (column, op, value) => {\n valueRef.current = value;\n setValue(value);\n onFilterContextCommit(column, op, value);\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 />\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 onFilterApplied,\n onFilterCleared,\n ...htmlAttributes\n}: FilterContainerProps) => {\n const filterContextProps = useFilterContainer({\n filter,\n onFilterApplied,\n onFilterCleared,\n });\n return (\n <ColumnFilterContext.Provider value={filterContextProps}>\n <div {...htmlAttributes} className={cx(classBase, className)}>\n {children}\n </div>\n </ColumnFilterContext.Provider>\n );\n};\n"],"names":["useFilterContext","useMemo","useState","useRef","useCurrentFilter","isNullFilter","filterDescriptorHasFilter","getColumnValueFromFilter","useCallback","column","value","jsx","ColumnFilter","useFilterContainer","ColumnFilterContext"],"mappings":"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"}
|
|
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 { filterDescriptorHasFilter } from \"../filter-provider/FilterProvider\";\nimport {\n isNullFilter,\n useCurrentFilter,\n} from \"../filter-provider/FilterContext\";\nimport { getColumnValueFromFilter } 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}\n\nexport interface FilterContainerColumnFilterProps\n extends Omit<ColumnFilterProps, \"defaultValue\" | \"onCommit\" | \"value\"> {\n defaultValue?: ColumnFilterValue;\n}\n\nexport const FilterContainerColumnFilter = ({\n column,\n operator = \"=\",\n ...props\n}: FilterContainerColumnFilterProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-filter-container\",\n css: filterContainerCss,\n window: targetWindow,\n });\n\n const {\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 } = useCurrentFilter();\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.id);\n\n useMemo(() => {\n if (currentFilterRef.current !== currentFilter.id) {\n currentFilterRef.current = currentFilter.id;\n\n if (isNullFilter(currentFilter) && notEmpty(valueRef.current)) {\n valueRef.current = Array.isArray(valueRef.current) ? [\"\", \"\"] : \"\";\n setValue(valueRef.current);\n } else if (filterDescriptorHasFilter(currentFilter)) {\n const v = getColumnValueFromFilter(\n column,\n operator,\n currentFilter.filter,\n );\n if (\n operator === \"between\" &&\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.id]);\n\n const handleCommit = useCallback<ColumnFilterCommitHandler>(\n (column, op, value) => {\n valueRef.current = value;\n setValue(value);\n onFilterContextCommit(column, op, value);\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 />\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 onFilterApplied,\n onFilterCleared,\n ...htmlAttributes\n}: FilterContainerProps) => {\n const filterContextProps = useFilterContainer({\n filter,\n onFilterApplied,\n onFilterCleared,\n });\n return (\n <ColumnFilterContext.Provider value={filterContextProps}>\n <div {...htmlAttributes} className={cx(classBase, className)}>\n {children}\n </div>\n </ColumnFilterContext.Provider>\n );\n};\n"],"names":["useWindow","useComponentCssInjection","filterContainerCss","useFilterContext","useMemo","useState","useRef","useCurrentFilter","isNullFilter","filterDescriptorHasFilter","getColumnValueFromFilter","useCallback","column","value","jsx","ColumnFilter","useFilterContainer","ColumnFilterContext"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFilterContainer.js","sources":["../../../../packages/vuu-filters/src/filter-container/useFilterContainer.ts"],"sourcesContent":["import {\n ColumnFilterOp,\n ColumnFilterValue,\n Filter,\n FilterContainerFilter,\n} from \"@vuu-ui/vuu-filter-types\";\nimport { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { createContext, useCallback, useContext, useMemo, useRef } from \"react\";\nimport {
|
|
1
|
+
{"version":3,"file":"useFilterContainer.js","sources":["../../../../packages/vuu-filters/src/filter-container/useFilterContainer.ts"],"sourcesContent":["import {\n ColumnFilterChangeHandler,\n ColumnFilterCommitHandler,\n ColumnFilterOp,\n ColumnFilterValue,\n Filter,\n FilterContainerFilter,\n} from \"@vuu-ui/vuu-filter-types\";\nimport { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { createContext, useCallback, useContext, useMemo, useRef } from \"react\";\nimport {\n FilterAggregator,\n getColumnValueFromFilter,\n isSingleValueFilter,\n} from \"@vuu-ui/vuu-utils\";\n\nexport interface ColumnFilterContextProps {\n filterContainerInstalled: boolean;\n onChange?: ColumnFilterChangeHandler;\n onCommit?: ColumnFilterCommitHandler;\n register?: (\n column: ColumnDescriptor,\n operator: ColumnFilterOp,\n ) => ColumnFilterValue;\n getValue?: (column: ColumnDescriptor) => ColumnFilterValue;\n}\n\nexport const ColumnFilterContext = createContext<ColumnFilterContextProps>({\n filterContainerInstalled: false,\n});\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n//@ts-ignore type-check incorrectly flags this as error, its perfectly valid\nexport function useFilterContext(\n column: ColumnDescriptor,\n throwIfNoContainer?: false,\n): ColumnFilterContextProps;\nexport function useFilterContext(\n column: ColumnDescriptor,\n throwIfNoContainer: true,\n): Required<ColumnFilterContextProps>;\nexport function useFilterContext(\n column: ColumnDescriptor,\n throwIfNoContainer = false,\n) {\n const ctx = useContext(ColumnFilterContext);\n if (ctx) {\n return {\n register: ctx.register,\n getValue: ctx.getValue,\n onChange: ctx.onChange,\n onCommit: ctx.onCommit,\n };\n } else if (throwIfNoContainer) {\n throw Error(\n `[useColumnFilterContainer:useFilterContext] no FilterContainer installed`,\n );\n } else {\n return { filterContainerInstalled: false };\n }\n}\n\nexport type FilterAppliedHandler<F extends Filter = Filter> = (\n filter: F,\n) => void;\nexport type ColumnFilterContainerHookProps = {\n filter?: FilterContainerFilter;\n onFilterApplied?: FilterAppliedHandler<FilterContainerFilter>;\n onFilterCleared?: () => void;\n};\n\ntype ColumnFilterValueMap = Record<string, ColumnFilterValue>;\n\nexport const EmptyTuple: ColumnFilterValue = [\"\", \"\"];\n\nexport const useFilterContainer = ({\n filter,\n onFilterApplied,\n onFilterCleared,\n}: ColumnFilterContainerHookProps): ColumnFilterContextProps => {\n const valueRef = useRef<ColumnFilterValueMap>({});\n\n const filterAggregator = useMemo(\n () => new FilterAggregator(filter),\n [filter],\n );\n\n const register = useCallback(\n (column: ColumnDescriptor, op: ColumnFilterOp) =>\n (valueRef.current[column.name] = getColumnValueFromFilter(\n column,\n op,\n filter,\n )),\n [filter],\n );\n\n const getValue = useCallback(\n (column: ColumnDescriptor, fallbackValue?: ColumnFilterValue) => {\n const value = valueRef.current[column.name];\n if (value !== undefined) {\n return value;\n } else if (fallbackValue !== undefined) {\n return fallbackValue;\n } else {\n throw Error(\n `[useColumnFilterContainer] column ${column.name} has not been registered`,\n );\n }\n },\n [],\n );\n\n const handleCommit = useCallback<ColumnFilterCommitHandler>(\n (column, op, value = \"\") => {\n if (Array.isArray(value)) {\n if (op !== \"between\") {\n throw Error(\n `[useInlineFilter] array value is not valid for operator ${op}`,\n );\n }\n if (value[0] === \"\" && value[1] === \"\") {\n if (!filterAggregator.remove(column)) {\n return;\n }\n } else {\n if (typeof value[0] === \"string\" && typeof value[1] === \"string\") {\n filterAggregator.add(column, value);\n } else {\n throw Error(\n `[useInlineFilter] handleCommit value [${typeof value[0]},${typeof value[1]}] for operator ${op} supports [string,string] only`,\n );\n }\n }\n } else if (value === \"\") {\n if (!filterAggregator.remove(column)) {\n return;\n }\n } else {\n if (typeof value === \"string\" || typeof value === \"number\") {\n filterAggregator.add(column, value);\n } else {\n throw Error(\n `[useInlineFilter] handleCommit value ${typeof value} supports string, number only`,\n );\n }\n }\n const { filter } = filterAggregator;\n if (filter) {\n onFilterApplied?.(filter);\n } else {\n onFilterCleared?.();\n }\n },\n [filterAggregator, onFilterApplied, onFilterCleared],\n );\n\n const handleInputChange = useCallback<ColumnFilterChangeHandler>(\n (value, column) => {\n // If the filterAggregator has this column, then the value has previously been committed.\n // As soon as user starts editing the value, we un-commit.\n if (filterAggregator.has(column)) {\n if (Array.isArray(value)) {\n // TODO check whether first value has been changed\n const filter = filterAggregator.get(column);\n if (isSingleValueFilter(filter)) {\n // do nothing, the first value has been committed\n } else {\n handleCommit(column, \"between\", [\"\", \"\"]);\n }\n } else {\n handleCommit(column, \"=\", \"\");\n }\n }\n valueRef.current[column.name] = value;\n },\n [filterAggregator, handleCommit],\n );\n\n return {\n filterContainerInstalled: true,\n onChange: handleInputChange,\n onCommit: handleCommit,\n getValue,\n register,\n };\n};\n"],"names":["createContext","useContext","useRef","useMemo","FilterAggregator","useCallback","getColumnValueFromFilter","filter","isSingleValueFilter"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterDisplay.js","sources":["../../../../packages/vuu-filters/src/filter-display/FilterDisplay.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport {
|
|
1
|
+
{"version":3,"file":"FilterDisplay.js","sources":["../../../../packages/vuu-filters/src/filter-display/FilterDisplay.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { FilterContainerFilter } from \"@vuu-ui/vuu-filter-types\";\nimport cx from \"clsx\";\nimport { ForwardedRef, forwardRef, HTMLAttributes, ReactElement } from \"react\";\nimport { getFilterClausesForDisplay } from \"../filter-utils\";\n\nimport filterDisplayCss from \"./FilterDisplay.css\";\nimport { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\n\nconst classBase = \"vuuFilterDisplay\";\n\nexport interface FilterDisplayProps extends HTMLAttributes<HTMLDivElement> {\n columns?: ColumnDescriptor[];\n filter: FilterContainerFilter | undefined;\n}\n\nconst getColumnLabel = (columnName: string, columns?: ColumnDescriptor[]) => {\n if (columns) {\n const column = columns.find((c) => c.name === columnName);\n if (column) {\n return column.label ?? columnName;\n }\n }\n return columnName;\n};\n\nexport const FilterDisplay = forwardRef(function FilterDisplay(\n { className, columns, filter, ...htmlAttributes }: FilterDisplayProps,\n forwardedRef: ForwardedRef<HTMLDivElement>,\n) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-filter-display\",\n css: filterDisplayCss,\n window: targetWindow,\n });\n\n const filterClauseList = getFilterClausesForDisplay(filter, columns);\n return (\n <div\n {...htmlAttributes}\n className={cx(classBase, className)}\n ref={forwardedRef}\n >\n {filterClauseList.reduce<Array<ReactElement>>(\n (list, [columnName, value]) => {\n list.push(\n <span className={`${classBase}-column`} key={list.length}>\n {getColumnLabel(columnName)}\n </span>,\n <span className={`${classBase}-value`} key={list.length + 1}>\n {value}\n </span>,\n );\n return list;\n },\n [],\n )}\n </div>\n );\n});\n"],"names":["forwardRef","FilterDisplay","useWindow","useComponentCssInjection","filterDisplayCss","getFilterClausesForDisplay","jsx"],"mappings":";;;;;;;;;;AAUA,MAAM,SAAY,GAAA,kBAAA;AAOlB,MAAM,cAAA,GAAiB,CAAC,UAAA,EAAoB,OAAiC,KAAA;AAO3E,EAAO,OAAA,UAAA;AACT,CAAA;AAEa,MAAA,aAAA,GAAgBA,gBAAW,CAAA,SAASC,cAC/C,CAAA,EAAE,SAAW,EAAA,OAAA,EAAS,MAAQ,EAAA,GAAG,cAAe,EAAA,EAChD,YACA,EAAA;AACA,EAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,oBAAA;AAAA,IACR,GAAK,EAAAC,eAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAM,MAAA,gBAAA,GAAmBC,sCAA2B,CAAA,MAAA,EAAQ,OAAO,CAAA;AACnE,EACE,uBAAAC,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,cAAA;AAAA,MACJ,SAAA,EAAW,EAAG,CAAA,SAAA,EAAW,SAAS,CAAA;AAAA,MAClC,GAAK,EAAA,YAAA;AAAA,MAEJ,QAAiB,EAAA,gBAAA,CAAA,MAAA;AAAA,QAChB,CAAC,IAAA,EAAM,CAAC,UAAA,EAAY,KAAK,CAAM,KAAA;AAC7B,UAAK,IAAA,CAAA,IAAA;AAAA,4BACHA,cAAA,CAAC,MAAK,EAAA,EAAA,SAAA,EAAW,CAAG,EAAA,SAAS,WAC1B,QAAe,EAAA,cAAA,CAAA,UAAU,CADiB,EAAA,EAAA,IAAA,CAAK,MAElD,CAAA;AAAA,4BACAA,cAAA,CAAC,UAAK,SAAW,EAAA,CAAA,EAAG,SAAS,CAC1B,MAAA,CAAA,EAAA,QAAA,EAAA,KAAA,EAAA,EADyC,IAAK,CAAA,MAAA,GAAS,CAE1D;AAAA,WACF;AACA,UAAO,OAAA,IAAA;AAAA,SACT;AAAA,QACA;AAAC;AACH;AAAA,GACF;AAEJ,CAAC;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var filterPanelCss = ".vuuFilterPanel {\n \n}";
|
|
3
|
+
var filterPanelCss = ".vuuFilterPanel {\n .vuuFilterPanel-toolbar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n}";
|
|
4
4
|
|
|
5
5
|
module.exports = filterPanelCss;
|
|
6
6
|
//# sourceMappingURL=FilterPanel.css.js.map
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
4
4
|
var react = require('react');
|
|
5
|
-
var
|
|
5
|
+
var FilterContext = require('../filter-provider/FilterContext.js');
|
|
6
6
|
var FilterNamePrompt = require('../saved-filters/FilterNamePrompt.js');
|
|
7
7
|
|
|
8
8
|
const useFilterPanel = ({
|
|
@@ -10,16 +10,14 @@ const useFilterPanel = ({
|
|
|
10
10
|
onFilterApplied,
|
|
11
11
|
onFilterCleared
|
|
12
12
|
}) => {
|
|
13
|
-
const { currentFilter, setCurrentFilter } =
|
|
14
|
-
const { saveFilter } =
|
|
13
|
+
const { currentFilter, setCurrentFilter } = FilterContext.useCurrentFilter();
|
|
14
|
+
const { saveFilter } = FilterContext.useSavedFilters();
|
|
15
15
|
const [saveFilterPrompt, setSaveFilterPrompt] = react.useState(
|
|
16
16
|
null
|
|
17
17
|
);
|
|
18
18
|
const clearFilter = react.useCallback(() => {
|
|
19
|
-
setCurrentFilter(
|
|
19
|
+
setCurrentFilter(FilterContext.NULL_FILTER);
|
|
20
20
|
}, [setCurrentFilter]);
|
|
21
|
-
const disableClear = false;
|
|
22
|
-
const disableSave = false;
|
|
23
21
|
const handleConfirm = react.useCallback(
|
|
24
22
|
(name) => {
|
|
25
23
|
setSaveFilterPrompt(null);
|
|
@@ -50,13 +48,13 @@ const useFilterPanel = ({
|
|
|
50
48
|
[onFilterApplied, setCurrentFilter]
|
|
51
49
|
);
|
|
52
50
|
const handleFilterCleared = react.useCallback(() => {
|
|
53
|
-
setCurrentFilter(
|
|
51
|
+
setCurrentFilter(FilterContext.EMPTY_FILTER);
|
|
54
52
|
onFilterCleared?.();
|
|
55
53
|
}, [onFilterCleared, setCurrentFilter]);
|
|
56
54
|
return {
|
|
57
55
|
clearFilter,
|
|
58
|
-
disableClear,
|
|
59
|
-
disableSave,
|
|
56
|
+
disableClear: currentFilter.filter === null,
|
|
57
|
+
disableSave: currentFilter.filter === null,
|
|
60
58
|
filter: currentFilter.filter ?? filter,
|
|
61
59
|
onFilterApplied: handleFilterApplied,
|
|
62
60
|
onFilterCleared: handleFilterCleared,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFilterPanel.js","sources":["../../../../packages/vuu-filters/src/filter-panel/useFilterPanel.tsx"],"sourcesContent":["import { ReactElement, useCallback, useState } from \"react\";\nimport { FilterContainerProps } from \"../filter-container/FilterContainer\";\nimport {\n EMPTY_FILTER,\n NULL_FILTER,\n useCurrentFilter,\n useSavedFilters,\n} from \"../filter-provider/
|
|
1
|
+
{"version":3,"file":"useFilterPanel.js","sources":["../../../../packages/vuu-filters/src/filter-panel/useFilterPanel.tsx"],"sourcesContent":["import { ReactElement, useCallback, useState } from \"react\";\nimport { FilterContainerProps } from \"../filter-container/FilterContainer\";\nimport {\n EMPTY_FILTER,\n NULL_FILTER,\n useCurrentFilter,\n useSavedFilters,\n} from \"../filter-provider/FilterContext\";\nimport { FilterAppliedHandler } from \"../filter-container/useFilterContainer\";\nimport { FilterNamePrompt } from \"../saved-filters/FilterNamePrompt\";\nimport { FilterContainerFilter } from \"@vuu-ui/vuu-filter-types\";\n\nexport const useFilterPanel = ({\n filter,\n onFilterApplied,\n onFilterCleared,\n}: Pick<\n FilterContainerProps,\n \"filter\" | \"onFilterApplied\" | \"onFilterCleared\"\n>) => {\n const { currentFilter, setCurrentFilter } = useCurrentFilter();\n const { saveFilter } = useSavedFilters();\n const [saveFilterPrompt, setSaveFilterPrompt] = useState<ReactElement | null>(\n null,\n );\n\n const clearFilter = useCallback(() => {\n setCurrentFilter(NULL_FILTER);\n }, [setCurrentFilter]);\n\n const handleConfirm = useCallback(\n (name: string) => {\n setSaveFilterPrompt(null);\n saveFilter(name);\n },\n [saveFilter],\n );\n\n const handleClose = () => {\n setSaveFilterPrompt(null);\n };\n\n const handleSaveFilter = useCallback(() => {\n setSaveFilterPrompt(\n <FilterNamePrompt\n onClose={handleClose}\n onConfirm={handleConfirm}\n title=\"Save Filter\"\n />,\n );\n }, [handleConfirm]);\n\n const handleFilterApplied = useCallback<\n FilterAppliedHandler<FilterContainerFilter>\n >(\n (filter) => {\n setCurrentFilter?.(filter);\n onFilterApplied?.(filter);\n },\n [onFilterApplied, setCurrentFilter],\n );\n\n const handleFilterCleared = useCallback(() => {\n setCurrentFilter(EMPTY_FILTER);\n onFilterCleared?.();\n }, [onFilterCleared, setCurrentFilter]);\n\n return {\n clearFilter,\n disableClear: currentFilter.filter === null,\n disableSave: currentFilter.filter === null,\n filter: currentFilter.filter ?? filter,\n onFilterApplied: handleFilterApplied,\n onFilterCleared: handleFilterCleared,\n saveFilter: handleSaveFilter,\n saveFilterPrompt,\n };\n};\n"],"names":["useCurrentFilter","useSavedFilters","useState","useCallback","NULL_FILTER","jsx","FilterNamePrompt","filter","EMPTY_FILTER"],"mappings":";;;;;;;AAYO,MAAM,iBAAiB,CAAC;AAAA,EAC7B,MAAA;AAAA,EACA,eAAA;AAAA,EACA;AACF,CAGM,KAAA;AACJ,EAAA,MAAM,EAAE,aAAA,EAAe,gBAAiB,EAAA,GAAIA,8BAAiB,EAAA;AAC7D,EAAM,MAAA,EAAE,UAAW,EAAA,GAAIC,6BAAgB,EAAA;AACvC,EAAM,MAAA,CAAC,gBAAkB,EAAA,mBAAmB,CAAI,GAAAC,cAAA;AAAA,IAC9C;AAAA,GACF;AAEA,EAAM,MAAA,WAAA,GAAcC,kBAAY,MAAM;AACpC,IAAA,gBAAA,CAAiBC,yBAAW,CAAA;AAAA,GAC9B,EAAG,CAAC,gBAAgB,CAAC,CAAA;AAErB,EAAA,MAAM,aAAgB,GAAAD,iBAAA;AAAA,IACpB,CAAC,IAAiB,KAAA;AAChB,MAAA,mBAAA,CAAoB,IAAI,CAAA;AACxB,MAAA,UAAA,CAAW,IAAI,CAAA;AAAA,KACjB;AAAA,IACA,CAAC,UAAU;AAAA,GACb;AAEA,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,mBAAA,CAAoB,IAAI,CAAA;AAAA,GAC1B;AAEA,EAAM,MAAA,gBAAA,GAAmBA,kBAAY,MAAM;AACzC,IAAA,mBAAA;AAAA,sBACEE,cAAA;AAAA,QAACC,iCAAA;AAAA,QAAA;AAAA,UACC,OAAS,EAAA,WAAA;AAAA,UACT,SAAW,EAAA,aAAA;AAAA,UACX,KAAM,EAAA;AAAA;AAAA;AACR,KACF;AAAA,GACF,EAAG,CAAC,aAAa,CAAC,CAAA;AAElB,EAAA,MAAM,mBAAsB,GAAAH,iBAAA;AAAA,IAG1B,CAACI,OAAW,KAAA;AACV,MAAA,gBAAA,GAAmBA,OAAM,CAAA;AACzB,MAAA,eAAA,GAAkBA,OAAM,CAAA;AAAA,KAC1B;AAAA,IACA,CAAC,iBAAiB,gBAAgB;AAAA,GACpC;AAEA,EAAM,MAAA,mBAAA,GAAsBJ,kBAAY,MAAM;AAC5C,IAAA,gBAAA,CAAiBK,0BAAY,CAAA;AAC7B,IAAkB,eAAA,IAAA;AAAA,GACjB,EAAA,CAAC,eAAiB,EAAA,gBAAgB,CAAC,CAAA;AAEtC,EAAO,OAAA;AAAA,IACL,WAAA;AAAA,IACA,YAAA,EAAc,cAAc,MAAW,KAAA,IAAA;AAAA,IACvC,WAAA,EAAa,cAAc,MAAW,KAAA,IAAA;AAAA,IACtC,MAAA,EAAQ,cAAc,MAAU,IAAA,MAAA;AAAA,IAChC,eAAiB,EAAA,mBAAA;AAAA,IACjB,eAAiB,EAAA,mBAAA;AAAA,IACjB,UAAY,EAAA,gBAAA;AAAA,IACZ;AAAA,GACF;AACF;;;;"}
|
|
@@ -14,6 +14,7 @@ const classBase = "vuuFilterPillNext";
|
|
|
14
14
|
const FilterPillNext = ({
|
|
15
15
|
active,
|
|
16
16
|
appearence,
|
|
17
|
+
columns,
|
|
17
18
|
className,
|
|
18
19
|
defaultActive,
|
|
19
20
|
filter,
|
|
@@ -74,7 +75,7 @@ const FilterPillNext = ({
|
|
|
74
75
|
core.Tooltip,
|
|
75
76
|
{
|
|
76
77
|
className: `${classBase}-tooltip`,
|
|
77
|
-
content: /* @__PURE__ */ jsxRuntime.jsx(FilterDisplay.FilterDisplay, { filter }),
|
|
78
|
+
content: /* @__PURE__ */ jsxRuntime.jsx(FilterDisplay.FilterDisplay, { columns, filter }),
|
|
78
79
|
placement: "top",
|
|
79
80
|
children: filterPill
|
|
80
81
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterPillNext.js","sources":["../../../../packages/vuu-filters/src/filter-pill/FilterPillNext.tsx"],"sourcesContent":["import { Button, Tooltip } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport cx from \"clsx\";\nimport { HTMLAttributes } from \"react\";\nimport { FilterMenu, type FilterPermissions } from \"./FilterMenu\";\nimport {\n type FilterPillNextHookProps,\n useFilterPillNext,\n} from \"./useFilterPillNext\";\n\nimport filterPillNextCss from \"./FilterPillNext.css\";\nimport { FilterDisplay } from \"../filter-display/FilterDisplay\";\n\nexport interface FilterPillNextProps\n extends FilterPillNextHookProps,\n Omit<HTMLAttributes<HTMLButtonElement>, \"id\"> {\n id: string;\n permissions?: FilterPermissions;\n showTooltip?: boolean;\n}\n\nconst classBase = \"vuuFilterPillNext\";\n\nexport const FilterPillNext = ({\n active,\n appearence,\n className,\n defaultActive,\n filter,\n id,\n onClick,\n onMenuAction: onMenuActionProp,\n permissions,\n showTooltip = true,\n ...htmlAttributes\n}: FilterPillNextProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-filter-pill\",\n css: filterPillNextCss,\n window: targetWindow,\n });\n\n const {\n contextMenuOpen,\n onContextMenu,\n onContextMenuOpenChange,\n onMenuAction,\n virtualElement,\n } = useFilterPillNext({\n active,\n appearence,\n defaultActive,\n filter,\n onMenuAction: onMenuActionProp,\n });\n\n const filterPill = (\n <Button\n {...htmlAttributes}\n appearance=\"solid\"\n className={cx(classBase, className, {\n [`${classBase}-active`]: active,\n })}\n id={id}\n onClick={onClick}\n onContextMenu={onContextMenu}\n sentiment=\"accented\"\n >\n {filter.name}\n </Button>\n );\n\n const filterMenu = (\n <FilterMenu\n filterId={id}\n getVirtualElement={() => virtualElement}\n onMenuAction={onMenuAction}\n onOpenChange={onContextMenuOpenChange}\n open={contextMenuOpen}\n permissions={permissions}\n />\n );\n\n return showTooltip ? (\n <>\n <Tooltip\n className={`${classBase}-tooltip`}\n content={<FilterDisplay filter={filter} />}\n placement=\"top\"\n >\n {filterPill}\n </Tooltip>\n {filterMenu}\n </>\n ) : (\n <>\n {filterPill}\n {filterMenu}\n </>\n );\n};\n"],"names":["useWindow","useComponentCssInjection","filterPillNextCss","useFilterPillNext","jsx","Button","FilterMenu","jsxs","Fragment","Tooltip","FilterDisplay"],"mappings":";;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"FilterPillNext.js","sources":["../../../../packages/vuu-filters/src/filter-pill/FilterPillNext.tsx"],"sourcesContent":["import { Button, Tooltip } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport cx from \"clsx\";\nimport { HTMLAttributes } from \"react\";\nimport { FilterMenu, type FilterPermissions } from \"./FilterMenu\";\nimport {\n type FilterPillNextHookProps,\n useFilterPillNext,\n} from \"./useFilterPillNext\";\n\nimport filterPillNextCss from \"./FilterPillNext.css\";\nimport { FilterDisplay } from \"../filter-display/FilterDisplay\";\nimport { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\n\nexport interface FilterPillNextProps\n extends FilterPillNextHookProps,\n Omit<HTMLAttributes<HTMLButtonElement>, \"id\"> {\n /**\n * If provided, these will be used in tooltip to provide\n * richer representation of filter.\n */\n columns?: ColumnDescriptor[];\n id: string;\n permissions?: FilterPermissions;\n showTooltip?: boolean;\n}\n\nconst classBase = \"vuuFilterPillNext\";\n\nexport const FilterPillNext = ({\n active,\n appearence,\n columns,\n className,\n defaultActive,\n filter,\n id,\n onClick,\n onMenuAction: onMenuActionProp,\n permissions,\n showTooltip = true,\n ...htmlAttributes\n}: FilterPillNextProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-filter-pill\",\n css: filterPillNextCss,\n window: targetWindow,\n });\n\n const {\n contextMenuOpen,\n onContextMenu,\n onContextMenuOpenChange,\n onMenuAction,\n virtualElement,\n } = useFilterPillNext({\n active,\n appearence,\n defaultActive,\n filter,\n onMenuAction: onMenuActionProp,\n });\n\n const filterPill = (\n <Button\n {...htmlAttributes}\n appearance=\"solid\"\n className={cx(classBase, className, {\n [`${classBase}-active`]: active,\n })}\n id={id}\n onClick={onClick}\n onContextMenu={onContextMenu}\n sentiment=\"accented\"\n >\n {filter.name}\n </Button>\n );\n\n const filterMenu = (\n <FilterMenu\n filterId={id}\n getVirtualElement={() => virtualElement}\n onMenuAction={onMenuAction}\n onOpenChange={onContextMenuOpenChange}\n open={contextMenuOpen}\n permissions={permissions}\n />\n );\n\n return showTooltip ? (\n <>\n <Tooltip\n className={`${classBase}-tooltip`}\n content={<FilterDisplay columns={columns} filter={filter} />}\n placement=\"top\"\n >\n {filterPill}\n </Tooltip>\n {filterMenu}\n </>\n ) : (\n <>\n {filterPill}\n {filterMenu}\n </>\n );\n};\n"],"names":["useWindow","useComponentCssInjection","filterPillNextCss","useFilterPillNext","jsx","Button","FilterMenu","jsxs","Fragment","Tooltip","FilterDisplay"],"mappings":";;;;;;;;;;;;AA4BA,MAAM,SAAY,GAAA,mBAAA;AAEX,MAAM,iBAAiB,CAAC;AAAA,EAC7B,MAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,aAAA;AAAA,EACA,MAAA;AAAA,EACA,EAAA;AAAA,EACA,OAAA;AAAA,EACA,YAAc,EAAA,gBAAA;AAAA,EACd,WAAA;AAAA,EACA,WAAc,GAAA,IAAA;AAAA,EACd,GAAG;AACL,CAA2B,KAAA;AACzB,EAAA,MAAM,eAAeA,gBAAU,EAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,iBAAA;AAAA,IACR,GAAK,EAAAC,gBAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAM,MAAA;AAAA,IACJ,eAAA;AAAA,IACA,aAAA;AAAA,IACA,uBAAA;AAAA,IACA,YAAA;AAAA,IACA;AAAA,MACEC,mCAAkB,CAAA;AAAA,IACpB,MAAA;AAAA,IACA,UAAA;AAAA,IACA,aAAA;AAAA,IACA,MAAA;AAAA,IACA,YAAc,EAAA;AAAA,GACf,CAAA;AAED,EAAA,MAAM,UACJ,mBAAAC,cAAA;AAAA,IAACC,WAAA;AAAA,IAAA;AAAA,MACE,GAAG,cAAA;AAAA,MACJ,UAAW,EAAA,OAAA;AAAA,MACX,SAAA,EAAW,EAAG,CAAA,SAAA,EAAW,SAAW,EAAA;AAAA,QAClC,CAAC,CAAA,EAAG,SAAS,CAAA,OAAA,CAAS,GAAG;AAAA,OAC1B,CAAA;AAAA,MACD,EAAA;AAAA,MACA,OAAA;AAAA,MACA,aAAA;AAAA,MACA,SAAU,EAAA,UAAA;AAAA,MAET,QAAO,EAAA,MAAA,CAAA;AAAA;AAAA,GACV;AAGF,EAAA,MAAM,UACJ,mBAAAD,cAAA;AAAA,IAACE,qBAAA;AAAA,IAAA;AAAA,MACC,QAAU,EAAA,EAAA;AAAA,MACV,mBAAmB,MAAM,cAAA;AAAA,MACzB,YAAA;AAAA,MACA,YAAc,EAAA,uBAAA;AAAA,MACd,IAAM,EAAA,eAAA;AAAA,MACN;AAAA;AAAA,GACF;AAGF,EAAA,OAAO,8BAEHC,eAAA,CAAAC,mBAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAAJ,cAAA;AAAA,MAACK,YAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,GAAG,SAAS,CAAA,QAAA,CAAA;AAAA,QACvB,OAAS,kBAAAL,cAAA,CAACM,2BAAc,EAAA,EAAA,OAAA,EAAkB,MAAgB,EAAA,CAAA;AAAA,QAC1D,SAAU,EAAA,KAAA;AAAA,QAET,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,IACC;AAAA,GAAA,EACH,oBAGGH,eAAA,CAAAC,mBAAA,EAAA,EAAA,QAAA,EAAA;AAAA,IAAA,UAAA;AAAA,IACA;AAAA,GACH,EAAA,CAAA;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFilterPillNext.js","sources":["../../../../packages/vuu-filters/src/filter-pill/useFilterPillNext.ts"],"sourcesContent":["import type { VirtualElement } from \"@floating-ui/react\";\nimport { useControlled } from \"@salt-ds/core\";\nimport { MouseEventHandler, useCallback, useMemo, useState } from \"react\";\nimport { FilterMenuActionHandler } from \"./FilterMenu\";\nimport { getFilterAsFormattedText } from \"./getFilterTooltipText\";\nimport {
|
|
1
|
+
{"version":3,"file":"useFilterPillNext.js","sources":["../../../../packages/vuu-filters/src/filter-pill/useFilterPillNext.ts"],"sourcesContent":["import type { VirtualElement } from \"@floating-ui/react\";\nimport { useControlled } from \"@salt-ds/core\";\nimport { MouseEventHandler, useCallback, useMemo, useState } from \"react\";\nimport { FilterMenuActionHandler } from \"./FilterMenu\";\nimport { getFilterAsFormattedText } from \"./getFilterTooltipText\";\nimport { FilterContainerFilter } from \"@vuu-ui/vuu-filter-types\";\n\nexport interface FilterPillNextHookProps {\n active?: boolean;\n /**\n * Determines how menu items will be presented\n * 'button' - menu items will be context menu\n * 'split-button' - menu items will be dropdowns\n */\n appearence?: \"split-button\" | \"button\";\n defaultActive?: boolean;\n filter: FilterContainerFilter;\n onMenuAction?: FilterMenuActionHandler;\n}\n\nexport const useFilterPillNext = ({\n active: activeProp,\n appearence = \"button\",\n defaultActive,\n filter,\n onMenuAction,\n}: FilterPillNextHookProps) => {\n const [active] = useControlled({\n controlled: activeProp,\n default: defaultActive ?? false,\n name: \"FilterPillNext\",\n state: \"active\",\n });\n\n const [contextMenuOpen, setContextMenuOpen] = useState(false);\n const [virtualElement, setVirtualElement] = useState<VirtualElement | null>(\n null,\n );\n\n const tooltipText = useMemo(() => {\n const getTooltipText = getFilterAsFormattedText();\n return getTooltipText(filter);\n }, [filter]);\n\n const onContextMenu: MouseEventHandler<HTMLButtonElement> = (e) => {\n e.preventDefault();\n if (appearence === \"button\") {\n setVirtualElement({\n getBoundingClientRect: () => ({\n width: 0,\n height: 0,\n x: e.clientX,\n y: e.clientY,\n top: e.clientY,\n right: e.clientX,\n bottom: e.clientY,\n left: e.clientX,\n }),\n });\n setContextMenuOpen(true);\n }\n };\n\n const handleMenuAction = useCallback<FilterMenuActionHandler>(\n (filterId, actionType) => {\n setContextMenuOpen(false);\n onMenuAction?.(filterId, actionType);\n },\n [onMenuAction],\n );\n\n return {\n active,\n contextMenuOpen,\n onContextMenu,\n onContextMenuOpenChange: setContextMenuOpen,\n onMenuAction: handleMenuAction,\n tooltipText,\n virtualElement,\n };\n};\n"],"names":["useControlled","useState","useMemo","getFilterAsFormattedText","useCallback"],"mappings":";;;;;;AAoBO,MAAM,oBAAoB,CAAC;AAAA,EAChC,MAAQ,EAAA,UAAA;AAAA,EACR,UAAa,GAAA,QAAA;AAAA,EACb,aAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAA+B,KAAA;AAC7B,EAAM,MAAA,CAAC,MAAM,CAAA,GAAIA,kBAAc,CAAA;AAAA,IAC7B,UAAY,EAAA,UAAA;AAAA,IACZ,SAAS,aAAiB,IAAA,KAAA;AAAA,IAC1B,IAAM,EAAA,gBAAA;AAAA,IACN,KAAO,EAAA;AAAA,GACR,CAAA;AAED,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAIC,eAAS,KAAK,CAAA;AAC5D,EAAM,MAAA,CAAC,cAAgB,EAAA,iBAAiB,CAAI,GAAAA,cAAA;AAAA,IAC1C;AAAA,GACF;AAEA,EAAM,MAAA,WAAA,GAAcC,cAAQ,MAAM;AAChC,IAAA,MAAM,iBAAiBC,6CAAyB,EAAA;AAChD,IAAA,OAAO,eAAe,MAAM,CAAA;AAAA,GAC9B,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAM,MAAA,aAAA,GAAsD,CAAC,CAAM,KAAA;AACjE,IAAA,CAAA,CAAE,cAAe,EAAA;AACjB,IAAA,IAAI,eAAe,QAAU,EAAA;AAC3B,MAAkB,iBAAA,CAAA;AAAA,QAChB,uBAAuB,OAAO;AAAA,UAC5B,KAAO,EAAA,CAAA;AAAA,UACP,MAAQ,EAAA,CAAA;AAAA,UACR,GAAG,CAAE,CAAA,OAAA;AAAA,UACL,GAAG,CAAE,CAAA,OAAA;AAAA,UACL,KAAK,CAAE,CAAA,OAAA;AAAA,UACP,OAAO,CAAE,CAAA,OAAA;AAAA,UACT,QAAQ,CAAE,CAAA,OAAA;AAAA,UACV,MAAM,CAAE,CAAA;AAAA,SACV;AAAA,OACD,CAAA;AACD,MAAA,kBAAA,CAAmB,IAAI,CAAA;AAAA;AACzB,GACF;AAEA,EAAA,MAAM,gBAAmB,GAAAC,iBAAA;AAAA,IACvB,CAAC,UAAU,UAAe,KAAA;AACxB,MAAA,kBAAA,CAAmB,KAAK,CAAA;AACxB,MAAA,YAAA,GAAe,UAAU,UAAU,CAAA;AAAA,KACrC;AAAA,IACA,CAAC,YAAY;AAAA,GACf;AAEA,EAAO,OAAA;AAAA,IACL,MAAA;AAAA,IACA,eAAA;AAAA,IACA,aAAA;AAAA,IACA,uBAAyB,EAAA,kBAAA;AAAA,IACzB,YAAc,EAAA,gBAAA;AAAA,IACd,WAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var react = require('react');
|
|
4
|
+
|
|
5
|
+
const EMPTY_FILTER = "empty-filter";
|
|
6
|
+
const NULL_FILTER = "null-filter";
|
|
7
|
+
const isEmptyFilter = (f) => f?.id === EMPTY_FILTER;
|
|
8
|
+
const isNullFilter = (f) => f?.id === NULL_FILTER;
|
|
9
|
+
const NullFilterDescriptor = {
|
|
10
|
+
active: true,
|
|
11
|
+
id: NULL_FILTER,
|
|
12
|
+
filter: null
|
|
13
|
+
};
|
|
14
|
+
const EmptyFilterDescriptor = {
|
|
15
|
+
active: true,
|
|
16
|
+
id: EMPTY_FILTER,
|
|
17
|
+
filter: null
|
|
18
|
+
};
|
|
19
|
+
const FilterContext = react.createContext({
|
|
20
|
+
currentFilter: NullFilterDescriptor,
|
|
21
|
+
savedFilters: [],
|
|
22
|
+
onApplyFilter: () => console.warn(
|
|
23
|
+
"[FilterContext] onApplyFilter, no FilterProvider has been configured"
|
|
24
|
+
),
|
|
25
|
+
deleteFilter: () => console.warn(
|
|
26
|
+
"[FilterContext] deleteFilter, no FilterProvider has been configured"
|
|
27
|
+
),
|
|
28
|
+
saveFilter: () => console.warn(
|
|
29
|
+
"[FilterContext] saveFilter, no FilterProvider has been configured"
|
|
30
|
+
),
|
|
31
|
+
setCurrentFilter: () => console.warn(
|
|
32
|
+
"[FilterContext] setCurrentFilter, no FilterProvider has been configured"
|
|
33
|
+
)
|
|
34
|
+
});
|
|
35
|
+
function useCurrentFilter() {
|
|
36
|
+
const { currentFilter, onApplyFilter, setCurrentFilter } = react.useContext(FilterContext);
|
|
37
|
+
return { currentFilter, onApplyFilter, setCurrentFilter };
|
|
38
|
+
}
|
|
39
|
+
function useSavedFilters() {
|
|
40
|
+
const {
|
|
41
|
+
currentFilter,
|
|
42
|
+
onApplyFilter,
|
|
43
|
+
onFilterMenuAction,
|
|
44
|
+
savedFilters,
|
|
45
|
+
saveFilter,
|
|
46
|
+
setCurrentFilter
|
|
47
|
+
} = react.useContext(FilterContext);
|
|
48
|
+
return {
|
|
49
|
+
currentFilter,
|
|
50
|
+
onApplyFilter,
|
|
51
|
+
onFilterMenuAction,
|
|
52
|
+
savedFilters,
|
|
53
|
+
saveFilter,
|
|
54
|
+
setCurrentFilter
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
exports.EMPTY_FILTER = EMPTY_FILTER;
|
|
59
|
+
exports.EmptyFilterDescriptor = EmptyFilterDescriptor;
|
|
60
|
+
exports.FilterContext = FilterContext;
|
|
61
|
+
exports.NULL_FILTER = NULL_FILTER;
|
|
62
|
+
exports.NullFilterDescriptor = NullFilterDescriptor;
|
|
63
|
+
exports.isEmptyFilter = isEmptyFilter;
|
|
64
|
+
exports.isNullFilter = isNullFilter;
|
|
65
|
+
exports.useCurrentFilter = useCurrentFilter;
|
|
66
|
+
exports.useSavedFilters = useSavedFilters;
|
|
67
|
+
//# sourceMappingURL=FilterContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FilterContext.js","sources":["../../../../packages/vuu-filters/src/filter-provider/FilterContext.ts"],"sourcesContent":["import {\n FilterChangeHandler,\n FilterContainerFilter,\n FilterContainerFilterDescriptor,\n} from \"@vuu-ui/vuu-filter-types\";\nimport { FilterMenuActionHandler } from \"../filter-pill/FilterMenu\";\nimport { createContext, useContext } from \"react\";\n\nexport interface FilterContextProps {\n currentFilter: FilterContainerFilterDescriptor;\n deleteFilter: (filterId: string) => void;\n saveFilter: (name: string) => void;\n savedFilters?: FilterContainerFilterDescriptor[];\n // TODO do we need this ?\n onApplyFilter: FilterChangeHandler;\n onFilterMenuAction?: FilterMenuActionHandler;\n setCurrentFilter: (filter: string | FilterContainerFilter) => void;\n}\n\nexport const EMPTY_FILTER = \"empty-filter\";\nexport const NULL_FILTER = \"null-filter\";\n\nexport const isEmptyFilter = (f?: FilterContainerFilterDescriptor) =>\n f?.id === EMPTY_FILTER;\nexport const isNullFilter = (f?: FilterContainerFilterDescriptor) =>\n f?.id === NULL_FILTER;\n\nexport const NullFilterDescriptor: FilterContainerFilterDescriptor = {\n active: true,\n id: NULL_FILTER,\n filter: null,\n};\n\nexport const EmptyFilterDescriptor: FilterContainerFilterDescriptor = {\n active: true,\n id: EMPTY_FILTER,\n filter: null,\n};\n\nexport const FilterContext = createContext<FilterContextProps>({\n currentFilter: NullFilterDescriptor,\n savedFilters: [],\n onApplyFilter: () =>\n console.warn(\n \"[FilterContext] onApplyFilter, no FilterProvider has been configured\",\n ),\n deleteFilter: () =>\n console.warn(\n \"[FilterContext] deleteFilter, no FilterProvider has been configured\",\n ),\n\n saveFilter: () =>\n console.warn(\n \"[FilterContext] saveFilter, no FilterProvider has been configured\",\n ),\n setCurrentFilter: () =>\n console.warn(\n \"[FilterContext] setCurrentFilter, no FilterProvider has been configured\",\n ),\n});\n\nexport function useCurrentFilter() {\n const { currentFilter, onApplyFilter, setCurrentFilter } =\n useContext(FilterContext);\n return { currentFilter, onApplyFilter, setCurrentFilter };\n}\n\nexport function useSavedFilters() {\n const {\n currentFilter,\n onApplyFilter,\n onFilterMenuAction,\n savedFilters,\n saveFilter,\n setCurrentFilter,\n } = useContext(FilterContext);\n return {\n currentFilter,\n onApplyFilter,\n onFilterMenuAction,\n savedFilters,\n saveFilter,\n setCurrentFilter,\n };\n}\n"],"names":["createContext","useContext"],"mappings":";;;;AAmBO,MAAM,YAAe,GAAA;AACrB,MAAM,WAAc,GAAA;AAEpB,MAAM,aAAgB,GAAA,CAAC,CAC5B,KAAA,CAAA,EAAG,EAAO,KAAA;AACL,MAAM,YAAe,GAAA,CAAC,CAC3B,KAAA,CAAA,EAAG,EAAO,KAAA;AAEL,MAAM,oBAAwD,GAAA;AAAA,EACnE,MAAQ,EAAA,IAAA;AAAA,EACR,EAAI,EAAA,WAAA;AAAA,EACJ,MAAQ,EAAA;AACV;AAEO,MAAM,qBAAyD,GAAA;AAAA,EACpE,MAAQ,EAAA,IAAA;AAAA,EACR,EAAI,EAAA,YAAA;AAAA,EACJ,MAAQ,EAAA;AACV;AAEO,MAAM,gBAAgBA,mBAAkC,CAAA;AAAA,EAC7D,aAAe,EAAA,oBAAA;AAAA,EACf,cAAc,EAAC;AAAA,EACf,aAAA,EAAe,MACb,OAAQ,CAAA,IAAA;AAAA,IACN;AAAA,GACF;AAAA,EACF,YAAA,EAAc,MACZ,OAAQ,CAAA,IAAA;AAAA,IACN;AAAA,GACF;AAAA,EAEF,UAAA,EAAY,MACV,OAAQ,CAAA,IAAA;AAAA,IACN;AAAA,GACF;AAAA,EACF,gBAAA,EAAkB,MAChB,OAAQ,CAAA,IAAA;AAAA,IACN;AAAA;AAEN,CAAC;AAEM,SAAS,gBAAmB,GAAA;AACjC,EAAA,MAAM,EAAE,aAAe,EAAA,aAAA,EAAe,gBAAiB,EAAA,GACrDC,iBAAW,aAAa,CAAA;AAC1B,EAAO,OAAA,EAAE,aAAe,EAAA,aAAA,EAAe,gBAAiB,EAAA;AAC1D;AAEO,SAAS,eAAkB,GAAA;AAChC,EAAM,MAAA;AAAA,IACJ,aAAA;AAAA,IACA,aAAA;AAAA,IACA,kBAAA;AAAA,IACA,YAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACF,GAAIA,iBAAW,aAAa,CAAA;AAC5B,EAAO,OAAA;AAAA,IACL,aAAA;AAAA,IACA,aAAA;AAAA,IACA,kBAAA;AAAA,IACA,YAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACF;AACF;;;;;;;;;;;;"}
|