@vuu-ui/vuu-filters 3.4.1 → 3.5.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +12 -12
- package/src/FilterAggregator.js +61 -42
- package/src/column-filter/ColumnFilter.js +15 -6
- package/src/filter-clause/operator-picker/operator-utils.js +2 -2
- package/src/filter-clause/value-editors/FilterClauseValueEditor.js +8 -5
- package/src/filter-clause/value-editors/FilterClauseValueEditorDate.js +11 -43
- package/src/filter-clause/value-editors/FilterClauseValueEditorTime.js +16 -42
- package/src/filter-container/ExtendedSingleValueFilterClause.js +21 -7
- package/src/filter-container/FilterContainer.js +19 -8
- package/src/filter-context-menu/useFilterContextMenu.js +34 -9
- package/src/filter-pill/getFilterTooltipText.js +2 -8
- package/src/filter-provider/FilterContext.js +16 -1
- package/src/filter-provider/FilterProvider.js +14 -1
- package/src/filter-utils.js +5 -10
- package/src/index.js +1 -1
- package/src/quick-filters/useQuickFilters.js +6 -1
- package/types/column-filter/ColumnFilter.d.ts +13 -0
- package/types/filter-clause/value-editors/FilterClauseValueEditorDate.d.ts +13 -2
- package/types/filter-clause/value-editors/FilterClauseValueEditorTime.d.ts +15 -4
- package/types/filter-container/ExtendedSingleValueFilterClause.d.ts +6 -0
- package/types/filter-container/FilterContainer.d.ts +1 -1
- package/types/filter-context-menu/useFilterContextMenu.d.ts +11 -1
- package/types/filter-provider/FilterContext.d.ts +19 -0
- package/types/index.d.ts +2 -2
- package/types/src/FilterAggregator.d.ts +0 -28
- package/types/src/FilterModel.d.ts +0 -44
- package/types/src/column-filter/ColumnFilter.d.ts +0 -6
- package/types/src/column-filter/useColumnFilter.d.ts +0 -43
- package/types/src/column-filter/utils.d.ts +0 -4
- package/types/src/custom-filters/CustomFilters.d.ts +0 -7
- package/types/src/custom-filters/filterBarFocusManagement.d.ts +0 -1
- package/types/src/custom-filters/index.d.ts +0 -1
- package/types/src/custom-filters/useCustomFilters.d.ts +0 -33
- package/types/src/custom-filters/useFilterState.d.ts +0 -17
- package/types/src/filter-bar/FilterBar.d.ts +0 -33
- package/types/src/filter-bar/FilterBarMenu.d.ts +0 -1
- package/types/src/filter-bar/index.d.ts +0 -2
- package/types/src/filter-bar/useFilterBar.d.ts +0 -7
- package/types/src/filter-clause/ExpandoCombobox.d.ts +0 -10
- package/types/src/filter-clause/FilterClause.d.ts +0 -16
- package/types/src/filter-clause/column-picker/ColumnPicker.d.ts +0 -13
- package/types/src/filter-clause/column-picker/useColumnPicker.d.ts +0 -11
- package/types/src/filter-clause/filterClauseFocusManagement.d.ts +0 -15
- package/types/src/filter-clause/filterClauseTypes.d.ts +0 -12
- package/types/src/filter-clause/index.d.ts +0 -5
- package/types/src/filter-clause/operator-picker/OperatorPicker.d.ts +0 -14
- package/types/src/filter-clause/operator-picker/operator-utils.d.ts +0 -5
- package/types/src/filter-clause/operator-picker/useOperatorPicker.d.ts +0 -12
- package/types/src/filter-clause/useFilterClause.d.ts +0 -26
- package/types/src/filter-clause/value-editors/FilterClauseValueEditor.d.ts +0 -26
- package/types/src/filter-clause/value-editors/FilterClauseValueEditorDate.d.ts +0 -9
- package/types/src/filter-clause/value-editors/FilterClauseValueEditorNumber.d.ts +0 -9
- package/types/src/filter-clause/value-editors/FilterClauseValueEditorText.d.ts +0 -9
- package/types/src/filter-clause/value-editors/FilterClauseValueEditorTime.d.ts +0 -9
- package/types/src/filter-container/ExtendedSingleValueFilterClause.d.ts +0 -21
- package/types/src/filter-container/FilterContainer.d.ts +0 -23
- package/types/src/filter-container/useFilterContainer.d.ts +0 -22
- package/types/src/filter-context-menu/useFilterContextMenu.d.ts +0 -6
- package/types/src/filter-display/FilterDisplay.d.ts +0 -10
- package/types/src/filter-editor/FilterClauseCombinator.d.ts +0 -9
- package/types/src/filter-editor/FilterEditor.d.ts +0 -14
- package/types/src/filter-editor/index.d.ts +0 -1
- package/types/src/filter-editor/useFilterEditor.d.ts +0 -32
- package/types/src/filter-panel/FilterPanel.d.ts +0 -9
- package/types/src/filter-panel/useFilterPanel.d.ts +0 -14
- package/types/src/filter-pill/FilterMenu.d.ts +0 -24
- package/types/src/filter-pill/FilterPill.d.ts +0 -16
- package/types/src/filter-pill/FilterPillNext.d.ts +0 -15
- package/types/src/filter-pill/filterAsReactNode.d.ts +0 -3
- package/types/src/filter-pill/getFilterLabel.d.ts +0 -2
- package/types/src/filter-pill/getFilterTooltipText.d.ts +0 -2
- package/types/src/filter-pill/index.d.ts +0 -1
- package/types/src/filter-pill/useFilterPillNext.d.ts +0 -25
- package/types/src/filter-pill-menu/FilterPillMenu.d.ts +0 -17
- package/types/src/filter-pill-menu/FilterPillMenuOptions.d.ts +0 -12
- package/types/src/filter-pill-menu/index.d.ts +0 -1
- package/types/src/filter-provider/FilterContext.d.ts +0 -39
- package/types/src/filter-provider/FilterProvider.d.ts +0 -10
- package/types/src/filter-provider/filter-descriptor-utils.d.ts +0 -7
- package/types/src/filter-toggle-button/FilterToggleButton.d.ts +0 -9
- package/types/src/filter-utils.d.ts +0 -60
- package/types/src/index.d.ts +0 -24
- package/types/src/inline-filter/InlineFilter.d.ts +0 -12
- package/types/src/inline-filter/index.d.ts +0 -1
- package/types/src/inline-filter/useInlineFilter.d.ts +0 -5
- package/types/src/quick-filters/QuickFilters.d.ts +0 -17
- package/types/src/quick-filters/index.d.ts +0 -1
- package/types/src/quick-filters/useQuickFilters.d.ts +0 -12
- package/types/src/saved-filters/DeleteFilterPrompt.d.ts +0 -9
- package/types/src/saved-filters/FilterNamePrompt.d.ts +0 -6
- package/types/src/saved-filters/SavedFilterPanel.d.ts +0 -14
- package/types/src/saved-filters/useFilterNamePrompt.d.ts +0 -28
- package/types/src/saved-filters/useSavedFilterPanel.d.ts +0 -13
- package/types/src/tabbed-filter-container/TabbedFilterContainer.d.ts +0 -10
- package/types/src/toggle-filter/ToggleFilter.d.ts +0 -17
- package/types/src/toggle-filter/useToggleFilter.d.ts +0 -11
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useCallback, useMemo, useState } from "react";
|
|
2
|
+
import { useCallback, useMemo, useRef, useState } from "react";
|
|
3
3
|
import { FilterNamePrompt } from "../saved-filters/FilterNamePrompt.js";
|
|
4
4
|
import { DeleteFilterPrompt } from "../saved-filters/DeleteFilterPrompt.js";
|
|
5
5
|
import { activateFilter, findFilter, insertOrReplaceFilter, renameFilter } from "./filter-descriptor-utils.js";
|
|
@@ -20,6 +20,17 @@ const FilterProvider = ({ children, onFiltersSaved, savedFilters: savedFiltersPr
|
|
|
20
20
|
savedFiltersProp
|
|
21
21
|
]);
|
|
22
22
|
const [dialog, setDialog] = useState(null);
|
|
23
|
+
const columnFilterColumnsRef = useRef(new Map());
|
|
24
|
+
const registerColumnFilterColumn = useCallback((key, column)=>{
|
|
25
|
+
const { current: columnsByKey } = columnFilterColumnsRef;
|
|
26
|
+
let columns = columnsByKey.get(key);
|
|
27
|
+
if (void 0 === columns) columnsByKey.set(key, columns = new Map());
|
|
28
|
+
columns.set(column.name, column);
|
|
29
|
+
return ()=>{
|
|
30
|
+
if (columns.get(column.name) === column) columns.delete(column.name);
|
|
31
|
+
};
|
|
32
|
+
}, []);
|
|
33
|
+
const getColumnFilterColumn = useCallback((key, columnName)=>columnFilterColumnsRef.current.get(key)?.get(columnName), []);
|
|
23
34
|
const deleteFilter = useCallback((key, filterId)=>{
|
|
24
35
|
const filterDescriptors = savedFilters.get(key);
|
|
25
36
|
if (void 0 === filterDescriptors) throw Error(`[FilterProvider] deleteFilter, key ${key} not found`);
|
|
@@ -171,6 +182,8 @@ const FilterProvider = ({ children, onFiltersSaved, savedFilters: savedFiltersPr
|
|
|
171
182
|
]);
|
|
172
183
|
return /*#__PURE__*/ jsxs(FilterContext.Provider, {
|
|
173
184
|
value: {
|
|
185
|
+
getColumnFilterColumn,
|
|
186
|
+
registerColumnFilterColumn,
|
|
174
187
|
onFilterMenuAction: handleFilterMenuAction,
|
|
175
188
|
deleteFilter,
|
|
176
189
|
saveFilter: handleSaveFilter,
|
package/src/filter-utils.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { extractFilterForColumn, filtersAreEqual, formatTemporalFilterValue, isAndFilter, isBetweenFilter, isInFilter, isMultiClauseFilter, isMultiValueFilter, isOrFilter, isSingleValueFilter, isTemporal, partition } from "@vuu-ui/vuu-utils";
|
|
2
2
|
const AND = "and";
|
|
3
3
|
const EQUALS = "=";
|
|
4
4
|
const GREATER_THAN = ">";
|
|
@@ -260,6 +260,7 @@ const getNumericFilter = (column, op, value)=>{
|
|
|
260
260
|
value
|
|
261
261
|
};
|
|
262
262
|
};
|
|
263
|
+
const formatValueForDisplay = (value, column)=>isTemporal(column) ? formatTemporalFilterValue(value, column) : value.toString();
|
|
263
264
|
const getFilterClausesForDisplay = (filter, columns = [], clauses = [])=>{
|
|
264
265
|
if (void 0 === filter) ;
|
|
265
266
|
else if (isSingleValueFilter(filter)) {
|
|
@@ -268,7 +269,7 @@ const getFilterClausesForDisplay = (filter, columns = [], clauses = [])=>{
|
|
|
268
269
|
const { name, label = name } = column;
|
|
269
270
|
clauses.push([
|
|
270
271
|
label,
|
|
271
|
-
filter.value
|
|
272
|
+
formatValueForDisplay(filter.value, column)
|
|
272
273
|
]);
|
|
273
274
|
} else clauses.push([
|
|
274
275
|
filter.column,
|
|
@@ -277,17 +278,11 @@ const getFilterClausesForDisplay = (filter, columns = [], clauses = [])=>{
|
|
|
277
278
|
} else if (isBetweenFilter(filter)) {
|
|
278
279
|
const [f1, f2] = filter.filters;
|
|
279
280
|
const column = columns.find((c)=>c.name === f1.column);
|
|
280
|
-
if (
|
|
281
|
-
const { name, label = name } = column;
|
|
282
|
-
clauses.push([
|
|
283
|
-
label,
|
|
284
|
-
`${Time.millisToTimeString(f1.value)} - ${Time.millisToTimeString(f2.value)}`
|
|
285
|
-
]);
|
|
286
|
-
} else if (column) {
|
|
281
|
+
if (column) {
|
|
287
282
|
const { name, label = name } = column;
|
|
288
283
|
clauses.push([
|
|
289
284
|
label,
|
|
290
|
-
`${f1.value} - ${f2.value}`
|
|
285
|
+
`${formatValueForDisplay(f1.value, column)} - ${formatValueForDisplay(f2.value, column)}`
|
|
291
286
|
]);
|
|
292
287
|
} else clauses.push([
|
|
293
288
|
f1.column,
|
package/src/index.js
CHANGED
|
@@ -13,7 +13,7 @@ export { useFilterContextMenu } from "./filter-context-menu/useFilterContextMenu
|
|
|
13
13
|
export { FilterDisplay } from "./filter-display/FilterDisplay.js";
|
|
14
14
|
export { FilterPanel } from "./filter-panel/FilterPanel.js";
|
|
15
15
|
export { FilterPillNext } from "./filter-pill/FilterPillNext.js";
|
|
16
|
-
export { NULL_FILTER, useSavedFilters } from "./filter-provider/FilterContext.js";
|
|
16
|
+
export { NULL_FILTER, useColumnFilterRegistry, useSavedFilters } from "./filter-provider/FilterContext.js";
|
|
17
17
|
export { FilterProvider } from "./filter-provider/FilterProvider.js";
|
|
18
18
|
export { FilterNamePrompt as SaveFilterConfirmPrompt } from "./saved-filters/FilterNamePrompt.js";
|
|
19
19
|
export { SavedFilterPanel } from "./saved-filters/SavedFilterPanel.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isNumericColumn, queryClosest } from "@vuu-ui/vuu-utils";
|
|
1
|
+
import { getTypedValueForDescriptor, isNumericColumn, isTemporalColumn, queryClosest } from "@vuu-ui/vuu-utils";
|
|
2
2
|
import { useCallback, useMemo, useRef } from "react";
|
|
3
3
|
const findColumn = (columns, name)=>{
|
|
4
4
|
const column = columns?.find((col)=>col.name === name);
|
|
@@ -38,6 +38,11 @@ const createFilterClause = ([identifier, value], availableColumns)=>{
|
|
|
38
38
|
} else throw Error("columns must be provided for find operation");
|
|
39
39
|
{
|
|
40
40
|
const column = findColumn(availableColumns, identifier);
|
|
41
|
+
if (isTemporalColumn(column)) return {
|
|
42
|
+
column: identifier,
|
|
43
|
+
op: "=",
|
|
44
|
+
value: getTypedValueForDescriptor(value, column, true)
|
|
45
|
+
};
|
|
41
46
|
if (!isNumericColumn(column)) return {
|
|
42
47
|
column: identifier,
|
|
43
48
|
op: "contains",
|
|
@@ -1,6 +1,19 @@
|
|
|
1
1
|
import { type SegmentedButtonGroupProps } from "@salt-ds/core";
|
|
2
2
|
import { DataItemEditControlProps } from "@vuu-ui/vuu-data-react";
|
|
3
3
|
import { ColumnFilterHookProps } from "./useColumnFilter";
|
|
4
|
+
import { type DateTimePattern } from "@vuu-ui/vuu-utils";
|
|
4
5
|
export interface ColumnFilterProps extends ColumnFilterHookProps, Omit<SegmentedButtonGroupProps, "defaultValue">, Pick<DataItemEditControlProps, "TypeaheadProps" | "table" | "values" | "variant"> {
|
|
6
|
+
/**
|
|
7
|
+
* Temporal columns only. The date/time pattern used by the filter control,
|
|
8
|
+
* overriding any pattern configured on the column type. The pattern also
|
|
9
|
+
* determines the control rendered: a time picker for a time only pattern
|
|
10
|
+
* (with milliseconds if time is 'hh:mm:ss.ms'), otherwise a date picker.
|
|
11
|
+
* This allows a filter to use different formatting to the Table, e.g.
|
|
12
|
+
* the Table might display nanoseconds whilst the filter accepts a time
|
|
13
|
+
* of day with milliseconds. The column passed to change and commit
|
|
14
|
+
* handlers is the column with this pattern applied (see withDateTimePattern),
|
|
15
|
+
* so that filter values are interpreted consistently with the control.
|
|
16
|
+
*/
|
|
17
|
+
pattern?: DateTimePattern;
|
|
5
18
|
}
|
|
6
19
|
export declare const ColumnFilter: import("react").ForwardRefExoticComponent<ColumnFilterProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
@@ -1,9 +1,20 @@
|
|
|
1
|
+
import { type TemporalInfo } from "@vuu-ui/vuu-utils";
|
|
1
2
|
import type { NumericFilterClauseOp } from "@vuu-ui/vuu-filter-types";
|
|
2
3
|
import type { FilterClauseValueEditor } from "../filterClauseTypes";
|
|
3
4
|
interface FilterClauseValueEditorDateProps extends Pick<FilterClauseValueEditor, "onChangeValue" | "inputProps"> {
|
|
4
5
|
className?: string;
|
|
5
|
-
value: number | undefined;
|
|
6
6
|
operator: NumericFilterClauseOp;
|
|
7
|
+
temporalInfo: TemporalInfo;
|
|
8
|
+
/**
|
|
9
|
+
* epoch value in the column encoding (millis number or nanos string)
|
|
10
|
+
*/
|
|
11
|
+
value: number | string | undefined;
|
|
7
12
|
}
|
|
8
|
-
|
|
13
|
+
/**
|
|
14
|
+
* Date filter value editor. The value emitted is the start of the selected day
|
|
15
|
+
* (in the column time zone), in the column encoding. When the filter query is
|
|
16
|
+
* created, the clause is applied to the whole day e.g. '=' selects all values
|
|
17
|
+
* on that day, '>' selects all values after that day (see temporalFilterAsQuery).
|
|
18
|
+
*/
|
|
19
|
+
export declare const FilterClauseValueEditorDate: ({ className, inputProps, onChangeValue, temporalInfo, value, }: FilterClauseValueEditorDateProps) => import("react/jsx-runtime").JSX.Element;
|
|
9
20
|
export {};
|
|
@@ -1,9 +1,20 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { type TemporalInfo } from "@vuu-ui/vuu-utils";
|
|
2
|
+
import type { NumericFilterClauseOp } from "@vuu-ui/vuu-filter-types";
|
|
3
|
+
import type { FilterClauseValueEditor } from "../filterClauseTypes";
|
|
3
4
|
interface FilterClauseValueEditorTimeProps extends Pick<FilterClauseValueEditor, "onChangeValue" | "inputProps"> {
|
|
4
5
|
className?: string;
|
|
5
|
-
value: number | undefined;
|
|
6
6
|
operator: NumericFilterClauseOp;
|
|
7
|
+
temporalInfo: TemporalInfo;
|
|
8
|
+
/**
|
|
9
|
+
* A TimeString (hh:mm:ss) or, for filters created by an earlier version,
|
|
10
|
+
* an epoch value.
|
|
11
|
+
*/
|
|
12
|
+
value: number | string | undefined;
|
|
7
13
|
}
|
|
8
|
-
|
|
14
|
+
/**
|
|
15
|
+
* Time filter value editor. Emits a TimeString value. When the filter query
|
|
16
|
+
* is created, the time is resolved against today's date (in the column time
|
|
17
|
+
* zone), so a saved filter always applies to the current day.
|
|
18
|
+
*/
|
|
19
|
+
export declare const FilterClauseValueEditorTime: ({ className, onChangeValue, temporalInfo, value, }: FilterClauseValueEditorTimeProps) => import("react/jsx-runtime").JSX.Element;
|
|
9
20
|
export {};
|
|
@@ -4,6 +4,11 @@ export declare const isTimeToday: (options: ExtendedFilterOptions) => options is
|
|
|
4
4
|
export interface SerializableFilter {
|
|
5
5
|
asQuery: () => string;
|
|
6
6
|
}
|
|
7
|
+
/**
|
|
8
|
+
* A filter clause on a time of day value (TimeString). The time is resolved
|
|
9
|
+
* against a date ('today' by default) only when the query is created, so a
|
|
10
|
+
* persisted filter remains relative.
|
|
11
|
+
*/
|
|
7
12
|
export declare class ExtendedSingleValueFilterClause implements SerializableSingleValueFilterClause {
|
|
8
13
|
#private;
|
|
9
14
|
column: string;
|
|
@@ -11,6 +16,7 @@ export declare class ExtendedSingleValueFilterClause implements SerializableSing
|
|
|
11
16
|
value: VuuRowDataItemType;
|
|
12
17
|
constructor(column: string, op: SingleValueFilterClauseOp, value: VuuRowDataItemType, extendedOptions: ExtendedFilterOptions);
|
|
13
18
|
name?: string | undefined;
|
|
19
|
+
get extendedOptions(): ExtendedFilterOptions;
|
|
14
20
|
asQuery(): string;
|
|
15
21
|
toJSON(): {
|
|
16
22
|
column: string;
|
|
@@ -9,7 +9,7 @@ export interface FilterContainerProps extends HTMLAttributes<HTMLDivElement>, Co
|
|
|
9
9
|
export interface FilterContainerColumnFilterProps extends Omit<ColumnFilterProps, "defaultValue" | "onCommit" | "value"> {
|
|
10
10
|
defaultValue?: ColumnFilterValue;
|
|
11
11
|
}
|
|
12
|
-
export declare const FilterContainerColumnFilter: ({ column, operator, variant, ...props }: FilterContainerColumnFilterProps) => import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export declare const FilterContainerColumnFilter: ({ column: columnProp, operator, pattern, variant, ...props }: FilterContainerColumnFilterProps) => import("react/jsx-runtime").JSX.Element;
|
|
13
13
|
/**
|
|
14
14
|
* FilterContainer is a generic UI container for a collection of Filter
|
|
15
15
|
* controls. Each control manages a single filter clause and the Filter
|
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
import type { TableContextMenuDef } from "@vuu-ui/vuu-table-types";
|
|
2
|
+
import { type DateTimePattern } from "@vuu-ui/vuu-utils";
|
|
2
3
|
export interface FilterContextMenuHookProps {
|
|
3
4
|
filterColumns: string[] | "*";
|
|
5
|
+
/**
|
|
6
|
+
* The date/time pattern of the ColumnFilter for a temporal column, keyed by
|
|
7
|
+
* column name. A filter created from a cell value matches the value at the
|
|
8
|
+
* precision displayed by the ColumnFilter, e.g a ColumnFilter with time
|
|
9
|
+
* pattern 'hh:mm:ss.ms' filters the whole millisecond. Where no pattern is
|
|
10
|
+
* provided, the column descriptor registered by a FilterContainerColumnFilter
|
|
11
|
+
* for the column is used, if there is one, otherwise the Table column.
|
|
12
|
+
*/
|
|
13
|
+
filterPatterns?: Record<string, DateTimePattern>;
|
|
4
14
|
filterProviderKey?: string;
|
|
5
15
|
}
|
|
6
|
-
export declare const useFilterContextMenu: ({ filterColumns, filterProviderKey, }?: FilterContextMenuHookProps) => TableContextMenuDef;
|
|
16
|
+
export declare const useFilterContextMenu: ({ filterColumns, filterPatterns, filterProviderKey, }?: FilterContextMenuHookProps) => TableContextMenuDef;
|
|
@@ -8,6 +8,17 @@ export type FilterContextFilterMenuActionHandler = <T extends FilterAction = Fil
|
|
|
8
8
|
*/
|
|
9
9
|
columns?: ColumnDescriptor[]) => void;
|
|
10
10
|
export interface FilterContextProps {
|
|
11
|
+
/**
|
|
12
|
+
* Returns the column descriptor used by a ColumnFilter (within a
|
|
13
|
+
* FilterContainer) for the named column, if one is registered.
|
|
14
|
+
*/
|
|
15
|
+
getColumnFilterColumn?: (key: string, columnName: string) => ColumnDescriptor | undefined;
|
|
16
|
+
/**
|
|
17
|
+
* Register the column descriptor used by a ColumnFilter, which may differ
|
|
18
|
+
* from the Table column descriptor, e.g. a different date/time pattern.
|
|
19
|
+
* Returns a function to unregister.
|
|
20
|
+
*/
|
|
21
|
+
registerColumnFilterColumn?: (key: string, column: ColumnDescriptor) => () => void;
|
|
11
22
|
deleteFilter: (key: string, filterId: string) => void;
|
|
12
23
|
saveFilter: (key: string, name: string) => void;
|
|
13
24
|
filterDescriptors: Map<string, FilterContainerFilterDescriptor[]>;
|
|
@@ -24,6 +35,14 @@ export declare const isNullFilter: (f?: FilterContainerFilterDescriptor) => bool
|
|
|
24
35
|
export declare const NullFilterDescriptor: FilterContainerFilterDescriptor;
|
|
25
36
|
export declare const EmptyFilterDescriptor: FilterContainerFilterDescriptor;
|
|
26
37
|
export declare const FilterContext: import("react").Context<FilterContextProps>;
|
|
38
|
+
/**
|
|
39
|
+
* Access the column descriptors registered by ColumnFilters
|
|
40
|
+
* (see FilterContainerColumnFilter).
|
|
41
|
+
*/
|
|
42
|
+
export declare function useColumnFilterRegistry(key?: string): {
|
|
43
|
+
getColumnFilterColumn: (columnName: string) => ColumnDescriptor | undefined;
|
|
44
|
+
registerColumnFilterColumn: (column: ColumnDescriptor) => (() => void) | undefined;
|
|
45
|
+
};
|
|
27
46
|
interface SavedFilterHookProps {
|
|
28
47
|
availableColumns?: ColumnDescriptor[];
|
|
29
48
|
}
|
package/types/index.d.ts
CHANGED
|
@@ -4,14 +4,14 @@ export * from "./filter-clause";
|
|
|
4
4
|
export { ExtendedSingleValueFilterClause } from "./filter-container/ExtendedSingleValueFilterClause";
|
|
5
5
|
export { FilterContainer, FilterContainerColumnFilter, type FilterContainerColumnFilterProps, type FilterContainerProps, } from "./filter-container/FilterContainer";
|
|
6
6
|
export type { FilterAppliedHandler } from "./filter-container/useFilterContainer";
|
|
7
|
-
export { useFilterContextMenu } from "./filter-context-menu/useFilterContextMenu";
|
|
7
|
+
export { type FilterContextMenuHookProps, useFilterContextMenu, } from "./filter-context-menu/useFilterContextMenu";
|
|
8
8
|
export { FilterDisplay } from "./filter-display/FilterDisplay";
|
|
9
9
|
export * from "./filter-editor";
|
|
10
10
|
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, useSavedFilters } from "./filter-provider/FilterContext";
|
|
14
|
+
export { NULL_FILTER, useColumnFilterRegistry, useSavedFilters, } from "./filter-provider/FilterContext";
|
|
15
15
|
export { FilterProvider } from "./filter-provider/FilterProvider";
|
|
16
16
|
export * from "./filter-utils";
|
|
17
17
|
export * from "./FilterModel";
|
|
@@ -1,28 +0,0 @@
|
|
|
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
|
-
}
|
|
@@ -1,44 +0,0 @@
|
|
|
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
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
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>>;
|
|
@@ -1,43 +0,0 @@
|
|
|
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
|
-
};
|
|
@@ -1,4 +0,0 @@
|
|
|
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;
|
|
@@ -1,7 +0,0 @@
|
|
|
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;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const navigateToNextItem: (el: HTMLElement | EventTarget, direction?: "bwd" | "fwd") => void;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "./CustomFilters";
|
|
@@ -1,33 +0,0 @@
|
|
|
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 {};
|
|
@@ -1,17 +0,0 @@
|
|
|
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
|
-
};
|
|
@@ -1,33 +0,0 @@
|
|
|
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;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const FilterBarMenu: () => import("react").JSX.Element;
|
|
@@ -1,7 +0,0 @@
|
|
|
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
|
-
};
|
|
@@ -1,10 +0,0 @@
|
|
|
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;
|
|
@@ -1,16 +0,0 @@
|
|
|
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;
|
|
@@ -1,13 +0,0 @@
|
|
|
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>>;
|
|
@@ -1,11 +0,0 @@
|
|
|
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
|
-
};
|
|
@@ -1,15 +0,0 @@
|
|
|
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 {};
|
|
@@ -1,12 +0,0 @@
|
|
|
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
|
-
}
|