@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 +32 -18
- package/index.esm.js +31 -17
- package/package.json +3 -3
- package/src/hooks/useSetFilterStateFromUrl.d.ts +1 -2
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
|
|
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 } =
|
|
2161
|
-
const navigate =
|
|
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,
|
|
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
|
|
2562
|
+
const search = reactRouter.useSearch({ strict: false });
|
|
2563
|
+
const navigate = reactRouter.useNavigate();
|
|
2563
2564
|
react.useEffect(() => {
|
|
2564
|
-
handleSearchParamAsFilter("q", "search",
|
|
2565
|
+
handleSearchParamAsFilter("q", "search", search, stringSchema, value => {
|
|
2565
2566
|
setters.setSearch(() => value);
|
|
2566
2567
|
});
|
|
2567
|
-
handleSearchParamAsFilter("boundingBox", "boundingBox",
|
|
2568
|
+
handleSearchParamAsFilter("boundingBox", "boundingBox", search, boundingBoxSchema, value => {
|
|
2568
2569
|
setters.setBoundingBox(() => value);
|
|
2569
2570
|
});
|
|
2570
|
-
handleSearchParamAsFilter("groups", "groups",
|
|
2571
|
+
handleSearchParamAsFilter("groups", "groups", search, groupSchema, value => {
|
|
2571
2572
|
setters.setGroups(() => value);
|
|
2572
2573
|
});
|
|
2573
|
-
handleSearchParamAsFilter("criticalities", "criticality",
|
|
2574
|
+
handleSearchParamAsFilter("criticalities", "criticality", search, criticalitiesSchema, value => {
|
|
2574
2575
|
setters.setCriticality(() => value);
|
|
2575
2576
|
});
|
|
2576
|
-
|
|
2577
|
-
|
|
2578
|
-
|
|
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,
|
|
2581
|
-
|
|
2582
|
-
|
|
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
|
-
|
|
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 {
|
|
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 } =
|
|
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,
|
|
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
|
|
2538
|
+
const search = useSearch({ strict: false });
|
|
2539
|
+
const navigate = useNavigate();
|
|
2539
2540
|
useEffect(() => {
|
|
2540
|
-
handleSearchParamAsFilter("q", "search",
|
|
2541
|
+
handleSearchParamAsFilter("q", "search", search, stringSchema, value => {
|
|
2541
2542
|
setters.setSearch(() => value);
|
|
2542
2543
|
});
|
|
2543
|
-
handleSearchParamAsFilter("boundingBox", "boundingBox",
|
|
2544
|
+
handleSearchParamAsFilter("boundingBox", "boundingBox", search, boundingBoxSchema, value => {
|
|
2544
2545
|
setters.setBoundingBox(() => value);
|
|
2545
2546
|
});
|
|
2546
|
-
handleSearchParamAsFilter("groups", "groups",
|
|
2547
|
+
handleSearchParamAsFilter("groups", "groups", search, groupSchema, value => {
|
|
2547
2548
|
setters.setGroups(() => value);
|
|
2548
2549
|
});
|
|
2549
|
-
handleSearchParamAsFilter("criticalities", "criticality",
|
|
2550
|
+
handleSearchParamAsFilter("criticalities", "criticality", search, criticalitiesSchema, value => {
|
|
2550
2551
|
setters.setCriticality(() => value);
|
|
2551
2552
|
});
|
|
2552
|
-
|
|
2553
|
-
|
|
2554
|
-
|
|
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,
|
|
2557
|
-
|
|
2558
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
11
|
-
setSearchParams: import("react-router-dom").SetURLSearchParams;
|
|
10
|
+
search: any;
|
|
12
11
|
};
|
|
13
12
|
export {};
|