@vuu-ui/vuu-filters 3.5.0-beta.4 → 3.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +12 -12
- package/src/filter-container/FilterContainer.js +1 -1
- package/src/filter-context-menu/useFilterContextMenu.js +1 -1
- package/src/filter-provider/FilterContext.js +1 -1
- package/src/filter-provider/FilterProvider.js +4 -3
- package/types/filter-container/FilterContainer.d.ts +2 -1
- package/types/filter-provider/FilterContext.d.ts +12 -5
- package/types/filter-provider/FilterProvider.d.ts +9 -1
- package/types/index.d.ts +2 -2
- package/types/src/FilterAggregator.d.ts +28 -0
- package/types/src/FilterModel.d.ts +44 -0
- package/types/src/column-filter/ColumnFilter.d.ts +6 -0
- package/types/src/column-filter/useColumnFilter.d.ts +43 -0
- package/types/src/column-filter/utils.d.ts +4 -0
- package/types/src/custom-filters/CustomFilters.d.ts +7 -0
- package/types/src/custom-filters/filterBarFocusManagement.d.ts +1 -0
- package/types/src/custom-filters/index.d.ts +1 -0
- package/types/src/custom-filters/useCustomFilters.d.ts +33 -0
- package/types/src/custom-filters/useFilterState.d.ts +17 -0
- package/types/src/filter-bar/FilterBar.d.ts +33 -0
- package/types/src/filter-bar/FilterBarMenu.d.ts +1 -0
- package/types/src/filter-bar/index.d.ts +2 -0
- package/types/src/filter-bar/useFilterBar.d.ts +7 -0
- package/types/src/filter-clause/ExpandoCombobox.d.ts +10 -0
- package/types/src/filter-clause/FilterClause.d.ts +16 -0
- package/types/src/filter-clause/column-picker/ColumnPicker.d.ts +13 -0
- package/types/src/filter-clause/column-picker/useColumnPicker.d.ts +11 -0
- package/types/src/filter-clause/filterClauseFocusManagement.d.ts +15 -0
- package/types/src/filter-clause/filterClauseTypes.d.ts +12 -0
- package/types/src/filter-clause/index.d.ts +5 -0
- package/types/src/filter-clause/operator-picker/OperatorPicker.d.ts +14 -0
- package/types/src/filter-clause/operator-picker/operator-utils.d.ts +5 -0
- package/types/src/filter-clause/operator-picker/useOperatorPicker.d.ts +12 -0
- package/types/src/filter-clause/useFilterClause.d.ts +26 -0
- package/types/src/filter-clause/value-editors/FilterClauseValueEditor.d.ts +26 -0
- package/types/src/filter-clause/value-editors/FilterClauseValueEditorDate.d.ts +9 -0
- package/types/src/filter-clause/value-editors/FilterClauseValueEditorNumber.d.ts +9 -0
- package/types/src/filter-clause/value-editors/FilterClauseValueEditorText.d.ts +9 -0
- package/types/src/filter-clause/value-editors/FilterClauseValueEditorTime.d.ts +9 -0
- package/types/src/filter-container/ExtendedSingleValueFilterClause.d.ts +21 -0
- package/types/src/filter-container/FilterContainer.d.ts +23 -0
- package/types/src/filter-container/useFilterContainer.d.ts +22 -0
- package/types/src/filter-context-menu/useFilterContextMenu.d.ts +6 -0
- package/types/src/filter-display/FilterDisplay.d.ts +10 -0
- package/types/src/filter-editor/FilterClauseCombinator.d.ts +9 -0
- package/types/src/filter-editor/FilterEditor.d.ts +14 -0
- package/types/src/filter-editor/index.d.ts +1 -0
- package/types/src/filter-editor/useFilterEditor.d.ts +32 -0
- package/types/src/filter-panel/FilterPanel.d.ts +9 -0
- package/types/src/filter-panel/useFilterPanel.d.ts +14 -0
- package/types/src/filter-pill/FilterMenu.d.ts +24 -0
- package/types/src/filter-pill/FilterPill.d.ts +16 -0
- package/types/src/filter-pill/FilterPillNext.d.ts +15 -0
- package/types/src/filter-pill/filterAsReactNode.d.ts +3 -0
- package/types/src/filter-pill/getFilterLabel.d.ts +2 -0
- package/types/src/filter-pill/getFilterTooltipText.d.ts +2 -0
- package/types/src/filter-pill/index.d.ts +1 -0
- package/types/src/filter-pill/useFilterPillNext.d.ts +25 -0
- package/types/src/filter-pill-menu/FilterPillMenu.d.ts +17 -0
- package/types/src/filter-pill-menu/FilterPillMenuOptions.d.ts +12 -0
- package/types/src/filter-pill-menu/index.d.ts +1 -0
- package/types/src/filter-provider/FilterContext.d.ts +39 -0
- package/types/src/filter-provider/FilterProvider.d.ts +10 -0
- package/types/src/filter-provider/filter-descriptor-utils.d.ts +7 -0
- package/types/src/filter-toggle-button/FilterToggleButton.d.ts +9 -0
- package/types/src/filter-utils.d.ts +60 -0
- package/types/src/index.d.ts +24 -0
- package/types/src/inline-filter/InlineFilter.d.ts +12 -0
- package/types/src/inline-filter/index.d.ts +1 -0
- package/types/src/inline-filter/useInlineFilter.d.ts +5 -0
- package/types/src/quick-filters/QuickFilters.d.ts +17 -0
- package/types/src/quick-filters/index.d.ts +1 -0
- package/types/src/quick-filters/useQuickFilters.d.ts +12 -0
- package/types/src/saved-filters/DeleteFilterPrompt.d.ts +9 -0
- package/types/src/saved-filters/FilterNamePrompt.d.ts +6 -0
- package/types/src/saved-filters/SavedFilterPanel.d.ts +14 -0
- package/types/src/saved-filters/useFilterNamePrompt.d.ts +28 -0
- package/types/src/saved-filters/useSavedFilterPanel.d.ts +13 -0
- package/types/src/tabbed-filter-container/TabbedFilterContainer.d.ts +10 -0
- package/types/src/toggle-filter/ToggleFilter.d.ts +17 -0
- package/types/src/toggle-filter/useToggleFilter.d.ts +11 -0
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "3.5.0
|
|
2
|
+
"version": "3.5.0",
|
|
3
3
|
"main": "./src/index.js",
|
|
4
4
|
"author": "heswell",
|
|
5
5
|
"license": "Apache-2.0",
|
|
@@ -10,19 +10,19 @@
|
|
|
10
10
|
"type-defs": "node ../../scripts/build-type-defs.mjs"
|
|
11
11
|
},
|
|
12
12
|
"devDependencies": {
|
|
13
|
-
"@vuu-ui/vuu-data-types": "3.5.0
|
|
14
|
-
"@vuu-ui/vuu-protocol-types": "3.5.0
|
|
15
|
-
"@vuu-ui/vuu-table-types": "3.5.0
|
|
16
|
-
"@vuu-ui/vuu-filter-types": "3.5.0
|
|
13
|
+
"@vuu-ui/vuu-data-types": "3.5.0",
|
|
14
|
+
"@vuu-ui/vuu-protocol-types": "3.5.0",
|
|
15
|
+
"@vuu-ui/vuu-table-types": "3.5.0",
|
|
16
|
+
"@vuu-ui/vuu-filter-types": "3.5.0"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@vuu-ui/vuu-context-menu": "3.5.0
|
|
20
|
-
"@vuu-ui/vuu-data-react": "3.5.0
|
|
21
|
-
"@vuu-ui/vuu-filter-parser": "3.5.0
|
|
22
|
-
"@vuu-ui/vuu-popups": "3.5.0
|
|
23
|
-
"@vuu-ui/vuu-ui-controls": "3.5.0
|
|
24
|
-
"@vuu-ui/vuu-table": "3.5.0
|
|
25
|
-
"@vuu-ui/vuu-utils": "3.5.0
|
|
19
|
+
"@vuu-ui/vuu-context-menu": "3.5.0",
|
|
20
|
+
"@vuu-ui/vuu-data-react": "3.5.0",
|
|
21
|
+
"@vuu-ui/vuu-filter-parser": "3.5.0",
|
|
22
|
+
"@vuu-ui/vuu-popups": "3.5.0",
|
|
23
|
+
"@vuu-ui/vuu-ui-controls": "3.5.0",
|
|
24
|
+
"@vuu-ui/vuu-table": "3.5.0",
|
|
25
|
+
"@vuu-ui/vuu-utils": "3.5.0",
|
|
26
26
|
"@salt-ds/core": "1.54.1",
|
|
27
27
|
"@salt-ds/lab": "1.0.0-alpha.83",
|
|
28
28
|
"@salt-ds/styles": "0.2.1",
|
|
@@ -12,7 +12,7 @@ const classBase = "vuuFilterContainer";
|
|
|
12
12
|
const notEmpty = (value)=>Array.isArray(value) ? "" !== value[0] && "" !== value[1] : "" !== value;
|
|
13
13
|
const FilterContainerColumnFilter = ({ column: columnProp, operator = "=", pattern: patternProp, variant, ...props })=>{
|
|
14
14
|
const { getColumnFilterPattern } = useColumnFilterRegistry();
|
|
15
|
-
const pattern = patternProp ?? getColumnFilterPattern(columnProp
|
|
15
|
+
const pattern = patternProp ?? getColumnFilterPattern(columnProp);
|
|
16
16
|
const { date, time } = pattern ?? {};
|
|
17
17
|
const column = useMemo(()=>withDateTimePattern(columnProp, date || time ? {
|
|
18
18
|
date,
|
|
@@ -14,7 +14,7 @@ const useFilterContextMenu = ({ filterColumns = "*", filterPatterns, filterProvi
|
|
|
14
14
|
const value = dataRow[column.name];
|
|
15
15
|
if (getTemporalInfo(column)) {
|
|
16
16
|
const pattern = filterPatterns?.[column.name];
|
|
17
|
-
const columnFilterPattern = getColumnFilterPattern(column
|
|
17
|
+
const columnFilterPattern = getColumnFilterPattern(column);
|
|
18
18
|
const columnFilterColumn = pattern ? void 0 : getColumnFilterColumn(column.name) ?? (columnFilterPattern ? withDateTimePattern(column, columnFilterPattern) : void 0);
|
|
19
19
|
const filterColumn = pattern ? withDateTimePattern(column, pattern) : columnFilterColumn;
|
|
20
20
|
const temporalCellFilter = getTemporalCellFilter(filterColumn ?? column, value, void 0 !== columnFilterColumn);
|
|
@@ -41,7 +41,7 @@ function useColumnFilterRegistry(key = "GLOBAL") {
|
|
|
41
41
|
key,
|
|
42
42
|
registerColumnFilterColumn
|
|
43
43
|
]);
|
|
44
|
-
const getPattern = useCallback((
|
|
44
|
+
const getPattern = useCallback((column)=>getColumnFilterPattern?.(column), [
|
|
45
45
|
getColumnFilterPattern
|
|
46
46
|
]);
|
|
47
47
|
return {
|
|
@@ -14,7 +14,7 @@ const mapToRecord = (savedFilters)=>{
|
|
|
14
14
|
});
|
|
15
15
|
return record;
|
|
16
16
|
};
|
|
17
|
-
const FilterProvider = ({ children, columnFilterPatterns, onFiltersSaved, savedFilters: savedFiltersProp, filterNameMaxLength })=>{
|
|
17
|
+
const FilterProvider = ({ children, columnFilterPatterns, columnTypeFilterPatterns, onFiltersSaved, savedFilters: savedFiltersProp, filterNameMaxLength })=>{
|
|
18
18
|
const [, forceRefresh] = useState({});
|
|
19
19
|
const savedFilters = useMemo(()=>savedFiltersProp ? new Map(Object.entries(savedFiltersProp)) : new Map(), [
|
|
20
20
|
savedFiltersProp
|
|
@@ -30,8 +30,9 @@ const FilterProvider = ({ children, columnFilterPatterns, onFiltersSaved, savedF
|
|
|
30
30
|
if (columns.get(column.name) === column) columns.delete(column.name);
|
|
31
31
|
};
|
|
32
32
|
}, []);
|
|
33
|
-
const getColumnFilterPattern = useCallback((
|
|
34
|
-
columnFilterPatterns
|
|
33
|
+
const getColumnFilterPattern = useCallback(({ name, serverDataType })=>columnFilterPatterns?.[name] ?? (serverDataType ? columnTypeFilterPatterns?.[serverDataType] : void 0), [
|
|
34
|
+
columnFilterPatterns,
|
|
35
|
+
columnTypeFilterPatterns
|
|
35
36
|
]);
|
|
36
37
|
const getColumnFilterColumn = useCallback((key, columnName)=>columnFilterColumnsRef.current.get(key)?.get(columnName), []);
|
|
37
38
|
const deleteFilter = useCallback((key, filterId)=>{
|
|
@@ -11,7 +11,8 @@ export interface FilterContainerColumnFilterProps extends Omit<ColumnFilterProps
|
|
|
11
11
|
defaultValue?: ColumnFilterValue;
|
|
12
12
|
/**
|
|
13
13
|
* See ColumnFilter pattern. Defaults to the pattern configured for the
|
|
14
|
-
* column by FilterProvider columnFilterPatterns
|
|
14
|
+
* column by FilterProvider columnFilterPatterns or columnTypeFilterPatterns,
|
|
15
|
+
* if any.
|
|
15
16
|
*/
|
|
16
17
|
pattern?: DateTimePattern;
|
|
17
18
|
}
|
|
@@ -2,6 +2,12 @@ import { FilterContainerFilter, FilterContainerFilterDescriptor, FilterContainer
|
|
|
2
2
|
import { FilterAction } from "../filter-pill/FilterMenu";
|
|
3
3
|
import { ColumnDescriptor } from "@vuu-ui/vuu-table-types";
|
|
4
4
|
import type { DateTimePattern } from "@vuu-ui/vuu-utils";
|
|
5
|
+
import type { VuuColumnDataType } from "@vuu-ui/vuu-protocol-types";
|
|
6
|
+
/** The column attributes by which a ColumnFilter pattern is configured */
|
|
7
|
+
export type ColumnFilterPatternColumn = {
|
|
8
|
+
name: string;
|
|
9
|
+
serverDataType?: VuuColumnDataType;
|
|
10
|
+
};
|
|
5
11
|
export declare const filterDescriptorHasFilter: (f: FilterContainerFilterDescriptor) => f is FilterContainerFilterDescriptorWithFilter;
|
|
6
12
|
export type FilterContextFilterMenuActionHandler = <T extends FilterAction = FilterAction>(key: string, filterId: string, filterAction: T,
|
|
7
13
|
/**
|
|
@@ -15,11 +21,12 @@ export interface FilterContextProps {
|
|
|
15
21
|
*/
|
|
16
22
|
getColumnFilterColumn?: (key: string, columnName: string) => ColumnDescriptor | undefined;
|
|
17
23
|
/**
|
|
18
|
-
* The date/time pattern of the ColumnFilter for the
|
|
19
|
-
*
|
|
20
|
-
*
|
|
24
|
+
* The date/time pattern of the ColumnFilter for the column, as configured
|
|
25
|
+
* by FilterProvider columnFilterPatterns (by column name) or
|
|
26
|
+
* columnTypeFilterPatterns (by serverDataType). Available whether or not
|
|
27
|
+
* the ColumnFilter is mounted.
|
|
21
28
|
*/
|
|
22
|
-
getColumnFilterPattern?: (
|
|
29
|
+
getColumnFilterPattern?: (column: ColumnFilterPatternColumn) => DateTimePattern | undefined;
|
|
23
30
|
/**
|
|
24
31
|
* Register the column descriptor used by a ColumnFilter, which may differ
|
|
25
32
|
* from the Table column descriptor, e.g. a different date/time pattern.
|
|
@@ -48,7 +55,7 @@ export declare const FilterContext: import("react").Context<FilterContextProps>;
|
|
|
48
55
|
*/
|
|
49
56
|
export declare function useColumnFilterRegistry(key?: string): {
|
|
50
57
|
getColumnFilterColumn: (columnName: string) => ColumnDescriptor | undefined;
|
|
51
|
-
getColumnFilterPattern: (
|
|
58
|
+
getColumnFilterPattern: (column: ColumnFilterPatternColumn) => DateTimePattern | undefined;
|
|
52
59
|
registerColumnFilterColumn: (column: ColumnDescriptor) => (() => void) | undefined;
|
|
53
60
|
};
|
|
54
61
|
interface SavedFilterHookProps {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { FilterContainerFilterDescriptor } from "@vuu-ui/vuu-filter-types";
|
|
2
2
|
import { ReactNode } from "react";
|
|
3
3
|
import { type DateTimePattern } from "@vuu-ui/vuu-utils";
|
|
4
|
+
import type { VuuColumnDataType } from "@vuu-ui/vuu-protocol-types";
|
|
4
5
|
export type SavedFilterRecord = Record<string, FilterContainerFilterDescriptor[]>;
|
|
5
6
|
export interface FilterProviderProps {
|
|
6
7
|
children: ReactNode;
|
|
@@ -13,8 +14,15 @@ export interface FilterProviderProps {
|
|
|
13
14
|
* even where ColumnFilters are created on demand.
|
|
14
15
|
*/
|
|
15
16
|
columnFilterPatterns?: Record<string, DateTimePattern>;
|
|
17
|
+
/**
|
|
18
|
+
* Date/time patterns, keyed by serverDataType, of the ColumnFilters within
|
|
19
|
+
* this provider, e.g. { epochtimestampnano: { time: "hh:mm:ss.ms" } }.
|
|
20
|
+
* Applies to columns with no entry in columnFilterPatterns. The column must
|
|
21
|
+
* have a serverDataType (a Table column has one, from the table schema).
|
|
22
|
+
*/
|
|
23
|
+
columnTypeFilterPatterns?: Partial<Record<VuuColumnDataType, DateTimePattern>>;
|
|
16
24
|
onFiltersSaved?: (savedFilters: SavedFilterRecord) => void;
|
|
17
25
|
savedFilters?: SavedFilterRecord;
|
|
18
26
|
filterNameMaxLength?: number;
|
|
19
27
|
}
|
|
20
|
-
export declare const FilterProvider: ({ children, columnFilterPatterns, onFiltersSaved, savedFilters: savedFiltersProp, filterNameMaxLength, }: FilterProviderProps) => import("react/jsx-runtime").JSX.Element;
|
|
28
|
+
export declare const FilterProvider: ({ children, columnFilterPatterns, columnTypeFilterPatterns, onFiltersSaved, savedFilters: savedFiltersProp, filterNameMaxLength, }: FilterProviderProps) => import("react/jsx-runtime").JSX.Element;
|
package/types/index.d.ts
CHANGED
|
@@ -11,8 +11,8 @@ export { FilterPanel } from "./filter-panel/FilterPanel";
|
|
|
11
11
|
export * from "./filter-pill";
|
|
12
12
|
export { type FilterPermissions } from "./filter-pill/FilterMenu";
|
|
13
13
|
export { FilterPillNext, type FilterPillNextProps, } from "./filter-pill/FilterPillNext";
|
|
14
|
-
export { NULL_FILTER, useColumnFilterRegistry, useSavedFilters, } from "./filter-provider/FilterContext";
|
|
15
|
-
export { FilterProvider } from "./filter-provider/FilterProvider";
|
|
14
|
+
export { NULL_FILTER, type ColumnFilterPatternColumn, useColumnFilterRegistry, useSavedFilters, } from "./filter-provider/FilterContext";
|
|
15
|
+
export { FilterProvider, type FilterProviderProps, } from "./filter-provider/FilterProvider";
|
|
16
16
|
export * from "./filter-utils";
|
|
17
17
|
export * from "./FilterModel";
|
|
18
18
|
export * from "./inline-filter";
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { ColumnFilterValue, ExtendedFilterOptions, FilterClauseOp, FilterContainerFilter } from "@vuu-ui/vuu-filter-types";
|
|
2
|
+
import { ColumnDescriptor } from "@vuu-ui/vuu-table-types";
|
|
3
|
+
/**
|
|
4
|
+
* Manages a filter that can be updated one clause at a time.
|
|
5
|
+
* Works with FilterContainer to aggregate multiple filter
|
|
6
|
+
* clauses edited via individual controls. It is just a wrapper
|
|
7
|
+
* around a Map, does not support switching filters - create a
|
|
8
|
+
* new FilterAggregator for a new filter.
|
|
9
|
+
*
|
|
10
|
+
*/
|
|
11
|
+
export declare class FilterAggregator {
|
|
12
|
+
#private;
|
|
13
|
+
constructor(filter?: FilterContainerFilter);
|
|
14
|
+
add(column: ColumnDescriptor, value: ColumnFilterValue, op?: FilterClauseOp | "between" | "between-inclusive", extendedFilterOptions?: ExtendedFilterOptions): void;
|
|
15
|
+
has({ name }: ColumnDescriptor): boolean;
|
|
16
|
+
get({ name }: ColumnDescriptor): FilterContainerFilter | undefined;
|
|
17
|
+
clear(): void;
|
|
18
|
+
/**
|
|
19
|
+
* Remove filter for this column. Return false if no filter found, otw true
|
|
20
|
+
*/
|
|
21
|
+
remove(column: ColumnDescriptor): boolean;
|
|
22
|
+
get isEmpty(): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Count of the number of columns for which filters are stored
|
|
25
|
+
*/
|
|
26
|
+
get count(): number;
|
|
27
|
+
get filter(): FilterContainerFilter | undefined;
|
|
28
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Filter, FilterClause, FilterClauseOp, FilterCombinatorOp } from "@vuu-ui/vuu-filter-types";
|
|
2
|
+
import { EventEmitter } from "@vuu-ui/vuu-utils";
|
|
3
|
+
export type FilterStatusChangeHandler = (isValid: boolean) => void;
|
|
4
|
+
export type FilterChangeHandler = (filter: Partial<Filter>, isValid: boolean) => void;
|
|
5
|
+
export type FilterClauseChangeHandler = (filter: Partial<FilterClause>, isValid: boolean) => void;
|
|
6
|
+
export type FilterClauseModelEvents = {
|
|
7
|
+
filterClause: FilterClauseChangeHandler;
|
|
8
|
+
isValid: FilterStatusChangeHandler;
|
|
9
|
+
};
|
|
10
|
+
export type FilterModelEvents = {
|
|
11
|
+
filter: FilterChangeHandler;
|
|
12
|
+
isValid: FilterStatusChangeHandler;
|
|
13
|
+
};
|
|
14
|
+
export declare class FilterClauseModel extends EventEmitter<FilterClauseModelEvents> {
|
|
15
|
+
#private;
|
|
16
|
+
constructor(filterClause: Partial<FilterClause>);
|
|
17
|
+
get isValid(): boolean;
|
|
18
|
+
private setIsValid;
|
|
19
|
+
get column(): undefined | string;
|
|
20
|
+
set column(column: undefined | string);
|
|
21
|
+
get op(): "in" | import("@vuu-ui/vuu-filter-types").SingleValueFilterClauseOp | undefined;
|
|
22
|
+
setOp(op: undefined | FilterClauseOp): void;
|
|
23
|
+
setValue(value: undefined | string | string[] | number | number[] | boolean | boolean[], isFinal?: boolean): void;
|
|
24
|
+
asFilter(throwIfInvalid?: boolean): FilterClause;
|
|
25
|
+
commit(): void;
|
|
26
|
+
}
|
|
27
|
+
export declare class FilterModel extends EventEmitter<FilterModelEvents> {
|
|
28
|
+
#private;
|
|
29
|
+
constructor(filter?: Filter);
|
|
30
|
+
get isValid(): boolean;
|
|
31
|
+
private setIsValid;
|
|
32
|
+
addNewFilterClause(operator?: FilterCombinatorOp): void;
|
|
33
|
+
addFilterClause(filterClause?: Partial<FilterClause>): void;
|
|
34
|
+
removeFilterClause(filterClause: FilterClauseModel): void;
|
|
35
|
+
checkValidStatus(): void;
|
|
36
|
+
onFilterClauseChange: FilterChangeHandler;
|
|
37
|
+
onFilterClauseStatusChange: (isValid: boolean) => void;
|
|
38
|
+
getFilterClause(index: number): FilterClauseModel;
|
|
39
|
+
get op(): FilterCombinatorOp | undefined;
|
|
40
|
+
setOp(op: FilterCombinatorOp): void;
|
|
41
|
+
get filterClauses(): FilterClauseModel[];
|
|
42
|
+
get isMultiClauseFilter(): boolean;
|
|
43
|
+
asFilter(throwIfInvalid?: boolean): Filter;
|
|
44
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type SegmentedButtonGroupProps } from "@salt-ds/core";
|
|
2
|
+
import { DataItemEditControlProps } from "@vuu-ui/vuu-data-react";
|
|
3
|
+
import { ColumnFilterHookProps } from "./useColumnFilter";
|
|
4
|
+
export interface ColumnFilterProps extends ColumnFilterHookProps, Omit<SegmentedButtonGroupProps, "defaultValue">, Pick<DataItemEditControlProps, "TypeaheadProps" | "table" | "values" | "variant"> {
|
|
5
|
+
}
|
|
6
|
+
export declare const ColumnFilter: import("react").ForwardRefExoticComponent<ColumnFilterProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { ColumnFilterChangeHandler, ColumnFilterCommitHandler, ColumnFilterOp, ColumnFilterValue, ExtendedFilterOptions } from "@vuu-ui/vuu-filter-types";
|
|
2
|
+
import { ColumnDescriptor } from "@vuu-ui/vuu-table-types";
|
|
3
|
+
import { InputProps } from "@salt-ds/core";
|
|
4
|
+
import { CommitHandler } from "@vuu-ui/vuu-utils";
|
|
5
|
+
import { DataItemEditControlProps } from "@vuu-ui/vuu-data-react";
|
|
6
|
+
export interface ColumnFilterHookProps extends Pick<DataItemEditControlProps, "InputProps"> {
|
|
7
|
+
column: ColumnDescriptor;
|
|
8
|
+
/**
|
|
9
|
+
* Filter defaultValue. Pair of values expected when operator is
|
|
10
|
+
* 'between'. If provided, component is uncontrolled
|
|
11
|
+
*/
|
|
12
|
+
defaultValue?: ColumnFilterValue;
|
|
13
|
+
/**
|
|
14
|
+
* Provides for custom filters.
|
|
15
|
+
*/
|
|
16
|
+
extendedFilterOptions?: ExtendedFilterOptions;
|
|
17
|
+
/**
|
|
18
|
+
* Filter change events.
|
|
19
|
+
*/
|
|
20
|
+
onColumnFilterChange?: ColumnFilterChangeHandler;
|
|
21
|
+
/**
|
|
22
|
+
* Filter change events on second control in range filter
|
|
23
|
+
*/
|
|
24
|
+
onColumnRangeFilterChange?: ColumnFilterChangeHandler;
|
|
25
|
+
/**
|
|
26
|
+
* Called when user 'commits' filter value, either by pressing enter,
|
|
27
|
+
* tabbing away from control or making selection from list
|
|
28
|
+
*/
|
|
29
|
+
onCommit: ColumnFilterCommitHandler;
|
|
30
|
+
operator?: ColumnFilterOp;
|
|
31
|
+
/**
|
|
32
|
+
* Filter value. Pair of values expected when operator is
|
|
33
|
+
* 'between'. If provided, component is controlled.
|
|
34
|
+
*/
|
|
35
|
+
value?: ColumnFilterValue;
|
|
36
|
+
}
|
|
37
|
+
export declare const useColumnFilter: ({ InputProps: InputPropsProp, column, defaultValue, extendedFilterOptions, onColumnFilterChange, onColumnRangeFilterChange, onCommit, operator, value: valueProp, }: ColumnFilterHookProps) => {
|
|
38
|
+
InputProps: InputProps;
|
|
39
|
+
InputPropsRange: InputProps;
|
|
40
|
+
isInvalid: boolean;
|
|
41
|
+
onCommit: CommitHandler<HTMLElement>;
|
|
42
|
+
onCommitRange: CommitHandler<HTMLElement>;
|
|
43
|
+
};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Filter } from "@vuu-ui/vuu-filter-types";
|
|
2
|
+
export declare const isStartsWithValue: (value: string) => boolean;
|
|
3
|
+
export declare const getTypeaheadFilter: (column: string, filterValues: string[], isStartsWithFilter?: boolean) => Filter | undefined;
|
|
4
|
+
export declare const getRangeFilter: (column: string, startValue?: number, endValue?: number) => Filter | undefined;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ColumnDescriptor } from "@vuu-ui/vuu-table-types";
|
|
2
|
+
import { HTMLAttributes } from "react";
|
|
3
|
+
import { type FilterBarProps } from "../filter-bar";
|
|
4
|
+
export interface CustomFilterProps extends HTMLAttributes<HTMLDivElement>, Pick<FilterBarProps, "defaultFilterState" | "filterState" | "onApplyFilter" | "onClearFilter" | "onFilterDeleted" | "onFilterRenamed" | "onFilterStateChanged" | "vuuTable"> {
|
|
5
|
+
columnDescriptors: readonly ColumnDescriptor[];
|
|
6
|
+
}
|
|
7
|
+
export declare const CustomFilters: ({ columnDescriptors, defaultFilterState, filterState, onApplyFilter, onClearFilter, onFilterDeleted, onFilterRenamed, onFilterStateChanged, vuuTable, }: CustomFilterProps) => import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const navigateToNextItem: (el: HTMLElement | EventTarget, direction?: "bwd" | "fwd") => void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./CustomFilters";
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ColumnDescriptorsByName, Filter } from "@vuu-ui/vuu-filter-types";
|
|
2
|
+
import { PromptProps } from "@vuu-ui/vuu-ui-controls";
|
|
3
|
+
import { KeyboardEventHandler, RefObject } from "react";
|
|
4
|
+
import { FilterBarProps } from "../filter-bar";
|
|
5
|
+
import { FilterEditCancelHandler, FilterEditSaveHandler } from "../filter-editor";
|
|
6
|
+
import { FilterPillProps } from "../filter-pill";
|
|
7
|
+
export type EditFilterState = "create" | "edit";
|
|
8
|
+
export type FilterState = EditFilterState | "rename";
|
|
9
|
+
export declare const isEditFilterState: (filterState?: string) => filterState is EditFilterState;
|
|
10
|
+
type InteractedFilterState = {
|
|
11
|
+
filter?: Filter;
|
|
12
|
+
index: number;
|
|
13
|
+
state: FilterState;
|
|
14
|
+
};
|
|
15
|
+
export interface CustomFilterHookProps extends Pick<FilterBarProps, "columnDescriptors" | "defaultFilterState" | "filterState" | "onApplyFilter" | "onClearFilter" | "onFilterDeleted" | "onFilterRenamed" | "onFilterStateChanged"> {
|
|
16
|
+
containerRef: RefObject<HTMLDivElement | null>;
|
|
17
|
+
}
|
|
18
|
+
export declare const useCustomFilters: ({ columnDescriptors, containerRef, defaultFilterState, filterState, onApplyFilter, onClearFilter, onFilterDeleted, onFilterRenamed, onFilterStateChanged, }: CustomFilterHookProps) => {
|
|
19
|
+
FilterPillProps: Omit<FilterPillProps, "filter" | "selected">;
|
|
20
|
+
activeFilterIndex: number[];
|
|
21
|
+
addButtonProps: {
|
|
22
|
+
ref: RefObject<HTMLButtonElement | null>;
|
|
23
|
+
onClick: () => void;
|
|
24
|
+
onKeyDown: KeyboardEventHandler;
|
|
25
|
+
};
|
|
26
|
+
columnsByName: ColumnDescriptorsByName;
|
|
27
|
+
filters: Filter[];
|
|
28
|
+
interactedFilterState: InteractedFilterState | undefined;
|
|
29
|
+
onCancelEdit: FilterEditCancelHandler;
|
|
30
|
+
onSave: FilterEditSaveHandler;
|
|
31
|
+
promptProps: PromptProps | null;
|
|
32
|
+
};
|
|
33
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Filter, FilterState } from "@vuu-ui/vuu-filter-types";
|
|
2
|
+
export interface FiltersHookProps {
|
|
3
|
+
defaultFilterState?: FilterState;
|
|
4
|
+
filterState?: FilterState;
|
|
5
|
+
onFilterDeleted?: (filter: Filter) => void;
|
|
6
|
+
onFilterRenamed?: (filter: Filter, name: string) => void;
|
|
7
|
+
onFilterStateChanged?: (s: FilterState) => void;
|
|
8
|
+
}
|
|
9
|
+
export declare const useFilterState: ({ defaultFilterState, onFilterDeleted, onFilterRenamed, onFilterStateChanged, filterState: filterStateProp, }: FiltersHookProps) => {
|
|
10
|
+
activeFilterIndex: number[];
|
|
11
|
+
filters: Filter[];
|
|
12
|
+
onToggleFilterActive: (filterIndex: number, preserveRemainingFilters?: boolean) => void;
|
|
13
|
+
onAddFilter: (filter: Filter) => number;
|
|
14
|
+
onChangeFilter: (oldFilter: Filter, newFilter: Filter) => number;
|
|
15
|
+
onDeleteFilter: (filter: Filter) => number;
|
|
16
|
+
onRenameFilter: (filter: Filter, name: string) => number;
|
|
17
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Filter, FilterHandler, FilterState } from "@vuu-ui/vuu-filter-types";
|
|
2
|
+
import { ColumnDescriptor } from "@vuu-ui/vuu-table-types";
|
|
3
|
+
import { HTMLAttributes } from "react";
|
|
4
|
+
import { QuickFilterProps } from "../quick-filters";
|
|
5
|
+
import { FilterMode } from "./useFilterBar";
|
|
6
|
+
import type { VuuTable } from "@vuu-ui/vuu-protocol-types";
|
|
7
|
+
export type FilterBarVariant = "custom-filters-only" | "quick-filters-only" | "full-filters";
|
|
8
|
+
export interface FilterBarProps extends HTMLAttributes<HTMLDivElement> {
|
|
9
|
+
QuickFilterProps?: Pick<QuickFilterProps, "quickFilterColumns" | "onChangeQuickFilterColumns">;
|
|
10
|
+
/**
|
|
11
|
+
* Used to ensure we present filter editors appropriate to the data type of column.
|
|
12
|
+
* NOTE: Always make sure that these are passed with proper re-render optimization (i.e make
|
|
13
|
+
* sure its a stable reference, in React terminology), otherwise might end up with infinite
|
|
14
|
+
* state updates.
|
|
15
|
+
*/
|
|
16
|
+
columnDescriptors: readonly ColumnDescriptor[];
|
|
17
|
+
defaultFilterMode?: FilterMode;
|
|
18
|
+
defaultFilterState?: FilterState;
|
|
19
|
+
filterMode?: FilterMode;
|
|
20
|
+
filterState?: FilterState;
|
|
21
|
+
onApplyFilter: FilterHandler;
|
|
22
|
+
onChangeFilterMode?: (filterMode: FilterMode) => void;
|
|
23
|
+
onClearFilter: () => void;
|
|
24
|
+
onFilterDeleted?: FilterHandler;
|
|
25
|
+
onFilterRenamed?: (filter: Filter, name: string) => void;
|
|
26
|
+
onFilterStateChanged?: (state: FilterState) => void;
|
|
27
|
+
/**
|
|
28
|
+
* Defines table used in call to Vuu Typeahead service
|
|
29
|
+
*/
|
|
30
|
+
vuuTable?: VuuTable;
|
|
31
|
+
variant?: FilterBarVariant;
|
|
32
|
+
}
|
|
33
|
+
export declare const FilterBar: ({ QuickFilterProps, className: classNameProp, columnDescriptors, defaultFilterMode, defaultFilterState, filterMode: filterModeProp, filterState, onApplyFilter, onChangeFilterMode: onChangeFilterModeProp, onClearFilter, onFilterDeleted, onFilterRenamed, onFilterStateChanged, vuuTable, variant, ...htmlAttributes }: FilterBarProps) => import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const FilterBarMenu: () => import("react").JSX.Element;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { SyntheticEvent } from "react";
|
|
2
|
+
import { FilterBarProps } from "./FilterBar";
|
|
3
|
+
export type FilterMode = "custom-filter" | "quick-filter";
|
|
4
|
+
export declare const useFilterBar: ({ defaultFilterMode, filterMode: filterModeProp, onChangeFilterMode, }: Pick<FilterBarProps, "defaultFilterMode" | "filterMode" | "onChangeFilterMode">) => {
|
|
5
|
+
filterMode: FilterMode;
|
|
6
|
+
onChangeFilterMode: (e: SyntheticEvent<HTMLButtonElement>) => void;
|
|
7
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ComboBoxProps } from "@salt-ds/core";
|
|
2
|
+
import { ReactElement, Ref } from "react";
|
|
3
|
+
export interface ExpandoComboboxProps<Item = string> extends Omit<ComboBoxProps<Item>, "onOpenChange"> {
|
|
4
|
+
itemToString?: (item: Item) => string;
|
|
5
|
+
dropdownOnAutofocus?: boolean;
|
|
6
|
+
onOpenChange?: (open: boolean, reason?: "manual" | "input" | "focus") => void;
|
|
7
|
+
}
|
|
8
|
+
export declare const ExpandoCombobox: <Item = string>(props: ExpandoComboboxProps<Item> & {
|
|
9
|
+
ref?: Ref<HTMLDivElement>;
|
|
10
|
+
}) => ReactElement;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ColumnDescriptorsByName } from "@vuu-ui/vuu-filter-types";
|
|
2
|
+
import { HTMLAttributes } from "react";
|
|
3
|
+
import { FilterClauseModel } from "../FilterModel";
|
|
4
|
+
import { VuuTable } from "@vuu-ui/vuu-protocol-types";
|
|
5
|
+
export type FilterClauseCancelType = "Backspace" | "Escape";
|
|
6
|
+
export type FilterClauseCancelHandler = (filterClause: FilterClauseModel, reason: FilterClauseCancelType) => void;
|
|
7
|
+
export interface FilterClauseProps extends Omit<HTMLAttributes<HTMLDivElement>, "onChange"> {
|
|
8
|
+
columnsByName: ColumnDescriptorsByName;
|
|
9
|
+
filterClauseModel: FilterClauseModel;
|
|
10
|
+
onCancel?: FilterClauseCancelHandler;
|
|
11
|
+
onDropdownOpen?: () => void;
|
|
12
|
+
onFocusSave?: () => void;
|
|
13
|
+
dropdownOnAutofocus?: boolean;
|
|
14
|
+
vuuTable: VuuTable;
|
|
15
|
+
}
|
|
16
|
+
export declare const FilterClause: ({ className, columnsByName, onCancel, onDropdownOpen, onFocusSave, filterClauseModel, vuuTable, dropdownOnAutofocus, ...htmlAttributes }: FilterClauseProps) => import("react").JSX.Element;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ColumnDescriptor } from "@vuu-ui/vuu-table-types";
|
|
2
|
+
import { ComboBoxProps } from "@salt-ds/core";
|
|
3
|
+
import { SyntheticEvent } from "react";
|
|
4
|
+
export type ColumnPickerProps = Pick<ComboBoxProps, "className" | "inputProps" | "value"> & {
|
|
5
|
+
columns: readonly ColumnDescriptor[];
|
|
6
|
+
onSelect: (evt: SyntheticEvent, columnName: string) => void;
|
|
7
|
+
dropdownOnAutofocus?: boolean;
|
|
8
|
+
};
|
|
9
|
+
export declare const ColumnPicker: import("react").ForwardRefExoticComponent<Pick<ComboBoxProps<string>, "className" | "inputProps" | "value"> & {
|
|
10
|
+
columns: readonly ColumnDescriptor[];
|
|
11
|
+
onSelect: (evt: SyntheticEvent, columnName: string) => void;
|
|
12
|
+
dropdownOnAutofocus?: boolean;
|
|
13
|
+
} & import("react").RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ChangeEvent, SyntheticEvent } from "react";
|
|
2
|
+
export declare const useColumnPicker: ({ onSelect, value: valueProp, }: {
|
|
3
|
+
onSelect: (evt: SyntheticEvent, columnName: string) => void;
|
|
4
|
+
value: string;
|
|
5
|
+
}) => {
|
|
6
|
+
onChange: (event: ChangeEvent<HTMLInputElement>) => void;
|
|
7
|
+
onOpenChange: (isOpen: boolean, reason?: "manual" | "input" | "focus") => void;
|
|
8
|
+
onSelectionChange: (evt: SyntheticEvent, [newSelected]: string[]) => void;
|
|
9
|
+
ref: import("react").RefObject<HTMLDivElement | null>;
|
|
10
|
+
value: string;
|
|
11
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { KeyboardEvent } from "react";
|
|
2
|
+
type FilterClauseFieldName = "column" | "operator" | "value";
|
|
3
|
+
export declare const getFocusedFieldDetails: () => [number, string] | [];
|
|
4
|
+
export declare const elementIsFilterCombinator: (element: Element | null) => element is HTMLElement;
|
|
5
|
+
export declare const elementIsFilterClause: (element: Element | null) => element is HTMLElement;
|
|
6
|
+
export declare const focusFilterClauseField: (filterEditor: HTMLElement, filterClauseIndex: number, fieldName?: FilterClauseFieldName) => void;
|
|
7
|
+
export declare const focusLastClauseValue: (filterEditor: HTMLElement) => void;
|
|
8
|
+
export declare const focusNextFocusableElement: (direction?: "fwd" | "bwd") => void;
|
|
9
|
+
export declare const focusNextElement: () => void;
|
|
10
|
+
export declare const clauseIsNotFirst: (el: HTMLElement) => boolean | undefined;
|
|
11
|
+
export declare const tabToPreviousFilterCombinator: (currentElement: HTMLElement) => void;
|
|
12
|
+
export declare const navigateToNextFilterClause: (currentElement: HTMLElement, direction?: "bwd" | "fwd") => void;
|
|
13
|
+
export declare const navigateToNextItemIfAtBoundary: (evt: KeyboardEvent<HTMLInputElement>) => void;
|
|
14
|
+
export declare const focusFirstClauseIfAllClausesValid: (filterEditor: HTMLElement) => void;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { TableSchemaTable } from "@vuu-ui/vuu-data-types";
|
|
2
|
+
import type { ColumnDescriptor } from "@vuu-ui/vuu-table-types";
|
|
3
|
+
import type { InputProps } from "@salt-ds/core";
|
|
4
|
+
import type { FilterClauseValueChangeHandler } from "./useFilterClause";
|
|
5
|
+
export interface FilterClauseValueEditor {
|
|
6
|
+
inputProps?: InputProps["inputProps"];
|
|
7
|
+
column: ColumnDescriptor;
|
|
8
|
+
onDeselect?: () => void;
|
|
9
|
+
onChangeValue: FilterClauseValueChangeHandler;
|
|
10
|
+
onOpenChange?: (open: boolean, reason?: "input" | "manual" | "focus") => void;
|
|
11
|
+
table?: TableSchemaTable;
|
|
12
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { FilterClauseOp } from "@vuu-ui/vuu-filter-types";
|
|
2
|
+
import type { ColumnDescriptor } from "@vuu-ui/vuu-table-types";
|
|
3
|
+
import { ComboBoxProps } from "@salt-ds/core";
|
|
4
|
+
import { SyntheticEvent } from "react";
|
|
5
|
+
export type OperatorPickerProps = Pick<ComboBoxProps, "className" | "inputProps" | "value"> & {
|
|
6
|
+
column: ColumnDescriptor;
|
|
7
|
+
onSelect: (evt: SyntheticEvent, operator: FilterClauseOp) => void;
|
|
8
|
+
dropdownOnAutofocus?: boolean;
|
|
9
|
+
};
|
|
10
|
+
export declare const OperatorPicker: import("react").ForwardRefExoticComponent<Pick<ComboBoxProps<string>, "className" | "inputProps" | "value"> & {
|
|
11
|
+
column: ColumnDescriptor;
|
|
12
|
+
onSelect: (evt: SyntheticEvent, operator: FilterClauseOp) => void;
|
|
13
|
+
dropdownOnAutofocus?: boolean;
|
|
14
|
+
} & import("react").RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ColumnDescriptor } from "@vuu-ui/vuu-table-types";
|
|
2
|
+
import type { FilterClauseOp, NumericFilterClauseOp } from "@vuu-ui/vuu-filter-types";
|
|
3
|
+
export declare const textOperators: FilterClauseOp[];
|
|
4
|
+
export declare const numericOperators: NumericFilterClauseOp[];
|
|
5
|
+
export declare const getOperators: (column: ColumnDescriptor) => FilterClauseOp[];
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ChangeEvent, SyntheticEvent } from "react";
|
|
2
|
+
import { FilterClauseOp } from "@vuu-ui/vuu-filter-types";
|
|
3
|
+
export declare const useOperatorPicker: ({ onSelect, value: valueProp, }: {
|
|
4
|
+
onSelect: (evt: SyntheticEvent, op: FilterClauseOp) => void;
|
|
5
|
+
value: string;
|
|
6
|
+
}) => {
|
|
7
|
+
onChange: (event: ChangeEvent<HTMLInputElement>) => void;
|
|
8
|
+
onOpenChange: (isOpen: boolean, reason?: "manual" | "input" | "focus") => void;
|
|
9
|
+
onSelectionChange: (evt: SyntheticEvent, [newSelected]: FilterClauseOp[]) => void;
|
|
10
|
+
ref: import("react").RefObject<HTMLDivElement | null>;
|
|
11
|
+
value: string;
|
|
12
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { FilterClause, FilterClauseOp } from "@vuu-ui/vuu-filter-types";
|
|
2
|
+
import { KeyboardEvent, RefCallback, SyntheticEvent } from "react";
|
|
3
|
+
import { FilterClauseProps } from "./FilterClause";
|
|
4
|
+
export type FilterClauseEditorHookProps = Pick<FilterClauseProps, "columnsByName" | "filterClauseModel" | "onCancel" | "onFocusSave"> & {
|
|
5
|
+
onOpenChange?: (open: boolean, reason?: "focus" | "input" | "manual") => void;
|
|
6
|
+
dropdownOnAutofocus?: boolean;
|
|
7
|
+
};
|
|
8
|
+
export type FilterClauseValueChangeHandler = (value: string | string[] | number | number[], isFinal?: boolean) => void;
|
|
9
|
+
export declare const useFilterClause: ({ filterClauseModel, onCancel, columnsByName, onFocusSave, onOpenChange, dropdownOnAutofocus, }: FilterClauseEditorHookProps) => {
|
|
10
|
+
inputProps: {
|
|
11
|
+
onKeyDownCapture: (evt: KeyboardEvent<HTMLInputElement>) => void;
|
|
12
|
+
tabIndex: number;
|
|
13
|
+
onFocus: () => true;
|
|
14
|
+
};
|
|
15
|
+
columnRef: import("react").RefObject<HTMLDivElement | null>;
|
|
16
|
+
filterClause: Partial<FilterClause>;
|
|
17
|
+
onChangeValue: FilterClauseValueChangeHandler;
|
|
18
|
+
onDeselectValue: () => void;
|
|
19
|
+
onSelectColumn: (evt: SyntheticEvent, selectedColumn: string) => void;
|
|
20
|
+
onSelectOperator: (_: SyntheticEvent, selectedOp: FilterClauseOp) => void;
|
|
21
|
+
onOpenChange: (open: boolean, closeReason?: "focus" | "input" | "manual") => void;
|
|
22
|
+
operatorRef: import("react").RefObject<HTMLDivElement | null>;
|
|
23
|
+
selectedColumn: import("@vuu-ui/vuu-table-types").ColumnDescriptor;
|
|
24
|
+
valueRef: RefCallback<HTMLDivElement>;
|
|
25
|
+
showDropdownOnAutoFocus: boolean;
|
|
26
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { TableSchemaTable } from "@vuu-ui/vuu-data-types";
|
|
2
|
+
import { SingleValueFilterClauseOp } from "@vuu-ui/vuu-filter-types";
|
|
3
|
+
export declare const FilterClauseValueEditor: import("react").ForwardRefExoticComponent<Pick<{
|
|
4
|
+
inputProps: {
|
|
5
|
+
onKeyDownCapture: (evt: import("react").KeyboardEvent<HTMLInputElement>) => void;
|
|
6
|
+
tabIndex: number;
|
|
7
|
+
onFocus: () => true;
|
|
8
|
+
};
|
|
9
|
+
columnRef: import("react").RefObject<HTMLDivElement | null>;
|
|
10
|
+
filterClause: Partial<import("@vuu-ui/vuu-filter-types").FilterClause>;
|
|
11
|
+
onChangeValue: import("../useFilterClause").FilterClauseValueChangeHandler;
|
|
12
|
+
onDeselectValue: () => void;
|
|
13
|
+
onSelectColumn: (evt: import("react").SyntheticEvent, selectedColumn: string) => void;
|
|
14
|
+
onSelectOperator: (_: import("react").SyntheticEvent, selectedOp: import("@vuu-ui/vuu-filter-types").FilterClauseOp) => void;
|
|
15
|
+
onOpenChange: (open: boolean, closeReason?: "focus" | "input" | "manual") => void;
|
|
16
|
+
operatorRef: import("react").RefObject<HTMLDivElement | null>;
|
|
17
|
+
selectedColumn: import("@vuu-ui/vuu-table-types").ColumnDescriptor;
|
|
18
|
+
valueRef: import("react").RefCallback<HTMLDivElement>;
|
|
19
|
+
showDropdownOnAutoFocus: boolean;
|
|
20
|
+
}, "inputProps" | "onChangeValue" | "onDeselectValue" | "onOpenChange" | "selectedColumn"> & {
|
|
21
|
+
table?: TableSchemaTable;
|
|
22
|
+
} & {
|
|
23
|
+
operator?: SingleValueFilterClauseOp | "in";
|
|
24
|
+
value?: string | string[] | number | number[] | boolean | boolean[];
|
|
25
|
+
dropdownOnAutofocus?: boolean;
|
|
26
|
+
} & import("react").RefAttributes<HTMLDivElement>>;
|