@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.
Files changed (33) hide show
  1. package/index.cjs.js +3 -8
  2. package/index.esm.js +3 -8
  3. package/package.json +13 -13
  4. package/src/lib/FilterBar.d.ts +1 -1
  5. package/src/lib/components/AppliedFiltersRenderer.d.ts +1 -1
  6. package/src/lib/components/DefaultCheckboxFilter.d.ts +1 -1
  7. package/src/lib/components/DefaultFilterTypes.d.ts +2 -2
  8. package/src/lib/components/FilterOptionsResults.d.ts +2 -2
  9. package/src/lib/components/FilterResults.d.ts +2 -2
  10. package/src/lib/components/FilterTableComponent.d.ts +1 -1
  11. package/src/lib/components/FilterTooltips/MultipleFilterTooltipLabel.d.ts +2 -2
  12. package/src/lib/components/FiltersMenu.d.ts +2 -2
  13. package/src/lib/components/FiltersMenuContent.d.ts +4 -4
  14. package/src/lib/components/FiltersRenderer.d.ts +2 -2
  15. package/src/lib/components/GroupedFiltersList.d.ts +1 -1
  16. package/src/lib/components/HierarchicalCheckboxFilter/HierarchicalCheckboxFilter.d.ts +3 -3
  17. package/src/lib/components/HierarchicalCheckboxFilter/HierarchicalCheckboxFilter.utils.d.ts +2 -2
  18. package/src/lib/components/HierarchicalCheckboxFilter/RenderHierarchicalOption.d.ts +1 -1
  19. package/src/lib/components/HierarchicalCheckboxFilter/useHierarchicalOptionState.d.ts +2 -2
  20. package/src/lib/hooks/useFiltersMenu.d.ts +3 -3
  21. package/src/lib/hooks/useGroupFilters.d.ts +3 -3
  22. package/src/lib/hooks/utils/useFilterBarPersistence.d.ts +1 -1
  23. package/src/lib/index.d.ts +20 -1
  24. package/src/lib/types/FilterTypes.d.ts +14 -66
  25. package/src/lib/types/FilterZodTypes.d.ts +21 -0
  26. package/src/lib/utils/createFilterSetters.d.ts +1 -1
  27. package/src/lib/utils/createFilterValues.d.ts +1 -1
  28. package/src/lib/utils/createInitialState.d.ts +3 -3
  29. package/src/lib/utils/mergeFilters.d.ts +1 -1
  30. package/src/lib/utils/reduceFilterText.d.ts +1 -1
  31. package/src/lib/utils/toggleFilterValue.d.ts +1 -1
  32. package/src/lib/utils/validateFilter.d.ts +5 -4
  33. 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
- hasDefaultValue: doNothing,
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
- hasDefaultValue(key) {
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, filterBarDefinition[key]?.defaultValue) || dequal.dequal(filterValue, initialState?.[key])) {
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
- hasDefaultValue: doNothing,
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
- hasDefaultValue(key) {
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, filterBarDefinition[key]?.defaultValue) || dequal(filterValue, initialState?.[key])) {
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.235",
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.147",
18
- "@trackunit/react-core-hooks": "1.3.152",
19
- "@trackunit/react-filter-components": "1.3.193",
20
- "@trackunit/react-date-and-time-components": "1.3.196",
21
- "@trackunit/shared-utils": "1.5.140",
22
- "@trackunit/react-form-components": "1.3.195",
23
- "@trackunit/react-core-contexts-api": "1.4.147",
24
- "@trackunit/geo-json-utils": "1.3.138",
25
- "@trackunit/i18n-library-translation": "1.3.159",
26
- "@trackunit/css-class-variance-utilities": "1.3.140",
27
- "@trackunit/react-components": "1.4.171",
28
- "@trackunit/react-test-setup": "1.0.30"
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",
@@ -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[] | ValueName[];
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[] | undefined | null;
3
+ results: Array<TResult> | undefined | null;
4
4
  loading?: boolean;
5
5
  ignoreUndefined?: boolean;
6
- children: (results: TResult[]) => ReactElement;
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[] | undefined | null;
3
+ results: Array<TResult> | undefined | null;
4
4
  loading?: boolean;
5
5
  ignoreUndefined?: boolean;
6
- children: (results: TResult[]) => ReactElement;
6
+ children: (results: Array<TResult>) => ReactElement;
7
7
  }
8
8
  /**
9
9
  * Wrapper around results for filters.
@@ -4,7 +4,7 @@ interface FilterComponentProps<TFilterBarDefinition extends FilterBarDefinition>
4
4
  /**
5
5
  * The definition of the filter.
6
6
  */
7
- filterKey: string | string[];
7
+ filterKey: string | Array<string>;
8
8
  /**
9
9
  * The state of the filter.
10
10
  */
@@ -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[]) => 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[] | null;
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[]>, "options" | "customSearch" | "showRequestMoreUseSearch" | "showUndefinedOptionWithCountAtBottom" | "totalRecords"> {
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[], searchTerm: string, parentMatches?: boolean) => 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[]) => 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[], hiddenFilters?: string[]) => UseGroupFiltersReturnType;
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][]) => FilterBarConfig<TFilterBarDefinition>;
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 {};
@@ -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 { z } from "zod";
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 declare const areaFilterGeoJsonGeometrySchema: z.ZodUnion<[z.ZodObject<{
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[]) => void;
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[]) => void;
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
- hasDefaultValue: (key: string) => boolean;
42
+ isDefaultValue: (key: string, value: FilterValueType) => boolean;
69
43
  arrayIncludesValue: (key: string, value: string | boolean) => boolean;
70
- appliedFilterKeys: () => (keyof FilterBarDefinition)[];
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[]) => string[];
149
- component: (filterComponentProps: FilterViewProps<ValueName[]>) => ReactNode;
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[]) => string[];
161
- component: (filterComponentProps: FilterViewProps<string[]>) => ReactNode;
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[] | undefined : Type extends "valueName" ? ValueName | undefined : Type extends "stringArray" ? string[] | undefined : Type extends "minMax" ? MinMaxFilterValue | undefined : Type extends "dateRange" ? DateRangeValue | undefined : undefined : undefined;
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[], setValue: (key: string, callback: (prev: FilterBarInferredValue<TFilterBarDefinition, never> | undefined) => FilterBarInferredValue<TFilterBarDefinition, never> | undefined) => void) => FilterStateSetters<TFilterBarDefinition>;
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[], useDefaultValues?: boolean) => {};
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[]) => void;
8
+ export declare const mergeFilters: (filterBarDefinition: Record<string, FilterDefinition | undefined>, extraFilters: Array<FilterDefinition>) => void;
@@ -4,4 +4,4 @@
4
4
  * @param {string[]} [input] Array of values to reduce
5
5
  * @returns {*} {string}
6
6
  */
7
- export declare const reduceFilterText: (input: string | string[]) => string;
7
+ export declare const reduceFilterText: (input: string | Array<string>) => string;
@@ -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[]) => T[]);
7
+ export declare const toggleFilterValue: <T extends string | number | object>(value: T) => ((prev?: Array<T>) => Array<T>);
@@ -1,4 +1,5 @@
1
- import { AreaFilterGeoJsonGeometry, BooleanValue, DateRangeValue, FilterBarConfig, FilterBarDefinition, FilterDefinition, FilterDefinitionValue, MinMaxFilterValue, ValueName } from "../types/FilterTypes";
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";