@vuu-ui/vuu-filters 3.3.9 → 3.3.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/package.json +12 -12
  2. package/types/src/FilterAggregator.d.ts +28 -0
  3. package/types/src/FilterModel.d.ts +44 -0
  4. package/types/src/column-filter/ColumnFilter.d.ts +6 -0
  5. package/types/src/column-filter/useColumnFilter.d.ts +43 -0
  6. package/types/src/column-filter/utils.d.ts +4 -0
  7. package/types/src/custom-filters/CustomFilters.d.ts +7 -0
  8. package/types/src/custom-filters/filterBarFocusManagement.d.ts +1 -0
  9. package/types/src/custom-filters/index.d.ts +1 -0
  10. package/types/src/custom-filters/useCustomFilters.d.ts +33 -0
  11. package/types/src/custom-filters/useFilterState.d.ts +17 -0
  12. package/types/src/filter-bar/FilterBar.d.ts +33 -0
  13. package/types/src/filter-bar/FilterBarMenu.d.ts +1 -0
  14. package/types/src/filter-bar/index.d.ts +2 -0
  15. package/types/src/filter-bar/useFilterBar.d.ts +7 -0
  16. package/types/src/filter-clause/ExpandoCombobox.d.ts +10 -0
  17. package/types/src/filter-clause/FilterClause.d.ts +16 -0
  18. package/types/src/filter-clause/column-picker/ColumnPicker.d.ts +13 -0
  19. package/types/src/filter-clause/column-picker/useColumnPicker.d.ts +11 -0
  20. package/types/src/filter-clause/filterClauseFocusManagement.d.ts +15 -0
  21. package/types/src/filter-clause/filterClauseTypes.d.ts +12 -0
  22. package/types/src/filter-clause/index.d.ts +5 -0
  23. package/types/src/filter-clause/operator-picker/OperatorPicker.d.ts +14 -0
  24. package/types/src/filter-clause/operator-picker/operator-utils.d.ts +5 -0
  25. package/types/src/filter-clause/operator-picker/useOperatorPicker.d.ts +12 -0
  26. package/types/src/filter-clause/useFilterClause.d.ts +26 -0
  27. package/types/src/filter-clause/value-editors/FilterClauseValueEditor.d.ts +26 -0
  28. package/types/src/filter-clause/value-editors/FilterClauseValueEditorDate.d.ts +9 -0
  29. package/types/src/filter-clause/value-editors/FilterClauseValueEditorNumber.d.ts +9 -0
  30. package/types/src/filter-clause/value-editors/FilterClauseValueEditorText.d.ts +9 -0
  31. package/types/src/filter-clause/value-editors/FilterClauseValueEditorTime.d.ts +9 -0
  32. package/types/src/filter-container/ExtendedSingleValueFilterClause.d.ts +21 -0
  33. package/types/src/filter-container/FilterContainer.d.ts +23 -0
  34. package/types/src/filter-container/useFilterContainer.d.ts +22 -0
  35. package/types/src/filter-context-menu/useFilterContextMenu.d.ts +6 -0
  36. package/types/src/filter-display/FilterDisplay.d.ts +10 -0
  37. package/types/src/filter-editor/FilterClauseCombinator.d.ts +9 -0
  38. package/types/src/filter-editor/FilterEditor.d.ts +14 -0
  39. package/types/src/filter-editor/index.d.ts +1 -0
  40. package/types/src/filter-editor/useFilterEditor.d.ts +32 -0
  41. package/types/src/filter-panel/FilterPanel.d.ts +9 -0
  42. package/types/src/filter-panel/useFilterPanel.d.ts +14 -0
  43. package/types/src/filter-pill/FilterMenu.d.ts +24 -0
  44. package/types/src/filter-pill/FilterPill.d.ts +16 -0
  45. package/types/src/filter-pill/FilterPillNext.d.ts +15 -0
  46. package/types/src/filter-pill/filterAsReactNode.d.ts +3 -0
  47. package/types/src/filter-pill/getFilterLabel.d.ts +2 -0
  48. package/types/src/filter-pill/getFilterTooltipText.d.ts +2 -0
  49. package/types/src/filter-pill/index.d.ts +1 -0
  50. package/types/src/filter-pill/useFilterPillNext.d.ts +25 -0
  51. package/types/src/filter-pill-menu/FilterPillMenu.d.ts +17 -0
  52. package/types/src/filter-pill-menu/FilterPillMenuOptions.d.ts +12 -0
  53. package/types/src/filter-pill-menu/index.d.ts +1 -0
  54. package/types/src/filter-provider/FilterContext.d.ts +39 -0
  55. package/types/src/filter-provider/FilterProvider.d.ts +10 -0
  56. package/types/src/filter-provider/filter-descriptor-utils.d.ts +7 -0
  57. package/types/src/filter-toggle-button/FilterToggleButton.d.ts +9 -0
  58. package/types/src/filter-utils.d.ts +60 -0
  59. package/types/src/index.d.ts +24 -0
  60. package/types/src/inline-filter/InlineFilter.d.ts +12 -0
  61. package/types/src/inline-filter/index.d.ts +1 -0
  62. package/types/src/inline-filter/useInlineFilter.d.ts +5 -0
  63. package/types/src/quick-filters/QuickFilters.d.ts +17 -0
  64. package/types/src/quick-filters/index.d.ts +1 -0
  65. package/types/src/quick-filters/useQuickFilters.d.ts +12 -0
  66. package/types/src/saved-filters/DeleteFilterPrompt.d.ts +9 -0
  67. package/types/src/saved-filters/FilterNamePrompt.d.ts +6 -0
  68. package/types/src/saved-filters/SavedFilterPanel.d.ts +14 -0
  69. package/types/src/saved-filters/useFilterNamePrompt.d.ts +28 -0
  70. package/types/src/saved-filters/useSavedFilterPanel.d.ts +13 -0
  71. package/types/src/tabbed-filter-container/TabbedFilterContainer.d.ts +10 -0
  72. package/types/src/toggle-filter/ToggleFilter.d.ts +17 -0
  73. package/types/src/toggle-filter/useToggleFilter.d.ts +11 -0
@@ -0,0 +1,14 @@
1
+ import type { Filter } from "@vuu-ui/vuu-filter-types";
2
+ import { ColumnDescriptor } from "@vuu-ui/vuu-table-types";
3
+ import { HTMLAttributes } from "react";
4
+ import { VuuTable } from "@vuu-ui/vuu-protocol-types";
5
+ export type FilterEditSaveHandler = (filter: Filter) => void;
6
+ export type FilterEditCancelHandler = (filter?: Filter) => void;
7
+ export interface FilterEditorProps extends HTMLAttributes<HTMLDivElement> {
8
+ columnDescriptors: readonly ColumnDescriptor[];
9
+ filter?: Filter;
10
+ onCancel: FilterEditCancelHandler;
11
+ onSave: FilterEditSaveHandler;
12
+ vuuTable: VuuTable;
13
+ }
14
+ export declare const FilterEditor: ({ columnDescriptors, filter, onCancel, onSave, vuuTable, ...htmlAttributes }: FilterEditorProps) => import("react").JSX.Element;
@@ -0,0 +1 @@
1
+ export * from "./FilterEditor";
@@ -0,0 +1,32 @@
1
+ import type { ColumnDescriptorsByName } from "@vuu-ui/vuu-filter-types";
2
+ import { KeyboardEventHandler, RefCallback } from "react";
3
+ import { FilterEditorProps } from "./FilterEditor";
4
+ import { FilterModel } from "../FilterModel";
5
+ import { FilterClauseCancelHandler } from "../filter-clause";
6
+ import { FilterClauseCombinatorChangeHandler } from "./FilterClauseCombinator";
7
+ import { MenuActionHandler, MenuBuilder } from "@vuu-ui/vuu-context-menu";
8
+ export interface FilterEditorHookProps extends Pick<FilterEditorProps, "columnDescriptors" | "filter" | "onCancel" | "onSave"> {
9
+ label?: string;
10
+ }
11
+ export declare const useFilterEditor: ({ columnDescriptors, filter, onCancel, onSave, }: FilterEditorHookProps) => {
12
+ columnsByName: ColumnDescriptorsByName;
13
+ filterModel: FilterModel;
14
+ focusSaveButton: () => void;
15
+ isValid: boolean;
16
+ onCancelFilterClause: FilterClauseCancelHandler;
17
+ onCancelFilterEdit: () => void;
18
+ onChangeFilterCombinator: FilterClauseCombinatorChangeHandler;
19
+ onKeyDownCombinator: KeyboardEventHandler<HTMLElement>;
20
+ saveButtonProps: {
21
+ PopupMenuProps: {
22
+ icon: string;
23
+ menuBuilder: MenuBuilder;
24
+ menuActionHandler: MenuActionHandler;
25
+ menuLocation: string;
26
+ };
27
+ onClick: () => boolean | undefined;
28
+ onKeyDown: KeyboardEventHandler;
29
+ };
30
+ saveButtonRef: import("react").RefObject<HTMLDivElement | null>;
31
+ setContainer: RefCallback<HTMLDivElement>;
32
+ };
@@ -0,0 +1,9 @@
1
+ import { HTMLAttributes } from "react";
2
+ import { FilterContainerProps } from "../filter-container/FilterContainer";
3
+ export type FilterPanelPermissions = {
4
+ allowSaveFilter: boolean;
5
+ };
6
+ export interface FilterPanelProps extends HTMLAttributes<HTMLDivElement>, Pick<FilterContainerProps, "filter" | "filterProviderKey" | "onFilterApplied" | "onFilterCleared"> {
7
+ permissions?: FilterPanelPermissions;
8
+ }
9
+ export declare const FilterPanel: import("react").ForwardRefExoticComponent<FilterPanelProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,14 @@
1
+ import { ReactElement } from "react";
2
+ import { FilterContainerProps } from "../filter-container/FilterContainer";
3
+ import { FilterAppliedHandler } from "../filter-container/useFilterContainer";
4
+ import { FilterContainerFilter } from "@vuu-ui/vuu-filter-types";
5
+ export declare const useFilterPanel: ({ filter, filterProviderKey, onFilterApplied, onFilterCleared, }: Pick<FilterContainerProps, "filter" | "filterProviderKey" | "onFilterApplied" | "onFilterCleared">) => {
6
+ clearFilter: () => void;
7
+ disableClear: boolean;
8
+ disableSave: boolean;
9
+ filter: FilterContainerFilter | undefined;
10
+ onFilterApplied: FilterAppliedHandler<FilterContainerFilter>;
11
+ onFilterCleared: () => void;
12
+ saveFilter: () => void;
13
+ saveFilterPrompt: ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | null;
14
+ };
@@ -0,0 +1,24 @@
1
+ import { MenuProps } from "@salt-ds/core";
2
+ import { ColumnDescriptor } from "@vuu-ui/vuu-table-types";
3
+ export type FilterPermissions = {
4
+ /** Closing a filter removes it from current display, without deleting*/
5
+ allowClose?: boolean;
6
+ /** Edit the details of the filter itself */
7
+ allowEdit?: boolean;
8
+ /** Rename the filter */
9
+ allowRename?: boolean;
10
+ /** Removing a filter deletes it entirely */
11
+ allowRemove?: boolean;
12
+ };
13
+ export type FilterMenuActionHandler = <T extends FilterAction = FilterAction>(filterId: string, filterAction: T,
14
+ /**
15
+ * Some menu action handlers may use columns to enrich filter display
16
+ */
17
+ columns?: ColumnDescriptor[]) => void;
18
+ export interface FilterMenuProps extends Pick<MenuProps, "getVirtualElement" | "onOpenChange" | "open"> {
19
+ filterId: string;
20
+ onMenuAction: FilterMenuActionHandler;
21
+ permissions?: FilterPermissions;
22
+ }
23
+ export type FilterAction = "close" | "remove" | "edit" | "rename";
24
+ export declare const FilterMenu: ({ filterId, getVirtualElement, onMenuAction, onOpenChange, open, permissions, }: FilterMenuProps) => import("react").JSX.Element;
@@ -0,0 +1,16 @@
1
+ import { MenuActionHandler } from "@vuu-ui/vuu-context-menu";
2
+ import { ColumnDescriptorsByName, Filter } from "@vuu-ui/vuu-filter-types";
3
+ import { EditableLabelProps, SplitStateButtonProps } from "@vuu-ui/vuu-ui-controls";
4
+ export interface FilterPillProps extends SplitStateButtonProps, Pick<Partial<EditableLabelProps>, "editing" | "editLabelApiRef" | "onExitEditMode"> {
5
+ allowClose?: boolean;
6
+ allowDelete?: boolean;
7
+ allowEdit?: boolean;
8
+ allowRename?: boolean;
9
+ columnsByName?: ColumnDescriptorsByName;
10
+ editable?: boolean;
11
+ filter: Filter;
12
+ index?: number;
13
+ onBeginEdit?: (filter: Filter) => void;
14
+ onMenuAction?: MenuActionHandler;
15
+ }
16
+ export declare const FilterPill: ({ allowClose, allowDelete, allowEdit, allowRename, className: classNameProp, columnsByName, editable, editing, editLabelApiRef, filter, id: idProp, onBeginEdit, onExitEditMode, onMenuAction, ...htmlAttributes }: FilterPillProps) => import("react").JSX.Element;
@@ -0,0 +1,15 @@
1
+ import { HTMLAttributes } from "react";
2
+ import { type FilterPermissions } from "./FilterMenu";
3
+ import { type FilterPillNextHookProps } from "./useFilterPillNext";
4
+ import { ColumnDescriptor } from "@vuu-ui/vuu-table-types";
5
+ export interface FilterPillNextProps extends FilterPillNextHookProps, Omit<HTMLAttributes<HTMLButtonElement>, "id"> {
6
+ /**
7
+ * If provided, these will be used in tooltip to provide
8
+ * richer representation of filter.
9
+ */
10
+ columns?: ColumnDescriptor[];
11
+ id: string;
12
+ permissions?: FilterPermissions;
13
+ showTooltip?: boolean;
14
+ }
15
+ export declare const FilterPillNext: ({ active, appearence, columns, className, defaultActive, filter, id, onClick, onMenuAction: onMenuActionProp, permissions, showTooltip, ...htmlAttributes }: FilterPillNextProps) => import("react").JSX.Element;
@@ -0,0 +1,3 @@
1
+ import { Filter } from "@vuu-ui/vuu-filter-types";
2
+ import { ReactNode } from "react";
3
+ export declare const filterAsReactNode: (f: Filter, getLabel?: (f: Filter) => string) => ReactNode;
@@ -0,0 +1,2 @@
1
+ import { ColumnDescriptorsByName, Filter } from "@vuu-ui/vuu-filter-types";
2
+ export declare const getFilterLabel: (columnsByName?: ColumnDescriptorsByName) => (filter: Filter) => string;
@@ -0,0 +1,2 @@
1
+ import { ColumnDescriptorsByName, Filter } from "@vuu-ui/vuu-filter-types";
2
+ export declare const getFilterAsFormattedText: (columnsByName?: ColumnDescriptorsByName) => (filter: Filter) => string;
@@ -0,0 +1 @@
1
+ export * from "./FilterPill";
@@ -0,0 +1,25 @@
1
+ import type { VirtualElement } from "@floating-ui/react";
2
+ import { MouseEventHandler } from "react";
3
+ import { FilterMenuActionHandler } from "./FilterMenu";
4
+ import { FilterContainerFilter } from "@vuu-ui/vuu-filter-types";
5
+ export interface FilterPillNextHookProps {
6
+ active?: boolean;
7
+ /**
8
+ * Determines how menu items will be presented
9
+ * 'button' - menu items will be context menu
10
+ * 'split-button' - menu items will be dropdowns
11
+ */
12
+ appearence?: "split-button" | "button";
13
+ defaultActive?: boolean;
14
+ filter: FilterContainerFilter;
15
+ onMenuAction?: FilterMenuActionHandler;
16
+ }
17
+ export declare const useFilterPillNext: ({ active: activeProp, appearence, defaultActive, filter, onMenuAction, }: FilterPillNextHookProps) => {
18
+ active: boolean;
19
+ contextMenuOpen: boolean;
20
+ onContextMenu: MouseEventHandler<HTMLButtonElement>;
21
+ onContextMenuOpenChange: import("react").Dispatch<import("react").SetStateAction<boolean>>;
22
+ onMenuAction: FilterMenuActionHandler;
23
+ tooltipText: string;
24
+ virtualElement: VirtualElement | null;
25
+ };
@@ -0,0 +1,17 @@
1
+ import { MenuOptions } from "./FilterPillMenuOptions";
2
+ import { Filter } from "@vuu-ui/vuu-filter-types";
3
+ import { MenuActionHandler } from "@vuu-ui/vuu-context-menu";
4
+ export interface FilterMenuOptions extends MenuOptions {
5
+ filter: Filter;
6
+ }
7
+ export interface FilterPillMenuProps {
8
+ allowClose?: boolean;
9
+ allowDelete?: boolean;
10
+ allowEdit?: boolean;
11
+ allowRename?: boolean;
12
+ filter: Filter;
13
+ location?: string;
14
+ onMenuAction: MenuActionHandler;
15
+ onMenuClose?: () => void;
16
+ }
17
+ export declare const FilterPillMenu: ({ allowClose, allowDelete, allowEdit, allowRename, filter, location, onMenuAction, onMenuClose, }: FilterPillMenuProps) => import("react").JSX.Element;
@@ -0,0 +1,12 @@
1
+ import { ContextMenuItemDescriptor } from "@vuu-ui/vuu-context-menu";
2
+ export type MenuOptions = {
3
+ [key: string]: unknown;
4
+ };
5
+ export interface FilterPillMenuOptions {
6
+ tabIndex: number;
7
+ }
8
+ export declare const isFilterPillMenuOptions: (options: unknown) => options is FilterPillMenuOptions;
9
+ export declare const closeCommand: (options?: MenuOptions) => ContextMenuItemDescriptor;
10
+ export declare const deleteCommand: (options?: MenuOptions) => ContextMenuItemDescriptor;
11
+ export declare const renameCommand: (options?: MenuOptions) => ContextMenuItemDescriptor;
12
+ export declare const editCommand: (options?: MenuOptions) => ContextMenuItemDescriptor;
@@ -0,0 +1 @@
1
+ export * from "./FilterPillMenu";
@@ -0,0 +1,39 @@
1
+ import { FilterContainerFilter, FilterContainerFilterDescriptor, FilterContainerFilterDescriptorWithFilter } from "@vuu-ui/vuu-filter-types";
2
+ import { FilterAction } from "../filter-pill/FilterMenu";
3
+ import { ColumnDescriptor } from "@vuu-ui/vuu-table-types";
4
+ export declare const filterDescriptorHasFilter: (f: FilterContainerFilterDescriptor) => f is FilterContainerFilterDescriptorWithFilter;
5
+ export type FilterContextFilterMenuActionHandler = <T extends FilterAction = FilterAction>(key: string, filterId: string, filterAction: T,
6
+ /**
7
+ * Some menu action handlers may use columns to enrich filter display
8
+ */
9
+ columns?: ColumnDescriptor[]) => void;
10
+ export interface FilterContextProps {
11
+ deleteFilter: (key: string, filterId: string) => void;
12
+ saveFilter: (key: string, name: string) => void;
13
+ filterDescriptors: Map<string, FilterContainerFilterDescriptor[]>;
14
+ onFilterMenuAction?: FilterContextFilterMenuActionHandler;
15
+ clearCurrentFilter: (key: string) => void;
16
+ setCurrentFilter: (key: string, filter: string | FilterContainerFilter) => void;
17
+ filterNameMaxLength?: number;
18
+ }
19
+ export declare const UNSAVED_FILTER = "unsaved-filter";
20
+ export declare const EMPTY_FILTER = "empty-filter";
21
+ export declare const NULL_FILTER = "null-filter";
22
+ export declare const isEmptyFilter: (f?: FilterContainerFilterDescriptor) => boolean;
23
+ export declare const isNullFilter: (f?: FilterContainerFilterDescriptor) => boolean;
24
+ export declare const NullFilterDescriptor: FilterContainerFilterDescriptor;
25
+ export declare const EmptyFilterDescriptor: FilterContainerFilterDescriptor;
26
+ export declare const FilterContext: import("react").Context<FilterContextProps>;
27
+ interface SavedFilterHookProps {
28
+ availableColumns?: ColumnDescriptor[];
29
+ }
30
+ export declare function useSavedFilters(key?: string, props?: SavedFilterHookProps): {
31
+ currentFilter: FilterContainerFilterDescriptor;
32
+ onFilterMenuAction: (filterId: string, filterAction: FilterAction) => void;
33
+ savedFilters: FilterContainerFilterDescriptorWithFilter[] | undefined;
34
+ saveFilter: (name: string) => void;
35
+ clearCurrentFilter: (localKey?: string) => void;
36
+ setCurrentFilter: (filter: string | FilterContainerFilter, localKey?: string) => void;
37
+ filterNameMaxLength: number | undefined;
38
+ };
39
+ export {};
@@ -0,0 +1,10 @@
1
+ import { FilterContainerFilterDescriptor } from "@vuu-ui/vuu-filter-types";
2
+ import { ReactNode } from "react";
3
+ export type SavedFilterRecord = Record<string, FilterContainerFilterDescriptor[]>;
4
+ export interface FilterProviderProps {
5
+ children: ReactNode;
6
+ onFiltersSaved?: (savedFilters: SavedFilterRecord) => void;
7
+ savedFilters?: SavedFilterRecord;
8
+ filterNameMaxLength?: number;
9
+ }
10
+ export declare const FilterProvider: ({ children, onFiltersSaved, savedFilters: savedFiltersProp, filterNameMaxLength, }: FilterProviderProps) => import("react").JSX.Element;
@@ -0,0 +1,7 @@
1
+ import { FilterContainerFilterDescriptor } from "@vuu-ui/vuu-filter-types";
2
+ export declare function findFilter(filterDescriptors: FilterContainerFilterDescriptor[], filterId: string, throwIfNotFound?: true): FilterContainerFilterDescriptor;
3
+ export declare function findFilter(filterDescriptors: FilterContainerFilterDescriptor[], filterId: string, throwIfNotFound: false): FilterContainerFilterDescriptor | undefined;
4
+ export declare const deactivateFilter: (filterDescriptors: FilterContainerFilterDescriptor[]) => FilterContainerFilterDescriptor[];
5
+ export declare const activateFilter: (filterDescriptors: FilterContainerFilterDescriptor[], activeFilterId?: string) => FilterContainerFilterDescriptor[];
6
+ export declare const insertOrReplaceFilter: (filterDescriptors: FilterContainerFilterDescriptor[], filterDescriptor: FilterContainerFilterDescriptor) => FilterContainerFilterDescriptor[];
7
+ export declare const renameFilter: (filterDescriptors: FilterContainerFilterDescriptor[], filterId: string, name: string) => FilterContainerFilterDescriptor[];
@@ -0,0 +1,9 @@
1
+ import { FilterContainerFilterDescriptor } from "@vuu-ui/vuu-filter-types";
2
+ import { ColumnDescriptor } from "@vuu-ui/vuu-table-types";
3
+ export declare const countFilterClauses: ({ filter, }: FilterContainerFilterDescriptor) => number;
4
+ export interface FilterToggleButtonProps {
5
+ columns: readonly ColumnDescriptor[];
6
+ filterProviderKey?: string;
7
+ onToggle: () => void;
8
+ }
9
+ export declare const FilterToggleButton: ({ columns, filterProviderKey, onToggle, }: FilterToggleButtonProps) => import("react").JSX.Element;
@@ -0,0 +1,60 @@
1
+ import { ColumnDescriptor } from "@vuu-ui/vuu-table-types";
2
+ import { Filter, FilterClause, FilterCombinatorOp, FilterContainerFilter, FilterContainerFilterDescriptor, FilterWithPartialClause, MultiClauseFilter, NumericFilterClauseOp } from "@vuu-ui/vuu-filter-types";
3
+ export declare const AND = "and";
4
+ export declare const EQUALS = "=";
5
+ export declare const GREATER_THAN = ">";
6
+ export declare const LESS_THAN = "<";
7
+ export declare const OR = "or";
8
+ export declare const STARTS_WITH = "starts";
9
+ export declare const ENDS_WITH = "ends";
10
+ export declare const IN = "in";
11
+ export type FilterType = "and" | "=" | ">" | ">=" | "in" | "<=" | "<" | "NOT_IN" | "NOT_SW" | "or" | "SW";
12
+ export declare const filterClauses: (filter: Partial<Filter> | FilterWithPartialClause | null, clauses?: Partial<FilterClause>[]) => Partial<FilterClause>[];
13
+ type AddFilterOptions = {
14
+ combineWith: FilterCombinatorOp;
15
+ };
16
+ export declare const removeLastClause: (filter: MultiClauseFilter) => Filter;
17
+ /**
18
+ Allows an empty FilterClause to be appended to an existing filter - for use
19
+ in filter editing UI only.
20
+ */
21
+ export declare const addClause: (existingFilter: Filter, clause: Partial<Filter>, { combineWith }?: AddFilterOptions) => FilterWithPartialClause;
22
+ export declare const addFilter: (existingFilter: Filter | undefined, filter: Filter, { combineWith }?: AddFilterOptions) => Filter | undefined;
23
+ interface CommonFilter {
24
+ colName?: string;
25
+ otherColFilters?: Filter[];
26
+ mode?: any;
27
+ value?: any;
28
+ values?: any;
29
+ op?: "or" | "and";
30
+ column?: string;
31
+ filters?: Filter[];
32
+ }
33
+ export interface OtherFilter extends CommonFilter {
34
+ type: FilterType;
35
+ values?: any[];
36
+ }
37
+ export declare const removeFilter: (sourceFilter: Filter, filterToRemove: Filter) => {
38
+ type: string;
39
+ filters: Filter[];
40
+ } | null;
41
+ export declare const splitFilterOnColumn: (columnName: string, filter?: Filter) => [Filter | undefined, Filter | undefined];
42
+ export declare const overrideColName: (filter: Filter, column: string) => Filter;
43
+ export declare const filterIncludesColumn: (filter: Filter, column: ColumnDescriptor) => boolean;
44
+ export declare const filterEquals: (f1?: Filter, f2?: Filter, strict?: boolean) => boolean;
45
+ export declare const updateFilter: (filter: Filter | undefined, newFilter: Filter | undefined, mode: "add" | "replace") => Filter | undefined;
46
+ export declare const getTypeaheadFilter: (column: string, filterValues: string[], isStartsWithFilter?: boolean) => Filter | undefined;
47
+ export declare const getNumericFilter: (column: string, op?: NumericFilterClauseOp, value?: number) => FilterClause | undefined;
48
+ type FilterClauseList = Array<[string, string]>;
49
+ /**
50
+ * Restructure a FilterContainerFilter into a list of [column, value] tuples
51
+ * suitable for display in a text based control.
52
+ */
53
+ export declare const getFilterClausesForDisplay: (filter?: FilterContainerFilter, columns?: readonly ColumnDescriptor[], clauses?: FilterClauseList) => FilterClauseList;
54
+ /**
55
+ * Given a list of FilterContainerFilterDescriptors and a FilterContainerFilter,
56
+ * find filter descriptor from the list with an equal filter. If
57
+ * none exists, return undefined, otherwise return the matched filter descriptor
58
+ */
59
+ export declare const findMatchingFilter: (filterDescriptors: FilterContainerFilterDescriptor[], filter: FilterContainerFilter) => FilterContainerFilterDescriptor | undefined;
60
+ export {};
@@ -0,0 +1,24 @@
1
+ export { ColumnFilter, type ColumnFilterProps, } from "./column-filter/ColumnFilter";
2
+ export * from "./filter-bar";
3
+ export * from "./filter-clause";
4
+ export { ExtendedSingleValueFilterClause } from "./filter-container/ExtendedSingleValueFilterClause";
5
+ export { FilterContainer, FilterContainerColumnFilter, type FilterContainerColumnFilterProps, type FilterContainerProps, } from "./filter-container/FilterContainer";
6
+ export type { FilterAppliedHandler } from "./filter-container/useFilterContainer";
7
+ export { useFilterContextMenu } from "./filter-context-menu/useFilterContextMenu";
8
+ export { FilterDisplay } from "./filter-display/FilterDisplay";
9
+ export * from "./filter-editor";
10
+ export { FilterPanel } from "./filter-panel/FilterPanel";
11
+ export * from "./filter-pill";
12
+ export { type FilterPermissions } from "./filter-pill/FilterMenu";
13
+ export { FilterPillNext, type FilterPillNextProps, } from "./filter-pill/FilterPillNext";
14
+ export { NULL_FILTER, useSavedFilters } from "./filter-provider/FilterContext";
15
+ export { FilterProvider } from "./filter-provider/FilterProvider";
16
+ export * from "./filter-utils";
17
+ export * from "./FilterModel";
18
+ export * from "./inline-filter";
19
+ export * from "./quick-filters";
20
+ export { FilterNamePrompt as SaveFilterConfirmPrompt, type FilterNamePromptProps as SaveFilterConfirmPromptProps, } from "./saved-filters/FilterNamePrompt";
21
+ export { SavedFilterPanel, type SavedFilterPanelProps, } from "./saved-filters/SavedFilterPanel";
22
+ export type { FilterClickHandler } from "./saved-filters/useSavedFilterPanel";
23
+ export { TabbedFilterContainer, type TabbedFilterContainerProps, } from "./tabbed-filter-container/TabbedFilterContainer";
24
+ export { ToggleFilter, type ToggleFilterProps, } from "./toggle-filter/ToggleFilter";
@@ -0,0 +1,12 @@
1
+ import type { TableSchemaTable } from "@vuu-ui/vuu-data-types";
2
+ import type { VuuFilter } from "@vuu-ui/vuu-protocol-types";
3
+ import type { BaseRowProps } from "@vuu-ui/vuu-table-types";
4
+ import type { HTMLAttributes } from "react";
5
+ import type { FilterAppliedHandler } from "../filter-container/useFilterContainer";
6
+ export type FilterValueChangeHandler = (filter: VuuFilter) => void;
7
+ export interface InlineFilterProps extends Partial<BaseRowProps>, Omit<HTMLAttributes<HTMLDivElement>, "onChange"> {
8
+ onFilterApplied?: FilterAppliedHandler;
9
+ onFilterCleared?: () => void;
10
+ table: TableSchemaTable;
11
+ }
12
+ export declare const InlineFilter: ({ ariaRole, onFilterApplied, onFilterCleared, table, ...htmlAttributes }: InlineFilterProps) => import("react").JSX.Element;
@@ -0,0 +1 @@
1
+ export * from "./InlineFilter";
@@ -0,0 +1,5 @@
1
+ export declare const useInlineFilter: () => {
2
+ columns: import("@vuu-ui/vuu-table-types").RuntimeColumnDescriptor[];
3
+ onKeyDown: import("react").KeyboardEventHandler<HTMLDivElement>;
4
+ virtualColSpan: number;
5
+ };
@@ -0,0 +1,17 @@
1
+ import type { ColumnDescriptor } from "@vuu-ui/vuu-table-types";
2
+ import type { HTMLAttributes } from "react";
3
+ import { FilterBarProps } from "../filter-bar";
4
+ export interface QuickFilterProps extends HTMLAttributes<HTMLDivElement>, Pick<FilterBarProps, "onApplyFilter" | "onClearFilter" | "vuuTable"> {
5
+ allowAddColumn?: boolean;
6
+ allowFind?: boolean;
7
+ availableColumns: readonly ColumnDescriptor[];
8
+ onChangeQuickFilterColumns?: (columns: string[]) => void;
9
+ quickFilterColumns?: string[];
10
+ /**
11
+ * Render a general 'search' control.
12
+ * if true, all columns of type 'string' will be included in the search. Otherwise
13
+ * a list of the columns to include in search can be provided.
14
+ */
15
+ showFind?: boolean | string[];
16
+ }
17
+ export declare const QuickFilters: ({ allowAddColumn, allowFind, availableColumns, onApplyFilter, onClearFilter, onChangeQuickFilterColumns, quickFilterColumns, vuuTable, }: QuickFilterProps) => import("react").JSX.Element;
@@ -0,0 +1 @@
1
+ export * from "./QuickFilters";
@@ -0,0 +1,12 @@
1
+ import { MultiSelectionHandler } from "@vuu-ui/vuu-ui-controls";
2
+ import { CommitHandler } from "@vuu-ui/vuu-utils";
3
+ import { ChangeEventHandler, RefCallback } from "react";
4
+ import { QuickFilterProps } from "./QuickFilters";
5
+ export type QuickFilterHookProps = Pick<QuickFilterProps, "availableColumns" | "onApplyFilter" | "onClearFilter" | "onChangeQuickFilterColumns" | "quickFilterColumns">;
6
+ export declare const useQuickFilters: ({ availableColumns, onApplyFilter, onClearFilter, onChangeQuickFilterColumns, }: QuickFilterProps) => {
7
+ availableColumnNames: string[];
8
+ onChange: ChangeEventHandler<HTMLInputElement>;
9
+ onColumnsSelectionChange: MultiSelectionHandler;
10
+ onCommit: CommitHandler<HTMLElement>;
11
+ rootRef: RefCallback<HTMLDivElement>;
12
+ };
@@ -0,0 +1,9 @@
1
+ import { FilterContainerFilterDescriptor } from "@vuu-ui/vuu-filter-types";
2
+ import { PromptProps } from "@vuu-ui/vuu-ui-controls";
3
+ import { HTMLAttributes } from "react";
4
+ import { ColumnDescriptor } from "@vuu-ui/vuu-table-types";
5
+ export interface DeleteFilterPromptProps extends Pick<PromptProps, "onConfirm" | "onClose" | "open">, HTMLAttributes<HTMLDivElement> {
6
+ columns?: ColumnDescriptor[];
7
+ filterDescriptor: FilterContainerFilterDescriptor;
8
+ }
9
+ export declare const DeleteFilterPrompt: ({ children, className, columns, filterDescriptor, onClose, onConfirm, open, ...htmlAttributes }: DeleteFilterPromptProps) => import("react").JSX.Element;
@@ -0,0 +1,6 @@
1
+ import { PromptProps } from "@vuu-ui/vuu-ui-controls";
2
+ import { HTMLAttributes } from "react";
3
+ import { FilterNamePromptHookProps } from "./useFilterNamePrompt";
4
+ export interface FilterNamePromptProps extends FilterNamePromptHookProps, Pick<PromptProps, "onClose" | "open" | "title">, Omit<HTMLAttributes<HTMLDivElement>, "title"> {
5
+ }
6
+ export declare const FilterNamePrompt: ({ className, filterName, onClose, onConfirm: onConfirmProp, open, title, filterNameMaxLength, ...htmlAttributes }: FilterNamePromptProps) => import("react").JSX.Element;
@@ -0,0 +1,14 @@
1
+ import { ColumnDescriptor } from "@vuu-ui/vuu-table-types";
2
+ import { HTMLAttributes } from "react";
3
+ import { FilterPermissions } from "../filter-pill/FilterMenu";
4
+ import { FilterContainerProps } from "../filter-container/FilterContainer";
5
+ export interface SavedFilterPanelProps extends HTMLAttributes<HTMLDivElement>, Pick<FilterContainerProps, "filterProviderKey"> {
6
+ /**
7
+ * ColumnDescriptors are not required but is passed will be
8
+ * used to provide labels and correct value formatting for
9
+ * displayed filters, e.g in tooltips
10
+ */
11
+ availableColumns?: ColumnDescriptor[];
12
+ filterPillPermissions?: FilterPermissions;
13
+ }
14
+ export declare const SavedFilterPanel: ({ availableColumns, className, filterPillPermissions, filterProviderKey, ...htmlAttributes }: SavedFilterPanelProps) => import("react").JSX.Element;
@@ -0,0 +1,28 @@
1
+ import { ChangeEventHandler } from "react";
2
+ import { CommitHandler, ValueOf } from "@vuu-ui/vuu-utils";
3
+ export interface FilterNamePromptHookProps {
4
+ filterName?: string;
5
+ onConfirm: (filterName: string) => void;
6
+ filterNameMaxLength?: number;
7
+ }
8
+ export declare const Status: {
9
+ readonly Empty: "empty";
10
+ readonly Valid: "valid";
11
+ readonly Invalid: "invalid";
12
+ readonly DuplicateName: "duplicate-name";
13
+ };
14
+ type Status = ValueOf<typeof Status>;
15
+ export declare const useFilterNamePrompt: ({ filterName, onConfirm, }: FilterNamePromptHookProps) => {
16
+ confirmButtonProps: {
17
+ disabled: boolean;
18
+ label: string;
19
+ ref: import("react").RefObject<HTMLButtonElement | null>;
20
+ };
21
+ nameOfDuplicateFilter: string | undefined;
22
+ onChange: ChangeEventHandler<HTMLInputElement>;
23
+ onCommit: CommitHandler;
24
+ onConfirm: () => void;
25
+ status: Status;
26
+ value: string;
27
+ };
28
+ export {};
@@ -0,0 +1,13 @@
1
+ import { SyntheticEvent } from "react";
2
+ import { ColumnDescriptor } from "@vuu-ui/vuu-table-types";
3
+ export type FilterClickHandler = (filterId: string) => void;
4
+ interface SavedFilterPanelProps {
5
+ availableColumns?: ColumnDescriptor[];
6
+ filterProviderKey?: string;
7
+ }
8
+ export declare const useSavedFilterPanel: (props?: SavedFilterPanelProps) => {
9
+ onClickFilter: (e: SyntheticEvent) => void;
10
+ onFilterMenuAction: (filterId: string, filterAction: import("../filter-pill/FilterMenu").FilterAction) => void;
11
+ savedFilters: import("@vuu-ui/vuu-filter-types").FilterContainerFilterDescriptorWithFilter[];
12
+ };
13
+ export {};
@@ -0,0 +1,10 @@
1
+ import type { HTMLAttributes, ReactNode } from "react";
2
+ import { FilterContainerProps } from "../filter-container/FilterContainer";
3
+ import { SavedFilterPanelProps } from "../saved-filters/SavedFilterPanel";
4
+ export interface TabbedFilterContainerProps extends HTMLAttributes<HTMLDivElement>, Pick<FilterContainerProps, "filter" | "filterProviderKey" | "onFilterApplied" | "onFilterCleared"> {
5
+ SavedFilterPanelProps?: Pick<SavedFilterPanelProps, "availableColumns" | "filterPillPermissions">;
6
+ children: ReactNode;
7
+ filterTabLabel?: string;
8
+ savedFilterLabel?: string;
9
+ }
10
+ export declare const TabbedFilterContainer: ({ SavedFilterPanelProps, children, className, filter, filterProviderKey, filterTabLabel, onFilterApplied, onFilterCleared, savedFilterLabel, ...htmlAttributes }: TabbedFilterContainerProps) => import("react").JSX.Element;
@@ -0,0 +1,17 @@
1
+ import { ToggleButtonGroupProps } from "@salt-ds/core";
2
+ import { CommitHandler } from "@vuu-ui/vuu-utils";
3
+ import { type ToggleFilterHookProps } from "./useToggleFilter";
4
+ /**
5
+ * ToggleFilter is designed to work with a FilterProvider and
6
+ * DataSourceProvider. With a DataSourceProvider, values will
7
+ * be validated against available values from datasource.
8
+ * With both FilterProvider and a DataSourceProvider, changes to
9
+ * the currentFilter will also trigger re-evaluation of available
10
+ * values from dataSource.
11
+ * With neither of these Providers available, the ToggleFilter is
12
+ * behaving like a regular ToggleButtonGroup.
13
+ */
14
+ export interface ToggleFilterProps extends ToggleButtonGroupProps, ToggleFilterHookProps {
15
+ onCommit: CommitHandler<HTMLElement>;
16
+ }
17
+ export declare const ToggleFilter: import("react").ForwardRefExoticComponent<ToggleFilterProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,11 @@
1
+ import type { TableSchemaTable } from "@vuu-ui/vuu-data-types";
2
+ export interface ToggleFilterHookProps {
3
+ column: string;
4
+ /**
5
+ * table must be provided to enable validation
6
+ * of values using server data.
7
+ */
8
+ table?: TableSchemaTable;
9
+ values: string[];
10
+ }
11
+ export declare const useToggleFilter: ({ column, table, values, }: ToggleFilterHookProps) => string | undefined;