@trackunit/filters-filter-bar 1.3.235 → 1.3.237
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/index.cjs.js +3 -8
- package/index.esm.js +3 -8
- package/package.json +13 -13
- package/src/lib/FilterBar.d.ts +1 -1
- package/src/lib/components/AppliedFiltersRenderer.d.ts +1 -1
- package/src/lib/components/DefaultCheckboxFilter.d.ts +1 -1
- package/src/lib/components/DefaultFilterTypes.d.ts +2 -2
- package/src/lib/components/FilterOptionsResults.d.ts +2 -2
- package/src/lib/components/FilterResults.d.ts +2 -2
- package/src/lib/components/FilterTableComponent.d.ts +1 -1
- package/src/lib/components/FilterTooltips/MultipleFilterTooltipLabel.d.ts +2 -2
- package/src/lib/components/FiltersMenu.d.ts +2 -2
- package/src/lib/components/FiltersMenuContent.d.ts +4 -4
- package/src/lib/components/FiltersRenderer.d.ts +2 -2
- package/src/lib/components/GroupedFiltersList.d.ts +1 -1
- package/src/lib/components/HierarchicalCheckboxFilter/HierarchicalCheckboxFilter.d.ts +3 -3
- package/src/lib/components/HierarchicalCheckboxFilter/HierarchicalCheckboxFilter.utils.d.ts +2 -2
- package/src/lib/components/HierarchicalCheckboxFilter/RenderHierarchicalOption.d.ts +1 -1
- package/src/lib/components/HierarchicalCheckboxFilter/useHierarchicalOptionState.d.ts +2 -2
- package/src/lib/hooks/useFiltersMenu.d.ts +3 -3
- package/src/lib/hooks/useGroupFilters.d.ts +3 -3
- package/src/lib/hooks/utils/useFilterBarPersistence.d.ts +1 -1
- package/src/lib/index.d.ts +20 -1
- package/src/lib/types/FilterTypes.d.ts +14 -66
- package/src/lib/types/FilterZodTypes.d.ts +21 -0
- package/src/lib/utils/createFilterSetters.d.ts +1 -1
- package/src/lib/utils/createFilterValues.d.ts +1 -1
- package/src/lib/utils/createInitialState.d.ts +3 -3
- package/src/lib/utils/mergeFilters.d.ts +1 -1
- package/src/lib/utils/reduceFilterText.d.ts +1 -1
- package/src/lib/utils/toggleFilterValue.d.ts +1 -1
- package/src/lib/utils/validateFilter.d.ts +5 -4
- package/src/lib/components/index.d.ts +0 -19
package/index.cjs.js
CHANGED
|
@@ -1333,7 +1333,7 @@ const mockFilterBar = {
|
|
|
1333
1333
|
getFilterBarName: doNothing,
|
|
1334
1334
|
initialState: { customerType: [] },
|
|
1335
1335
|
name: "test",
|
|
1336
|
-
|
|
1336
|
+
isDefaultValue: doNothing,
|
|
1337
1337
|
objectArrayIncludesValue: doNothing,
|
|
1338
1338
|
resetFiltersToInitialState: doNothing,
|
|
1339
1339
|
resetIndividualFilterToInitialState: doNothing,
|
|
@@ -1582,16 +1582,11 @@ const useFilterBarActions = ({ name, filterBarConfig, filterBarDefinition, setFi
|
|
|
1582
1582
|
const filter = filterBarConfig.values[key];
|
|
1583
1583
|
return filter?.includes(value) || false;
|
|
1584
1584
|
},
|
|
1585
|
-
|
|
1586
|
-
// eslint-disable-next-line local-rules/no-typescript-assertion
|
|
1587
|
-
const filterValue = filterBarConfig.values[key];
|
|
1585
|
+
isDefaultValue(key, filterValue) {
|
|
1588
1586
|
const filterDefinition = filterBarDefinition[key];
|
|
1589
|
-
if (dequal.dequal(filterValue,
|
|
1587
|
+
if (dequal.dequal(filterValue, initialState?.[key]) || dequal.dequal(filterValue, filterDefinition?.defaultValue)) {
|
|
1590
1588
|
return true;
|
|
1591
1589
|
}
|
|
1592
|
-
if (filterDefinition && filterDefinition.defaultValue === undefined) {
|
|
1593
|
-
return false;
|
|
1594
|
-
}
|
|
1595
1590
|
if (!filterValue) {
|
|
1596
1591
|
return true;
|
|
1597
1592
|
}
|
package/index.esm.js
CHANGED
|
@@ -1331,7 +1331,7 @@ const mockFilterBar = {
|
|
|
1331
1331
|
getFilterBarName: doNothing,
|
|
1332
1332
|
initialState: { customerType: [] },
|
|
1333
1333
|
name: "test",
|
|
1334
|
-
|
|
1334
|
+
isDefaultValue: doNothing,
|
|
1335
1335
|
objectArrayIncludesValue: doNothing,
|
|
1336
1336
|
resetFiltersToInitialState: doNothing,
|
|
1337
1337
|
resetIndividualFilterToInitialState: doNothing,
|
|
@@ -1580,16 +1580,11 @@ const useFilterBarActions = ({ name, filterBarConfig, filterBarDefinition, setFi
|
|
|
1580
1580
|
const filter = filterBarConfig.values[key];
|
|
1581
1581
|
return filter?.includes(value) || false;
|
|
1582
1582
|
},
|
|
1583
|
-
|
|
1584
|
-
// eslint-disable-next-line local-rules/no-typescript-assertion
|
|
1585
|
-
const filterValue = filterBarConfig.values[key];
|
|
1583
|
+
isDefaultValue(key, filterValue) {
|
|
1586
1584
|
const filterDefinition = filterBarDefinition[key];
|
|
1587
|
-
if (dequal(filterValue,
|
|
1585
|
+
if (dequal(filterValue, initialState?.[key]) || dequal(filterValue, filterDefinition?.defaultValue)) {
|
|
1588
1586
|
return true;
|
|
1589
1587
|
}
|
|
1590
|
-
if (filterDefinition && filterDefinition.defaultValue === undefined) {
|
|
1591
|
-
return false;
|
|
1592
|
-
}
|
|
1593
1588
|
if (!filterValue) {
|
|
1594
1589
|
return true;
|
|
1595
1590
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@trackunit/filters-filter-bar",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.237",
|
|
4
4
|
"repository": "https://github.com/Trackunit/manager",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.txt",
|
|
6
6
|
"engines": {
|
|
@@ -14,18 +14,18 @@
|
|
|
14
14
|
"tailwind-merge": "^2.0.0",
|
|
15
15
|
"string-ts": "^2.0.0",
|
|
16
16
|
"zod": "3.23.4",
|
|
17
|
-
"@trackunit/iris-app-api": "1.3.
|
|
18
|
-
"@trackunit/react-core-hooks": "1.3.
|
|
19
|
-
"@trackunit/react-filter-components": "1.3.
|
|
20
|
-
"@trackunit/react-date-and-time-components": "1.3.
|
|
21
|
-
"@trackunit/shared-utils": "1.5.
|
|
22
|
-
"@trackunit/react-form-components": "1.3.
|
|
23
|
-
"@trackunit/react-core-contexts-api": "1.4.
|
|
24
|
-
"@trackunit/geo-json-utils": "1.3.
|
|
25
|
-
"@trackunit/i18n-library-translation": "1.3.
|
|
26
|
-
"@trackunit/css-class-variance-utilities": "1.3.
|
|
27
|
-
"@trackunit/react-components": "1.4.
|
|
28
|
-
"@trackunit/react-test-setup": "1.0.
|
|
17
|
+
"@trackunit/iris-app-api": "1.3.148",
|
|
18
|
+
"@trackunit/react-core-hooks": "1.3.154",
|
|
19
|
+
"@trackunit/react-filter-components": "1.3.194",
|
|
20
|
+
"@trackunit/react-date-and-time-components": "1.3.198",
|
|
21
|
+
"@trackunit/shared-utils": "1.5.141",
|
|
22
|
+
"@trackunit/react-form-components": "1.3.197",
|
|
23
|
+
"@trackunit/react-core-contexts-api": "1.4.148",
|
|
24
|
+
"@trackunit/geo-json-utils": "1.3.139",
|
|
25
|
+
"@trackunit/i18n-library-translation": "1.3.161",
|
|
26
|
+
"@trackunit/css-class-variance-utilities": "1.3.141",
|
|
27
|
+
"@trackunit/react-components": "1.4.172",
|
|
28
|
+
"@trackunit/react-test-setup": "1.0.31"
|
|
29
29
|
},
|
|
30
30
|
"module": "./index.esm.js",
|
|
31
31
|
"main": "./index.cjs.js",
|
package/src/lib/FilterBar.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ interface FilterBarProps<TFilterBarDefinition extends FilterBarDefinition> {
|
|
|
3
3
|
/**
|
|
4
4
|
* If you want some of the filters to be hidden, but still programmatically enabled
|
|
5
5
|
*/
|
|
6
|
-
hiddenFilters?: string
|
|
6
|
+
hiddenFilters?: Array<string>;
|
|
7
7
|
/**
|
|
8
8
|
* CSS class name for styling purposes
|
|
9
9
|
*/
|
|
@@ -3,7 +3,7 @@ import { FilterBarConfig, FilterBarDefinition, FilterDefinition, FilterMapAction
|
|
|
3
3
|
*
|
|
4
4
|
*/
|
|
5
5
|
export declare const AppliedFiltersRenderer: <TFilterBarDefinition extends FilterBarDefinition>({ appliedFilters, filterBarConfig, showResetButton, }: {
|
|
6
|
-
appliedFilters: FilterDefinition
|
|
6
|
+
appliedFilters: Array<FilterDefinition>;
|
|
7
7
|
filterBarConfig: FilterBarConfig<TFilterBarDefinition> & FilterMapActions & FilterMapGetter;
|
|
8
8
|
showResetButton?: boolean;
|
|
9
9
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ValueName } from "../types/FilterTypes";
|
|
2
2
|
import { DefaultFilterProps } from "./DefaultFilterTypes";
|
|
3
|
-
type FilterDefinitionValue = string
|
|
3
|
+
type FilterDefinitionValue = Array<string> | Array<ValueName>;
|
|
4
4
|
/**
|
|
5
5
|
* `DefaultCheckboxFilter` is a React component for handling checkbox filters.
|
|
6
6
|
*
|
|
@@ -25,7 +25,7 @@ export interface HierarchicalFilterOption extends FilterOption {
|
|
|
25
25
|
/**
|
|
26
26
|
* Child options for this node in the hierarchy.
|
|
27
27
|
*/
|
|
28
|
-
children?: HierarchicalFilterOption
|
|
28
|
+
children?: Array<HierarchicalFilterOption>;
|
|
29
29
|
/**
|
|
30
30
|
* The nesting level of this option (0 for root).
|
|
31
31
|
* Added during hierarchy processing.
|
|
@@ -36,7 +36,7 @@ export interface DefaultFilterProps<TReturnType> extends FilterViewProps<TReturn
|
|
|
36
36
|
/**
|
|
37
37
|
* An array of filter options to be displayed.
|
|
38
38
|
*/
|
|
39
|
-
options: FilterOption
|
|
39
|
+
options: Array<FilterOption>;
|
|
40
40
|
/**
|
|
41
41
|
* Indicates whether the filter is in a loading state.
|
|
42
42
|
*/
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { ReactElement } from "react";
|
|
2
2
|
interface Props<TResult> {
|
|
3
|
-
results: TResult
|
|
3
|
+
results: Array<TResult> | undefined | null;
|
|
4
4
|
loading?: boolean;
|
|
5
5
|
ignoreUndefined?: boolean;
|
|
6
|
-
children: (results: TResult
|
|
6
|
+
children: (results: Array<TResult>) => ReactElement;
|
|
7
7
|
}
|
|
8
8
|
/**
|
|
9
9
|
* Wrapper around results for filters.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { ReactElement } from "react";
|
|
2
2
|
interface Props<TResult> {
|
|
3
|
-
results: TResult
|
|
3
|
+
results: Array<TResult> | undefined | null;
|
|
4
4
|
loading?: boolean;
|
|
5
5
|
ignoreUndefined?: boolean;
|
|
6
|
-
children: (results: TResult
|
|
6
|
+
children: (results: Array<TResult>) => ReactElement;
|
|
7
7
|
}
|
|
8
8
|
/**
|
|
9
9
|
* Wrapper around results for filters.
|
|
@@ -2,8 +2,8 @@ import { ReactElement } from "react";
|
|
|
2
2
|
import { FilterBarDefinition, FilterDefinition, FilterMapActions, FilterMapGetter, FilterState } from "../../types/FilterTypes";
|
|
3
3
|
interface MultipleFilterTooltipLabelProps<TFilterBarDefinition extends FilterBarDefinition> {
|
|
4
4
|
filterBarConfig: FilterState<TFilterBarDefinition> & FilterMapActions & FilterMapGetter;
|
|
5
|
-
filterKeys?: string
|
|
6
|
-
filters: FilterDefinition
|
|
5
|
+
filterKeys?: Array<string>;
|
|
6
|
+
filters: Array<FilterDefinition>;
|
|
7
7
|
}
|
|
8
8
|
/**
|
|
9
9
|
* Component that displays a tooltip for filters.
|
|
@@ -17,7 +17,7 @@ interface FiltersMenuProps<TFilterBarDefinition extends FilterBarDefinition> ext
|
|
|
17
17
|
/**
|
|
18
18
|
* If you want some of the filters to be hidden, but still programmatically enabled
|
|
19
19
|
*/
|
|
20
|
-
hiddenFilters?: string
|
|
20
|
+
hiddenFilters?: Array<string>;
|
|
21
21
|
/**
|
|
22
22
|
* If true, the starred filters will be displayed in a compact mode
|
|
23
23
|
*/
|
|
@@ -37,7 +37,7 @@ interface FiltersMenuProps<TFilterBarDefinition extends FilterBarDefinition> ext
|
|
|
37
37
|
/**
|
|
38
38
|
* The filter keys to include in the filter bar, if not defined all filters will be shown.
|
|
39
39
|
*/
|
|
40
|
-
includeFilterKeys?: string
|
|
40
|
+
includeFilterKeys?: Array<string>;
|
|
41
41
|
}
|
|
42
42
|
/**
|
|
43
43
|
* FilterMenu is a React component that displays a list of filters in a popover menu based on the provided filter bar configuration.
|
|
@@ -8,11 +8,11 @@ export declare const FiltersMenuContent: ({ filterBarConfig, setShowCustomFilter
|
|
|
8
8
|
setShowCustomFilters: (show: boolean) => void;
|
|
9
9
|
setSearchText: (text: string) => void;
|
|
10
10
|
searchText: string;
|
|
11
|
-
searchResultsGrouped: GroupOfFilters
|
|
12
|
-
filtersToShowGrouped: GroupOfFilters
|
|
13
|
-
removeCustomFieldsGroup: (groupOfFilters: GroupOfFilters
|
|
11
|
+
searchResultsGrouped: Array<GroupOfFilters>;
|
|
12
|
+
filtersToShowGrouped: Array<GroupOfFilters>;
|
|
13
|
+
removeCustomFieldsGroup: (groupOfFilters: Array<GroupOfFilters>) => Array<GroupOfFilters>;
|
|
14
14
|
hasCustomFields: boolean;
|
|
15
|
-
appliedCustomFields: FilterDefinition
|
|
15
|
+
appliedCustomFields: Array<FilterDefinition>;
|
|
16
16
|
showCustomFilters: boolean;
|
|
17
17
|
filterBarDefinitionCount: number;
|
|
18
18
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -2,7 +2,7 @@ import { ComponentProps, ReactElement } from "react";
|
|
|
2
2
|
import { FilterBarConfig, FilterBarDefinition, FilterDefinition, FilterMapActions, FilterMapGetter } from "../types/FilterTypes";
|
|
3
3
|
import { FilterComponent } from "./FilterComponent";
|
|
4
4
|
type FiltersRendererProps = {
|
|
5
|
-
filters: FilterDefinition
|
|
5
|
+
filters: Array<FilterDefinition>;
|
|
6
6
|
filterBarConfig: FilterBarConfig<FilterBarDefinition> & FilterMapActions & FilterMapGetter;
|
|
7
7
|
visualStyle?: ComponentProps<typeof FilterComponent>["visualStyle"];
|
|
8
8
|
};
|
|
@@ -18,5 +18,5 @@ type FiltersRendererProps = {
|
|
|
18
18
|
* @param {ComponentProps<typeof FilterComponent>["visualStyle"]} [props.visualStyle] - The visual style of the filters
|
|
19
19
|
* @returns {ReactElement[] | null} - Returns an array of Filter components or null
|
|
20
20
|
*/
|
|
21
|
-
export declare const FiltersRenderer: ({ filters, filterBarConfig, visualStyle, }: FiltersRendererProps) => ReactElement
|
|
21
|
+
export declare const FiltersRenderer: ({ filters, filterBarConfig, visualStyle, }: FiltersRendererProps) => Array<ReactElement> | null;
|
|
22
22
|
export {};
|
|
@@ -7,7 +7,7 @@ interface FiltersListProps extends CommonProps {
|
|
|
7
7
|
* The configuration of the filter bar, including its actions and state.
|
|
8
8
|
*/
|
|
9
9
|
filterBarConfig: FilterBarConfig<FilterBarDefinition> & FilterMapActions & FilterMapGetter;
|
|
10
|
-
filtersGrouped: GroupOfFilters
|
|
10
|
+
filtersGrouped: Array<GroupOfFilters>;
|
|
11
11
|
}
|
|
12
12
|
/**
|
|
13
13
|
* FiltersList is a React component that displays a list of filters within a filter bar.
|
|
@@ -4,12 +4,12 @@ import { DefaultFilterProps, HierarchicalFilterOption } from "../DefaultFilterTy
|
|
|
4
4
|
* Props for the HierarchicalCheckboxFilter component.
|
|
5
5
|
* Extends base filter props but requires hierarchical options and ValueName[] type.
|
|
6
6
|
*/
|
|
7
|
-
export interface HierarchicalFilterProps extends Omit<DefaultFilterProps<ValueName
|
|
7
|
+
export interface HierarchicalFilterProps extends Omit<DefaultFilterProps<Array<ValueName>>, "options" | "customSearch" | "showRequestMoreUseSearch" | "showUndefinedOptionWithCountAtBottom" | "totalRecords"> {
|
|
8
8
|
/**
|
|
9
9
|
* An array of hierarchical filter options to be displayed.
|
|
10
10
|
* The structure (parent-child relationships and levels) should be pre-processed.
|
|
11
11
|
*/
|
|
12
|
-
options: HierarchicalFilterOption
|
|
12
|
+
options: Array<HierarchicalFilterOption>;
|
|
13
13
|
/**
|
|
14
14
|
* The filter definition, constrained to the 'valueNameArray' type for this component.
|
|
15
15
|
*/
|
|
@@ -19,7 +19,7 @@ export interface HierarchicalFilterProps extends Omit<DefaultFilterProps<ValueNa
|
|
|
19
19
|
/**
|
|
20
20
|
* Callback function to update the filter's value state.
|
|
21
21
|
*/
|
|
22
|
-
setValue: FilterStateSetterCallback<ValueName
|
|
22
|
+
setValue: FilterStateSetterCallback<Array<ValueName>>;
|
|
23
23
|
/**
|
|
24
24
|
* Enable cascading selection behavior.
|
|
25
25
|
* - Checking/unchecking a parent affects all descendants.
|
|
@@ -5,9 +5,9 @@ import { HierarchicalFilterOption } from "../DefaultFilterTypes";
|
|
|
5
5
|
* @param option The starting hierarchical filter option.
|
|
6
6
|
* @returns An array of string keys representing the option and all its descendants.
|
|
7
7
|
*/
|
|
8
|
-
export declare const getAllDescendantKeys: (option: HierarchicalFilterOption) => string
|
|
8
|
+
export declare const getAllDescendantKeys: (option: HierarchicalFilterOption) => Array<string>;
|
|
9
9
|
/**
|
|
10
10
|
* Recursively filters hierarchical options based on a search term.
|
|
11
11
|
* Keeps an option if its label matches or if any descendant matches.
|
|
12
12
|
*/
|
|
13
|
-
export declare const filterHierarchicalOptions: (options: HierarchicalFilterOption
|
|
13
|
+
export declare const filterHierarchicalOptions: (options: Array<HierarchicalFilterOption>, searchTerm: string, parentMatches?: boolean) => Array<HierarchicalFilterOption>;
|
|
@@ -8,7 +8,7 @@ interface RenderHierarchicalOptionProps {
|
|
|
8
8
|
filterBarActions: HierarchicalFilterProps["filterBarActions"];
|
|
9
9
|
setValue: HierarchicalFilterProps["setValue"];
|
|
10
10
|
logEvent: ReturnType<typeof useAnalytics>["logEvent"];
|
|
11
|
-
selectedValues: ValueName
|
|
11
|
+
selectedValues: Array<ValueName>;
|
|
12
12
|
cascadeSelection: boolean;
|
|
13
13
|
optionsMap: Map<string, HierarchicalFilterOption>;
|
|
14
14
|
}
|
|
@@ -3,9 +3,9 @@ import { ValueName } from "../../types/FilterTypes";
|
|
|
3
3
|
import { HierarchicalFilterOption } from "../DefaultFilterTypes";
|
|
4
4
|
import { HierarchicalFilterProps } from "./HierarchicalCheckboxFilter";
|
|
5
5
|
interface UseHierarchicalOptionStateProps {
|
|
6
|
-
options: HierarchicalFilterOption
|
|
6
|
+
options: Array<HierarchicalFilterOption>;
|
|
7
7
|
option: HierarchicalFilterOption;
|
|
8
|
-
selectedValues: ValueName
|
|
8
|
+
selectedValues: Array<ValueName>;
|
|
9
9
|
cascadeSelection: boolean;
|
|
10
10
|
optionsMap: Map<string, HierarchicalFilterOption>;
|
|
11
11
|
setValue: HierarchicalFilterProps["setValue"];
|
|
@@ -3,9 +3,9 @@ import { GroupOfFilters } from "./useGroupFilters";
|
|
|
3
3
|
type UseFiltersMenuProps<TFilterBarDefinition extends FilterBarDefinition> = {
|
|
4
4
|
filterBarDefinition: TFilterBarDefinition;
|
|
5
5
|
filterBarConfig: FilterBarConfig<TFilterBarDefinition> & FilterMapActions & FilterMapGetter;
|
|
6
|
-
hiddenFilters?: string
|
|
6
|
+
hiddenFilters?: Array<string>;
|
|
7
7
|
allowShowFiltersDirectly?: boolean;
|
|
8
|
-
includeFilterKeys?: string
|
|
8
|
+
includeFilterKeys?: Array<string>;
|
|
9
9
|
};
|
|
10
10
|
/**
|
|
11
11
|
* This hook is used to manage the filters menu.
|
|
@@ -21,6 +21,6 @@ export declare const useFiltersMenu: <TFilterBarDefinition extends FilterBarDefi
|
|
|
21
21
|
setSearchText: import("react").Dispatch<string>;
|
|
22
22
|
filtersToShowGrouped: GroupOfFilters[];
|
|
23
23
|
searchResultsGrouped: GroupOfFilters[];
|
|
24
|
-
removeCustomFieldsGroup: (groupOfFilters: GroupOfFilters
|
|
24
|
+
removeCustomFieldsGroup: (groupOfFilters: Array<GroupOfFilters>) => Array<GroupOfFilters>;
|
|
25
25
|
};
|
|
26
26
|
export {};
|
|
@@ -11,10 +11,10 @@ export interface GroupOfFilters {
|
|
|
11
11
|
/**
|
|
12
12
|
* An array of filter definitions that belong to this group.
|
|
13
13
|
*/
|
|
14
|
-
filters: FilterDefinition
|
|
14
|
+
filters: Array<FilterDefinition>;
|
|
15
15
|
}
|
|
16
16
|
interface UseGroupFiltersReturnType {
|
|
17
|
-
filtersGrouped: GroupOfFilters
|
|
17
|
+
filtersGrouped: Array<GroupOfFilters>;
|
|
18
18
|
}
|
|
19
19
|
/**
|
|
20
20
|
* Custom React hook for grouping and filtering a list of filters.
|
|
@@ -23,5 +23,5 @@ interface UseGroupFiltersReturnType {
|
|
|
23
23
|
* @param {string[]} hiddenFilters - An array of filter keys representing filters to be hidden, if not provided, all filters will be shown
|
|
24
24
|
* @returns {UseGroupFiltersReturnType} An object containing the grouped filters.
|
|
25
25
|
*/
|
|
26
|
-
export declare const useGroupFilters: (filterDefinitions: FilterDefinition
|
|
26
|
+
export declare const useGroupFilters: (filterDefinitions: Array<FilterDefinition>, hiddenFilters?: Array<string>) => UseGroupFiltersReturnType;
|
|
27
27
|
export {};
|
|
@@ -11,7 +11,7 @@ type FilterBarPersistenceProps<TFilterBarDefinition extends FilterBarDefinition>
|
|
|
11
11
|
* @returns { object } An object containing the loadData and saveData functions.
|
|
12
12
|
*/
|
|
13
13
|
export declare const useFilterBarPersistence: <TFilterBarDefinition extends FilterBarDefinition>({ name, setValue, }: FilterBarPersistenceProps<TFilterBarDefinition>) => {
|
|
14
|
-
loadData: <TFilterBarDefinitionExtended extends TFilterBarDefinition>(updatedFilterDefinitionsValues: TFilterBarDefinitionExtended[keyof TFilterBarDefinitionExtended]
|
|
14
|
+
loadData: <TFilterBarDefinitionExtended extends TFilterBarDefinition>(updatedFilterDefinitionsValues: Array<TFilterBarDefinitionExtended[keyof TFilterBarDefinitionExtended]>) => FilterBarConfig<TFilterBarDefinition>;
|
|
15
15
|
saveData: (filterBarConfig: Partial<FilterBarConfig<TFilterBarDefinition>>, filterBarDefinitions: TFilterBarDefinition) => void;
|
|
16
16
|
};
|
|
17
17
|
export {};
|
package/src/lib/index.d.ts
CHANGED
|
@@ -1,4 +1,22 @@
|
|
|
1
|
-
export * from "./components";
|
|
1
|
+
export * from "./components/AppliedFiltersRenderer";
|
|
2
|
+
export * from "./components/DefaultCheckboxFilter";
|
|
3
|
+
export * from "./components/DefaultDateRangeFilter";
|
|
4
|
+
export * from "./components/DefaultFilterTypes";
|
|
5
|
+
export * from "./components/DefaultMinMaxFilter";
|
|
6
|
+
export * from "./components/DefaultRadioFilter";
|
|
7
|
+
export * from "./components/DynamicFilterList";
|
|
8
|
+
export * from "./components/FilterButtonTooltipLabel";
|
|
9
|
+
export * from "./components/FilterComponent";
|
|
10
|
+
export * from "./components/FilterHeader";
|
|
11
|
+
export * from "./components/FilterResults";
|
|
12
|
+
export * from "./components/FiltersMenu";
|
|
13
|
+
export * from "./components/FiltersMenuContent";
|
|
14
|
+
export * from "./components/FiltersRenderer";
|
|
15
|
+
export * from "./components/FilterTableComponent";
|
|
16
|
+
export * from "./components/FilterTooltips/MultipleFilterTooltipLabel";
|
|
17
|
+
export * from "./components/GroupedFiltersList";
|
|
18
|
+
export * from "./components/HierarchicalCheckboxFilter/HierarchicalCheckboxFilter";
|
|
19
|
+
export * from "./components/ResetFiltersButton";
|
|
2
20
|
export * from "./FilterBar";
|
|
3
21
|
export * from "./hooks/mockFilterBar";
|
|
4
22
|
export * from "./hooks/useFilterBar";
|
|
@@ -6,6 +24,7 @@ export * from "./hooks/useFilterBarAsync";
|
|
|
6
24
|
export * from "./hooks/useFiltersMenu";
|
|
7
25
|
export * from "./hooks/useSearchParamAsFilter";
|
|
8
26
|
export * from "./types/FilterTypes";
|
|
27
|
+
export * from "./types/FilterZodTypes";
|
|
9
28
|
export * from "./utils/FilterEvents";
|
|
10
29
|
export * from "./utils/mergeFilters";
|
|
11
30
|
export * from "./utils/toggleFilterValue";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ReactNode } from "react";
|
|
2
|
-
import {
|
|
2
|
+
import { AreaFilterGeoJsonGeometry } from "./FilterZodTypes";
|
|
3
3
|
export type ValueName = {
|
|
4
4
|
value: string;
|
|
5
5
|
name: string;
|
|
@@ -14,45 +14,19 @@ export type MinMaxFilterValue = {
|
|
|
14
14
|
min?: number;
|
|
15
15
|
max?: number;
|
|
16
16
|
};
|
|
17
|
-
export
|
|
18
|
-
type: z.ZodLiteral<"Polygon">;
|
|
19
|
-
coordinates: z.ZodArray<z.ZodEffects<z.ZodArray<z.ZodTuple<[z.ZodNumber /**
|
|
20
|
-
* The Group the filter will be shown under in the ui.
|
|
21
|
-
*
|
|
22
|
-
* @default "OTHER"
|
|
23
|
-
*/, z.ZodNumber], null>, "many">, [number, number][], [number, number][]>, "many">;
|
|
24
|
-
}, "strict", z.ZodTypeAny, {
|
|
25
|
-
type: "Polygon";
|
|
26
|
-
coordinates: [number, number][][];
|
|
27
|
-
}, {
|
|
28
|
-
type: "Polygon";
|
|
29
|
-
coordinates: [number, number][][];
|
|
30
|
-
}>, z.ZodObject<{
|
|
31
|
-
type: z.ZodLiteral<"MultiPolygon">;
|
|
32
|
-
coordinates: z.ZodArray<z.ZodArray<z.ZodEffects /**
|
|
33
|
-
* A boolean that determines if the filter should be generated.
|
|
34
|
-
*/<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, "many">, [number, number][], [number, number][]>, "many">, "many">;
|
|
35
|
-
}, "strict", z.ZodTypeAny, {
|
|
36
|
-
type: "MultiPolygon";
|
|
37
|
-
coordinates: [number, number][][][];
|
|
38
|
-
}, {
|
|
39
|
-
type: "MultiPolygon";
|
|
40
|
-
coordinates: [number, number][][][];
|
|
41
|
-
}>]>;
|
|
42
|
-
export type AreaFilterGeoJsonGeometry = z.infer<typeof areaFilterGeoJsonGeometrySchema>;
|
|
43
|
-
export type FilterValueType = string[] | ValueName[] | ValueName | MinMaxFilterValue | AreaFilterGeoJsonGeometry | string | number | BooleanValue | undefined;
|
|
17
|
+
export type FilterValueType = Array<string> | Array<ValueName> | ValueName | MinMaxFilterValue | AreaFilterGeoJsonGeometry | string | number | BooleanValue | undefined;
|
|
44
18
|
export declare type FilterTypes = "boolean" | "string" | "number" | "dateRange" | "area" | "valueNameArray" | "valueName" | "stringArray" | "minMax";
|
|
45
19
|
export type FilterMapActions = {
|
|
46
20
|
updateStarredFilters: (filterkey: string) => void;
|
|
47
21
|
toggleArrayValue: (key: string, value: string) => void;
|
|
48
22
|
setStringValue: (key: string, value: string) => void;
|
|
49
|
-
setArrayValue: (key: string, value: string
|
|
23
|
+
setArrayValue: (key: string, value: Array<string>) => void;
|
|
50
24
|
setArea: (area: AreaFilterGeoJsonGeometry) => void;
|
|
51
25
|
setNumberValue: (key: string, value: NumberValue) => void;
|
|
52
26
|
setBooleanValue: (key: string, value: BooleanValue) => void;
|
|
53
27
|
setDateRange: (key: string, value: DateRangeValue) => void;
|
|
54
28
|
setMinMaxValue: (key: string, minMaxValue: MinMaxFilterValue) => void;
|
|
55
|
-
setArrayObjectValue: (key: string, value: ValueName
|
|
29
|
+
setArrayObjectValue: (key: string, value: Array<ValueName>) => void;
|
|
56
30
|
setObjectValue: (key: string, value: ValueName) => void;
|
|
57
31
|
toggleArrayObjectValue: (key: string, value: ValueName) => void;
|
|
58
32
|
toggleObjectValue: (key: string, value: ValueName) => void;
|
|
@@ -65,9 +39,9 @@ export type FilterMapGetter = {
|
|
|
65
39
|
objectArrayIncludesValue: (key: string, value: string) => boolean;
|
|
66
40
|
objectIncludesValue: (key: string, value: string) => boolean;
|
|
67
41
|
getValuesByKey: (key: string) => FilterValueType;
|
|
68
|
-
|
|
42
|
+
isDefaultValue: (key: string, value: FilterValueType) => boolean;
|
|
69
43
|
arrayIncludesValue: (key: string, value: string | boolean) => boolean;
|
|
70
|
-
appliedFilterKeys: () =>
|
|
44
|
+
appliedFilterKeys: () => Array<keyof FilterBarDefinition>;
|
|
71
45
|
isFilterIncludedByKey(key: string): boolean;
|
|
72
46
|
};
|
|
73
47
|
export type FilterName = string;
|
|
@@ -83,39 +57,13 @@ export interface AbstractFilterDefinition {
|
|
|
83
57
|
* The type of the filter, indicating its behavior and data format.
|
|
84
58
|
*/
|
|
85
59
|
type: FilterTypes;
|
|
86
|
-
/**
|
|
87
|
-
* The title and translation for the filter.
|
|
88
|
-
*/
|
|
89
60
|
title: FilterTranslation;
|
|
90
|
-
/**
|
|
91
|
-
* If the filter should be on the provided filter bar as default
|
|
92
|
-
*/
|
|
93
61
|
default?: boolean;
|
|
94
|
-
/**
|
|
95
|
-
* If the filter should be persisted this key to localstorage, if not it will not override if it is in the localstorage and not load if it is.
|
|
96
|
-
*/
|
|
97
62
|
persistValue?: boolean;
|
|
98
|
-
/**
|
|
99
|
-
* The Group the filter will be shown under in the ui.
|
|
100
|
-
*
|
|
101
|
-
* @default "OTHER"
|
|
102
|
-
*/
|
|
103
63
|
group: FilterGroup;
|
|
104
|
-
/**
|
|
105
|
-
* A function that determines if the filter should be displayed in the starred filter menu.
|
|
106
|
-
*/
|
|
107
64
|
showInStarredMenu?: () => boolean;
|
|
108
|
-
/**
|
|
109
|
-
* A function that determines if the filter should be displayed in the filter bar.
|
|
110
|
-
*/
|
|
111
65
|
showInFilterBar?: () => boolean;
|
|
112
|
-
/**
|
|
113
|
-
* A boolean that determines if the filter should be displayed in the filter bar without a menu, like a search field.
|
|
114
|
-
*/
|
|
115
66
|
showDirectly?: boolean;
|
|
116
|
-
/**
|
|
117
|
-
* A boolean that determines if the filter should be generated.
|
|
118
|
-
*/
|
|
119
67
|
isHidden?: boolean;
|
|
120
68
|
}
|
|
121
69
|
export interface BooleanFilterDefinition extends AbstractFilterDefinition {
|
|
@@ -144,9 +92,9 @@ export interface AreaFilterDefinition extends AbstractFilterDefinition {
|
|
|
144
92
|
}
|
|
145
93
|
export interface ValueNameArrayFilterDefinition extends AbstractFilterDefinition {
|
|
146
94
|
type: "valueNameArray";
|
|
147
|
-
defaultValue?: ValueName
|
|
148
|
-
valueAsText?: (value: ValueName
|
|
149
|
-
component: (filterComponentProps: FilterViewProps<ValueName
|
|
95
|
+
defaultValue?: Array<ValueName>;
|
|
96
|
+
valueAsText?: (value: Array<ValueName>) => Array<string>;
|
|
97
|
+
component: (filterComponentProps: FilterViewProps<Array<ValueName>>) => ReactNode;
|
|
150
98
|
}
|
|
151
99
|
export interface ValueNameFilterDefinition extends AbstractFilterDefinition {
|
|
152
100
|
type: "valueName";
|
|
@@ -156,9 +104,9 @@ export interface ValueNameFilterDefinition extends AbstractFilterDefinition {
|
|
|
156
104
|
}
|
|
157
105
|
export interface StringArrayFilterDefinition extends AbstractFilterDefinition {
|
|
158
106
|
type: "stringArray";
|
|
159
|
-
defaultValue?: string
|
|
160
|
-
valueAsText?: (value: string
|
|
161
|
-
component: (filterComponentProps: FilterViewProps<string
|
|
107
|
+
defaultValue?: Array<string>;
|
|
108
|
+
valueAsText?: (value: Array<string>) => Array<string>;
|
|
109
|
+
component: (filterComponentProps: FilterViewProps<Array<string>>) => ReactNode;
|
|
162
110
|
}
|
|
163
111
|
export interface MinMaxFilterDefinition extends AbstractFilterDefinition {
|
|
164
112
|
type: "minMax";
|
|
@@ -209,7 +157,7 @@ export type FiltersStoreInstance<T extends FilterBarDefinition> = Partial<Filter
|
|
|
209
157
|
export interface FilterStateMap<T extends FilterBarDefinition> {
|
|
210
158
|
filtersMap: Record<string, FilterBarConfig<T>>;
|
|
211
159
|
}
|
|
212
|
-
export type FilterBarInferredValue<T extends FilterBarDefinition, K extends keyof T> = T[K]["type"] extends infer Type ? Type extends "boolean" ? BooleanValue | undefined : Type extends "string" ? string | undefined : Type extends "number" ? number | undefined : Type extends "area" ? AreaFilterGeoJsonGeometry | undefined : Type extends "valueNameArray" ? ValueName
|
|
160
|
+
export type FilterBarInferredValue<T extends FilterBarDefinition, K extends keyof T> = T[K]["type"] extends infer Type ? Type extends "boolean" ? BooleanValue | undefined : Type extends "string" ? string | undefined : Type extends "number" ? number | undefined : Type extends "area" ? AreaFilterGeoJsonGeometry | undefined : Type extends "valueNameArray" ? Array<ValueName> | undefined : Type extends "valueName" ? ValueName | undefined : Type extends "stringArray" ? Array<string> | undefined : Type extends "minMax" ? MinMaxFilterValue | undefined : Type extends "dateRange" ? DateRangeValue | undefined : undefined : undefined;
|
|
213
161
|
export type SetterKey<T extends string> = `set${Capitalize<T>}`;
|
|
214
162
|
export type ReverseSetterKey<T extends string> = Uncapitalize<T extends `set${infer U}` ? U : never>;
|
|
215
163
|
export type ExtractFilterKeys<T extends FilterBarDefinition> = Extract<keyof T, string>;
|
|
@@ -238,7 +186,7 @@ export interface FilterBarConfig<T extends FilterBarDefinition> extends FilterSt
|
|
|
238
186
|
/**
|
|
239
187
|
* Filter names that should be starred for this filter list.
|
|
240
188
|
*/
|
|
241
|
-
starredFilterKeys: ExtractFilterKeys<T
|
|
189
|
+
starredFilterKeys: Array<ExtractFilterKeys<T>>;
|
|
242
190
|
/**
|
|
243
191
|
* The initial state of the filter bar - used to restore the filter bar to its initial state, and to validate if a filter has been changed from the initial state.
|
|
244
192
|
*/
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const areaFilterGeoJsonGeometrySchema: z.ZodUnion<[z.ZodObject<{
|
|
3
|
+
type: z.ZodLiteral<"Polygon">;
|
|
4
|
+
coordinates: z.ZodArray<z.ZodEffects<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, "many">, [number, number][], [number, number][]>, "many">;
|
|
5
|
+
}, "strict", z.ZodTypeAny, {
|
|
6
|
+
type: "Polygon";
|
|
7
|
+
coordinates: [number, number][][];
|
|
8
|
+
}, {
|
|
9
|
+
type: "Polygon";
|
|
10
|
+
coordinates: [number, number][][];
|
|
11
|
+
}>, z.ZodObject<{
|
|
12
|
+
type: z.ZodLiteral<"MultiPolygon">;
|
|
13
|
+
coordinates: z.ZodArray<z.ZodArray<z.ZodEffects<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, "many">, [number, number][], [number, number][]>, "many">, "many">;
|
|
14
|
+
}, "strict", z.ZodTypeAny, {
|
|
15
|
+
type: "MultiPolygon";
|
|
16
|
+
coordinates: [number, number][][][];
|
|
17
|
+
}, {
|
|
18
|
+
type: "MultiPolygon";
|
|
19
|
+
coordinates: [number, number][][][];
|
|
20
|
+
}>]>;
|
|
21
|
+
export type AreaFilterGeoJsonGeometry = z.infer<typeof areaFilterGeoJsonGeometrySchema>;
|
|
@@ -2,4 +2,4 @@ import { FilterBarDefinition, FilterBarInferredValue, FilterDefinition, FilterSt
|
|
|
2
2
|
/**
|
|
3
3
|
*
|
|
4
4
|
*/
|
|
5
|
-
export declare const createFilterSetters: <TFilterBarDefinition extends FilterBarDefinition>(mainFilters: FilterDefinition
|
|
5
|
+
export declare const createFilterSetters: <TFilterBarDefinition extends FilterBarDefinition>(mainFilters: Array<FilterDefinition>, setValue: (key: string, callback: (prev: FilterBarInferredValue<TFilterBarDefinition, never> | undefined) => FilterBarInferredValue<TFilterBarDefinition, never> | undefined) => void) => FilterStateSetters<TFilterBarDefinition>;
|
|
@@ -2,4 +2,4 @@ import { FilterDefinition } from "../types/FilterTypes";
|
|
|
2
2
|
/**
|
|
3
3
|
*
|
|
4
4
|
*/
|
|
5
|
-
export declare const createFilterValues: (mainFilters: FilterDefinition
|
|
5
|
+
export declare const createFilterValues: (mainFilters: Array<FilterDefinition>, useDefaultValues?: boolean) => {};
|
|
@@ -4,10 +4,10 @@ type InitialTypes = {
|
|
|
4
4
|
Init: "";
|
|
5
5
|
} | {
|
|
6
6
|
Arg: "stringArray";
|
|
7
|
-
Init: string
|
|
7
|
+
Init: Array<string>;
|
|
8
8
|
} | {
|
|
9
9
|
Arg: "valueNameArray";
|
|
10
|
-
Init: ValueName
|
|
10
|
+
Init: Array<ValueName>;
|
|
11
11
|
} | {
|
|
12
12
|
Arg: "valueName";
|
|
13
13
|
Init: {
|
|
@@ -44,7 +44,7 @@ export declare const getInitialValueFromType: <TInitialType extends InitialTypes
|
|
|
44
44
|
*/
|
|
45
45
|
export declare const createInitialState: <TFilterBarDefinition extends FilterBarDefinition>({ name, mainFilters, setValue, }: {
|
|
46
46
|
name: string;
|
|
47
|
-
mainFilters: FilterDefinition
|
|
47
|
+
mainFilters: Array<FilterDefinition>;
|
|
48
48
|
setValue: (key: string, callback: (prev: FilterBarInferredValue<TFilterBarDefinition, never> | undefined) => FilterBarInferredValue<TFilterBarDefinition, never> | undefined) => void;
|
|
49
49
|
}) => FilterBarConfig<TFilterBarDefinition>;
|
|
50
50
|
export {};
|
|
@@ -5,4 +5,4 @@ import { FilterDefinition } from "../types/FilterTypes";
|
|
|
5
5
|
* @param {Record<string, FilterDefinition>} filterBarDefinition - The existing filter bar definition to which the filters will be added.
|
|
6
6
|
* @param {FilterDefinition[]} extraFilters - An array of additional filters to merge into the definition.
|
|
7
7
|
*/
|
|
8
|
-
export declare const mergeFilters: (filterBarDefinition: Record<string, FilterDefinition | undefined>, extraFilters: FilterDefinition
|
|
8
|
+
export declare const mergeFilters: (filterBarDefinition: Record<string, FilterDefinition | undefined>, extraFilters: Array<FilterDefinition>) => void;
|
|
@@ -4,4 +4,4 @@
|
|
|
4
4
|
* @template T - The type of the filter values.
|
|
5
5
|
* @returns {(prev?: T[]) => T[]} A function that takes an optional previous array of filter values
|
|
6
6
|
*/
|
|
7
|
-
export declare const toggleFilterValue: <T extends string | number | object>(value: T) => ((prev?: T
|
|
7
|
+
export declare const toggleFilterValue: <T extends string | number | object>(value: T) => ((prev?: Array<T>) => Array<T>);
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BooleanValue, DateRangeValue, FilterBarConfig, FilterBarDefinition, FilterDefinition, FilterDefinitionValue, MinMaxFilterValue, ValueName } from "../types/FilterTypes";
|
|
2
|
+
import { AreaFilterGeoJsonGeometry } from "../types/FilterZodTypes";
|
|
2
3
|
/**
|
|
3
4
|
*
|
|
4
5
|
*/
|
|
@@ -21,7 +22,7 @@ export declare const isArrayFilterValue: (value: FilterDefinitionValue) => value
|
|
|
21
22
|
/**
|
|
22
23
|
*
|
|
23
24
|
*/
|
|
24
|
-
export declare const isStringArrayFilterValue: (value: FilterDefinitionValue) => value is string
|
|
25
|
+
export declare const isStringArrayFilterValue: (value: FilterDefinitionValue) => value is Array<string>;
|
|
25
26
|
/**
|
|
26
27
|
*
|
|
27
28
|
*/
|
|
@@ -33,7 +34,7 @@ export declare const isValueName: (value: unknown) => value is ValueName;
|
|
|
33
34
|
/**
|
|
34
35
|
* Type guard to check if a value is an array of ValueName objects
|
|
35
36
|
*/
|
|
36
|
-
export declare const isValueNameArray: (value: FilterDefinitionValue) => value is ValueName
|
|
37
|
+
export declare const isValueNameArray: (value: FilterDefinitionValue) => value is Array<ValueName>;
|
|
37
38
|
/**
|
|
38
39
|
* Validates a filter configuration against filter definitions.
|
|
39
40
|
*
|
|
@@ -45,5 +46,5 @@ export declare const isValueNameArray: (value: FilterDefinitionValue) => value i
|
|
|
45
46
|
export declare const validateFilter: <TFilterBarDefinition extends FilterBarDefinition>({ values, starredFilterKeys, filterDefinitions, }: {
|
|
46
47
|
values: FilterBarConfig<TFilterBarDefinition>["values"];
|
|
47
48
|
starredFilterKeys: FilterBarConfig<TFilterBarDefinition>["starredFilterKeys"];
|
|
48
|
-
filterDefinitions: FilterDefinition
|
|
49
|
+
filterDefinitions: Array<FilterDefinition>;
|
|
49
50
|
}) => boolean;
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
export * from "./AppliedFiltersRenderer";
|
|
2
|
-
export * from "./DefaultCheckboxFilter";
|
|
3
|
-
export * from "./DefaultDateRangeFilter";
|
|
4
|
-
export * from "./DefaultFilterTypes";
|
|
5
|
-
export * from "./DefaultMinMaxFilter";
|
|
6
|
-
export * from "./DefaultRadioFilter";
|
|
7
|
-
export * from "./DynamicFilterList";
|
|
8
|
-
export * from "./FilterButtonTooltipLabel";
|
|
9
|
-
export * from "./FilterComponent";
|
|
10
|
-
export * from "./FilterHeader";
|
|
11
|
-
export * from "./FilterResults";
|
|
12
|
-
export * from "./FiltersMenu";
|
|
13
|
-
export * from "./FiltersMenuContent";
|
|
14
|
-
export * from "./FiltersRenderer";
|
|
15
|
-
export * from "./FilterTableComponent";
|
|
16
|
-
export * from "./FilterTooltips/MultipleFilterTooltipLabel";
|
|
17
|
-
export * from "./GroupedFiltersList";
|
|
18
|
-
export * from "./HierarchicalCheckboxFilter/HierarchicalCheckboxFilter";
|
|
19
|
-
export * from "./ResetFiltersButton";
|