pne-ui 4.0.45 → 4.0.46
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/README.md +17 -0
- package/cjs/component/search-ui/SearchUI.js +14 -11
- package/cjs/component/search-ui/SearchUI.js.map +1 -1
- package/cjs/component/search-ui/filters/SearchUIFilters.d.ts +1 -0
- package/cjs/component/search-ui/filters/SearchUIFilters.js +28 -11
- package/cjs/component/search-ui/filters/SearchUIFilters.js.map +1 -1
- package/cjs/component/search-ui/filters/state/SearchUIFiltersStoreProvider.d.ts +7 -0
- package/cjs/component/search-ui/filters/state/SearchUIFiltersStoreProvider.js +30 -0
- package/cjs/component/search-ui/filters/state/SearchUIFiltersStoreProvider.js.map +1 -0
- package/cjs/component/search-ui/filters/state/actions.js +139 -41
- package/cjs/component/search-ui/filters/state/actions.js.map +1 -1
- package/cjs/component/search-ui/filters/state/initial.js +5 -0
- package/cjs/component/search-ui/filters/state/initial.js.map +1 -1
- package/cjs/component/search-ui/filters/state/retention.d.ts +5 -0
- package/cjs/component/search-ui/filters/state/retention.js +106 -0
- package/cjs/component/search-ui/filters/state/retention.js.map +1 -0
- package/cjs/component/search-ui/filters/state/store.d.ts +11 -1068
- package/cjs/component/search-ui/filters/state/store.js +22 -2
- package/cjs/component/search-ui/filters/state/store.js.map +1 -1
- package/cjs/component/search-ui/filters/state/type.d.ts +16 -1
- package/esm/component/search-ui/SearchUI.js +12 -9
- package/esm/component/search-ui/SearchUI.js.map +1 -1
- package/esm/component/search-ui/filters/SearchUIFilters.d.ts +1 -0
- package/esm/component/search-ui/filters/SearchUIFilters.js +26 -10
- package/esm/component/search-ui/filters/SearchUIFilters.js.map +1 -1
- package/esm/component/search-ui/filters/state/SearchUIFiltersStoreProvider.d.ts +7 -0
- package/esm/component/search-ui/filters/state/SearchUIFiltersStoreProvider.js +25 -0
- package/esm/component/search-ui/filters/state/SearchUIFiltersStoreProvider.js.map +1 -0
- package/esm/component/search-ui/filters/state/actions.js +139 -41
- package/esm/component/search-ui/filters/state/actions.js.map +1 -1
- package/esm/component/search-ui/filters/state/initial.js +5 -0
- package/esm/component/search-ui/filters/state/initial.js.map +1 -1
- package/esm/component/search-ui/filters/state/retention.d.ts +5 -0
- package/esm/component/search-ui/filters/state/retention.js +98 -0
- package/esm/component/search-ui/filters/state/retention.js.map +1 -0
- package/esm/component/search-ui/filters/state/store.d.ts +11 -1068
- package/esm/component/search-ui/filters/state/store.js +18 -2
- package/esm/component/search-ui/filters/state/store.js.map +1 -1
- package/esm/component/search-ui/filters/state/type.d.ts +16 -1
- package/package.json +1 -1
|
@@ -1,14 +1,34 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.useSearchUIFiltersStore = void 0;
|
|
3
|
+
exports.useSearchUIFiltersStore = exports.useSearchUIFiltersStoreApi = exports.useSearchUIFiltersStoreContext = exports.SearchUIFiltersStoreContext = exports.createSearchUIFiltersStore = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
4
5
|
const zustand_1 = require("zustand");
|
|
6
|
+
const vanilla_1 = require("zustand/vanilla");
|
|
5
7
|
const immer_1 = require("zustand/middleware/immer");
|
|
6
8
|
const immer_2 = require("immer");
|
|
7
9
|
const actions_1 = require("./actions");
|
|
8
10
|
const initial_1 = require("./initial");
|
|
9
11
|
(0, immer_2.enableMapSet)();
|
|
10
|
-
|
|
12
|
+
const createSearchUIFiltersStore = () => (0, vanilla_1.createStore)()((0, immer_1.immer)((set, get) => ({
|
|
11
13
|
...(0, initial_1.getSearchUIFiltersInitialState)(),
|
|
12
14
|
...(0, actions_1.getSearchUIFiltersActions)(set, get),
|
|
13
15
|
})));
|
|
16
|
+
exports.createSearchUIFiltersStore = createSearchUIFiltersStore;
|
|
17
|
+
exports.SearchUIFiltersStoreContext = (0, react_1.createContext)(null);
|
|
18
|
+
const useSearchUIFiltersStoreContext = () => {
|
|
19
|
+
const context = (0, react_1.useContext)(exports.SearchUIFiltersStoreContext);
|
|
20
|
+
if (!context) {
|
|
21
|
+
throw new Error('SearchUI store is missing. Render SearchUI components inside their store scope.');
|
|
22
|
+
}
|
|
23
|
+
return context;
|
|
24
|
+
};
|
|
25
|
+
exports.useSearchUIFiltersStoreContext = useSearchUIFiltersStoreContext;
|
|
26
|
+
const useSearchUIFiltersStoreApi = () => {
|
|
27
|
+
return (0, exports.useSearchUIFiltersStoreContext)().store;
|
|
28
|
+
};
|
|
29
|
+
exports.useSearchUIFiltersStoreApi = useSearchUIFiltersStoreApi;
|
|
30
|
+
const useSearchUIFiltersStore = (selector) => {
|
|
31
|
+
return (0, zustand_1.useStore)((0, exports.useSearchUIFiltersStoreApi)(), selector);
|
|
32
|
+
};
|
|
33
|
+
exports.useSearchUIFiltersStore = useSearchUIFiltersStore;
|
|
14
34
|
//# sourceMappingURL=store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../../../src/component/search-ui/filters/state/store.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../../../src/component/search-ui/filters/state/store.ts"],"names":[],"mappings":";;;AAAA,iCAA+C;AAC/C,qCAAgC;AAChC,6CAAqD;AACrD,oDAA8C;AAC9C,iCAAkC;AAElC,uCAAoD;AACpD,uCAAyD;AAEzD,IAAA,oBAAY,GAAE,CAAA;AAIP,MAAM,0BAA0B,GAAG,GAA4B,EAAE,CAAC,IAAA,qBAAW,GAAwB,CACxG,IAAA,aAAK,EACD,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IACX,GAAG,IAAA,wCAA8B,GAAE;IACnC,GAAG,IAAA,mCAAyB,EAAC,GAAG,EAAE,GAAG,CAAC;CACzC,CAAC,CACL,CACJ,CAAA;AAPY,QAAA,0BAA0B,8BAOtC;AAOY,QAAA,2BAA2B,GAAG,IAAA,qBAAa,EAA0C,IAAI,CAAC,CAAA;AAEhG,MAAM,8BAA8B,GAAG,GAAqC,EAAE;IACjF,MAAM,OAAO,GAAG,IAAA,kBAAU,EAAC,mCAA2B,CAAC,CAAA;IACvD,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAA;IACtG,CAAC;IACD,OAAO,OAAO,CAAA;AAClB,CAAC,CAAA;AANY,QAAA,8BAA8B,kCAM1C;AAEM,MAAM,0BAA0B,GAAG,GAA4B,EAAE;IACpE,OAAO,IAAA,sCAA8B,GAAE,CAAC,KAAK,CAAA;AACjD,CAAC,CAAA;AAFY,QAAA,0BAA0B,8BAEtC;AAEM,MAAM,uBAAuB,GAAG,CAAM,QAA4C,EAAK,EAAE;IAC5F,OAAO,IAAA,kBAAQ,EAAC,IAAA,kCAA0B,GAAE,EAAE,QAAQ,CAAC,CAAA;AAC3D,CAAC,CAAA;AAFY,QAAA,uBAAuB,2BAEnC"}
|
|
@@ -3,6 +3,16 @@ import { AbstractEntity, AbstractEntityAllableCollection, AutoCompleteChoice } f
|
|
|
3
3
|
import { SearchUIFiltersConfig } from '../SearchUIFilters';
|
|
4
4
|
import { SearchUIDefaults } from '../../SearchUIProvider';
|
|
5
5
|
export type SearchUIFiltersStore = SearchUIFiltersState & SearchUIFiltersActions;
|
|
6
|
+
export type SearchUIRetentionSnapshot = {
|
|
7
|
+
searchConditions: SearchUIConditions;
|
|
8
|
+
appliedSearchCriteria: SearchCriteria | null;
|
|
9
|
+
activeTemplateName: string | null;
|
|
10
|
+
hasUnappliedFilters: boolean;
|
|
11
|
+
possibleCriteria: CriterionTypeEnum[];
|
|
12
|
+
predefinedCriteria: CriterionTypeEnum[];
|
|
13
|
+
exactSearchLabels: ExactCriterionSearchLabelEnum[];
|
|
14
|
+
manualSearch: boolean;
|
|
15
|
+
};
|
|
6
16
|
export type SearchUIPrefetchedTransactionSessionStatuses = Map<TransactionSessionGroup, TransactionSessionStatus[]>;
|
|
7
17
|
export type SearchUIPrefetchedData = {
|
|
8
18
|
transactionSessionStatuses?: SearchUIPrefetchedTransactionSessionStatuses;
|
|
@@ -18,24 +28,29 @@ export type SearchUIClearCriteriaUndoSnapshot = SearchUIConditions & {
|
|
|
18
28
|
hasUnappliedFilters: boolean;
|
|
19
29
|
};
|
|
20
30
|
export type SearchUIFiltersState = SearchUIConditions & {
|
|
31
|
+
initialized: boolean;
|
|
21
32
|
defaults: SearchUIDefaults;
|
|
22
33
|
settingsContextName: string;
|
|
23
34
|
possibleCriteria: CriterionTypeEnum[];
|
|
24
35
|
predefinedCriteria: CriterionTypeEnum[];
|
|
25
36
|
exactSearchLabels: ExactCriterionSearchLabelEnum[];
|
|
26
37
|
template: SearchUITemplate | null;
|
|
38
|
+
activeTemplateName: string | null;
|
|
27
39
|
templates: SearchUITemplate[];
|
|
28
40
|
justAddedCriterion: CriterionTypeEnum | null;
|
|
29
41
|
config?: SearchUIFiltersConfig;
|
|
30
42
|
prevSearchCriteria: SearchCriteria | null;
|
|
43
|
+
appliedSearchCriteria: SearchCriteria | null;
|
|
31
44
|
hasUnappliedFilters: boolean;
|
|
45
|
+
restoredFromRetention: boolean;
|
|
46
|
+
skipLastTemplateAutoApply: boolean;
|
|
32
47
|
onFiltersUpdate: (searchCriteria: SearchCriteria) => void;
|
|
33
48
|
prefetchedData: SearchUIPrefetchedData;
|
|
34
49
|
prefetchedDataLoading: SearchUIPrefetchedDataLoading;
|
|
35
50
|
prefetchedDataMeta: SearchUIPrefetchedDataMeta;
|
|
36
51
|
};
|
|
37
52
|
export type SearchUIFiltersActions = {
|
|
38
|
-
setInitialState: (state: Partial<SearchUIFiltersState> & Pick<SearchUIFiltersState, 'defaults'
|
|
53
|
+
setInitialState: (state: Partial<SearchUIFiltersState> & Pick<SearchUIFiltersState, 'defaults'>, retainedSnapshot?: SearchUIRetentionSnapshot) => void;
|
|
39
54
|
updateConditions: (conditions: Partial<SearchUIConditions>, options?: {
|
|
40
55
|
forceSearch?: boolean;
|
|
41
56
|
resetTemplate?: boolean;
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import React, { useMemo, useState } from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { SearchUIFiltersContent } from './filters/SearchUIFilters';
|
|
3
3
|
import { Box, Divider } from '@mui/material';
|
|
4
4
|
import { PneTable, useTable } from '../..';
|
|
5
|
-
import { useSearchUIStore } from './state/store';
|
|
6
|
-
import { useShallow } from 'zustand/react/shallow';
|
|
7
5
|
import { useSearchUIFiltersStore } from './filters/state/store';
|
|
6
|
+
import { SearchUIFiltersStoreProvider } from './filters/state/SearchUIFiltersStoreProvider';
|
|
8
7
|
/**
|
|
9
8
|
* Высокоуровневый компонент поискового UI, объединяющий фильтры и таблицу с результатами.
|
|
10
9
|
* @template D Тип строки данных, отображаемых в таблице.
|
|
11
10
|
* @param props Свойства компонента.
|
|
12
11
|
*/
|
|
13
12
|
export const SearchUI = (props) => {
|
|
13
|
+
return React.createElement(SearchUIFiltersStoreProvider, { key: props.settingsContextName, settingsContextName: props.settingsContextName },
|
|
14
|
+
React.createElement(SearchUIContent, { ...props }));
|
|
15
|
+
};
|
|
16
|
+
const SearchUIContent = (props) => {
|
|
14
17
|
const { settingsContextName, possibleCriteria, predefinedCriteria, exactSearchLabels, initialSearchConditions, searchConditions, searchData, createTableHeader, createTableRow, tableParams, dataUseState, config, } = props;
|
|
15
|
-
const
|
|
16
|
-
searchCriteria: store.searchCriteria,
|
|
17
|
-
setSearchCriteria: store.setSearchCriteria,
|
|
18
|
-
})));
|
|
18
|
+
const searchCriteria = useSearchUIFiltersStore(store => store.appliedSearchCriteria);
|
|
19
19
|
const filtersSettingsContextName = useSearchUIFiltersStore(store => store.settingsContextName);
|
|
20
20
|
const filtersContextReady = filtersSettingsContextName === settingsContextName;
|
|
21
21
|
// const [criteria, setCriteria] = useSearchCriteria()
|
|
@@ -34,7 +34,7 @@ export const SearchUI = (props) => {
|
|
|
34
34
|
dataUseState: dataUseState,
|
|
35
35
|
fetchDataExtraDeps: fetchDataExtraDeps,
|
|
36
36
|
fetchData: ({ page, pageSize, order, sortIndex }) => {
|
|
37
|
-
if (!searchCriteria
|
|
37
|
+
if (!searchCriteria?.initialized || !filtersContextReady) {
|
|
38
38
|
return Promise.resolve([]);
|
|
39
39
|
}
|
|
40
40
|
const searchParams = createSearchParams(searchCriteria, {
|
|
@@ -47,7 +47,7 @@ export const SearchUI = (props) => {
|
|
|
47
47
|
},
|
|
48
48
|
});
|
|
49
49
|
return React.createElement(React.Fragment, null,
|
|
50
|
-
React.createElement(
|
|
50
|
+
React.createElement(SearchUIFiltersContent, { settingsContextName: settingsContextName, possibleCriteria: possibleCriteria, predefinedCriteria: predefinedCriteria, exactSearchLabels: exactSearchLabels, initialSearchConditions: initialSearchConditions, searchConditions: searchConditions, onFiltersUpdate: ignoreAppliedSearchCriteria, config: config, searchLoading: loading }),
|
|
51
51
|
React.createElement(Divider, null),
|
|
52
52
|
React.createElement(Box, { sx: tableBoxSx },
|
|
53
53
|
React.createElement(PneTable, { data: data, createTableHeader: createTableHeader, sortOptions: {
|
|
@@ -58,6 +58,9 @@ export const SearchUI = (props) => {
|
|
|
58
58
|
onSortChange,
|
|
59
59
|
}, createRow: (item, index, arr) => createTableRow(item, index, arr, setData), paginator: paginator, loading: loading })));
|
|
60
60
|
};
|
|
61
|
+
const ignoreAppliedSearchCriteria = () => {
|
|
62
|
+
// SearchUI reads the applied criteria from its instance-scoped filter store.
|
|
63
|
+
};
|
|
61
64
|
const initialDisplayOptions = {
|
|
62
65
|
pageSize: 50,
|
|
63
66
|
sortColumnIndex: 1,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchUI.js","sourceRoot":"","sources":["../../../src/component/search-ui/SearchUI.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAA4B,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC1E,OAAO,
|
|
1
|
+
{"version":3,"file":"SearchUI.js","sourceRoot":"","sources":["../../../src/component/search-ui/SearchUI.tsx"],"names":[],"mappings":"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"}
|
|
@@ -103,6 +103,7 @@ type Props = {
|
|
|
103
103
|
* @param props Свойства компонента.
|
|
104
104
|
*/
|
|
105
105
|
export declare const SearchUIFilters: (props: Props) => React.JSX.Element;
|
|
106
|
+
export declare const SearchUIFiltersContent: (props: Props) => React.JSX.Element;
|
|
106
107
|
/**
|
|
107
108
|
* Фильтрует список критериев в соответствии с доступностью, предоставленной настройками по умолчанию.
|
|
108
109
|
* @param defaults Значения по умолчанию из {@link SearchUIDefaultsContext}.
|
|
@@ -3,7 +3,7 @@ import { SearchUIFiltersHeaderActions, SearchUIFiltersHeaderLeft, SearchUIFilter
|
|
|
3
3
|
import { CriterionTypeEnum, } from './types';
|
|
4
4
|
import SearchUITemplatesMenu from './component/template/SearchUITemplatesMenu';
|
|
5
5
|
import { useTranslation } from 'react-i18next';
|
|
6
|
-
import { useSearchUIFiltersStore } from './state/store';
|
|
6
|
+
import { useSearchUIFiltersStore, useSearchUIFiltersStoreApi, useSearchUIFiltersStoreContext, } from './state/store';
|
|
7
7
|
import { Box, Chip, IconButton } from '@mui/material';
|
|
8
8
|
import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
|
|
9
9
|
import isEqual from 'lodash/isEqual';
|
|
@@ -13,14 +13,24 @@ import { overlayActions, PneButton } from '../../..';
|
|
|
13
13
|
import { SearchUIDefaultsContext } from "../SearchUIProvider";
|
|
14
14
|
import { createClearCriteriaUndoSnapshot } from './state/undo';
|
|
15
15
|
import { isCriterionAvailable } from './criterionAvailability';
|
|
16
|
+
import { SearchUIFiltersStoreProvider } from './state/SearchUIFiltersStoreProvider';
|
|
17
|
+
import { getRetainedSearchUIState } from './state/retention';
|
|
16
18
|
/**
|
|
17
19
|
* Панель фильтров поискового интерфейса с поддержкой шаблонов и динамических критериев.
|
|
18
20
|
* @param props Свойства компонента.
|
|
19
21
|
*/
|
|
20
22
|
export const SearchUIFilters = (props) => {
|
|
23
|
+
return React.createElement(SearchUIFiltersStoreProvider, { key: props.settingsContextName, settingsContextName: props.settingsContextName },
|
|
24
|
+
React.createElement(SearchUIFiltersContent, { ...props }));
|
|
25
|
+
};
|
|
26
|
+
export const SearchUIFiltersContent = (props) => {
|
|
21
27
|
const { t } = useTranslation();
|
|
22
28
|
const { settingsContextName, possibleCriteria = [], predefinedCriteria = [], exactSearchLabels = [], initialSearchConditions, searchConditions, config, onFiltersUpdate, searchLoading = false, } = props;
|
|
23
29
|
const defaults = useContext(SearchUIDefaultsContext);
|
|
30
|
+
const filtersStore = useSearchUIFiltersStoreApi();
|
|
31
|
+
const { instanceId } = useSearchUIFiltersStoreContext();
|
|
32
|
+
const hasExternalSearchConditions = searchConditions !== undefined
|
|
33
|
+
&& Object.keys(searchConditions).length > 0;
|
|
24
34
|
const adjustedPossibleCriteria = filterAvailableCriteria(defaults, [
|
|
25
35
|
...new Set([
|
|
26
36
|
...possibleCriteria,
|
|
@@ -41,6 +51,7 @@ export const SearchUIFilters = (props) => {
|
|
|
41
51
|
const updateConditions = useSearchUIFiltersStore(s => s.updateConditions);
|
|
42
52
|
const filtersState = useSearchUIFiltersStore(s => s);
|
|
43
53
|
const [showFilters, setShowFilters] = useState(true);
|
|
54
|
+
const initializedRef = useRef(false);
|
|
44
55
|
const pendingClearCriteriaUndoRef = useRef(null);
|
|
45
56
|
const clearPendingClearCriteriaUndo = (dismissSnackbar = true) => {
|
|
46
57
|
const pending = pendingClearCriteriaUndoRef.current;
|
|
@@ -55,6 +66,10 @@ export const SearchUIFilters = (props) => {
|
|
|
55
66
|
pendingClearCriteriaUndoRef.current = null;
|
|
56
67
|
};
|
|
57
68
|
useEffect(() => {
|
|
69
|
+
if (initializedRef.current) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
initializedRef.current = true;
|
|
58
73
|
setInitialState({
|
|
59
74
|
defaults: defaults,
|
|
60
75
|
settingsContextName: settingsContextName,
|
|
@@ -65,22 +80,23 @@ export const SearchUIFilters = (props) => {
|
|
|
65
80
|
criteria: predefinedCriteria,
|
|
66
81
|
config: config,
|
|
67
82
|
onFiltersUpdate: onFiltersUpdate,
|
|
83
|
+
skipLastTemplateAutoApply: hasExternalSearchConditions,
|
|
68
84
|
...initialSearchConditions
|
|
69
|
-
});
|
|
70
|
-
}, []);
|
|
71
|
-
useEffect(() => {
|
|
85
|
+
}, getRetainedSearchUIState(settingsContextName, instanceId));
|
|
72
86
|
loadTemplates();
|
|
87
|
+
// The keyed store provider remounts this subtree when the search context changes.
|
|
88
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
73
89
|
}, []);
|
|
74
90
|
useEffect(() => {
|
|
75
|
-
if (
|
|
91
|
+
if (hasExternalSearchConditions) {
|
|
76
92
|
updateConditions(searchConditions, {
|
|
77
93
|
forceSearch: true,
|
|
78
94
|
resetTemplate: true,
|
|
79
95
|
});
|
|
80
96
|
}
|
|
81
|
-
}, [searchConditions]);
|
|
97
|
+
}, [hasExternalSearchConditions, searchConditions, updateConditions]);
|
|
82
98
|
useEffect(() => {
|
|
83
|
-
const unsubscribe =
|
|
99
|
+
const unsubscribe = filtersStore.subscribe(state => {
|
|
84
100
|
const pending = pendingClearCriteriaUndoRef.current;
|
|
85
101
|
if (!pending)
|
|
86
102
|
return;
|
|
@@ -94,7 +110,7 @@ export const SearchUIFilters = (props) => {
|
|
|
94
110
|
clearPendingClearCriteriaUndo();
|
|
95
111
|
unsubscribe();
|
|
96
112
|
};
|
|
97
|
-
}, []);
|
|
113
|
+
}, [filtersStore]);
|
|
98
114
|
const someCriteriaAdded = criteria.length > 0;
|
|
99
115
|
const showFiltersCountChip = someCriteriaAdded && !showFilters;
|
|
100
116
|
const removablePredefinedCriteria = config?.removablePredefinedCriteria ?? [];
|
|
@@ -118,10 +134,10 @@ export const SearchUIFilters = (props) => {
|
|
|
118
134
|
const showAddFilterButton = !allCriteriaAdded;
|
|
119
135
|
const showMainActionsRow = showClearAllButton || showTemplatesMenu || showAddFilterButton;
|
|
120
136
|
const handleClearCriteria = () => {
|
|
121
|
-
const snapshotBeforeClear = createClearCriteriaUndoSnapshot(
|
|
137
|
+
const snapshotBeforeClear = createClearCriteriaUndoSnapshot(filtersStore.getState());
|
|
122
138
|
clearPendingClearCriteriaUndo();
|
|
123
139
|
clearCriteria();
|
|
124
|
-
const baseline = createClearCriteriaUndoSnapshot(
|
|
140
|
+
const baseline = createClearCriteriaUndoSnapshot(filtersStore.getState());
|
|
125
141
|
const autoHideMs = 5000;
|
|
126
142
|
const snackbarId = overlayActions.showUndoSnackbar({
|
|
127
143
|
message: t('react.searchUI.clearAll.cleared', { defaultValue: 'All filters cleared' }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchUIFilters.js","sourceRoot":"","sources":["../../../../src/component/search-ui/filters/SearchUIFilters.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAC,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AACrE,OAAO,EACH,4BAA4B,EAC5B,yBAAyB,EACzB,4BAA4B,EAC5B,0BAA0B,EAC1B,2BAA2B,GAC9B,MAAM,UAAU,CAAC;AAClB,OAAO,EACH,iBAAiB,GAMpB,MAAM,SAAS,CAAC;AACjB,OAAO,qBAAqB,MAAM,4CAA4C,CAAC;AAC/E,OAAO,EAAC,cAAc,EAAC,MAAM,eAAe,CAAC;AAC7C,OAAO,
|
|
1
|
+
{"version":3,"file":"SearchUIFilters.js","sourceRoot":"","sources":["../../../../src/component/search-ui/filters/SearchUIFilters.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React, { useEffect, useLayoutEffect, useMemo, useRef } from 'react';
|
|
2
|
+
import { createSearchUIFiltersStore, SearchUIFiltersStoreContext, } from './store';
|
|
3
|
+
import { registerSearchUIInstance, retainSearchUIState, } from './retention';
|
|
4
|
+
export const SearchUIFiltersStoreProvider = ({ settingsContextName, children }) => {
|
|
5
|
+
const store = useMemo(createSearchUIFiltersStore, [settingsContextName]);
|
|
6
|
+
const instanceIdRef = useRef(Symbol(settingsContextName));
|
|
7
|
+
useStoreLifecycleEffect(() => {
|
|
8
|
+
const unregister = registerSearchUIInstance(settingsContextName, instanceIdRef.current);
|
|
9
|
+
const persistState = () => retainSearchUIState(settingsContextName, store.getState());
|
|
10
|
+
const unsubscribe = store.subscribe(persistState);
|
|
11
|
+
persistState();
|
|
12
|
+
return () => {
|
|
13
|
+
persistState();
|
|
14
|
+
unsubscribe();
|
|
15
|
+
unregister();
|
|
16
|
+
};
|
|
17
|
+
}, [settingsContextName, store]);
|
|
18
|
+
const contextValue = useMemo(() => ({
|
|
19
|
+
store,
|
|
20
|
+
instanceId: instanceIdRef.current,
|
|
21
|
+
}), [store]);
|
|
22
|
+
return React.createElement(SearchUIFiltersStoreContext.Provider, { value: contextValue }, children);
|
|
23
|
+
};
|
|
24
|
+
const useStoreLifecycleEffect = typeof window === 'undefined' ? useEffect : useLayoutEffect;
|
|
25
|
+
//# sourceMappingURL=SearchUIFiltersStoreProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchUIFiltersStoreProvider.js","sourceRoot":"","sources":["../../../../../src/component/search-ui/filters/state/SearchUIFiltersStoreProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAC,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAC,MAAM,OAAO,CAAA;AACxE,OAAO,EACH,0BAA0B,EAC1B,2BAA2B,GAC9B,MAAM,SAAS,CAAA;AAChB,OAAO,EACH,wBAAwB,EACxB,mBAAmB,GACtB,MAAM,aAAa,CAAA;AAOpB,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,EAAC,mBAAmB,EAAE,QAAQ,EAAQ,EAAE,EAAE;IACnF,MAAM,KAAK,GAAG,OAAO,CAAC,0BAA0B,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAA;IACxE,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAA;IAEzD,uBAAuB,CAAC,GAAG,EAAE;QACzB,MAAM,UAAU,GAAG,wBAAwB,CAAC,mBAAmB,EAAE,aAAa,CAAC,OAAO,CAAC,CAAA;QACvF,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;QACrF,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;QAEjD,YAAY,EAAE,CAAA;QAEd,OAAO,GAAG,EAAE;YACR,YAAY,EAAE,CAAA;YACd,WAAW,EAAE,CAAA;YACb,UAAU,EAAE,CAAA;QAChB,CAAC,CAAA;IACL,CAAC,EAAE,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC,CAAA;IAEhC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAChC,KAAK;QACL,UAAU,EAAE,aAAa,CAAC,OAAO;KACpC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;IAEZ,OAAO,oBAAC,2BAA2B,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,IAC3D,QAAQ,CAC0B,CAAA;AAC3C,CAAC,CAAA;AAED,MAAM,uBAAuB,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAA"}
|