@trackunit/filters-filter-bar 0.1.19 → 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
- // eslint-disable-next-line no-autofix/local-rules/prefer-custom-object-keys
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
- // eslint-disable-next-line no-autofix/local-rules/prefer-custom-object-keys
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,6 +1,6 @@
1
1
  {
2
2
  "name": "@trackunit/filters-filter-bar",
3
- "version": "0.1.19",
3
+ "version": "0.1.20",
4
4
  "repository": "https://github.com/Trackunit/manager",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "engines": {
@@ -13,15 +13,16 @@
13
13
  "jest-fetch-mock": "^3.0.3",
14
14
  "tailwind-merge": "^2.0.0",
15
15
  "string-ts": "^2.0.0",
16
- "@trackunit/react-components": "^0.5.41",
17
- "@trackunit/react-core-hooks": "^0.2.272",
18
- "@trackunit/react-filter-components": "^0.1.17",
19
- "@trackunit/react-date-and-time-components": "^0.0.216",
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",
20
21
  "@trackunit/shared-utils": "^0.0.92",
21
- "@trackunit/react-form-components": "^0.2.11",
22
- "@trackunit/react-core-contexts-api": "^0.2.190",
23
- "@trackunit/geo-json-utils": "^0.0.4",
24
- "@trackunit/i18n-library-translation": "^0.0.230"
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 { GeoJsonPolygon } from "@trackunit/geo-json-utils";
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: (polygon: GeoJsonPolygon) => void;
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 type FilterValueType = string[] | ValueName[] | ValueName | MinMaxFilterValue | GeoJsonPolygon | string | number | BooleanValue | undefined;
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: (polygon: GeoJsonPolygon) => void;
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?: GeoJsonPolygon;
112
- valueAsText?: (value: GeoJsonPolygon) => string;
113
- component: (filterComponentProps: FilterViewProps<GeoJsonPolygon>) => React.ReactNode;
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" ? GeoJsonPolygon | 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;
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 { GeoJsonPolygon } from "@trackunit/geo-json-utils";
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 GeoJsonPolygon;
16
+ export declare const isAreaFilterValue: (value: FilterDefinitionValue) => value is AreaFilterGeoJsonGeometry;
18
17
  /**
19
18
  *
20
19
  */