@trackunit/filters-asset-filter-definitions 0.0.139 → 0.0.140

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
@@ -16,7 +16,7 @@ var criticalityIndicator = require('@trackunit/criticality-indicator');
16
16
  var reactCoreHooks = require('@trackunit/react-core-hooks');
17
17
  var reactFormComponents = require('@trackunit/react-form-components');
18
18
  var sharedUtils = require('@trackunit/shared-utils');
19
- var reactRouterDom = require('react-router-dom');
19
+ var reactRouter = require('@tanstack/react-router');
20
20
  var Sentry = require('@sentry/browser');
21
21
  var zod = require('zod');
22
22
 
@@ -2157,10 +2157,10 @@ const useProductionYearFilter = () => {
2157
2157
  };
2158
2158
 
2159
2159
  const SearchFiltersView = (props) => {
2160
- const { pathname } = reactRouterDom.useLocation();
2161
- const navigate = reactRouterDom.useNavigate();
2160
+ const { location: { pathname }, } = reactRouter.useRouterState();
2161
+ const navigate = reactRouter.useNavigate();
2162
2162
  return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(filtersFilterBar.FilterHeader, Object.assign({}, props.filterDefinition, props.filterBarActions, { onResetFilter: () => {
2163
- navigate(pathname, { replace: true });
2163
+ navigate({ to: pathname, params: prev => prev, replace: true });
2164
2164
  } })), jsxRuntime.jsx(reactFilterComponents.FilterBody, { limitSize: true, children: props.value })] }));
2165
2165
  };
2166
2166
  /**
@@ -2559,34 +2559,49 @@ const useDefaultAssetFilterBarDefinition = () => {
2559
2559
  * Parses (some) filters from the url and sets their respective values in the filter bar.
2560
2560
  */
2561
2561
  const useSetFilterStateFromUrl = ({ setters }) => {
2562
- const [searchParams, setSearchParams] = reactRouterDom.useSearchParams();
2562
+ const search = reactRouter.useSearch({ strict: false });
2563
+ const navigate = reactRouter.useNavigate();
2563
2564
  react.useEffect(() => {
2564
- handleSearchParamAsFilter("q", "search", searchParams, stringSchema, value => {
2565
+ handleSearchParamAsFilter("q", "search", search, stringSchema, value => {
2565
2566
  setters.setSearch(() => value);
2566
2567
  });
2567
- handleSearchParamAsFilter("boundingBox", "boundingBox", searchParams, boundingBoxSchema, value => {
2568
+ handleSearchParamAsFilter("boundingBox", "boundingBox", search, boundingBoxSchema, value => {
2568
2569
  setters.setBoundingBox(() => value);
2569
2570
  });
2570
- handleSearchParamAsFilter("groups", "groups", searchParams, groupSchema, value => {
2571
+ handleSearchParamAsFilter("groups", "groups", search, groupSchema, value => {
2571
2572
  setters.setGroups(() => value);
2572
2573
  });
2573
- handleSearchParamAsFilter("criticalities", "criticality", searchParams, criticalitiesSchema, value => {
2574
+ handleSearchParamAsFilter("criticalities", "criticality", search, criticalitiesSchema, value => {
2574
2575
  setters.setCriticality(() => value);
2575
2576
  });
2576
- setSearchParams(searchParams, { replace: true });
2577
- }, [searchParams, setters, setSearchParams]);
2578
- return { searchParams, setSearchParams };
2577
+ navigate({
2578
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
2579
+ search: (prev) => {
2580
+ const searchWithFilters = Object.assign(Object.assign({}, prev), { q: undefined, groups: undefined, criticalities: undefined, boundingBox: undefined });
2581
+ return Object.assign(Object.assign({}, prev), searchWithFilters);
2582
+ },
2583
+ replace: true,
2584
+ params: {},
2585
+ });
2586
+ }, [search, setters, navigate]);
2587
+ return { search };
2579
2588
  };
2580
- const handleSearchParamAsFilter = (searchParamName, filterName, searchParams, zodSchema, setter) => {
2581
- const foundParam = searchParams.get(searchParamName);
2582
- if (foundParam) {
2589
+ const handleSearchParamAsFilter = (searchParamName, filterName, search, zodSchema, setter) => {
2590
+ if (Object.keys(search).includes(searchParamName)) {
2591
+ // eslint-disable-next-line local-rules/no-typescript-assertion, @typescript-eslint/no-explicit-any
2592
+ const foundParam = search[searchParamName];
2583
2593
  try {
2584
2594
  let jsonParsed = null;
2585
2595
  if (zodSchema._def.typeName === "ZodString") {
2586
- jsonParsed = foundParam;
2596
+ jsonParsed = foundParam ? foundParam + "" : foundParam;
2587
2597
  }
2588
2598
  else {
2589
- jsonParsed = JSON.parse(foundParam);
2599
+ if (typeof search === "string") {
2600
+ jsonParsed = JSON.parse(foundParam);
2601
+ }
2602
+ else {
2603
+ jsonParsed = foundParam;
2604
+ }
2590
2605
  }
2591
2606
  const zodParsed = zodSchema.safeParse(jsonParsed);
2592
2607
  if (zodParsed.success) {
@@ -2609,7 +2624,6 @@ const handleSearchParamAsFilter = (searchParamName, filterName, searchParams, zo
2609
2624
  zodParseError: null,
2610
2625
  });
2611
2626
  }
2612
- searchParams.delete(searchParamName);
2613
2627
  }
2614
2628
  };
2615
2629
  const captureUrlParseException = ({ filterName, param, jsonParsed: parsed, }) => Sentry__namespace.captureException(new Error(JSON.stringify({
package/index.esm.js CHANGED
@@ -12,7 +12,7 @@ import { CriticalityIndicator } from '@trackunit/criticality-indicator';
12
12
  import { useAnalytics } from '@trackunit/react-core-hooks';
13
13
  import { RadioGroup, RadioItem } from '@trackunit/react-form-components';
14
14
  import { hourIntervals, enumFromValue } from '@trackunit/shared-utils';
15
- import { useLocation, useNavigate, useSearchParams } from 'react-router-dom';
15
+ import { useRouterState, useNavigate, useSearch } from '@tanstack/react-router';
16
16
  import * as Sentry from '@sentry/browser';
17
17
  import { z } from 'zod';
18
18
 
@@ -2133,10 +2133,10 @@ const useProductionYearFilter = () => {
2133
2133
  };
2134
2134
 
2135
2135
  const SearchFiltersView = (props) => {
2136
- const { pathname } = useLocation();
2136
+ const { location: { pathname }, } = useRouterState();
2137
2137
  const navigate = useNavigate();
2138
2138
  return (jsxs(Fragment, { children: [jsx(FilterHeader, Object.assign({}, props.filterDefinition, props.filterBarActions, { onResetFilter: () => {
2139
- navigate(pathname, { replace: true });
2139
+ navigate({ to: pathname, params: prev => prev, replace: true });
2140
2140
  } })), jsx(FilterBody, { limitSize: true, children: props.value })] }));
2141
2141
  };
2142
2142
  /**
@@ -2535,34 +2535,49 @@ const useDefaultAssetFilterBarDefinition = () => {
2535
2535
  * Parses (some) filters from the url and sets their respective values in the filter bar.
2536
2536
  */
2537
2537
  const useSetFilterStateFromUrl = ({ setters }) => {
2538
- const [searchParams, setSearchParams] = useSearchParams();
2538
+ const search = useSearch({ strict: false });
2539
+ const navigate = useNavigate();
2539
2540
  useEffect(() => {
2540
- handleSearchParamAsFilter("q", "search", searchParams, stringSchema, value => {
2541
+ handleSearchParamAsFilter("q", "search", search, stringSchema, value => {
2541
2542
  setters.setSearch(() => value);
2542
2543
  });
2543
- handleSearchParamAsFilter("boundingBox", "boundingBox", searchParams, boundingBoxSchema, value => {
2544
+ handleSearchParamAsFilter("boundingBox", "boundingBox", search, boundingBoxSchema, value => {
2544
2545
  setters.setBoundingBox(() => value);
2545
2546
  });
2546
- handleSearchParamAsFilter("groups", "groups", searchParams, groupSchema, value => {
2547
+ handleSearchParamAsFilter("groups", "groups", search, groupSchema, value => {
2547
2548
  setters.setGroups(() => value);
2548
2549
  });
2549
- handleSearchParamAsFilter("criticalities", "criticality", searchParams, criticalitiesSchema, value => {
2550
+ handleSearchParamAsFilter("criticalities", "criticality", search, criticalitiesSchema, value => {
2550
2551
  setters.setCriticality(() => value);
2551
2552
  });
2552
- setSearchParams(searchParams, { replace: true });
2553
- }, [searchParams, setters, setSearchParams]);
2554
- return { searchParams, setSearchParams };
2553
+ navigate({
2554
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
2555
+ search: (prev) => {
2556
+ const searchWithFilters = Object.assign(Object.assign({}, prev), { q: undefined, groups: undefined, criticalities: undefined, boundingBox: undefined });
2557
+ return Object.assign(Object.assign({}, prev), searchWithFilters);
2558
+ },
2559
+ replace: true,
2560
+ params: {},
2561
+ });
2562
+ }, [search, setters, navigate]);
2563
+ return { search };
2555
2564
  };
2556
- const handleSearchParamAsFilter = (searchParamName, filterName, searchParams, zodSchema, setter) => {
2557
- const foundParam = searchParams.get(searchParamName);
2558
- if (foundParam) {
2565
+ const handleSearchParamAsFilter = (searchParamName, filterName, search, zodSchema, setter) => {
2566
+ if (Object.keys(search).includes(searchParamName)) {
2567
+ // eslint-disable-next-line local-rules/no-typescript-assertion, @typescript-eslint/no-explicit-any
2568
+ const foundParam = search[searchParamName];
2559
2569
  try {
2560
2570
  let jsonParsed = null;
2561
2571
  if (zodSchema._def.typeName === "ZodString") {
2562
- jsonParsed = foundParam;
2572
+ jsonParsed = foundParam ? foundParam + "" : foundParam;
2563
2573
  }
2564
2574
  else {
2565
- jsonParsed = JSON.parse(foundParam);
2575
+ if (typeof search === "string") {
2576
+ jsonParsed = JSON.parse(foundParam);
2577
+ }
2578
+ else {
2579
+ jsonParsed = foundParam;
2580
+ }
2566
2581
  }
2567
2582
  const zodParsed = zodSchema.safeParse(jsonParsed);
2568
2583
  if (zodParsed.success) {
@@ -2585,7 +2600,6 @@ const handleSearchParamAsFilter = (searchParamName, filterName, searchParams, zo
2585
2600
  zodParseError: null,
2586
2601
  });
2587
2602
  }
2588
- searchParams.delete(searchParamName);
2589
2603
  }
2590
2604
  };
2591
2605
  const captureUrlParseException = ({ filterName, param, jsonParsed: parsed, }) => Sentry.captureException(new Error(JSON.stringify({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trackunit/filters-asset-filter-definitions",
3
- "version": "0.0.139",
3
+ "version": "0.0.140",
4
4
  "repository": "https://github.com/Trackunit/manager",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "engines": {
@@ -22,7 +22,6 @@
22
22
  "@trackunit/react-core-hooks": "*",
23
23
  "@trackunit/react-form-components": "*",
24
24
  "@trackunit/shared-utils": "*",
25
- "react-router-dom": "6.18.0",
26
25
  "@graphql-typed-document-node/core": "^3.2.0",
27
26
  "graphql": "^15.8.0",
28
27
  "@trackunit/iris-app-api": "*",
@@ -30,7 +29,8 @@
30
29
  "@sentry/browser": "^7.79.0",
31
30
  "zod": "3.22.4",
32
31
  "@trackunit/i18n-library-translation": "*",
33
- "jest-fetch-mock": "^3.0.3"
32
+ "jest-fetch-mock": "^3.0.3",
33
+ "@tanstack/react-router": "1.19.1"
34
34
  },
35
35
  "module": "./index.esm.js",
36
36
  "main": "./index.cjs.js"
@@ -7,7 +7,6 @@ interface UseSetFilterStateFromUrlProps {
7
7
  * Parses (some) filters from the url and sets their respective values in the filter bar.
8
8
  */
9
9
  export declare const useSetFilterStateFromUrl: ({ setters }: UseSetFilterStateFromUrlProps) => {
10
- searchParams: URLSearchParams;
11
- setSearchParams: import("react-router-dom").SetURLSearchParams;
10
+ search: any;
12
11
  };
13
12
  export {};