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
package/README.md
CHANGED
|
@@ -198,6 +198,23 @@ const config = {
|
|
|
198
198
|
- внешняя синхронизация через проп `searchConditions` (например, клик по
|
|
199
199
|
значению вне панели SearchUI).
|
|
200
200
|
|
|
201
|
+
### Автоматическое восстановление состояния
|
|
202
|
+
|
|
203
|
+
`SearchUI` и `SearchUIFilters` автоматически сохраняют текущее состояние фильтров
|
|
204
|
+
в памяти по ключу `settingsContextName`. Если пользователь покинул экран и вернулся
|
|
205
|
+
к нему без полной перезагрузки страницы, фильтры и выбранный шаблон восстанавливаются.
|
|
206
|
+
В ручном режиме отдельно сохраняются черновик фильтров и условия последнего
|
|
207
|
+
выполненного поиска.
|
|
208
|
+
|
|
209
|
+
Дополнительные props или browser storage для этого не используются. После reload
|
|
210
|
+
in-memory состояние исчезает; постоянное хранение по-прежнему выполняется только
|
|
211
|
+
явно сохранёнными шаблонами. Данные таблицы не кешируются и после возврата загружаются
|
|
212
|
+
заново.
|
|
213
|
+
|
|
214
|
+
Используйте стабильный `settingsContextName`, уникальный для логического поискового
|
|
215
|
+
экрана. Два последовательных экрана с одинаковым именем намеренно разделяют
|
|
216
|
+
восстановленное состояние.
|
|
217
|
+
|
|
201
218
|
## Локализация (i18n)
|
|
202
219
|
|
|
203
220
|
`pne-ui` не принимает текстовые ресурсы через пропсы и не содержит собственного `I18nextProvider`.
|
|
@@ -6,21 +6,22 @@ const react_1 = tslib_1.__importStar(require("react"));
|
|
|
6
6
|
const SearchUIFilters_1 = require("./filters/SearchUIFilters");
|
|
7
7
|
const material_1 = require("@mui/material");
|
|
8
8
|
const __1 = require("../..");
|
|
9
|
-
const store_1 = require("./state/store");
|
|
10
|
-
const
|
|
11
|
-
const store_2 = require("./filters/state/store");
|
|
9
|
+
const store_1 = require("./filters/state/store");
|
|
10
|
+
const SearchUIFiltersStoreProvider_1 = require("./filters/state/SearchUIFiltersStoreProvider");
|
|
12
11
|
/**
|
|
13
12
|
* Высокоуровневый компонент поискового UI, объединяющий фильтры и таблицу с результатами.
|
|
14
13
|
* @template D Тип строки данных, отображаемых в таблице.
|
|
15
14
|
* @param props Свойства компонента.
|
|
16
15
|
*/
|
|
17
16
|
const SearchUI = (props) => {
|
|
17
|
+
return react_1.default.createElement(SearchUIFiltersStoreProvider_1.SearchUIFiltersStoreProvider, { key: props.settingsContextName, settingsContextName: props.settingsContextName },
|
|
18
|
+
react_1.default.createElement(SearchUIContent, { ...props }));
|
|
19
|
+
};
|
|
20
|
+
exports.SearchUI = SearchUI;
|
|
21
|
+
const SearchUIContent = (props) => {
|
|
18
22
|
const { settingsContextName, possibleCriteria, predefinedCriteria, exactSearchLabels, initialSearchConditions, searchConditions, searchData, createTableHeader, createTableRow, tableParams, dataUseState, config, } = props;
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
setSearchCriteria: store.setSearchCriteria,
|
|
22
|
-
})));
|
|
23
|
-
const filtersSettingsContextName = (0, store_2.useSearchUIFiltersStore)(store => store.settingsContextName);
|
|
23
|
+
const searchCriteria = (0, store_1.useSearchUIFiltersStore)(store => store.appliedSearchCriteria);
|
|
24
|
+
const filtersSettingsContextName = (0, store_1.useSearchUIFiltersStore)(store => store.settingsContextName);
|
|
24
25
|
const filtersContextReady = filtersSettingsContextName === settingsContextName;
|
|
25
26
|
// const [criteria, setCriteria] = useSearchCriteria()
|
|
26
27
|
const [displayOptions, setDisplayOptions] = (0, react_1.useState)({
|
|
@@ -38,7 +39,7 @@ const SearchUI = (props) => {
|
|
|
38
39
|
dataUseState: dataUseState,
|
|
39
40
|
fetchDataExtraDeps: fetchDataExtraDeps,
|
|
40
41
|
fetchData: ({ page, pageSize, order, sortIndex }) => {
|
|
41
|
-
if (!searchCriteria
|
|
42
|
+
if (!searchCriteria?.initialized || !filtersContextReady) {
|
|
42
43
|
return Promise.resolve([]);
|
|
43
44
|
}
|
|
44
45
|
const searchParams = (0, exports.createSearchParams)(searchCriteria, {
|
|
@@ -51,7 +52,7 @@ const SearchUI = (props) => {
|
|
|
51
52
|
},
|
|
52
53
|
});
|
|
53
54
|
return react_1.default.createElement(react_1.default.Fragment, null,
|
|
54
|
-
react_1.default.createElement(SearchUIFilters_1.
|
|
55
|
+
react_1.default.createElement(SearchUIFilters_1.SearchUIFiltersContent, { settingsContextName: settingsContextName, possibleCriteria: possibleCriteria, predefinedCriteria: predefinedCriteria, exactSearchLabels: exactSearchLabels, initialSearchConditions: initialSearchConditions, searchConditions: searchConditions, onFiltersUpdate: ignoreAppliedSearchCriteria, config: config, searchLoading: loading }),
|
|
55
56
|
react_1.default.createElement(material_1.Divider, null),
|
|
56
57
|
react_1.default.createElement(material_1.Box, { sx: tableBoxSx },
|
|
57
58
|
react_1.default.createElement(__1.PneTable, { data: data, createTableHeader: createTableHeader, sortOptions: {
|
|
@@ -62,7 +63,9 @@ const SearchUI = (props) => {
|
|
|
62
63
|
onSortChange,
|
|
63
64
|
}, createRow: (item, index, arr) => createTableRow(item, index, arr, setData), paginator: paginator, loading: loading })));
|
|
64
65
|
};
|
|
65
|
-
|
|
66
|
+
const ignoreAppliedSearchCriteria = () => {
|
|
67
|
+
// SearchUI reads the applied criteria from its instance-scoped filter store.
|
|
68
|
+
};
|
|
66
69
|
const initialDisplayOptions = {
|
|
67
70
|
pageSize: 50,
|
|
68
71
|
sortColumnIndex: 1,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchUI.js","sourceRoot":"","sources":["../../../src/component/search-ui/SearchUI.tsx"],"names":[],"mappings":";;;;AAAA,uDAA0E;AAC1E,+
|
|
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}.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.filterAvailableCriteria = exports.SearchUIFilters = void 0;
|
|
3
|
+
exports.filterAvailableCriteria = exports.SearchUIFiltersContent = exports.SearchUIFilters = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const react_1 = tslib_1.__importStar(require("react"));
|
|
6
6
|
const styled_1 = require("./styled");
|
|
@@ -17,14 +17,25 @@ const __1 = require("../../..");
|
|
|
17
17
|
const SearchUIProvider_1 = require("../SearchUIProvider");
|
|
18
18
|
const undo_1 = require("./state/undo");
|
|
19
19
|
const criterionAvailability_1 = require("./criterionAvailability");
|
|
20
|
+
const SearchUIFiltersStoreProvider_1 = require("./state/SearchUIFiltersStoreProvider");
|
|
21
|
+
const retention_1 = require("./state/retention");
|
|
20
22
|
/**
|
|
21
23
|
* Панель фильтров поискового интерфейса с поддержкой шаблонов и динамических критериев.
|
|
22
24
|
* @param props Свойства компонента.
|
|
23
25
|
*/
|
|
24
26
|
const SearchUIFilters = (props) => {
|
|
27
|
+
return react_1.default.createElement(SearchUIFiltersStoreProvider_1.SearchUIFiltersStoreProvider, { key: props.settingsContextName, settingsContextName: props.settingsContextName },
|
|
28
|
+
react_1.default.createElement(exports.SearchUIFiltersContent, { ...props }));
|
|
29
|
+
};
|
|
30
|
+
exports.SearchUIFilters = SearchUIFilters;
|
|
31
|
+
const SearchUIFiltersContent = (props) => {
|
|
25
32
|
const { t } = (0, react_i18next_1.useTranslation)();
|
|
26
33
|
const { settingsContextName, possibleCriteria = [], predefinedCriteria = [], exactSearchLabels = [], initialSearchConditions, searchConditions, config, onFiltersUpdate, searchLoading = false, } = props;
|
|
27
34
|
const defaults = (0, react_1.useContext)(SearchUIProvider_1.SearchUIDefaultsContext);
|
|
35
|
+
const filtersStore = (0, store_1.useSearchUIFiltersStoreApi)();
|
|
36
|
+
const { instanceId } = (0, store_1.useSearchUIFiltersStoreContext)();
|
|
37
|
+
const hasExternalSearchConditions = searchConditions !== undefined
|
|
38
|
+
&& Object.keys(searchConditions).length > 0;
|
|
28
39
|
const adjustedPossibleCriteria = (0, exports.filterAvailableCriteria)(defaults, [
|
|
29
40
|
...new Set([
|
|
30
41
|
...possibleCriteria,
|
|
@@ -45,6 +56,7 @@ const SearchUIFilters = (props) => {
|
|
|
45
56
|
const updateConditions = (0, store_1.useSearchUIFiltersStore)(s => s.updateConditions);
|
|
46
57
|
const filtersState = (0, store_1.useSearchUIFiltersStore)(s => s);
|
|
47
58
|
const [showFilters, setShowFilters] = (0, react_1.useState)(true);
|
|
59
|
+
const initializedRef = (0, react_1.useRef)(false);
|
|
48
60
|
const pendingClearCriteriaUndoRef = (0, react_1.useRef)(null);
|
|
49
61
|
const clearPendingClearCriteriaUndo = (dismissSnackbar = true) => {
|
|
50
62
|
const pending = pendingClearCriteriaUndoRef.current;
|
|
@@ -59,6 +71,10 @@ const SearchUIFilters = (props) => {
|
|
|
59
71
|
pendingClearCriteriaUndoRef.current = null;
|
|
60
72
|
};
|
|
61
73
|
(0, react_1.useEffect)(() => {
|
|
74
|
+
if (initializedRef.current) {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
initializedRef.current = true;
|
|
62
78
|
setInitialState({
|
|
63
79
|
defaults: defaults,
|
|
64
80
|
settingsContextName: settingsContextName,
|
|
@@ -69,22 +85,23 @@ const SearchUIFilters = (props) => {
|
|
|
69
85
|
criteria: predefinedCriteria,
|
|
70
86
|
config: config,
|
|
71
87
|
onFiltersUpdate: onFiltersUpdate,
|
|
88
|
+
skipLastTemplateAutoApply: hasExternalSearchConditions,
|
|
72
89
|
...initialSearchConditions
|
|
73
|
-
});
|
|
74
|
-
}, []);
|
|
75
|
-
(0, react_1.useEffect)(() => {
|
|
90
|
+
}, (0, retention_1.getRetainedSearchUIState)(settingsContextName, instanceId));
|
|
76
91
|
loadTemplates();
|
|
92
|
+
// The keyed store provider remounts this subtree when the search context changes.
|
|
93
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
77
94
|
}, []);
|
|
78
95
|
(0, react_1.useEffect)(() => {
|
|
79
|
-
if (
|
|
96
|
+
if (hasExternalSearchConditions) {
|
|
80
97
|
updateConditions(searchConditions, {
|
|
81
98
|
forceSearch: true,
|
|
82
99
|
resetTemplate: true,
|
|
83
100
|
});
|
|
84
101
|
}
|
|
85
|
-
}, [searchConditions]);
|
|
102
|
+
}, [hasExternalSearchConditions, searchConditions, updateConditions]);
|
|
86
103
|
(0, react_1.useEffect)(() => {
|
|
87
|
-
const unsubscribe =
|
|
104
|
+
const unsubscribe = filtersStore.subscribe(state => {
|
|
88
105
|
const pending = pendingClearCriteriaUndoRef.current;
|
|
89
106
|
if (!pending)
|
|
90
107
|
return;
|
|
@@ -98,7 +115,7 @@ const SearchUIFilters = (props) => {
|
|
|
98
115
|
clearPendingClearCriteriaUndo();
|
|
99
116
|
unsubscribe();
|
|
100
117
|
};
|
|
101
|
-
}, []);
|
|
118
|
+
}, [filtersStore]);
|
|
102
119
|
const someCriteriaAdded = criteria.length > 0;
|
|
103
120
|
const showFiltersCountChip = someCriteriaAdded && !showFilters;
|
|
104
121
|
const removablePredefinedCriteria = config?.removablePredefinedCriteria ?? [];
|
|
@@ -122,10 +139,10 @@ const SearchUIFilters = (props) => {
|
|
|
122
139
|
const showAddFilterButton = !allCriteriaAdded;
|
|
123
140
|
const showMainActionsRow = showClearAllButton || showTemplatesMenu || showAddFilterButton;
|
|
124
141
|
const handleClearCriteria = () => {
|
|
125
|
-
const snapshotBeforeClear = (0, undo_1.createClearCriteriaUndoSnapshot)(
|
|
142
|
+
const snapshotBeforeClear = (0, undo_1.createClearCriteriaUndoSnapshot)(filtersStore.getState());
|
|
126
143
|
clearPendingClearCriteriaUndo();
|
|
127
144
|
clearCriteria();
|
|
128
|
-
const baseline = (0, undo_1.createClearCriteriaUndoSnapshot)(
|
|
145
|
+
const baseline = (0, undo_1.createClearCriteriaUndoSnapshot)(filtersStore.getState());
|
|
129
146
|
const autoHideMs = 5000;
|
|
130
147
|
const snackbarId = __1.overlayActions.showUndoSnackbar({
|
|
131
148
|
message: t('react.searchUI.clearAll.cleared', { defaultValue: 'All filters cleared' }),
|
|
@@ -166,7 +183,7 @@ const SearchUIFilters = (props) => {
|
|
|
166
183
|
: t('react.searchUI.refresh', { defaultValue: 'Refresh' }))))),
|
|
167
184
|
showFilters ? react_1.default.createElement(material_1.Box, null, criteria.map((criterion) => react_1.default.createElement(CriterionContainer_1.CriterionContainer, { key: criterion, type: criterion }))) : null);
|
|
168
185
|
};
|
|
169
|
-
exports.
|
|
186
|
+
exports.SearchUIFiltersContent = SearchUIFiltersContent;
|
|
170
187
|
const titleSx = {
|
|
171
188
|
display: 'flex',
|
|
172
189
|
lineHeight: '32px',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchUIFilters.js","sourceRoot":"","sources":["../../../../src/component/search-ui/filters/SearchUIFilters.tsx"],"names":[],"mappings":";;;;AAAA,uDAAqE;AACrE,qCAMkB;AAClB,mCAOiB;AACjB,+GAA+E;AAC/E,iDAA6C;AAC7C,
|
|
1
|
+
{"version":3,"file":"SearchUIFilters.js","sourceRoot":"","sources":["../../../../src/component/search-ui/filters/SearchUIFilters.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SearchUIFiltersStoreProvider = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const react_1 = tslib_1.__importStar(require("react"));
|
|
6
|
+
const store_1 = require("./store");
|
|
7
|
+
const retention_1 = require("./retention");
|
|
8
|
+
const SearchUIFiltersStoreProvider = ({ settingsContextName, children }) => {
|
|
9
|
+
const store = (0, react_1.useMemo)(store_1.createSearchUIFiltersStore, [settingsContextName]);
|
|
10
|
+
const instanceIdRef = (0, react_1.useRef)(Symbol(settingsContextName));
|
|
11
|
+
useStoreLifecycleEffect(() => {
|
|
12
|
+
const unregister = (0, retention_1.registerSearchUIInstance)(settingsContextName, instanceIdRef.current);
|
|
13
|
+
const persistState = () => (0, retention_1.retainSearchUIState)(settingsContextName, store.getState());
|
|
14
|
+
const unsubscribe = store.subscribe(persistState);
|
|
15
|
+
persistState();
|
|
16
|
+
return () => {
|
|
17
|
+
persistState();
|
|
18
|
+
unsubscribe();
|
|
19
|
+
unregister();
|
|
20
|
+
};
|
|
21
|
+
}, [settingsContextName, store]);
|
|
22
|
+
const contextValue = (0, react_1.useMemo)(() => ({
|
|
23
|
+
store,
|
|
24
|
+
instanceId: instanceIdRef.current,
|
|
25
|
+
}), [store]);
|
|
26
|
+
return react_1.default.createElement(store_1.SearchUIFiltersStoreContext.Provider, { value: contextValue }, children);
|
|
27
|
+
};
|
|
28
|
+
exports.SearchUIFiltersStoreProvider = SearchUIFiltersStoreProvider;
|
|
29
|
+
const useStoreLifecycleEffect = typeof window === 'undefined' ? react_1.useEffect : react_1.useLayoutEffect;
|
|
30
|
+
//# 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,uDAAwE;AACxE,mCAGgB;AAChB,2CAGoB;AAOb,MAAM,4BAA4B,GAAG,CAAC,EAAC,mBAAmB,EAAE,QAAQ,EAAQ,EAAE,EAAE;IACnF,MAAM,KAAK,GAAG,IAAA,eAAO,EAAC,kCAA0B,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAA;IACxE,MAAM,aAAa,GAAG,IAAA,cAAM,EAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAA;IAEzD,uBAAuB,CAAC,GAAG,EAAE;QACzB,MAAM,UAAU,GAAG,IAAA,oCAAwB,EAAC,mBAAmB,EAAE,aAAa,CAAC,OAAO,CAAC,CAAA;QACvF,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,IAAA,+BAAmB,EAAC,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,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,CAAC;QAChC,KAAK;QACL,UAAU,EAAE,aAAa,CAAC,OAAO;KACpC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;IAEZ,OAAO,8BAAC,mCAA2B,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,IAC3D,QAAQ,CAC0B,CAAA;AAC3C,CAAC,CAAA;AA1BY,QAAA,4BAA4B,gCA0BxC;AAED,MAAM,uBAAuB,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,iBAAS,CAAC,CAAC,CAAC,uBAAe,CAAA"}
|
|
@@ -82,58 +82,118 @@ const sanitizeMultigetCriteria = (incoming, activeCriteria) => {
|
|
|
82
82
|
});
|
|
83
83
|
return Array.from(uniqueByEntity.values());
|
|
84
84
|
};
|
|
85
|
+
const isRetainedSnapshotCompatible = (snapshot, state) => {
|
|
86
|
+
return (0, isEqual_1.default)(snapshot.possibleCriteria, state.possibleCriteria)
|
|
87
|
+
&& (0, isEqual_1.default)(snapshot.predefinedCriteria, state.predefinedCriteria)
|
|
88
|
+
&& (0, isEqual_1.default)(snapshot.exactSearchLabels, state.exactSearchLabels)
|
|
89
|
+
&& snapshot.manualSearch === !!state.config?.manualSearch;
|
|
90
|
+
};
|
|
91
|
+
const applyConditionsReducer = (draft, conditions) => {
|
|
92
|
+
const { criteria: incomingCriteria, multigetCriteria: incomingMultigetCriteria, ...rest } = conditions;
|
|
93
|
+
const prevCriteria = draft.criteria.slice();
|
|
94
|
+
Object.assign(draft, rest);
|
|
95
|
+
if (incomingCriteria !== undefined) {
|
|
96
|
+
const allowedCriteria = new Set([
|
|
97
|
+
...draft.predefinedCriteria,
|
|
98
|
+
...draft.possibleCriteria,
|
|
99
|
+
]);
|
|
100
|
+
const sanitizedIncoming = Array.from(new Set(incomingCriteria.filter(criterion => allowedCriteria.has(criterion))));
|
|
101
|
+
const mergedCriteria = Array.from(new Set([
|
|
102
|
+
...draft.predefinedCriteria,
|
|
103
|
+
...sanitizedIncoming,
|
|
104
|
+
]));
|
|
105
|
+
const removedCriteria = prevCriteria.filter(criterion => !mergedCriteria.includes(criterion));
|
|
106
|
+
removedCriteria.forEach(criterion => {
|
|
107
|
+
clearCriterionReducer(draft, criterion);
|
|
108
|
+
});
|
|
109
|
+
const addedCriteria = mergedCriteria.filter(criterion => !prevCriteria.includes(criterion));
|
|
110
|
+
if (incomingMultigetCriteria === undefined) {
|
|
111
|
+
addedCriteria.forEach(criterion => {
|
|
112
|
+
addInitialMultigetCriterionReducer(draft, criterion);
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
draft.criteria = mergedCriteria;
|
|
116
|
+
}
|
|
117
|
+
if (incomingMultigetCriteria !== undefined) {
|
|
118
|
+
const sanitizedMultigetCriteria = sanitizeMultigetCriteria(incomingMultigetCriteria, draft.criteria);
|
|
119
|
+
const missingEntityTypes = draft.criteria
|
|
120
|
+
.map(getLinkedEntityTypeByCriterion)
|
|
121
|
+
.filter((entityType) => entityType !== null)
|
|
122
|
+
.filter(entityType => !sanitizedMultigetCriteria.some(item => item.entityType === entityType));
|
|
123
|
+
missingEntityTypes.forEach(entityType => {
|
|
124
|
+
sanitizedMultigetCriteria.push(getInitialMultigetCriterion(entityType));
|
|
125
|
+
});
|
|
126
|
+
draft.multigetCriteria = sanitizedMultigetCriteria;
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
const restoreAppliedSearchCriteria = (snapshot, retainedDraftSearchCriteria, currentSearchCriteria) => {
|
|
130
|
+
if (!snapshot.hasUnappliedFilters || !snapshot.appliedSearchCriteria) {
|
|
131
|
+
return currentSearchCriteria;
|
|
132
|
+
}
|
|
133
|
+
const retainedDraftWithoutDates = {
|
|
134
|
+
...retainedDraftSearchCriteria,
|
|
135
|
+
dateFrom: currentSearchCriteria.dateFrom,
|
|
136
|
+
dateTo: currentSearchCriteria.dateTo,
|
|
137
|
+
};
|
|
138
|
+
if (!(0, isEqual_1.default)(retainedDraftWithoutDates, currentSearchCriteria)) {
|
|
139
|
+
return currentSearchCriteria;
|
|
140
|
+
}
|
|
141
|
+
return {
|
|
142
|
+
...(0, cloneDeep_1.default)(snapshot.appliedSearchCriteria),
|
|
143
|
+
dateFrom: (0, isEqual_1.default)(snapshot.appliedSearchCriteria.dateFrom, retainedDraftSearchCriteria.dateFrom)
|
|
144
|
+
? currentSearchCriteria.dateFrom
|
|
145
|
+
: snapshot.appliedSearchCriteria.dateFrom,
|
|
146
|
+
dateTo: (0, isEqual_1.default)(snapshot.appliedSearchCriteria.dateTo, retainedDraftSearchCriteria.dateTo)
|
|
147
|
+
? currentSearchCriteria.dateTo
|
|
148
|
+
: snapshot.appliedSearchCriteria.dateTo,
|
|
149
|
+
};
|
|
150
|
+
};
|
|
85
151
|
const getSearchUIFiltersActions = (set, get) => ({
|
|
86
|
-
setInitialState: (state) => {
|
|
152
|
+
setInitialState: (state, retainedSnapshot) => {
|
|
87
153
|
set((draft) => {
|
|
88
|
-
|
|
154
|
+
const initialState = {
|
|
89
155
|
...draft,
|
|
90
156
|
...(0, initial_1.getSearchUIFiltersInitialState)(),
|
|
91
157
|
...(0, initial_1.getSearchUIInitialSearchCriteria)(state.defaults),
|
|
92
158
|
...state,
|
|
93
159
|
};
|
|
160
|
+
Object.assign(draft, initialState);
|
|
161
|
+
if (retainedSnapshot && isRetainedSnapshotCompatible(retainedSnapshot, initialState)) {
|
|
162
|
+
applyConditionsReducer(draft, retainedSnapshot.searchConditions);
|
|
163
|
+
draft.activeTemplateName = retainedSnapshot.activeTemplateName;
|
|
164
|
+
draft.restoredFromRetention = true;
|
|
165
|
+
}
|
|
166
|
+
draft.initialized = true;
|
|
94
167
|
});
|
|
95
|
-
|
|
168
|
+
const retainedDraftSearchCriteria = get().restoredFromRetention
|
|
169
|
+
? extractSearchCriteriaFromState(get())
|
|
170
|
+
: null;
|
|
171
|
+
syncCriterionAvailability(set, get);
|
|
172
|
+
normalizeRetainedDateRange(set, get);
|
|
173
|
+
ensureTransactionSessionStatusesPrefetched(set, get);
|
|
174
|
+
if (get().restoredFromRetention && retainedSnapshot && retainedDraftSearchCriteria) {
|
|
175
|
+
const currentSearchCriteria = extractSearchCriteriaFromState(get());
|
|
176
|
+
const appliedSearchCriteria = get().config?.manualSearch
|
|
177
|
+
? restoreAppliedSearchCriteria(retainedSnapshot, retainedDraftSearchCriteria, currentSearchCriteria)
|
|
178
|
+
: currentSearchCriteria;
|
|
179
|
+
get().onFiltersUpdate(appliedSearchCriteria);
|
|
180
|
+
set((draft) => {
|
|
181
|
+
draft.prevSearchCriteria = currentSearchCriteria;
|
|
182
|
+
draft.appliedSearchCriteria = appliedSearchCriteria;
|
|
183
|
+
draft.hasUnappliedFilters = !!draft.config?.manualSearch
|
|
184
|
+
&& !(0, isEqual_1.default)(currentSearchCriteria, appliedSearchCriteria);
|
|
185
|
+
});
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
checkIfFiltersChanged(set, get);
|
|
96
189
|
},
|
|
97
190
|
updateConditions: (conditions, options) => {
|
|
98
191
|
set((draft) => {
|
|
99
|
-
|
|
100
|
-
const prevCriteria = draft.criteria.slice();
|
|
101
|
-
Object.assign(draft, rest);
|
|
102
|
-
if (incomingCriteria !== undefined) {
|
|
103
|
-
const allowedCriteria = new Set([
|
|
104
|
-
...draft.predefinedCriteria,
|
|
105
|
-
...draft.possibleCriteria,
|
|
106
|
-
]);
|
|
107
|
-
const sanitizedIncoming = Array.from(new Set(incomingCriteria.filter(criterion => allowedCriteria.has(criterion))));
|
|
108
|
-
const mergedCriteria = Array.from(new Set([
|
|
109
|
-
...draft.predefinedCriteria,
|
|
110
|
-
...sanitizedIncoming,
|
|
111
|
-
]));
|
|
112
|
-
const removedCriteria = prevCriteria.filter(criterion => !mergedCriteria.includes(criterion));
|
|
113
|
-
removedCriteria.forEach(criterion => {
|
|
114
|
-
clearCriterionReducer(draft, criterion);
|
|
115
|
-
});
|
|
116
|
-
const addedCriteria = mergedCriteria.filter(criterion => !prevCriteria.includes(criterion));
|
|
117
|
-
if (incomingMultigetCriteria === undefined) {
|
|
118
|
-
addedCriteria.forEach(criterion => {
|
|
119
|
-
addInitialMultigetCriterionReducer(draft, criterion);
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
draft.criteria = mergedCriteria;
|
|
123
|
-
}
|
|
124
|
-
if (incomingMultigetCriteria !== undefined) {
|
|
125
|
-
const sanitizedMultigetCriteria = sanitizeMultigetCriteria(incomingMultigetCriteria, draft.criteria);
|
|
126
|
-
const missingEntityTypes = draft.criteria
|
|
127
|
-
.map(getLinkedEntityTypeByCriterion)
|
|
128
|
-
.filter((entityType) => entityType !== null)
|
|
129
|
-
.filter(entityType => !sanitizedMultigetCriteria.some(item => item.entityType === entityType));
|
|
130
|
-
missingEntityTypes.forEach(entityType => {
|
|
131
|
-
sanitizedMultigetCriteria.push(getInitialMultigetCriterion(entityType));
|
|
132
|
-
});
|
|
133
|
-
draft.multigetCriteria = sanitizedMultigetCriteria;
|
|
134
|
-
}
|
|
192
|
+
applyConditionsReducer(draft, conditions);
|
|
135
193
|
if (options?.resetTemplate) {
|
|
136
194
|
draft.template = null;
|
|
195
|
+
draft.activeTemplateName = null;
|
|
196
|
+
draft.skipLastTemplateAutoApply = true;
|
|
137
197
|
}
|
|
138
198
|
});
|
|
139
199
|
postUpdate(set, get, options);
|
|
@@ -150,6 +210,7 @@ const getSearchUIFiltersActions = (set, get) => ({
|
|
|
150
210
|
set(draft => {
|
|
151
211
|
Object.assign(draft, conditions);
|
|
152
212
|
draft.template = template;
|
|
213
|
+
draft.activeTemplateName = template?.name ?? null;
|
|
153
214
|
});
|
|
154
215
|
syncCriterionAvailability(set, get);
|
|
155
216
|
const currentSearchCriteria = extractSearchCriteriaFromState(get());
|
|
@@ -158,6 +219,9 @@ const getSearchUIFiltersActions = (set, get) => ({
|
|
|
158
219
|
}
|
|
159
220
|
set(draft => {
|
|
160
221
|
draft.prevSearchCriteria = currentSearchCriteria;
|
|
222
|
+
if (!hasUnappliedFilters) {
|
|
223
|
+
draft.appliedSearchCriteria = currentSearchCriteria;
|
|
224
|
+
}
|
|
161
225
|
draft.hasUnappliedFilters = hasUnappliedFilters;
|
|
162
226
|
});
|
|
163
227
|
},
|
|
@@ -169,6 +233,7 @@ const getSearchUIFiltersActions = (set, get) => ({
|
|
|
169
233
|
...(0, initial_1.getSearchUIInitialSearchCriteria)(draft.defaults),
|
|
170
234
|
exactSearchLabel: draft.exactSearchLabels[0],
|
|
171
235
|
template: null,
|
|
236
|
+
activeTemplateName: null,
|
|
172
237
|
criteria: draft.predefinedCriteria,
|
|
173
238
|
};
|
|
174
239
|
});
|
|
@@ -209,6 +274,7 @@ const getSearchUIFiltersActions = (set, get) => ({
|
|
|
209
274
|
set((draft) => {
|
|
210
275
|
draft.templates.push(template);
|
|
211
276
|
draft.template = template;
|
|
277
|
+
draft.activeTemplateName = template.name;
|
|
212
278
|
});
|
|
213
279
|
})
|
|
214
280
|
// .catch(raiseUIError)
|
|
@@ -226,6 +292,7 @@ const getSearchUIFiltersActions = (set, get) => ({
|
|
|
226
292
|
const index = draft.templates.findIndex(t => t.name === templateName);
|
|
227
293
|
draft.templates[index].searchConditions = template.searchConditions;
|
|
228
294
|
draft.template = template;
|
|
295
|
+
draft.activeTemplateName = template.name;
|
|
229
296
|
});
|
|
230
297
|
})
|
|
231
298
|
// .catch(raiseUIError)
|
|
@@ -247,6 +314,7 @@ const getSearchUIFiltersActions = (set, get) => ({
|
|
|
247
314
|
if (draft.template?.name === template.name) {
|
|
248
315
|
Object.assign(draft, (0, initial_1.getSearchUIInitialSearchCriteria)(draft.defaults));
|
|
249
316
|
draft.template = null;
|
|
317
|
+
draft.activeTemplateName = null;
|
|
250
318
|
draft.criteria = draft.predefinedCriteria;
|
|
251
319
|
}
|
|
252
320
|
});
|
|
@@ -268,19 +336,36 @@ const getSearchUIFiltersActions = (set, get) => ({
|
|
|
268
336
|
return {
|
|
269
337
|
...draft,
|
|
270
338
|
template: template,
|
|
339
|
+
activeTemplateName: template.name,
|
|
271
340
|
...conditions,
|
|
272
341
|
};
|
|
273
342
|
});
|
|
274
343
|
postUpdate(set, get, options);
|
|
275
344
|
},
|
|
276
345
|
loadTemplates: () => {
|
|
277
|
-
get().
|
|
346
|
+
const settingsContextName = get().settingsContextName;
|
|
347
|
+
const defaults = get().defaults;
|
|
348
|
+
defaults.getSearchTemplates(settingsContextName)
|
|
278
349
|
.then(templates => {
|
|
350
|
+
if (get().settingsContextName !== settingsContextName) {
|
|
351
|
+
return;
|
|
352
|
+
}
|
|
279
353
|
const normalizedTemplates = templates.map(normalizeSearchUITemplate);
|
|
280
354
|
set((draft) => {
|
|
281
355
|
draft.templates = normalizedTemplates;
|
|
282
356
|
});
|
|
283
|
-
|
|
357
|
+
if (get().restoredFromRetention) {
|
|
358
|
+
const activeTemplate = normalizedTemplates.find(t => t.name === get().activeTemplateName) ?? null;
|
|
359
|
+
set((draft) => {
|
|
360
|
+
draft.template = activeTemplate;
|
|
361
|
+
draft.activeTemplateName = activeTemplate?.name ?? null;
|
|
362
|
+
});
|
|
363
|
+
return;
|
|
364
|
+
}
|
|
365
|
+
if (get().skipLastTemplateAutoApply) {
|
|
366
|
+
return;
|
|
367
|
+
}
|
|
368
|
+
const lastTemplateName = localStorage.getItem(LAST_TEMPLATE_NAME + settingsContextName);
|
|
284
369
|
const lastTemplate = normalizedTemplates.find(t => t.name === lastTemplateName);
|
|
285
370
|
if (lastTemplate) {
|
|
286
371
|
get().setTemplate(lastTemplate, { forceSearch: true });
|
|
@@ -490,6 +575,7 @@ const getSearchUIFiltersActions = (set, get) => ({
|
|
|
490
575
|
const currentSearchCriteria = extractSearchCriteriaFromState(get());
|
|
491
576
|
get().onFiltersUpdate(currentSearchCriteria);
|
|
492
577
|
set((draft) => {
|
|
578
|
+
draft.appliedSearchCriteria = currentSearchCriteria;
|
|
493
579
|
draft.hasUnappliedFilters = false;
|
|
494
580
|
});
|
|
495
581
|
},
|
|
@@ -845,6 +931,17 @@ const postUpdate = (set, get, options) => {
|
|
|
845
931
|
ensureTransactionSessionStatusesPrefetched(set, get);
|
|
846
932
|
checkIfFiltersChanged(set, get, options);
|
|
847
933
|
};
|
|
934
|
+
const normalizeRetainedDateRange = (set, get) => {
|
|
935
|
+
const state = get();
|
|
936
|
+
if (!state.restoredFromRetention || state.dateRangeSpec.dateRangeSpecType === 'EXACTLY') {
|
|
937
|
+
return;
|
|
938
|
+
}
|
|
939
|
+
const timeSelectionEnabled = isDateRangeTimeSelectionEnabled(state.criteria, state.config);
|
|
940
|
+
const normalizedDateRange = calculateNonExactDates(state.dateRangeSpec, getNonExactDateRangeTimeZone(state.config, timeSelectionEnabled));
|
|
941
|
+
set(draft => {
|
|
942
|
+
draft.dateRangeSpec = normalizedDateRange;
|
|
943
|
+
});
|
|
944
|
+
};
|
|
848
945
|
const syncCriterionAvailability = (set, get) => {
|
|
849
946
|
const criteriaWithRules = (0, criterionAvailability_1.getCriteriaWithAvailabilityRules)(get().config);
|
|
850
947
|
if (!criteriaWithRules.length) {
|
|
@@ -900,6 +997,7 @@ const checkIfFiltersChanged = (set, get, options) => {
|
|
|
900
997
|
get().onFiltersUpdate(currentSearchCriteria);
|
|
901
998
|
set((draft) => {
|
|
902
999
|
draft.prevSearchCriteria = currentSearchCriteria;
|
|
1000
|
+
draft.appliedSearchCriteria = currentSearchCriteria;
|
|
903
1001
|
draft.hasUnappliedFilters = false;
|
|
904
1002
|
});
|
|
905
1003
|
}
|