@trackunit/filters-filter-bar 0.1.18 → 0.1.20
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
CHANGED
|
@@ -15,6 +15,8 @@ var tailwindMerge = require('tailwind-merge');
|
|
|
15
15
|
var dequal = require('dequal');
|
|
16
16
|
var isEqual = require('lodash/isEqual');
|
|
17
17
|
var reduce = require('lodash/reduce');
|
|
18
|
+
var geoJsonUtils = require('@trackunit/geo-json-utils');
|
|
19
|
+
var zod = require('zod');
|
|
18
20
|
|
|
19
21
|
var defaultTranslations = {
|
|
20
22
|
"access.management.filter.operator.role.keyAdmin": "Key Admin",
|
|
@@ -1000,6 +1002,8 @@ const createInitialState = (name, mainFilters, initialState, setValue) => {
|
|
|
1000
1002
|
return newFilter;
|
|
1001
1003
|
};
|
|
1002
1004
|
|
|
1005
|
+
const areaFilterGeoJsonGeometrySchema = zod.z.union([geoJsonUtils.geoJsonPolygonSchema, geoJsonUtils.geoJsonMultiPolygonSchema]);
|
|
1006
|
+
|
|
1003
1007
|
const hasValue = (value) => {
|
|
1004
1008
|
if (value === undefined || value === null) {
|
|
1005
1009
|
return false;
|
|
@@ -1046,10 +1050,7 @@ const isDateRangeValue = (value) => {
|
|
|
1046
1050
|
}
|
|
1047
1051
|
*/
|
|
1048
1052
|
const isAreaFilterValue = (value) => {
|
|
1049
|
-
|
|
1050
|
-
return value
|
|
1051
|
-
? typeof value === "object" && Object.keys(value).includes("coordinates") && Object.keys(value).includes("type")
|
|
1052
|
-
: false;
|
|
1053
|
+
return areaFilterGeoJsonGeometrySchema.safeParse(value).success;
|
|
1053
1054
|
};
|
|
1054
1055
|
/**
|
|
1055
1056
|
*
|
|
@@ -1512,6 +1513,7 @@ exports.FilterEvents = FilterEvents;
|
|
|
1512
1513
|
exports.FilterHeader = FilterHeader;
|
|
1513
1514
|
exports.FilterResults = FilterResults;
|
|
1514
1515
|
exports.StarredFilters = StarredFilters;
|
|
1516
|
+
exports.areaFilterGeoJsonGeometrySchema = areaFilterGeoJsonGeometrySchema;
|
|
1515
1517
|
exports.isAreaFilterValue = isAreaFilterValue;
|
|
1516
1518
|
exports.isArrayFilterValue = isArrayFilterValue;
|
|
1517
1519
|
exports.isBooleanValue = isBooleanValue;
|
package/index.esm.js
CHANGED
|
@@ -13,6 +13,8 @@ import { twMerge } from 'tailwind-merge';
|
|
|
13
13
|
import { dequal } from 'dequal';
|
|
14
14
|
import isEqual from 'lodash/isEqual';
|
|
15
15
|
import reduce from 'lodash/reduce';
|
|
16
|
+
import { geoJsonPolygonSchema, geoJsonMultiPolygonSchema } from '@trackunit/geo-json-utils';
|
|
17
|
+
import { z } from 'zod';
|
|
16
18
|
|
|
17
19
|
var defaultTranslations = {
|
|
18
20
|
"access.management.filter.operator.role.keyAdmin": "Key Admin",
|
|
@@ -998,6 +1000,8 @@ const createInitialState = (name, mainFilters, initialState, setValue) => {
|
|
|
998
1000
|
return newFilter;
|
|
999
1001
|
};
|
|
1000
1002
|
|
|
1003
|
+
const areaFilterGeoJsonGeometrySchema = z.union([geoJsonPolygonSchema, geoJsonMultiPolygonSchema]);
|
|
1004
|
+
|
|
1001
1005
|
const hasValue = (value) => {
|
|
1002
1006
|
if (value === undefined || value === null) {
|
|
1003
1007
|
return false;
|
|
@@ -1044,10 +1048,7 @@ const isDateRangeValue = (value) => {
|
|
|
1044
1048
|
}
|
|
1045
1049
|
*/
|
|
1046
1050
|
const isAreaFilterValue = (value) => {
|
|
1047
|
-
|
|
1048
|
-
return value
|
|
1049
|
-
? typeof value === "object" && Object.keys(value).includes("coordinates") && Object.keys(value).includes("type")
|
|
1050
|
-
: false;
|
|
1051
|
+
return areaFilterGeoJsonGeometrySchema.safeParse(value).success;
|
|
1051
1052
|
};
|
|
1052
1053
|
/**
|
|
1053
1054
|
*
|
|
@@ -1500,4 +1501,4 @@ const mergeFilters = (filterBarDefinition, extraFilters) => {
|
|
|
1500
1501
|
*/
|
|
1501
1502
|
setupLibraryTranslations();
|
|
1502
1503
|
|
|
1503
|
-
export { DefaultCheckboxFilter, DefaultDateRangeFilter, DefaultMinMaxFilter, DefaultRadioFilter, DynamicFilterList, FilterBar, FilterEvents, FilterHeader, FilterResults, StarredFilters, isAreaFilterValue, isArrayFilterValue, isBooleanValue, isDateRangeValue, isMinMaxFilterValue, isStringArrayFilterValue, isValueName, isValueNameArray, mergeFilters, mockFilterBar, toggleFilterValue, useFilterBar, validateFilter };
|
|
1504
|
+
export { DefaultCheckboxFilter, DefaultDateRangeFilter, DefaultMinMaxFilter, DefaultRadioFilter, DynamicFilterList, FilterBar, FilterEvents, FilterHeader, FilterResults, StarredFilters, areaFilterGeoJsonGeometrySchema, isAreaFilterValue, isArrayFilterValue, isBooleanValue, isDateRangeValue, isMinMaxFilterValue, isStringArrayFilterValue, isValueName, isValueNameArray, mergeFilters, mockFilterBar, toggleFilterValue, useFilterBar, validateFilter };
|
package/package.json
CHANGED
|
@@ -1,27 +1,28 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@trackunit/filters-filter-bar",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.20",
|
|
4
4
|
"repository": "https://github.com/Trackunit/manager",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.txt",
|
|
6
6
|
"engines": {
|
|
7
7
|
"node": ">=20.x"
|
|
8
8
|
},
|
|
9
9
|
"dependencies": {
|
|
10
|
-
"@trackunit/react-core-hooks": "*",
|
|
11
|
-
"@trackunit/shared-utils": "*",
|
|
12
|
-
"@trackunit/geo-json-utils": "*",
|
|
13
|
-
"@trackunit/react-components": "*",
|
|
14
|
-
"@trackunit/react-filter-components": "*",
|
|
15
10
|
"react": "18.3.1",
|
|
16
|
-
"@trackunit/react-form-components": "*",
|
|
17
11
|
"dequal": "^2.0.3",
|
|
18
12
|
"lodash": "4.17.21",
|
|
19
13
|
"jest-fetch-mock": "^3.0.3",
|
|
20
|
-
"@trackunit/react-core-contexts-api": "*",
|
|
21
|
-
"@trackunit/i18n-library-translation": "*",
|
|
22
14
|
"tailwind-merge": "^2.0.0",
|
|
23
|
-
"
|
|
24
|
-
"
|
|
15
|
+
"string-ts": "^2.0.0",
|
|
16
|
+
"zod": "3.22.4",
|
|
17
|
+
"@trackunit/react-components": "^0.5.42",
|
|
18
|
+
"@trackunit/react-core-hooks": "^0.2.273",
|
|
19
|
+
"@trackunit/react-filter-components": "^0.1.18",
|
|
20
|
+
"@trackunit/react-date-and-time-components": "^0.0.217",
|
|
21
|
+
"@trackunit/shared-utils": "^0.0.92",
|
|
22
|
+
"@trackunit/react-form-components": "^0.2.12",
|
|
23
|
+
"@trackunit/react-core-contexts-api": "^0.2.191",
|
|
24
|
+
"@trackunit/geo-json-utils": "^0.0.5",
|
|
25
|
+
"@trackunit/i18n-library-translation": "^0.0.231"
|
|
25
26
|
},
|
|
26
27
|
"module": "./index.esm.js",
|
|
27
28
|
"main": "./index.cjs.js",
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { BooleanValue, DateRangeValue, FilterBarDefinition, FilterStateValues, FilterValueType, InitialState, MinMaxFilterValue, NumberValue, ValueName } from "../types/FilterTypes";
|
|
1
|
+
import { AreaFilterGeoJsonGeometry, BooleanValue, DateRangeValue, FilterBarDefinition, FilterStateValues, FilterValueType, InitialState, MinMaxFilterValue, NumberValue, ValueName } from "../types/FilterTypes";
|
|
3
2
|
export interface FilterBarProps<TFilterBarDefinition extends FilterBarDefinition> {
|
|
4
3
|
/**
|
|
5
4
|
* The name of the filter bar.
|
|
@@ -39,7 +38,7 @@ export declare const useFilterBar: <TFilterBarDefinition extends FilterBarDefini
|
|
|
39
38
|
toggleArrayValue: (key: string, value: string) => void;
|
|
40
39
|
setStringValue: (key: string, value: string) => void;
|
|
41
40
|
setArrayValue: (key: string, value: string[]) => void;
|
|
42
|
-
setArea: (
|
|
41
|
+
setArea: (area: AreaFilterGeoJsonGeometry) => void;
|
|
43
42
|
setNumberValue: (key: string, value: NumberValue) => void;
|
|
44
43
|
setBooleanValue: (key: string, value: BooleanValue) => void;
|
|
45
44
|
setDateRange: (key: string, value: DateRangeValue) => void;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { GeoJsonPolygon } from "@trackunit/geo-json-utils";
|
|
2
1
|
import React from "react";
|
|
2
|
+
import { z } from "zod";
|
|
3
3
|
export type ValueName = {
|
|
4
4
|
value: string;
|
|
5
5
|
name: string;
|
|
@@ -14,14 +14,34 @@ export type MinMaxFilterValue = {
|
|
|
14
14
|
min?: number;
|
|
15
15
|
max?: number;
|
|
16
16
|
};
|
|
17
|
-
export
|
|
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, z.ZodNumber], null>, "many">, [number, number][], [number, number][]>, "many">;
|
|
20
|
+
}, "strict", z.ZodTypeAny, {
|
|
21
|
+
type: "Polygon";
|
|
22
|
+
coordinates: [number, number][][];
|
|
23
|
+
}, {
|
|
24
|
+
type: "Polygon";
|
|
25
|
+
coordinates: [number, number][][];
|
|
26
|
+
}>, z.ZodObject<{
|
|
27
|
+
type: z.ZodLiteral<"MultiPolygon">;
|
|
28
|
+
coordinates: z.ZodArray<z.ZodArray<z.ZodEffects<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, "many">, [number, number][], [number, number][]>, "many">, "many">;
|
|
29
|
+
}, "strict", z.ZodTypeAny, {
|
|
30
|
+
type: "MultiPolygon";
|
|
31
|
+
coordinates: [number, number][][][];
|
|
32
|
+
}, {
|
|
33
|
+
type: "MultiPolygon";
|
|
34
|
+
coordinates: [number, number][][][];
|
|
35
|
+
}>]>;
|
|
36
|
+
export type AreaFilterGeoJsonGeometry = z.infer<typeof areaFilterGeoJsonGeometrySchema>;
|
|
37
|
+
export type FilterValueType = string[] | ValueName[] | ValueName | MinMaxFilterValue | AreaFilterGeoJsonGeometry | string | number | BooleanValue | undefined;
|
|
18
38
|
export declare type FilterTypes = "boolean" | "string" | "number" | "dateRange" | "area" | "valueNameArray" | "valueName" | "stringArray" | "minMax";
|
|
19
39
|
export type FilterMapActions = {
|
|
20
40
|
updateStarredFilters: (filterkey: string) => void;
|
|
21
41
|
toggleArrayValue: (key: string, value: string) => void;
|
|
22
42
|
setStringValue: (key: string, value: string) => void;
|
|
23
43
|
setArrayValue: (key: string, value: string[]) => void;
|
|
24
|
-
setArea: (
|
|
44
|
+
setArea: (area: AreaFilterGeoJsonGeometry) => void;
|
|
25
45
|
setNumberValue: (key: string, value: NumberValue) => void;
|
|
26
46
|
setBooleanValue: (key: string, value: BooleanValue) => void;
|
|
27
47
|
setDateRange: (key: string, value: DateRangeValue) => void;
|
|
@@ -108,9 +128,9 @@ export interface NumberFilterDefinition extends AbstractFilterDefinition {
|
|
|
108
128
|
}
|
|
109
129
|
export interface AreaFilterDefinition extends AbstractFilterDefinition {
|
|
110
130
|
type: "area";
|
|
111
|
-
defaultValue?:
|
|
112
|
-
valueAsText?: (value:
|
|
113
|
-
component: (filterComponentProps: FilterViewProps<
|
|
131
|
+
defaultValue?: AreaFilterGeoJsonGeometry;
|
|
132
|
+
valueAsText?: (value: AreaFilterGeoJsonGeometry) => string;
|
|
133
|
+
component: (filterComponentProps: FilterViewProps<AreaFilterGeoJsonGeometry>) => React.ReactNode;
|
|
114
134
|
}
|
|
115
135
|
export interface ValueNameArrayFilterDefinition extends AbstractFilterDefinition {
|
|
116
136
|
type: "valueNameArray";
|
|
@@ -178,7 +198,7 @@ export type FiltersStoreInstance<T extends FilterBarDefinition> = Partial<Filter
|
|
|
178
198
|
export interface FilterStateMap<T extends FilterBarDefinition> {
|
|
179
199
|
filtersMap: Record<string, FilterBarConfig<T>>;
|
|
180
200
|
}
|
|
181
|
-
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" ?
|
|
201
|
+
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;
|
|
182
202
|
export type SetterKey<T extends string> = `set${Capitalize<T>}`;
|
|
183
203
|
export type ReverseSetterKey<T extends string> = Uncapitalize<T extends `set${infer U}` ? U : never>;
|
|
184
204
|
export type ExtractFilterKeys<T extends FilterBarDefinition> = Extract<keyof T, string>;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { BooleanValue, DateRangeValue, FilterBarConfig, FilterBarDefinition, FilterDefinition, FilterDefinitionValue, MinMaxFilterValue, ValueName } from "../types/FilterTypes";
|
|
1
|
+
import { AreaFilterGeoJsonGeometry, BooleanValue, DateRangeValue, FilterBarConfig, FilterBarDefinition, FilterDefinition, FilterDefinitionValue, MinMaxFilterValue, ValueName } from "../types/FilterTypes";
|
|
3
2
|
/**
|
|
4
3
|
*
|
|
5
4
|
*/
|
|
@@ -14,7 +13,7 @@ export declare const isDateRangeValue: (value: FilterDefinitionValue) => value i
|
|
|
14
13
|
coordinates: [number, number][][];
|
|
15
14
|
}
|
|
16
15
|
*/
|
|
17
|
-
export declare const isAreaFilterValue: (value: FilterDefinitionValue) => value is
|
|
16
|
+
export declare const isAreaFilterValue: (value: FilterDefinitionValue) => value is AreaFilterGeoJsonGeometry;
|
|
18
17
|
/**
|
|
19
18
|
*
|
|
20
19
|
*/
|