@leav/ui 1.13.0-b8abd53d → 1.13.0-c7e23176
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/dist/_gqlTypes/index.d.ts +224 -72
- package/dist/_gqlTypes/index.js +143 -61
- package/dist/_gqlTypes/index.js.map +1 -1
- package/dist/_queries/attributes/attributeDetailsFragment.js +3 -0
- package/dist/_queries/attributes/attributeDetailsFragment.js.map +1 -1
- package/dist/components/Explorer/Explorer.d.ts +5 -1
- package/dist/components/Explorer/Explorer.js +7 -0
- package/dist/components/Explorer/Explorer.js.map +1 -1
- package/dist/components/Explorer/_types.d.ts +6 -0
- package/dist/components/Explorer/_types.js.map +1 -1
- package/dist/components/Explorer/actions-mass/edit-attribute/EditMonoDependencyWorkflowTreeAttribute.d.ts +8 -0
- package/dist/components/Explorer/actions-mass/edit-attribute/EditMonoDependencyWorkflowTreeAttribute.js +34 -0
- package/dist/components/Explorer/actions-mass/edit-attribute/EditMonoDependencyWorkflowTreeAttribute.js.map +1 -0
- package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValuesMapping.d.ts +3 -1
- package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValuesMapping.js +12 -14
- package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValuesMapping.js.map +1 -1
- package/dist/components/Explorer/actions-mass/edit-attribute/_types.d.ts +15 -3
- package/dist/components/Explorer/actions-mass/edit-attribute/_types.js.map +1 -1
- package/dist/components/Explorer/actions-mass/edit-attribute/useDependencyValues.d.ts +13 -0
- package/dist/components/Explorer/actions-mass/edit-attribute/useDependencyValues.js +47 -0
- package/dist/components/Explorer/actions-mass/edit-attribute/useDependencyValues.js.map +1 -0
- package/dist/components/Explorer/actions-mass/edit-attribute/useEditionMappingState.d.ts +13 -0
- package/dist/components/Explorer/actions-mass/edit-attribute/useEditionMappingState.js +73 -0
- package/dist/components/Explorer/actions-mass/edit-attribute/useEditionMappingState.js.map +1 -0
- package/dist/components/Explorer/actions-mass/edit-attribute/useMassEditableAttributes.js +14 -17
- package/dist/components/Explorer/actions-mass/edit-attribute/useMassEditableAttributes.js.map +1 -1
- package/dist/components/Explorer/actions-mass/edit-attribute/useTreeNodesCandidates.d.ts +23 -0
- package/dist/components/Explorer/actions-mass/edit-attribute/useTreeNodesCandidates.js +68 -0
- package/dist/components/Explorer/actions-mass/edit-attribute/useTreeNodesCandidates.js.map +1 -0
- package/dist/components/Explorer/actions-mass/useEditAttributeMassAction.js +16 -50
- package/dist/components/Explorer/actions-mass/useEditAttributeMassAction.js.map +1 -1
- package/dist/components/Explorer/manage-view-settings/filter-items/FilterItems.js +6 -6
- package/dist/components/Explorer/manage-view-settings/filter-items/FilterItems.js.map +1 -1
- package/dist/components/Explorer/manage-view-settings/store-view-settings/viewSettingsReducer.d.ts +7 -31
- package/dist/components/Explorer/manage-view-settings/store-view-settings/viewSettingsReducer.js +9 -20
- package/dist/components/Explorer/manage-view-settings/store-view-settings/viewSettingsReducer.js.map +1 -1
- package/dist/components/Explorer/useNotifyFiltersChange.d.ts +15 -0
- package/dist/components/Explorer/useNotifyFiltersChange.js +26 -0
- package/dist/components/Explorer/useNotifyFiltersChange.js.map +1 -0
- package/dist/components/Filters/_types.d.ts +6 -0
- package/dist/components/Filters/_types.js +2 -1
- package/dist/components/Filters/_types.js.map +1 -1
- package/dist/components/Filters/context/filtersReducer.d.ts +14 -1
- package/dist/components/Filters/context/filtersReducer.js +17 -4
- package/dist/components/Filters/context/filtersReducer.js.map +1 -1
- package/dist/components/Filters/filter-items/filter-type/smart-filter/SmartFilterAttributeDropdown.js +2 -3
- package/dist/components/Filters/filter-items/filter-type/smart-filter/SmartFilterAttributeDropdown.js.map +1 -1
- package/dist/components/Filters/filter-items/filter-type/smart-filter/useGetSmartFilterData.d.ts +2 -4
- package/dist/components/Filters/filter-items/filter-type/smart-filter/useGetSmartFilterData.js +22 -16
- package/dist/components/Filters/filter-items/filter-type/smart-filter/useGetSmartFilterData.js.map +1 -1
- package/dist/components/Filters/filter-items/filter-type/tree/TreeAttributeDropDown.js +7 -1
- package/dist/components/Filters/filter-items/filter-type/tree/TreeAttributeDropDown.js.map +1 -1
- package/dist/components/Filters/filter-items/filter-type/tree/useTreePermissions.js +1 -1
- package/dist/components/Filters/filter-items/filter-type/tree/useTreePermissions.js.map +1 -1
- package/dist/components/Filters/useFilters.d.ts +306 -0
- package/dist/components/Filters/useTransformFilters.js +1 -0
- package/dist/components/Filters/useTransformFilters.js.map +1 -1
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/useDelayedLoading/index.d.ts +1 -0
- package/dist/hooks/useDelayedLoading/index.js +5 -0
- package/dist/hooks/useDelayedLoading/index.js.map +1 -0
- package/dist/hooks/useDelayedLoading/useDelayedLoading.d.ts +17 -0
- package/dist/hooks/useDelayedLoading/useDelayedLoading.js +54 -0
- package/dist/hooks/useDelayedLoading/useDelayedLoading.js.map +1 -0
- package/dist/hooks/useIFrameMessenger/iFrameMessengerContext.d.ts +3 -1
- package/dist/hooks/useIFrameMessenger/iFrameMessengerContext.js.map +1 -1
- package/dist/hooks/useIFrameMessenger/messageHandlers.d.ts +2 -1
- package/dist/hooks/useIFrameMessenger/messageHandlers.js +9 -0
- package/dist/hooks/useIFrameMessenger/messageHandlers.js.map +1 -1
- package/dist/hooks/useIFrameMessenger/types.d.ts +21 -2
- package/dist/hooks/useIFrameMessenger/types.js.map +1 -1
- package/dist/hooks/useIFrameMessenger/useIFrameMessenger.d.ts +1 -0
- package/dist/hooks/useIFrameMessenger/useIFrameMessengerContext.js +29 -7
- package/dist/hooks/useIFrameMessenger/useIFrameMessengerContext.js.map +1 -1
- package/dist/hooks/useIFrameMessenger/useNativePanelMessengerHandlers.d.ts +14 -0
- package/dist/hooks/useIFrameMessenger/useNativePanelMessengerHandlers.js +22 -0
- package/dist/hooks/useIFrameMessenger/useNativePanelMessengerHandlers.js.map +1 -0
- package/dist/hooks/useIFrameMessengerClient/iFrameMessengerClientContext.d.ts +1 -0
- package/dist/hooks/useIFrameMessengerClient/useIFrameMessengerClient.d.ts +1 -0
- package/dist/locales/en/shared.json +1 -0
- package/dist/locales/fr/shared.json +1 -0
- package/package.json +4 -9
- package/dist/components/Explorer/actions-mass/edit-attribute/useTreeNodeRemapping.d.ts +0 -12
- package/dist/components/Explorer/actions-mass/edit-attribute/useTreeNodeRemapping.js +0 -24
- package/dist/components/Explorer/actions-mass/edit-attribute/useTreeNodeRemapping.js.map +0 -1
- package/dist/components/Explorer/actions-mass/edit-attribute/useValuesDistribution.d.ts +0 -13
- package/dist/components/Explorer/actions-mass/edit-attribute/useValuesDistribution.js +0 -28
- package/dist/components/Explorer/actions-mass/edit-attribute/useValuesDistribution.js.map +0 -1
package/dist/components/Explorer/manage-view-settings/store-view-settings/viewSettingsReducer.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { type SortOrder } from '../../../../_gqlTypes';
|
|
2
|
-
import { type DefaultViewSettings, type Entrypoint, type IUserView, type MassSelection } from '../../_types';
|
|
3
|
-
import { type IUIFilterTree, type UIFilter } from '../../../../components/Filters';
|
|
2
|
+
import { type DefaultViewSettings, type Entrypoint, type IUserView, type MassSelection, type SerializedView } from '../../_types';
|
|
4
3
|
export type ViewType = 'table' | 'list' | 'timeline' | 'mosaic';
|
|
5
4
|
export declare const ViewSettingsActionTypes: {
|
|
6
5
|
readonly RESET: "RESET";
|
|
@@ -16,17 +15,13 @@ export declare const ViewSettingsActionTypes: {
|
|
|
16
15
|
readonly CHANGE_PAGE_SIZE: "CHANGE_PAGE_SIZE";
|
|
17
16
|
readonly CHANGE_FULLTEXT_SEARCH: "CHANGE_FULLTEXT_SEARCH";
|
|
18
17
|
readonly CLEAR_FULLTEXT_SEARCH: "CLEAR_FULLTEXT_SEARCH";
|
|
19
|
-
readonly ADD_FILTER: "ADD_FILTER";
|
|
20
|
-
readonly RESET_FILTER: "RESET_FILTER";
|
|
21
|
-
readonly REMOVE_FILTER: "REMOVE_FILTER";
|
|
22
|
-
readonly MOVE_FILTER: "MOVE_FILTER";
|
|
23
|
-
readonly CHANGE_FILTER_CONFIG: "CHANGE_FILTER_CONFIG";
|
|
24
18
|
readonly SET_SELECTED_KEYS: "SET_SELECTED_KEYS";
|
|
25
19
|
readonly RESTORE_INITIAL_VIEW_SETTINGS: "RESTORE_INITIAL_VIEW_SETTINGS";
|
|
26
20
|
readonly UPDATE_VIEWS: "UPDATE_VIEWS";
|
|
27
21
|
readonly RENAME_VIEW: "RENAME_VIEW";
|
|
28
22
|
readonly DELETE_VIEW: "DELETE_VIEW";
|
|
29
23
|
readonly LOAD_VIEW: "LOAD_VIEW";
|
|
24
|
+
readonly APPLY_SERIALIZED_VIEW: "APPLY_SERIALIZED_VIEW";
|
|
30
25
|
};
|
|
31
26
|
export interface IViewSettingsState {
|
|
32
27
|
libraryId: string;
|
|
@@ -118,29 +113,6 @@ interface IViewSettingsActionChangeFulltextSearch {
|
|
|
118
113
|
interface IViewSettingsActionClearFulltextSearch {
|
|
119
114
|
type: typeof ViewSettingsActionTypes.CLEAR_FULLTEXT_SEARCH;
|
|
120
115
|
}
|
|
121
|
-
interface IViewSettingsActionAddFilter {
|
|
122
|
-
type: typeof ViewSettingsActionTypes.ADD_FILTER;
|
|
123
|
-
payload: Omit<UIFilter, 'id' | 'value' | 'condition'>;
|
|
124
|
-
}
|
|
125
|
-
interface IViewSettingsActionResetFilter {
|
|
126
|
-
type: typeof ViewSettingsActionTypes.RESET_FILTER;
|
|
127
|
-
payload: Pick<UIFilter, 'id'>;
|
|
128
|
-
}
|
|
129
|
-
interface IViewSettingsActionRemoveFilter {
|
|
130
|
-
type: typeof ViewSettingsActionTypes.REMOVE_FILTER;
|
|
131
|
-
payload: Pick<UIFilter, 'id'>;
|
|
132
|
-
}
|
|
133
|
-
interface IViewSettingsActionChangeFilterConfig {
|
|
134
|
-
type: typeof ViewSettingsActionTypes.CHANGE_FILTER_CONFIG;
|
|
135
|
-
payload: UIFilter | IUIFilterTree;
|
|
136
|
-
}
|
|
137
|
-
interface IViewSettingsActionMoveFilter {
|
|
138
|
-
type: typeof ViewSettingsActionTypes.MOVE_FILTER;
|
|
139
|
-
payload: {
|
|
140
|
-
indexFrom: number;
|
|
141
|
-
indexTo: number;
|
|
142
|
-
};
|
|
143
|
-
}
|
|
144
116
|
interface IViewSettingsActionReset {
|
|
145
117
|
type: typeof ViewSettingsActionTypes.RESET;
|
|
146
118
|
payload: IViewSettingsState;
|
|
@@ -175,6 +147,10 @@ interface IViewSettingsActionLoadView {
|
|
|
175
147
|
type: typeof ViewSettingsActionTypes.LOAD_VIEW;
|
|
176
148
|
payload: IViewSettingsActionLoadViewPayload;
|
|
177
149
|
}
|
|
150
|
+
interface IViewSettingsActionApplySerializedView {
|
|
151
|
+
type: typeof ViewSettingsActionTypes.APPLY_SERIALIZED_VIEW;
|
|
152
|
+
payload: Omit<SerializedView, 'filters' | 'filtersOperator'>;
|
|
153
|
+
}
|
|
178
154
|
type Reducer<PAYLOAD extends {
|
|
179
155
|
type: keyof typeof ViewSettingsActionTypes;
|
|
180
156
|
payload?: unknown;
|
|
@@ -183,6 +159,6 @@ type Reducer<PAYLOAD extends {
|
|
|
183
159
|
payload: 'no_payload';
|
|
184
160
|
}> = PAYLOAD['payload'] extends 'no_payload' ? (state: IViewSettingsState) => IViewSettingsState : (state: IViewSettingsState, payload: PAYLOAD['payload']) => IViewSettingsState;
|
|
185
161
|
export declare const clearFulltextSearch: Reducer;
|
|
186
|
-
export type IViewSettingsAction = IViewSettingsActionResetAttributes | IViewSettingsActionAddAttribute | IViewSettingsActionRemoveAttribute | IViewSettingsActionMoveAttribute | IViewSettingsActionChangeViewType | IViewSettingsActionAddSort | IViewSettingsActionRemoveSort | IViewSettingsActionChangeSortOrder | IViewSettingsActionMoveSort | IViewSettingsActionChangePageSize | IViewSettingsActionChangeFulltextSearch | IViewSettingsActionClearFulltextSearch |
|
|
162
|
+
export type IViewSettingsAction = IViewSettingsActionResetAttributes | IViewSettingsActionAddAttribute | IViewSettingsActionRemoveAttribute | IViewSettingsActionMoveAttribute | IViewSettingsActionChangeViewType | IViewSettingsActionAddSort | IViewSettingsActionRemoveSort | IViewSettingsActionChangeSortOrder | IViewSettingsActionMoveSort | IViewSettingsActionChangePageSize | IViewSettingsActionChangeFulltextSearch | IViewSettingsActionClearFulltextSearch | IViewSettingsActionReset | IViewSettingsActionSetSelectedKeys | IViewSettingsActionRestoreInitialViewSettings | IViewSettingsActionUpdateViewListAndCurrentView | IViewSettingsActionRenameView | IViewSettingsActionDeleteView | IViewSettingsActionLoadView | IViewSettingsActionApplySerializedView;
|
|
187
163
|
export declare const viewSettingsReducer: (state: IViewSettingsState, action: IViewSettingsAction) => IViewSettingsState;
|
|
188
164
|
export {};
|
package/dist/components/Explorer/manage-view-settings/store-view-settings/viewSettingsReducer.js
CHANGED
|
@@ -13,17 +13,13 @@ export const ViewSettingsActionTypes = {
|
|
|
13
13
|
CHANGE_PAGE_SIZE: 'CHANGE_PAGE_SIZE',
|
|
14
14
|
CHANGE_FULLTEXT_SEARCH: 'CHANGE_FULLTEXT_SEARCH',
|
|
15
15
|
CLEAR_FULLTEXT_SEARCH: 'CLEAR_FULLTEXT_SEARCH',
|
|
16
|
-
ADD_FILTER: 'ADD_FILTER',
|
|
17
|
-
RESET_FILTER: 'RESET_FILTER',
|
|
18
|
-
REMOVE_FILTER: 'REMOVE_FILTER',
|
|
19
|
-
MOVE_FILTER: 'MOVE_FILTER',
|
|
20
|
-
CHANGE_FILTER_CONFIG: 'CHANGE_FILTER_CONFIG',
|
|
21
16
|
SET_SELECTED_KEYS: 'SET_SELECTED_KEYS',
|
|
22
17
|
RESTORE_INITIAL_VIEW_SETTINGS: 'RESTORE_INITIAL_VIEW_SETTINGS',
|
|
23
18
|
UPDATE_VIEWS: 'UPDATE_VIEWS',
|
|
24
19
|
RENAME_VIEW: 'RENAME_VIEW',
|
|
25
20
|
DELETE_VIEW: 'DELETE_VIEW',
|
|
26
21
|
LOAD_VIEW: 'LOAD_VIEW',
|
|
22
|
+
APPLY_SERIALIZED_VIEW: 'APPLY_SERIALIZED_VIEW',
|
|
27
23
|
};
|
|
28
24
|
const changePageSize = (state, payload) => ({
|
|
29
25
|
...state,
|
|
@@ -147,6 +143,11 @@ const deleteView = (state, payload) => {
|
|
|
147
143
|
savedViews: newSavedViews,
|
|
148
144
|
};
|
|
149
145
|
};
|
|
146
|
+
const applySerializedView = (state, payload) => ({
|
|
147
|
+
...state,
|
|
148
|
+
...payload,
|
|
149
|
+
viewModified: true,
|
|
150
|
+
});
|
|
150
151
|
const loadView = (state, payload) => ({
|
|
151
152
|
...state,
|
|
152
153
|
...payload,
|
|
@@ -196,21 +197,6 @@ export const viewSettingsReducer = (state, action) => {
|
|
|
196
197
|
case ViewSettingsActionTypes.CLEAR_FULLTEXT_SEARCH: {
|
|
197
198
|
return clearFulltextSearch(state);
|
|
198
199
|
}
|
|
199
|
-
/*case ViewSettingsActionTypes.ADD_FILTER: {
|
|
200
|
-
return addFilter(state, action.payload);
|
|
201
|
-
}
|
|
202
|
-
case ViewSettingsActionTypes.RESET_FILTER: {
|
|
203
|
-
return resetFilter(state, action.payload);
|
|
204
|
-
}
|
|
205
|
-
case ViewSettingsActionTypes.REMOVE_FILTER: {
|
|
206
|
-
return removeFilter(state, action.payload);
|
|
207
|
-
}
|
|
208
|
-
case ViewSettingsActionTypes.CHANGE_FILTER_CONFIG: {
|
|
209
|
-
return changeFilterConfig(state, action.payload);
|
|
210
|
-
}
|
|
211
|
-
case ViewSettingsActionTypes.MOVE_FILTER: {
|
|
212
|
-
return moveFilter(state, action.payload);
|
|
213
|
-
}*/
|
|
214
200
|
case ViewSettingsActionTypes.RESET: {
|
|
215
201
|
return reset(state, action.payload);
|
|
216
202
|
}
|
|
@@ -232,6 +218,9 @@ export const viewSettingsReducer = (state, action) => {
|
|
|
232
218
|
case ViewSettingsActionTypes.LOAD_VIEW: {
|
|
233
219
|
return loadView(state, action.payload);
|
|
234
220
|
}
|
|
221
|
+
case ViewSettingsActionTypes.APPLY_SERIALIZED_VIEW: {
|
|
222
|
+
return applySerializedView(state, action.payload);
|
|
223
|
+
}
|
|
235
224
|
default:
|
|
236
225
|
return state;
|
|
237
226
|
}
|
package/dist/components/Explorer/manage-view-settings/store-view-settings/viewSettingsReducer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewSettingsReducer.js","sourceRoot":"","sources":["../../../../../src/components/Explorer/manage-view-settings/store-view-settings/viewSettingsReducer.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {AttributeFormat, type RecordFilterCondition, type SortOrder} from '_ui/_gqlTypes';\nimport {type DefaultViewSettings, type Entrypoint, type IUserView, type MassSelection} from '../../_types';\nimport {hasOnlyNoValueConditions, nullValueConditions} from '../../conditionsHelper';\nimport {AttributeConditionFilter, ThroughConditionFilter} from '_ui/types';\nimport {DefaultViewId} from './viewSettingsInitialState';\nimport {isLinkAttribute} from '_ui/_utils/attributeType';\nimport {\n conditionsByFormat,\n getFirstConditionByFilterType,\n} from '_ui/components/Filters/filter-items/filter-type/useConditionOptionsByType';\nimport {\n isUIFilterLink,\n isUIFilterStandard,\n isUIFilterThrough,\n isUIFilterTree,\n isUIFilterValueList,\n type IUIFilterStandard,\n type IUIFilterTree,\n type UIFilter,\n} from '_ui/components/Filters';\n\nexport type ViewType = 'table' | 'list' | 'timeline' | 'mosaic';\n\nexport const ViewSettingsActionTypes = {\n RESET: 'RESET',\n ADD_ATTRIBUTE: 'ADD_ATTRIBUTE',\n REMOVE_ATTRIBUTE: 'REMOVE_ATTRIBUTE',\n MOVE_ATTRIBUTE: 'MOVE_ATTRIBUTE',\n RESET_ATTRIBUTES: 'RESET_ATTRIBUTES',\n CHANGE_VIEW_TYPE: 'CHANGE_VIEW_TYPE',\n ADD_SORT: 'ADD_SORT',\n REMOVE_SORT: 'REMOVE_SORT',\n MOVE_SORT: 'MOVE_SORT',\n CHANGE_SORT_ORDER: 'CHANGE_SORT_ORDER',\n CHANGE_PAGE_SIZE: 'CHANGE_PAGE_SIZE',\n CHANGE_FULLTEXT_SEARCH: 'CHANGE_FULLTEXT_SEARCH',\n CLEAR_FULLTEXT_SEARCH: 'CLEAR_FULLTEXT_SEARCH',\n ADD_FILTER: 'ADD_FILTER',\n RESET_FILTER: 'RESET_FILTER',\n REMOVE_FILTER: 'REMOVE_FILTER',\n MOVE_FILTER: 'MOVE_FILTER',\n CHANGE_FILTER_CONFIG: 'CHANGE_FILTER_CONFIG',\n SET_SELECTED_KEYS: 'SET_SELECTED_KEYS',\n RESTORE_INITIAL_VIEW_SETTINGS: 'RESTORE_INITIAL_VIEW_SETTINGS',\n UPDATE_VIEWS: 'UPDATE_VIEWS',\n RENAME_VIEW: 'RENAME_VIEW',\n DELETE_VIEW: 'DELETE_VIEW',\n LOAD_VIEW: 'LOAD_VIEW',\n} as const;\n\nexport interface IViewSettingsState {\n libraryId: string;\n viewId: string | null;\n viewLabels: Record<string, string>;\n viewModified: boolean;\n entrypoint: Entrypoint;\n viewType: ViewType;\n savedViews: IUserView[];\n attributesIds: string[];\n fulltextSearch: string;\n sort: Array<{\n field: string;\n order: SortOrder;\n }>;\n pageSize: number;\n initialViewSettings: Pick<IViewSettingsState, 'viewType' | 'attributesIds' | 'sort' | 'pageSize'>;\n defaultViewSettings: DefaultViewSettings;\n massSelection: MassSelection;\n enableConfigureView?: boolean;\n}\n\ninterface IViewSettingsActionChangePageSize {\n type: typeof ViewSettingsActionTypes.CHANGE_PAGE_SIZE;\n payload: {pageSize: number};\n}\n\ninterface IViewSettingsActionAddAttribute {\n type: typeof ViewSettingsActionTypes.ADD_ATTRIBUTE;\n payload: {attributeId: string};\n}\n\ninterface IViewSettingsActionRemoveAttribute {\n type: typeof ViewSettingsActionTypes.REMOVE_ATTRIBUTE;\n payload: {attributeId: string};\n}\n\ninterface IViewSettingsActionMoveAttribute {\n type: typeof ViewSettingsActionTypes.MOVE_ATTRIBUTE;\n payload: {\n indexFrom: number;\n indexTo: number;\n };\n}\n\ninterface IViewSettingsActionChangeViewType {\n type: typeof ViewSettingsActionTypes.CHANGE_VIEW_TYPE;\n payload: {viewType: ViewType};\n}\n\ninterface IViewSettingsActionResetAttributes {\n type: typeof ViewSettingsActionTypes.RESET_ATTRIBUTES;\n}\n\ninterface IViewSettingsActionAddSort {\n type: typeof ViewSettingsActionTypes.ADD_SORT;\n payload: {field: string; order: SortOrder};\n}\n\ninterface IViewSettingsActionRemoveSort {\n type: typeof ViewSettingsActionTypes.REMOVE_SORT;\n payload: {field: string};\n}\n\ninterface IViewSettingsActionChangeSortOrder {\n type: typeof ViewSettingsActionTypes.CHANGE_SORT_ORDER;\n payload: {field: string; order: SortOrder};\n}\n\ninterface IViewSettingsActionMoveSort {\n type: typeof ViewSettingsActionTypes.MOVE_SORT;\n payload: {\n indexFrom: number;\n indexTo: number;\n };\n}\n\ninterface IViewSettingsActionChangeFulltextSearch {\n type: typeof ViewSettingsActionTypes.CHANGE_FULLTEXT_SEARCH;\n payload: {search: string};\n}\n\ninterface IViewSettingsActionClearFulltextSearch {\n type: typeof ViewSettingsActionTypes.CLEAR_FULLTEXT_SEARCH;\n}\n\ninterface IViewSettingsActionAddFilter {\n type: typeof ViewSettingsActionTypes.ADD_FILTER;\n payload: Omit<UIFilter, 'id' | 'value' | 'condition'>;\n}\n\ninterface IViewSettingsActionResetFilter {\n type: typeof ViewSettingsActionTypes.RESET_FILTER;\n payload: Pick<UIFilter, 'id'>;\n}\n\ninterface IViewSettingsActionRemoveFilter {\n type: typeof ViewSettingsActionTypes.REMOVE_FILTER;\n payload: Pick<UIFilter, 'id'>;\n}\n\ninterface IViewSettingsActionChangeFilterConfig {\n type: typeof ViewSettingsActionTypes.CHANGE_FILTER_CONFIG;\n payload: UIFilter | IUIFilterTree;\n}\n\ninterface IViewSettingsActionMoveFilter {\n type: typeof ViewSettingsActionTypes.MOVE_FILTER;\n payload: {\n indexFrom: number;\n indexTo: number;\n };\n}\n\ninterface IViewSettingsActionReset {\n type: typeof ViewSettingsActionTypes.RESET;\n payload: IViewSettingsState;\n}\n\ninterface IViewSettingsActionSetSelectedKeys {\n type: typeof ViewSettingsActionTypes.SET_SELECTED_KEYS;\n payload: MassSelection;\n}\n\ninterface IViewSettingsActionRestoreInitialViewSettings {\n type: typeof ViewSettingsActionTypes.RESTORE_INITIAL_VIEW_SETTINGS;\n}\n\ninterface IViewSettingsActionUpdateViewListAndCurrentView {\n type: typeof ViewSettingsActionTypes.UPDATE_VIEWS;\n payload: IUserView;\n}\n\ninterface IViewDataPayload {\n id: string;\n label: Record<string, string>;\n}\n\ninterface IViewSettingsActionRenameView {\n type: typeof ViewSettingsActionTypes.RENAME_VIEW;\n payload: IViewDataPayload;\n}\n\ninterface IViewSettingsActionDeleteView {\n type: typeof ViewSettingsActionTypes.DELETE_VIEW;\n payload: {id: string};\n}\n\nexport type IViewSettingsActionLoadViewPayload = Pick<\n IViewSettingsState,\n 'viewId' | 'viewLabels' | 'viewType' | 'attributesIds' | 'sort'\n>;\n\ninterface IViewSettingsActionLoadView {\n type: typeof ViewSettingsActionTypes.LOAD_VIEW;\n payload: IViewSettingsActionLoadViewPayload;\n}\n\ntype Reducer<\n PAYLOAD extends {\n type: keyof typeof ViewSettingsActionTypes;\n payload?: unknown;\n } = {type: any; payload: 'no_payload'},\n> = PAYLOAD['payload'] extends 'no_payload'\n ? (state: IViewSettingsState) => IViewSettingsState\n : (state: IViewSettingsState, payload: PAYLOAD['payload']) => IViewSettingsState;\n\nconst changePageSize: Reducer<IViewSettingsActionChangePageSize> = (state, payload) => ({\n ...state,\n pageSize: payload.pageSize,\n});\n\nconst addAttribute: Reducer<IViewSettingsActionAddAttribute> = (state, payload) => ({\n ...state,\n attributesIds: [...state.attributesIds, payload.attributeId],\n viewModified: true,\n});\n\nconst removeAttribute: Reducer<IViewSettingsActionRemoveAttribute> = (state, payload) => ({\n ...state,\n attributesIds: state.attributesIds.filter(attributesId => attributesId !== payload.attributeId),\n viewModified: true,\n});\n\nconst moveAttribute: Reducer<IViewSettingsActionMoveAttribute> = (state, payload) => {\n const attributesIds = [...state.attributesIds];\n const [attributeIdToMove] = attributesIds.splice(payload.indexFrom, 1);\n // TODO use newES6 syntax (toSpliced)\n attributesIds.splice(payload.indexTo, 0, attributeIdToMove);\n return {\n ...state,\n attributesIds,\n viewModified: true,\n };\n};\n\nconst resetAttributes: Reducer = state => ({\n ...state,\n attributesIds: [],\n});\n\nconst changeViewType: Reducer<IViewSettingsActionChangeViewType> = (state, payload) => ({\n ...state,\n viewType: payload.viewType,\n viewModified: true,\n});\n\nconst addSort: Reducer<IViewSettingsActionAddSort> = (state, payload) => ({\n ...state,\n sort: [...state.sort, {field: payload.field, order: payload.order}],\n viewModified: true,\n});\n\nconst removeSort: Reducer<IViewSettingsActionRemoveSort> = (state, payload) => ({\n ...state,\n sort: state.sort.filter(({field: attributeId}) => attributeId !== payload.field),\n viewModified: true,\n});\n\nconst changeSortOrder: Reducer<IViewSettingsActionChangeSortOrder> = (state, payload) => ({\n ...state,\n sort: state.sort.map(sort => (sort.field === payload.field ? {...sort, order: payload.order} : sort)),\n viewModified: true,\n});\n\nconst moveSort: Reducer<IViewSettingsActionMoveSort> = (state, payload) => {\n const attributesUsedToSort = [...state.sort];\n const [sortToMove] = attributesUsedToSort.splice(payload.indexFrom, 1);\n attributesUsedToSort.splice(payload.indexTo, 0, sortToMove);\n return {\n ...state,\n sort: attributesUsedToSort,\n viewModified: true,\n };\n};\n\nconst changeFulltextSearch: Reducer<IViewSettingsActionChangeFulltextSearch> = (state, payload) => ({\n ...state,\n fulltextSearch: payload.search,\n});\n\nexport const clearFulltextSearch: Reducer = state => ({\n ...state,\n fulltextSearch: '',\n});\n\nconst reset: Reducer<IViewSettingsActionReset> = (_, payload) => payload;\n\nconst setSelectedKeys: Reducer<IViewSettingsActionSetSelectedKeys> = (state, payload) => ({\n ...state,\n massSelection: payload,\n});\n\nconst restoreInitialViewSettings: Reducer = state => ({\n ...state,\n ...state.initialViewSettings,\n viewModified: false,\n});\n\nconst updateViewListAndCurrentView: Reducer<IViewSettingsActionUpdateViewListAndCurrentView> = (state, payload) => ({\n ...state,\n viewId: payload.id ?? null,\n viewLabels: payload.label,\n savedViews: state.savedViews.find(({id}) => id === payload.id)\n ? state.savedViews.map(view => (view.id === payload.id ? payload : view))\n : state.savedViews.concat([payload]),\n initialViewSettings: {\n viewType: state.viewType,\n attributesIds: state.attributesIds,\n sort: state.sort,\n pageSize: state.pageSize,\n },\n viewModified: false,\n});\n\nconst renameView: Reducer<IViewSettingsActionRenameView> = (state, payload) => ({\n ...state,\n viewLabels: payload.label,\n savedViews: state.savedViews.map(view => (view.id === payload.id ? {...view, label: payload?.label} : view)),\n});\n\nconst deleteView: Reducer<IViewSettingsActionDeleteView> = (state, payload) => {\n const newSavedViews = [...state.savedViews];\n const indexViewDeleted = newSavedViews.findIndex(view => view.id === payload.id);\n // TODO use newES6 syntax (toSpliced)\n if (indexViewDeleted !== -1) {\n newSavedViews.splice(indexViewDeleted, 1);\n }\n if (state.viewId === payload.id) {\n const defaultViewSettings = {\n ...state.defaultViewSettings,\n viewId: DefaultViewId,\n viewLabels: {},\n viewModified: false,\n };\n return {\n ...state,\n ...defaultViewSettings,\n savedViews: newSavedViews,\n };\n }\n return {\n ...state,\n savedViews: newSavedViews,\n };\n};\n\nconst loadView: Reducer<IViewSettingsActionLoadView> = (state, payload) => ({\n ...state,\n ...payload,\n initialViewSettings: {\n viewType: payload.viewType,\n attributesIds: payload.attributesIds,\n sort: payload.sort,\n pageSize: state.pageSize,\n },\n viewModified: false,\n});\n\nexport type IViewSettingsAction =\n | IViewSettingsActionResetAttributes\n | IViewSettingsActionAddAttribute\n | IViewSettingsActionRemoveAttribute\n | IViewSettingsActionMoveAttribute\n | IViewSettingsActionChangeViewType\n | IViewSettingsActionAddSort\n | IViewSettingsActionRemoveSort\n | IViewSettingsActionChangeSortOrder\n | IViewSettingsActionMoveSort\n | IViewSettingsActionChangePageSize\n | IViewSettingsActionChangeFulltextSearch\n | IViewSettingsActionClearFulltextSearch\n | IViewSettingsActionAddFilter\n | IViewSettingsActionResetFilter\n | IViewSettingsActionRemoveFilter\n | IViewSettingsActionChangeFilterConfig\n | IViewSettingsActionMoveFilter\n | IViewSettingsActionReset\n | IViewSettingsActionSetSelectedKeys\n | IViewSettingsActionRestoreInitialViewSettings\n | IViewSettingsActionUpdateViewListAndCurrentView\n | IViewSettingsActionRenameView\n | IViewSettingsActionDeleteView\n | IViewSettingsActionLoadView;\n\nexport const viewSettingsReducer = (state: IViewSettingsState, action: IViewSettingsAction): IViewSettingsState => {\n switch (action.type) {\n case ViewSettingsActionTypes.CHANGE_PAGE_SIZE: {\n return changePageSize(state, action.payload);\n }\n case ViewSettingsActionTypes.ADD_ATTRIBUTE: {\n return addAttribute(state, action.payload);\n }\n case ViewSettingsActionTypes.REMOVE_ATTRIBUTE: {\n return removeAttribute(state, action.payload);\n }\n case ViewSettingsActionTypes.MOVE_ATTRIBUTE: {\n return moveAttribute(state, action.payload);\n }\n case ViewSettingsActionTypes.RESET_ATTRIBUTES: {\n return resetAttributes(state);\n }\n case ViewSettingsActionTypes.CHANGE_VIEW_TYPE: {\n return changeViewType(state, action.payload);\n }\n case ViewSettingsActionTypes.ADD_SORT: {\n return addSort(state, action.payload);\n }\n case ViewSettingsActionTypes.REMOVE_SORT: {\n return removeSort(state, action.payload);\n }\n case ViewSettingsActionTypes.MOVE_SORT: {\n return moveSort(state, action.payload);\n }\n case ViewSettingsActionTypes.CHANGE_SORT_ORDER: {\n return changeSortOrder(state, action.payload);\n }\n case ViewSettingsActionTypes.CHANGE_FULLTEXT_SEARCH: {\n return changeFulltextSearch(state, action.payload);\n }\n case ViewSettingsActionTypes.CLEAR_FULLTEXT_SEARCH: {\n return clearFulltextSearch(state);\n }\n /*case ViewSettingsActionTypes.ADD_FILTER: {\n return addFilter(state, action.payload);\n }\n case ViewSettingsActionTypes.RESET_FILTER: {\n return resetFilter(state, action.payload);\n }\n case ViewSettingsActionTypes.REMOVE_FILTER: {\n return removeFilter(state, action.payload);\n }\n case ViewSettingsActionTypes.CHANGE_FILTER_CONFIG: {\n return changeFilterConfig(state, action.payload);\n }\n case ViewSettingsActionTypes.MOVE_FILTER: {\n return moveFilter(state, action.payload);\n }*/\n case ViewSettingsActionTypes.RESET: {\n return reset(state, action.payload);\n }\n case ViewSettingsActionTypes.SET_SELECTED_KEYS: {\n return setSelectedKeys(state, action.payload);\n }\n case ViewSettingsActionTypes.RESTORE_INITIAL_VIEW_SETTINGS: {\n return restoreInitialViewSettings(state);\n }\n case ViewSettingsActionTypes.UPDATE_VIEWS: {\n return updateViewListAndCurrentView(state, action.payload);\n }\n case ViewSettingsActionTypes.RENAME_VIEW: {\n return renameView(state, action.payload);\n }\n case ViewSettingsActionTypes.DELETE_VIEW: {\n return deleteView(state, action.payload);\n }\n case ViewSettingsActionTypes.LOAD_VIEW: {\n return loadView(state, action.payload);\n }\n default:\n return state;\n }\n};\n"]}
|
|
1
|
+
{"version":3,"file":"viewSettingsReducer.js","sourceRoot":"","sources":["../../../../../src/components/Explorer/manage-view-settings/store-view-settings/viewSettingsReducer.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {type SortOrder} from '_ui/_gqlTypes';\nimport {\n type DefaultViewSettings,\n type Entrypoint,\n type IUserView,\n type MassSelection,\n type SerializedView,\n} from '../../_types';\nimport {DefaultViewId} from './viewSettingsInitialState';\n\nexport type ViewType = 'table' | 'list' | 'timeline' | 'mosaic';\n\nexport const ViewSettingsActionTypes = {\n RESET: 'RESET',\n ADD_ATTRIBUTE: 'ADD_ATTRIBUTE',\n REMOVE_ATTRIBUTE: 'REMOVE_ATTRIBUTE',\n MOVE_ATTRIBUTE: 'MOVE_ATTRIBUTE',\n RESET_ATTRIBUTES: 'RESET_ATTRIBUTES',\n CHANGE_VIEW_TYPE: 'CHANGE_VIEW_TYPE',\n ADD_SORT: 'ADD_SORT',\n REMOVE_SORT: 'REMOVE_SORT',\n MOVE_SORT: 'MOVE_SORT',\n CHANGE_SORT_ORDER: 'CHANGE_SORT_ORDER',\n CHANGE_PAGE_SIZE: 'CHANGE_PAGE_SIZE',\n CHANGE_FULLTEXT_SEARCH: 'CHANGE_FULLTEXT_SEARCH',\n CLEAR_FULLTEXT_SEARCH: 'CLEAR_FULLTEXT_SEARCH',\n SET_SELECTED_KEYS: 'SET_SELECTED_KEYS',\n RESTORE_INITIAL_VIEW_SETTINGS: 'RESTORE_INITIAL_VIEW_SETTINGS',\n UPDATE_VIEWS: 'UPDATE_VIEWS',\n RENAME_VIEW: 'RENAME_VIEW',\n DELETE_VIEW: 'DELETE_VIEW',\n LOAD_VIEW: 'LOAD_VIEW',\n APPLY_SERIALIZED_VIEW: 'APPLY_SERIALIZED_VIEW',\n} as const;\n\nexport interface IViewSettingsState {\n libraryId: string;\n viewId: string | null;\n viewLabels: Record<string, string>;\n viewModified: boolean;\n entrypoint: Entrypoint;\n viewType: ViewType;\n savedViews: IUserView[];\n attributesIds: string[];\n fulltextSearch: string;\n sort: Array<{\n field: string;\n order: SortOrder;\n }>;\n pageSize: number;\n initialViewSettings: Pick<IViewSettingsState, 'viewType' | 'attributesIds' | 'sort' | 'pageSize'>;\n defaultViewSettings: DefaultViewSettings;\n massSelection: MassSelection;\n enableConfigureView?: boolean;\n}\n\ninterface IViewSettingsActionChangePageSize {\n type: typeof ViewSettingsActionTypes.CHANGE_PAGE_SIZE;\n payload: {pageSize: number};\n}\n\ninterface IViewSettingsActionAddAttribute {\n type: typeof ViewSettingsActionTypes.ADD_ATTRIBUTE;\n payload: {attributeId: string};\n}\n\ninterface IViewSettingsActionRemoveAttribute {\n type: typeof ViewSettingsActionTypes.REMOVE_ATTRIBUTE;\n payload: {attributeId: string};\n}\n\ninterface IViewSettingsActionMoveAttribute {\n type: typeof ViewSettingsActionTypes.MOVE_ATTRIBUTE;\n payload: {\n indexFrom: number;\n indexTo: number;\n };\n}\n\ninterface IViewSettingsActionChangeViewType {\n type: typeof ViewSettingsActionTypes.CHANGE_VIEW_TYPE;\n payload: {viewType: ViewType};\n}\n\ninterface IViewSettingsActionResetAttributes {\n type: typeof ViewSettingsActionTypes.RESET_ATTRIBUTES;\n}\n\ninterface IViewSettingsActionAddSort {\n type: typeof ViewSettingsActionTypes.ADD_SORT;\n payload: {field: string; order: SortOrder};\n}\n\ninterface IViewSettingsActionRemoveSort {\n type: typeof ViewSettingsActionTypes.REMOVE_SORT;\n payload: {field: string};\n}\n\ninterface IViewSettingsActionChangeSortOrder {\n type: typeof ViewSettingsActionTypes.CHANGE_SORT_ORDER;\n payload: {field: string; order: SortOrder};\n}\n\ninterface IViewSettingsActionMoveSort {\n type: typeof ViewSettingsActionTypes.MOVE_SORT;\n payload: {\n indexFrom: number;\n indexTo: number;\n };\n}\n\ninterface IViewSettingsActionChangeFulltextSearch {\n type: typeof ViewSettingsActionTypes.CHANGE_FULLTEXT_SEARCH;\n payload: {search: string};\n}\n\ninterface IViewSettingsActionClearFulltextSearch {\n type: typeof ViewSettingsActionTypes.CLEAR_FULLTEXT_SEARCH;\n}\n\ninterface IViewSettingsActionReset {\n type: typeof ViewSettingsActionTypes.RESET;\n payload: IViewSettingsState;\n}\n\ninterface IViewSettingsActionSetSelectedKeys {\n type: typeof ViewSettingsActionTypes.SET_SELECTED_KEYS;\n payload: MassSelection;\n}\n\ninterface IViewSettingsActionRestoreInitialViewSettings {\n type: typeof ViewSettingsActionTypes.RESTORE_INITIAL_VIEW_SETTINGS;\n}\n\ninterface IViewSettingsActionUpdateViewListAndCurrentView {\n type: typeof ViewSettingsActionTypes.UPDATE_VIEWS;\n payload: IUserView;\n}\n\ninterface IViewDataPayload {\n id: string;\n label: Record<string, string>;\n}\n\ninterface IViewSettingsActionRenameView {\n type: typeof ViewSettingsActionTypes.RENAME_VIEW;\n payload: IViewDataPayload;\n}\n\ninterface IViewSettingsActionDeleteView {\n type: typeof ViewSettingsActionTypes.DELETE_VIEW;\n payload: {id: string};\n}\n\nexport type IViewSettingsActionLoadViewPayload = Pick<\n IViewSettingsState,\n 'viewId' | 'viewLabels' | 'viewType' | 'attributesIds' | 'sort'\n>;\n\ninterface IViewSettingsActionLoadView {\n type: typeof ViewSettingsActionTypes.LOAD_VIEW;\n payload: IViewSettingsActionLoadViewPayload;\n}\n\ninterface IViewSettingsActionApplySerializedView {\n type: typeof ViewSettingsActionTypes.APPLY_SERIALIZED_VIEW;\n payload: Omit<SerializedView, 'filters' | 'filtersOperator'>;\n}\n\ntype Reducer<\n PAYLOAD extends {\n type: keyof typeof ViewSettingsActionTypes;\n payload?: unknown;\n } = {type: any; payload: 'no_payload'},\n> = PAYLOAD['payload'] extends 'no_payload'\n ? (state: IViewSettingsState) => IViewSettingsState\n : (state: IViewSettingsState, payload: PAYLOAD['payload']) => IViewSettingsState;\n\nconst changePageSize: Reducer<IViewSettingsActionChangePageSize> = (state, payload) => ({\n ...state,\n pageSize: payload.pageSize,\n});\n\nconst addAttribute: Reducer<IViewSettingsActionAddAttribute> = (state, payload) => ({\n ...state,\n attributesIds: [...state.attributesIds, payload.attributeId],\n viewModified: true,\n});\n\nconst removeAttribute: Reducer<IViewSettingsActionRemoveAttribute> = (state, payload) => ({\n ...state,\n attributesIds: state.attributesIds.filter(attributesId => attributesId !== payload.attributeId),\n viewModified: true,\n});\n\nconst moveAttribute: Reducer<IViewSettingsActionMoveAttribute> = (state, payload) => {\n const attributesIds = [...state.attributesIds];\n const [attributeIdToMove] = attributesIds.splice(payload.indexFrom, 1);\n // TODO use newES6 syntax (toSpliced)\n attributesIds.splice(payload.indexTo, 0, attributeIdToMove);\n return {\n ...state,\n attributesIds,\n viewModified: true,\n };\n};\n\nconst resetAttributes: Reducer = state => ({\n ...state,\n attributesIds: [],\n});\n\nconst changeViewType: Reducer<IViewSettingsActionChangeViewType> = (state, payload) => ({\n ...state,\n viewType: payload.viewType,\n viewModified: true,\n});\n\nconst addSort: Reducer<IViewSettingsActionAddSort> = (state, payload) => ({\n ...state,\n sort: [...state.sort, {field: payload.field, order: payload.order}],\n viewModified: true,\n});\n\nconst removeSort: Reducer<IViewSettingsActionRemoveSort> = (state, payload) => ({\n ...state,\n sort: state.sort.filter(({field: attributeId}) => attributeId !== payload.field),\n viewModified: true,\n});\n\nconst changeSortOrder: Reducer<IViewSettingsActionChangeSortOrder> = (state, payload) => ({\n ...state,\n sort: state.sort.map(sort => (sort.field === payload.field ? {...sort, order: payload.order} : sort)),\n viewModified: true,\n});\n\nconst moveSort: Reducer<IViewSettingsActionMoveSort> = (state, payload) => {\n const attributesUsedToSort = [...state.sort];\n const [sortToMove] = attributesUsedToSort.splice(payload.indexFrom, 1);\n attributesUsedToSort.splice(payload.indexTo, 0, sortToMove);\n return {\n ...state,\n sort: attributesUsedToSort,\n viewModified: true,\n };\n};\n\nconst changeFulltextSearch: Reducer<IViewSettingsActionChangeFulltextSearch> = (state, payload) => ({\n ...state,\n fulltextSearch: payload.search,\n});\n\nexport const clearFulltextSearch: Reducer = state => ({\n ...state,\n fulltextSearch: '',\n});\n\nconst reset: Reducer<IViewSettingsActionReset> = (_, payload) => payload;\n\nconst setSelectedKeys: Reducer<IViewSettingsActionSetSelectedKeys> = (state, payload) => ({\n ...state,\n massSelection: payload,\n});\n\nconst restoreInitialViewSettings: Reducer = state => ({\n ...state,\n ...state.initialViewSettings,\n viewModified: false,\n});\n\nconst updateViewListAndCurrentView: Reducer<IViewSettingsActionUpdateViewListAndCurrentView> = (state, payload) => ({\n ...state,\n viewId: payload.id ?? null,\n viewLabels: payload.label,\n savedViews: state.savedViews.find(({id}) => id === payload.id)\n ? state.savedViews.map(view => (view.id === payload.id ? payload : view))\n : state.savedViews.concat([payload]),\n initialViewSettings: {\n viewType: state.viewType,\n attributesIds: state.attributesIds,\n sort: state.sort,\n pageSize: state.pageSize,\n },\n viewModified: false,\n});\n\nconst renameView: Reducer<IViewSettingsActionRenameView> = (state, payload) => ({\n ...state,\n viewLabels: payload.label,\n savedViews: state.savedViews.map(view => (view.id === payload.id ? {...view, label: payload?.label} : view)),\n});\n\nconst deleteView: Reducer<IViewSettingsActionDeleteView> = (state, payload) => {\n const newSavedViews = [...state.savedViews];\n const indexViewDeleted = newSavedViews.findIndex(view => view.id === payload.id);\n // TODO use newES6 syntax (toSpliced)\n if (indexViewDeleted !== -1) {\n newSavedViews.splice(indexViewDeleted, 1);\n }\n if (state.viewId === payload.id) {\n const defaultViewSettings = {\n ...state.defaultViewSettings,\n viewId: DefaultViewId,\n viewLabels: {},\n viewModified: false,\n };\n return {\n ...state,\n ...defaultViewSettings,\n savedViews: newSavedViews,\n };\n }\n return {\n ...state,\n savedViews: newSavedViews,\n };\n};\n\nconst applySerializedView: Reducer<IViewSettingsActionApplySerializedView> = (state, payload) => ({\n ...state,\n ...payload,\n viewModified: true,\n});\n\nconst loadView: Reducer<IViewSettingsActionLoadView> = (state, payload) => ({\n ...state,\n ...payload,\n initialViewSettings: {\n viewType: payload.viewType,\n attributesIds: payload.attributesIds,\n sort: payload.sort,\n pageSize: state.pageSize,\n },\n viewModified: false,\n});\n\nexport type IViewSettingsAction =\n | IViewSettingsActionResetAttributes\n | IViewSettingsActionAddAttribute\n | IViewSettingsActionRemoveAttribute\n | IViewSettingsActionMoveAttribute\n | IViewSettingsActionChangeViewType\n | IViewSettingsActionAddSort\n | IViewSettingsActionRemoveSort\n | IViewSettingsActionChangeSortOrder\n | IViewSettingsActionMoveSort\n | IViewSettingsActionChangePageSize\n | IViewSettingsActionChangeFulltextSearch\n | IViewSettingsActionClearFulltextSearch\n | IViewSettingsActionReset\n | IViewSettingsActionSetSelectedKeys\n | IViewSettingsActionRestoreInitialViewSettings\n | IViewSettingsActionUpdateViewListAndCurrentView\n | IViewSettingsActionRenameView\n | IViewSettingsActionDeleteView\n | IViewSettingsActionLoadView\n | IViewSettingsActionApplySerializedView;\n\nexport const viewSettingsReducer = (state: IViewSettingsState, action: IViewSettingsAction): IViewSettingsState => {\n switch (action.type) {\n case ViewSettingsActionTypes.CHANGE_PAGE_SIZE: {\n return changePageSize(state, action.payload);\n }\n case ViewSettingsActionTypes.ADD_ATTRIBUTE: {\n return addAttribute(state, action.payload);\n }\n case ViewSettingsActionTypes.REMOVE_ATTRIBUTE: {\n return removeAttribute(state, action.payload);\n }\n case ViewSettingsActionTypes.MOVE_ATTRIBUTE: {\n return moveAttribute(state, action.payload);\n }\n case ViewSettingsActionTypes.RESET_ATTRIBUTES: {\n return resetAttributes(state);\n }\n case ViewSettingsActionTypes.CHANGE_VIEW_TYPE: {\n return changeViewType(state, action.payload);\n }\n case ViewSettingsActionTypes.ADD_SORT: {\n return addSort(state, action.payload);\n }\n case ViewSettingsActionTypes.REMOVE_SORT: {\n return removeSort(state, action.payload);\n }\n case ViewSettingsActionTypes.MOVE_SORT: {\n return moveSort(state, action.payload);\n }\n case ViewSettingsActionTypes.CHANGE_SORT_ORDER: {\n return changeSortOrder(state, action.payload);\n }\n case ViewSettingsActionTypes.CHANGE_FULLTEXT_SEARCH: {\n return changeFulltextSearch(state, action.payload);\n }\n case ViewSettingsActionTypes.CLEAR_FULLTEXT_SEARCH: {\n return clearFulltextSearch(state);\n }\n case ViewSettingsActionTypes.RESET: {\n return reset(state, action.payload);\n }\n case ViewSettingsActionTypes.SET_SELECTED_KEYS: {\n return setSelectedKeys(state, action.payload);\n }\n case ViewSettingsActionTypes.RESTORE_INITIAL_VIEW_SETTINGS: {\n return restoreInitialViewSettings(state);\n }\n case ViewSettingsActionTypes.UPDATE_VIEWS: {\n return updateViewListAndCurrentView(state, action.payload);\n }\n case ViewSettingsActionTypes.RENAME_VIEW: {\n return renameView(state, action.payload);\n }\n case ViewSettingsActionTypes.DELETE_VIEW: {\n return deleteView(state, action.payload);\n }\n case ViewSettingsActionTypes.LOAD_VIEW: {\n return loadView(state, action.payload);\n }\n case ViewSettingsActionTypes.APPLY_SERIALIZED_VIEW: {\n return applySerializedView(state, action.payload);\n }\n default:\n return state;\n }\n};\n"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type FiltersChangePayload } from './_types';
|
|
2
|
+
/**
|
|
3
|
+
* Notifies the parent when filters change from inside the Explorer (FilterToolBar).
|
|
4
|
+
*
|
|
5
|
+
* Skips the first emission after `isLoading` becomes false: at that moment
|
|
6
|
+
* `filters` reflects the initial view, not a user change. Without this guard,
|
|
7
|
+
* a viewConfig panel listening on `onFiltersChange` would mark the view as
|
|
8
|
+
* `viewModified: true` on mount.
|
|
9
|
+
*/
|
|
10
|
+
export declare const useNotifyFiltersChange: ({ isLoading, filters, filtersOperator, onFiltersChange, }: {
|
|
11
|
+
isLoading: boolean;
|
|
12
|
+
filters: FiltersChangePayload["filters"];
|
|
13
|
+
filtersOperator: FiltersChangePayload["filtersOperator"];
|
|
14
|
+
onFiltersChange: ((payload: FiltersChangePayload) => void) | undefined;
|
|
15
|
+
}) => void;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06
|
|
2
|
+
// This file is released under LGPL V3
|
|
3
|
+
// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt
|
|
4
|
+
import { useEffect, useRef } from 'react';
|
|
5
|
+
/**
|
|
6
|
+
* Notifies the parent when filters change from inside the Explorer (FilterToolBar).
|
|
7
|
+
*
|
|
8
|
+
* Skips the first emission after `isLoading` becomes false: at that moment
|
|
9
|
+
* `filters` reflects the initial view, not a user change. Without this guard,
|
|
10
|
+
* a viewConfig panel listening on `onFiltersChange` would mark the view as
|
|
11
|
+
* `viewModified: true` on mount.
|
|
12
|
+
*/
|
|
13
|
+
export const useNotifyFiltersChange = ({ isLoading, filters, filtersOperator, onFiltersChange, }) => {
|
|
14
|
+
const hasEmittedInitialRef = useRef(false);
|
|
15
|
+
useEffect(() => {
|
|
16
|
+
if (isLoading) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
if (!hasEmittedInitialRef.current) {
|
|
20
|
+
hasEmittedInitialRef.current = true;
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
onFiltersChange?.({ filters, filtersOperator });
|
|
24
|
+
}, [isLoading, filters, filtersOperator, onFiltersChange]);
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=useNotifyFiltersChange.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useNotifyFiltersChange.js","sourceRoot":"","sources":["../../../src/components/Explorer/useNotifyFiltersChange.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAC,SAAS,EAAE,MAAM,EAAC,MAAM,OAAO,CAAC;AAGxC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,EACnC,SAAS,EACT,OAAO,EACP,eAAe,EACf,eAAe,GAMlB,EAAE,EAAE;IACD,MAAM,oBAAoB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAE3C,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,SAAS,EAAE,CAAC;YACZ,OAAO;QACX,CAAC;QACD,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC;YAChC,oBAAoB,CAAC,OAAO,GAAG,IAAI,CAAC;YACpC,OAAO;QACX,CAAC;QACD,eAAe,EAAE,CAAC,EAAC,OAAO,EAAE,eAAe,EAAC,CAAC,CAAC;IAClD,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC,CAAC;AAC/D,CAAC,CAAC","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {useEffect, useRef} from 'react';\nimport {type FiltersChangePayload} from './_types';\n\n/**\n * Notifies the parent when filters change from inside the Explorer (FilterToolBar).\n *\n * Skips the first emission after `isLoading` becomes false: at that moment\n * `filters` reflects the initial view, not a user change. Without this guard,\n * a viewConfig panel listening on `onFiltersChange` would mark the view as\n * `viewModified: true` on mount.\n */\nexport const useNotifyFiltersChange = ({\n isLoading,\n filters,\n filtersOperator,\n onFiltersChange,\n}: {\n isLoading: boolean;\n filters: FiltersChangePayload['filters'];\n filtersOperator: FiltersChangePayload['filtersOperator'];\n onFiltersChange: ((payload: FiltersChangePayload) => void) | undefined;\n}) => {\n const hasEmittedInitialRef = useRef(false);\n\n useEffect(() => {\n if (isLoading) {\n return;\n }\n if (!hasEmittedInitialRef.current) {\n hasEmittedInitialRef.current = true;\n return;\n }\n onFiltersChange?.({filters, filtersOperator});\n }, [isLoading, filters, filtersOperator, onFiltersChange]);\n};\n"]}
|
|
@@ -19,6 +19,12 @@ export interface IUIFilterBaseAttribute {
|
|
|
19
19
|
}
|
|
20
20
|
export interface IUIFilterStandardAttribute extends IUIFilterBaseAttribute {
|
|
21
21
|
format: AttributeFormat;
|
|
22
|
+
smartFilter?: {
|
|
23
|
+
enable?: boolean;
|
|
24
|
+
through?: {
|
|
25
|
+
id: string;
|
|
26
|
+
} | null;
|
|
27
|
+
};
|
|
22
28
|
}
|
|
23
29
|
export interface IUIFilterLinkAttribute extends IUIFilterBaseAttribute {
|
|
24
30
|
linkedLibrary?: {
|
|
@@ -10,6 +10,7 @@ export const isUIFilterStandardWithValueList = (filter) => [AttributeType.simple
|
|
|
10
10
|
export const isUIFilterLinkWithValueList = (filter) => [AttributeType.simple_link, AttributeType.advanced_link].includes(filter.attribute.type) && isValueList(filter);
|
|
11
11
|
export const isUIFilterTree = (filter) => filter.attribute.type === AttributeType.tree;
|
|
12
12
|
export const isUIFilterTreeWithValueList = (filter) => isUIFilterTree(filter) && isValueList(filter);
|
|
13
|
-
export const isUIFilterWithSmartFilter = (filter) => (isUIFilterLink(filter) || isUIFilterThrough(filter)) &&
|
|
13
|
+
export const isUIFilterWithSmartFilter = (filter) => (isUIFilterStandard(filter) || isUIFilterLink(filter) || isUIFilterThrough(filter)) &&
|
|
14
|
+
filter.attribute.smartFilter?.enable;
|
|
14
15
|
const isValueList = (filter) => !!filter.attribute?.valuesList && filter.attribute?.valuesList.enable;
|
|
15
16
|
//# sourceMappingURL=_types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_types.js","sourceRoot":"","sources":["../../../src/components/Filters/_types.ts"],"names":[],"mappings":"AAIA,OAAO,EAEH,aAAa,GAKhB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAC,sBAAsB,EAAC,MAAM,kBAAkB,CAAC;AA8IxD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAAgB,EAA+B,EAAE,CAChF,CAAC,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAEnF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAgB,EAA2B,EAAE,CACxE,CAAC,aAAa,CAAC,WAAW,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;IACxF,MAAM,CAAC,SAAS,KAAK,sBAAsB,CAAC,OAAO,CAAC;AAExD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAgB,EAA8B,EAAE,CAC9E,CAAC,aAAa,CAAC,WAAW,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;IACxF,MAAM,CAAC,SAAS,KAAK,sBAAsB,CAAC,OAAO,CAAC;AAExD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,MAAgB,EAAgC,EAAE,CAClF,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,MAAM,CAAC,IAAI,yBAAyB,CAAC,MAAM,CAAC,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;AAEvH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,MAAgB,EAAwC,EAAE,CACtG,CAAC,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;AAE1G,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,MAAgB,EAAoC,EAAE,CAC9F,CAAC,aAAa,CAAC,WAAW,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;AAEpH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAgB,EAA2B,EAAE,CACxE,MAAM,CAAC,SAAS,CAAC,IAAI,KAAK,aAAa,CAAC,IAAI,CAAC;AAEjD,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,MAAgB,EAAoC,EAAE,CAC9F,cAAc,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;AAElD,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,MAAgB,EAAiC,EAAE,CACzF,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC;AAElG,MAAM,WAAW,GAAG,CAAC,MAAgB,EAAmE,EAAE,CACtG,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,IAAI,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {type Override} from '@leav/utils';\nimport {\n type AttributeFormat,\n AttributeType,\n type LinkAttributeDetailsFragment,\n type RecordFilterCondition,\n type StandardAttributeDetailsFragment,\n type ViewDetailsFilterFragment,\n} from '_ui/_gqlTypes';\nimport {ThroughConditionFilter} from '_ui/types/search';\n\nexport type FiltersOperator = 'AND' | 'OR';\n\nexport interface IUIFilterBaseAttribute {\n type: AttributeType;\n /**\n * Used to display the label of the filter.\n *\n * > Not displayed when filter is hidden\n */\n label: string;\n /**\n * Used to verify unicity: one filter per attribute\n */\n id: string;\n format?: AttributeFormat | null | undefined;\n valuesList?:\n | NonNullable<StandardAttributeDetailsFragment['valuesList']>\n | NonNullable<LinkAttributeDetailsFragment['valuesList']>;\n}\n\nexport interface IUIFilterStandardAttribute extends IUIFilterBaseAttribute {\n format: AttributeFormat;\n}\n\nexport interface IUIFilterLinkAttribute extends IUIFilterBaseAttribute {\n linkedLibrary?: {\n id: string;\n };\n smartFilter?: {\n enable?: boolean;\n through?: {\n id: string;\n } | null;\n };\n}\n\nexport interface IUIFilterTreeAttribute extends IUIFilterBaseAttribute {\n linkedTree?: {\n id: string;\n };\n}\n\ninterface IUIFilterBase {\n id: string;\n attribute: IUIFilterBaseAttribute;\n condition: RecordFilterCondition | ThroughConditionFilter | null;\n /**\n * Used to build filter field.\n *\n * - ex: `campaigns_id_pac`\n * - ex with **subField**: `campaigns_id_pac.id`\n */\n field: any;\n value: string | null;\n formattedValue?: string | null;\n hidden?: boolean | undefined;\n withEmptyValues?: boolean;\n}\n\nexport interface IUIFilterStandard extends Omit<IUIFilterBase, 'field'> {\n attribute: IUIFilterStandardAttribute;\n condition: RecordFilterCondition | null;\n field: string;\n}\n\nexport interface IUIFilterLink extends Omit<IUIFilterBase, 'field'> {\n attribute: IUIFilterLinkAttribute;\n condition: RecordFilterCondition | null;\n field: string;\n}\n\nexport interface IUIFilterThrough extends Omit<IUIFilterBase, 'field'> {\n attribute: IUIFilterLinkAttribute;\n condition: ThroughConditionFilter.THROUGH | null;\n subCondition: RecordFilterCondition | null;\n subField: string | null;\n field: string;\n}\n\nexport interface IUIFilterTree extends Omit<IUIFilterBase, 'value' | 'formattedValue' | 'field'> {\n attribute: IUIFilterTreeAttribute;\n condition: RecordFilterCondition | null;\n value: string[] | null;\n formattedValue?: string[] | null;\n nodes?: null | Array<{nodeId: string; libraryId: string}>;\n field: string[];\n includeHiddenOptions?: boolean;\n /** Nodes explicitly selected by the user. Null/undefined = no user selection (use initial filter). */\n userNodes?: null | Array<{nodeId: string; libraryId: string}>;\n /** Labels for user-selected nodes (used for display in CommonFilterItem). */\n userFormattedValue?: string[] | null;\n}\n\nexport interface IUIFilterSmartFiler extends Omit<IUIFilterBase, 'value' | 'formattedValue'> {\n attribute: IUIFilterLinkAttribute;\n value: string[] | null;\n formattedValue?: string[] | null;\n condition: RecordFilterCondition | null;\n field: string;\n}\n\nexport interface IUIFilterValueList extends Omit<IUIFilterBase, 'value' | 'formattedValue'> {\n attribute: (IUIFilterStandardAttribute | IUIFilterLinkAttribute) & {\n valuesList:\n | NonNullable<StandardAttributeDetailsFragment['valuesList']>\n | NonNullable<LinkAttributeDetailsFragment['valuesList']>;\n };\n value: string[] | null;\n condition: RecordFilterCondition | null;\n field: string | string[];\n}\n\nexport interface IUIFilterStandardValueList extends Omit<IUIFilterStandard, 'attribute' | 'value'>, IUIFilterValueList {\n attribute: IUIFilterStandardAttribute & {\n valuesList: NonNullable<StandardAttributeDetailsFragment['valuesList']>;\n };\n field: string;\n}\n\nexport interface IUIFilterLinkValueList extends Omit<IUIFilterLink, 'attribute' | 'value'>, IUIFilterValueList {\n attribute: IUIFilterLinkAttribute & {\n valuesList: NonNullable<LinkAttributeDetailsFragment['valuesList']>;\n };\n field: string;\n}\nexport interface IUIFilterTreeValueList extends Omit<IUIFilterTree, 'attribute' | 'value'>, IUIFilterValueList {\n attribute: IUIFilterLinkAttribute & {\n valuesList: NonNullable<LinkAttributeDetailsFragment['valuesList']>;\n };\n field: string[];\n}\n\nexport type UIFilter =\n | IUIFilterStandard\n | IUIFilterLink\n | IUIFilterThrough\n | IUIFilterValueList\n | IUIFilterTree\n | IUIFilterSmartFiler;\n\nexport const isUIFilterStandard = (filter: UIFilter): filter is IUIFilterStandard =>\n [AttributeType.simple, AttributeType.advanced].includes(filter.attribute.type);\n\nexport const isUIFilterLink = (filter: UIFilter): filter is IUIFilterLink =>\n [AttributeType.simple_link, AttributeType.advanced_link].includes(filter.attribute.type) &&\n filter.condition !== ThroughConditionFilter.THROUGH;\n\nexport const isUIFilterThrough = (filter: UIFilter): filter is IUIFilterThrough =>\n [AttributeType.simple_link, AttributeType.advanced_link].includes(filter.attribute.type) &&\n filter.condition === ThroughConditionFilter.THROUGH;\n\nexport const isUIFilterValueList = (filter: UIFilter): filter is IUIFilterValueList =>\n (isUIFilterStandard(filter) || isUIFilterLink(filter) || isUIFilterWithSmartFilter(filter)) && isValueList(filter);\n\nexport const isUIFilterStandardWithValueList = (filter: UIFilter): filter is IUIFilterStandardValueList =>\n [AttributeType.simple, AttributeType.advanced].includes(filter.attribute.type) && isValueList(filter);\n\nexport const isUIFilterLinkWithValueList = (filter: UIFilter): filter is IUIFilterLinkValueList =>\n [AttributeType.simple_link, AttributeType.advanced_link].includes(filter.attribute.type) && isValueList(filter);\n\nexport const isUIFilterTree = (filter: UIFilter): filter is IUIFilterTree =>\n filter.attribute.type === AttributeType.tree;\n\nexport const isUIFilterTreeWithValueList = (filter: UIFilter): filter is IUIFilterTreeValueList =>\n isUIFilterTree(filter) && isValueList(filter);\n\nexport const isUIFilterWithSmartFilter = (filter: UIFilter): filter is IUIFilterSmartFiler =>\n (isUIFilterLink(filter) || isUIFilterThrough(filter)) && filter.attribute.smartFilter?.enable;\n\nconst isValueList = (filter: UIFilter): filter is UIFilter & {attribute: {valuesList: {enabled: true}}} =>\n !!filter.attribute?.valuesList && filter.attribute?.valuesList.enable;\n\nexport interface IUIFilterDropDownProps {\n filter: UIFilter;\n canReset: boolean;\n canRemove: boolean;\n}\n\nexport type ValidFieldFilter = Override<\n ViewDetailsFilterFragment,\n {\n field: NonNullable<ViewDetailsFilterFragment['field']>;\n condition: NonNullable<ViewDetailsFilterFragment['condition']>;\n hidden: boolean;\n withEmptyValues?: boolean;\n }\n>;\n\nexport type ValidFieldFilterStandardValuesList = Override<\n ValidFieldFilter,\n {\n valuesList: StandardAttributeDetailsFragment['valuesList'];\n }\n>;\n\nexport type ValidFieldFilterLinkValuesList = Override<\n ValidFieldFilter,\n {\n valuesList: LinkAttributeDetailsFragment['valuesList'];\n }\n>;\n\nexport type ValidFieldFilterThrough = Override<\n ValidFieldFilter,\n {\n condition: ThroughConditionFilter.THROUGH;\n hidden: boolean;\n }\n> & {\n subField: NonNullable<ViewDetailsFilterFragment['field']>;\n subCondition?: ViewDetailsFilterFragment['condition'];\n};\n\nexport type ValidFilter =\n | ValidFieldFilter\n | ValidFieldFilterThrough\n | ValidFieldFilterStandardValuesList\n | ValidFieldFilterLinkValuesList;\n"]}
|
|
1
|
+
{"version":3,"file":"_types.js","sourceRoot":"","sources":["../../../src/components/Filters/_types.ts"],"names":[],"mappings":"AAIA,OAAO,EAEH,aAAa,GAKhB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAC,sBAAsB,EAAC,MAAM,kBAAkB,CAAC;AAoJxD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAAgB,EAA+B,EAAE,CAChF,CAAC,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAEnF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAgB,EAA2B,EAAE,CACxE,CAAC,aAAa,CAAC,WAAW,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;IACxF,MAAM,CAAC,SAAS,KAAK,sBAAsB,CAAC,OAAO,CAAC;AAExD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAgB,EAA8B,EAAE,CAC9E,CAAC,aAAa,CAAC,WAAW,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;IACxF,MAAM,CAAC,SAAS,KAAK,sBAAsB,CAAC,OAAO,CAAC;AAExD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,MAAgB,EAAgC,EAAE,CAClF,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,MAAM,CAAC,IAAI,yBAAyB,CAAC,MAAM,CAAC,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;AAEvH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,MAAgB,EAAwC,EAAE,CACtG,CAAC,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;AAE1G,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,MAAgB,EAAoC,EAAE,CAC9F,CAAC,aAAa,CAAC,WAAW,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;AAEpH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAgB,EAA2B,EAAE,CACxE,MAAM,CAAC,SAAS,CAAC,IAAI,KAAK,aAAa,CAAC,IAAI,CAAC;AAEjD,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,MAAgB,EAAoC,EAAE,CAC9F,cAAc,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;AAElD,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,MAAgB,EAAiC,EAAE,CACzF,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,MAAM,CAAC,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACnF,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC;AAEzC,MAAM,WAAW,GAAG,CAAC,MAAgB,EAAmE,EAAE,CACtG,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,IAAI,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {type Override} from '@leav/utils';\nimport {\n type AttributeFormat,\n AttributeType,\n type LinkAttributeDetailsFragment,\n type RecordFilterCondition,\n type StandardAttributeDetailsFragment,\n type ViewDetailsFilterFragment,\n} from '_ui/_gqlTypes';\nimport {ThroughConditionFilter} from '_ui/types/search';\n\nexport type FiltersOperator = 'AND' | 'OR';\n\nexport interface IUIFilterBaseAttribute {\n type: AttributeType;\n /**\n * Used to display the label of the filter.\n *\n * > Not displayed when filter is hidden\n */\n label: string;\n /**\n * Used to verify unicity: one filter per attribute\n */\n id: string;\n format?: AttributeFormat | null | undefined;\n valuesList?:\n | NonNullable<StandardAttributeDetailsFragment['valuesList']>\n | NonNullable<LinkAttributeDetailsFragment['valuesList']>;\n}\n\nexport interface IUIFilterStandardAttribute extends IUIFilterBaseAttribute {\n format: AttributeFormat;\n smartFilter?: {\n enable?: boolean;\n through?: {\n id: string;\n } | null;\n };\n}\n\nexport interface IUIFilterLinkAttribute extends IUIFilterBaseAttribute {\n linkedLibrary?: {\n id: string;\n };\n smartFilter?: {\n enable?: boolean;\n through?: {\n id: string;\n } | null;\n };\n}\n\nexport interface IUIFilterTreeAttribute extends IUIFilterBaseAttribute {\n linkedTree?: {\n id: string;\n };\n}\n\ninterface IUIFilterBase {\n id: string;\n attribute: IUIFilterBaseAttribute;\n condition: RecordFilterCondition | ThroughConditionFilter | null;\n /**\n * Used to build filter field.\n *\n * - ex: `campaigns_id_pac`\n * - ex with **subField**: `campaigns_id_pac.id`\n */\n field: any;\n value: string | null;\n formattedValue?: string | null;\n hidden?: boolean | undefined;\n withEmptyValues?: boolean;\n}\n\nexport interface IUIFilterStandard extends Omit<IUIFilterBase, 'field'> {\n attribute: IUIFilterStandardAttribute;\n condition: RecordFilterCondition | null;\n field: string;\n}\n\nexport interface IUIFilterLink extends Omit<IUIFilterBase, 'field'> {\n attribute: IUIFilterLinkAttribute;\n condition: RecordFilterCondition | null;\n field: string;\n}\n\nexport interface IUIFilterThrough extends Omit<IUIFilterBase, 'field'> {\n attribute: IUIFilterLinkAttribute;\n condition: ThroughConditionFilter.THROUGH | null;\n subCondition: RecordFilterCondition | null;\n subField: string | null;\n field: string;\n}\n\nexport interface IUIFilterTree extends Omit<IUIFilterBase, 'value' | 'formattedValue' | 'field'> {\n attribute: IUIFilterTreeAttribute;\n condition: RecordFilterCondition | null;\n value: string[] | null;\n formattedValue?: string[] | null;\n nodes?: null | Array<{nodeId: string; libraryId: string}>;\n field: string[];\n includeHiddenOptions?: boolean;\n /** Nodes explicitly selected by the user. Null/undefined = no user selection (use initial filter). */\n userNodes?: null | Array<{nodeId: string; libraryId: string}>;\n /** Labels for user-selected nodes (used for display in CommonFilterItem). */\n userFormattedValue?: string[] | null;\n}\n\nexport interface IUIFilterSmartFiler extends Omit<IUIFilterBase, 'value' | 'formattedValue'> {\n attribute: IUIFilterLinkAttribute;\n value: string[] | null;\n formattedValue?: string[] | null;\n condition: RecordFilterCondition | null;\n field: string;\n}\n\nexport interface IUIFilterValueList extends Omit<IUIFilterBase, 'value' | 'formattedValue'> {\n attribute: (IUIFilterStandardAttribute | IUIFilterLinkAttribute) & {\n valuesList:\n | NonNullable<StandardAttributeDetailsFragment['valuesList']>\n | NonNullable<LinkAttributeDetailsFragment['valuesList']>;\n };\n value: string[] | null;\n condition: RecordFilterCondition | null;\n field: string | string[];\n}\n\nexport interface IUIFilterStandardValueList extends Omit<IUIFilterStandard, 'attribute' | 'value'>, IUIFilterValueList {\n attribute: IUIFilterStandardAttribute & {\n valuesList: NonNullable<StandardAttributeDetailsFragment['valuesList']>;\n };\n field: string;\n}\n\nexport interface IUIFilterLinkValueList extends Omit<IUIFilterLink, 'attribute' | 'value'>, IUIFilterValueList {\n attribute: IUIFilterLinkAttribute & {\n valuesList: NonNullable<LinkAttributeDetailsFragment['valuesList']>;\n };\n field: string;\n}\nexport interface IUIFilterTreeValueList extends Omit<IUIFilterTree, 'attribute' | 'value'>, IUIFilterValueList {\n attribute: IUIFilterLinkAttribute & {\n valuesList: NonNullable<LinkAttributeDetailsFragment['valuesList']>;\n };\n field: string[];\n}\n\nexport type UIFilter =\n | IUIFilterStandard\n | IUIFilterLink\n | IUIFilterThrough\n | IUIFilterValueList\n | IUIFilterTree\n | IUIFilterSmartFiler;\n\nexport const isUIFilterStandard = (filter: UIFilter): filter is IUIFilterStandard =>\n [AttributeType.simple, AttributeType.advanced].includes(filter.attribute.type);\n\nexport const isUIFilterLink = (filter: UIFilter): filter is IUIFilterLink =>\n [AttributeType.simple_link, AttributeType.advanced_link].includes(filter.attribute.type) &&\n filter.condition !== ThroughConditionFilter.THROUGH;\n\nexport const isUIFilterThrough = (filter: UIFilter): filter is IUIFilterThrough =>\n [AttributeType.simple_link, AttributeType.advanced_link].includes(filter.attribute.type) &&\n filter.condition === ThroughConditionFilter.THROUGH;\n\nexport const isUIFilterValueList = (filter: UIFilter): filter is IUIFilterValueList =>\n (isUIFilterStandard(filter) || isUIFilterLink(filter) || isUIFilterWithSmartFilter(filter)) && isValueList(filter);\n\nexport const isUIFilterStandardWithValueList = (filter: UIFilter): filter is IUIFilterStandardValueList =>\n [AttributeType.simple, AttributeType.advanced].includes(filter.attribute.type) && isValueList(filter);\n\nexport const isUIFilterLinkWithValueList = (filter: UIFilter): filter is IUIFilterLinkValueList =>\n [AttributeType.simple_link, AttributeType.advanced_link].includes(filter.attribute.type) && isValueList(filter);\n\nexport const isUIFilterTree = (filter: UIFilter): filter is IUIFilterTree =>\n filter.attribute.type === AttributeType.tree;\n\nexport const isUIFilterTreeWithValueList = (filter: UIFilter): filter is IUIFilterTreeValueList =>\n isUIFilterTree(filter) && isValueList(filter);\n\nexport const isUIFilterWithSmartFilter = (filter: UIFilter): filter is IUIFilterSmartFiler =>\n (isUIFilterStandard(filter) || isUIFilterLink(filter) || isUIFilterThrough(filter)) &&\n filter.attribute.smartFilter?.enable;\n\nconst isValueList = (filter: UIFilter): filter is UIFilter & {attribute: {valuesList: {enabled: true}}} =>\n !!filter.attribute?.valuesList && filter.attribute?.valuesList.enable;\n\nexport interface IUIFilterDropDownProps {\n filter: UIFilter;\n canReset: boolean;\n canRemove: boolean;\n}\n\nexport type ValidFieldFilter = Override<\n ViewDetailsFilterFragment,\n {\n field: NonNullable<ViewDetailsFilterFragment['field']>;\n condition: NonNullable<ViewDetailsFilterFragment['condition']>;\n hidden: boolean;\n withEmptyValues?: boolean;\n }\n>;\n\nexport type ValidFieldFilterStandardValuesList = Override<\n ValidFieldFilter,\n {\n valuesList: StandardAttributeDetailsFragment['valuesList'];\n }\n>;\n\nexport type ValidFieldFilterLinkValuesList = Override<\n ValidFieldFilter,\n {\n valuesList: LinkAttributeDetailsFragment['valuesList'];\n }\n>;\n\nexport type ValidFieldFilterThrough = Override<\n ValidFieldFilter,\n {\n condition: ThroughConditionFilter.THROUGH;\n hidden: boolean;\n }\n> & {\n subField: NonNullable<ViewDetailsFilterFragment['field']>;\n subCondition?: ViewDetailsFilterFragment['condition'];\n};\n\nexport type ValidFilter =\n | ValidFieldFilter\n | ValidFieldFilterThrough\n | ValidFieldFilterStandardValuesList\n | ValidFieldFilterLinkValuesList;\n"]}
|
|
@@ -3,6 +3,8 @@ import { type AttributesById } from '../useTransformFilters';
|
|
|
3
3
|
export type ViewType = 'table' | 'list' | 'timeline' | 'mosaic';
|
|
4
4
|
export declare const FiltersActionTypes: {
|
|
5
5
|
readonly ADD_FILTER: "ADD_FILTER";
|
|
6
|
+
readonly SET_FILTERS: "SET_FILTERS";
|
|
7
|
+
readonly SET_FILTERS_AND_OPERATOR: "SET_FILTERS_AND_OPERATOR";
|
|
6
8
|
readonly RESET_FILTER: "RESET_FILTER";
|
|
7
9
|
readonly REMOVE_FILTER: "REMOVE_FILTER";
|
|
8
10
|
readonly MOVE_FILTER: "MOVE_FILTER";
|
|
@@ -25,6 +27,17 @@ interface IUIFiltersActionAddFilter {
|
|
|
25
27
|
type: typeof FiltersActionTypes.ADD_FILTER;
|
|
26
28
|
payload: Omit<UIFilter, 'id' | 'value' | 'condition'>;
|
|
27
29
|
}
|
|
30
|
+
interface IUIFiltersActionSetFilters {
|
|
31
|
+
type: typeof FiltersActionTypes.SET_FILTERS;
|
|
32
|
+
payload: UIFilter[];
|
|
33
|
+
}
|
|
34
|
+
interface IUIFiltersActionSetFiltersAndOperator {
|
|
35
|
+
type: typeof FiltersActionTypes.SET_FILTERS_AND_OPERATOR;
|
|
36
|
+
payload: {
|
|
37
|
+
filters: UIFilter[];
|
|
38
|
+
filtersOperator: FiltersOperator;
|
|
39
|
+
};
|
|
40
|
+
}
|
|
28
41
|
interface IIUIFiltersActionResetFilter {
|
|
29
42
|
type: typeof FiltersActionTypes.RESET_FILTER;
|
|
30
43
|
payload: Pick<UIFilter, 'id'>;
|
|
@@ -59,6 +72,6 @@ interface IUIFiltersActionUpdateViewListAndCurrentView {
|
|
|
59
72
|
type: typeof FiltersActionTypes.UPDATE_VIEWS;
|
|
60
73
|
payload: IUIFiltersState;
|
|
61
74
|
}
|
|
62
|
-
export type UIFiltersAction = IUIFiltersActionAddFilter | IIUIFiltersActionResetFilter | IUIFiltersActionRemoveFilter | IUIFiltersActionChangeFilterConfig | IUIFiltersActionMoveFilter | IUIFiltersActionReset | IUIFiltersActionLoadView | IUIFiltersActionRestoreInitialViewSettings | IUIFiltersActionUpdateViewListAndCurrentView;
|
|
75
|
+
export type UIFiltersAction = IUIFiltersActionAddFilter | IUIFiltersActionSetFilters | IUIFiltersActionSetFiltersAndOperator | IIUIFiltersActionResetFilter | IUIFiltersActionRemoveFilter | IUIFiltersActionChangeFilterConfig | IUIFiltersActionMoveFilter | IUIFiltersActionReset | IUIFiltersActionLoadView | IUIFiltersActionRestoreInitialViewSettings | IUIFiltersActionUpdateViewListAndCurrentView;
|
|
63
76
|
export declare const filtersReducer: (setRefetchViews: any) => (state: IUIFiltersState, action: UIFiltersAction) => IUIFiltersState;
|
|
64
77
|
export {};
|
|
@@ -9,6 +9,8 @@ import { AttributeConditionFilter, ThroughConditionFilter } from '../../../types
|
|
|
9
9
|
import { isLinkAttribute } from '../../../_utils/attributeType';
|
|
10
10
|
export const FiltersActionTypes = {
|
|
11
11
|
ADD_FILTER: 'ADD_FILTER',
|
|
12
|
+
SET_FILTERS: 'SET_FILTERS',
|
|
13
|
+
SET_FILTERS_AND_OPERATOR: 'SET_FILTERS_AND_OPERATOR',
|
|
12
14
|
RESET_FILTER: 'RESET_FILTER',
|
|
13
15
|
REMOVE_FILTER: 'REMOVE_FILTER',
|
|
14
16
|
MOVE_FILTER: 'MOVE_FILTER',
|
|
@@ -72,9 +74,17 @@ const addFilter = (state, payload) => {
|
|
|
72
74
|
return {
|
|
73
75
|
...state,
|
|
74
76
|
filters: [...state.filters, filterToAdd],
|
|
75
|
-
viewModified: true,
|
|
76
77
|
};
|
|
77
78
|
};
|
|
79
|
+
const setFilters = (state, payload) => ({
|
|
80
|
+
...state,
|
|
81
|
+
filters: payload,
|
|
82
|
+
});
|
|
83
|
+
const setFiltersAndOperator = (state, payload) => ({
|
|
84
|
+
...state,
|
|
85
|
+
filters: payload.filters,
|
|
86
|
+
filtersOperator: payload.filtersOperator,
|
|
87
|
+
});
|
|
78
88
|
const resetFilter = (state, payload) => ({
|
|
79
89
|
...state,
|
|
80
90
|
filters: state.filters.map(filter => {
|
|
@@ -134,7 +144,6 @@ const resetFilter = (state, payload) => ({
|
|
|
134
144
|
const removeFilter = (state, payload) => ({
|
|
135
145
|
...state,
|
|
136
146
|
filters: state.filters.filter(({ id }) => id !== payload.id),
|
|
137
|
-
viewModified: true,
|
|
138
147
|
});
|
|
139
148
|
const changeFilterConfig = (state, payload) => ({
|
|
140
149
|
...state,
|
|
@@ -164,7 +173,6 @@ const changeFilterConfig = (state, payload) => ({
|
|
|
164
173
|
}
|
|
165
174
|
return { ...filter, ...payload };
|
|
166
175
|
}),
|
|
167
|
-
viewModified: true,
|
|
168
176
|
});
|
|
169
177
|
const moveFilter = (state, payload) => {
|
|
170
178
|
const attributesUsedToFilter = [...state.filters];
|
|
@@ -173,7 +181,6 @@ const moveFilter = (state, payload) => {
|
|
|
173
181
|
return {
|
|
174
182
|
...state,
|
|
175
183
|
filters: attributesUsedToFilter,
|
|
176
|
-
viewModified: true,
|
|
177
184
|
};
|
|
178
185
|
};
|
|
179
186
|
const reset = (_, payload) => payload;
|
|
@@ -191,6 +198,12 @@ export const filtersReducer = setRefetchViews => (state, action) => {
|
|
|
191
198
|
case FiltersActionTypes.ADD_FILTER: {
|
|
192
199
|
return addFilter(state, action.payload);
|
|
193
200
|
}
|
|
201
|
+
case FiltersActionTypes.SET_FILTERS: {
|
|
202
|
+
return setFilters(state, action.payload);
|
|
203
|
+
}
|
|
204
|
+
case FiltersActionTypes.SET_FILTERS_AND_OPERATOR: {
|
|
205
|
+
return setFiltersAndOperator(state, action.payload);
|
|
206
|
+
}
|
|
194
207
|
case FiltersActionTypes.RESET_FILTER: {
|
|
195
208
|
return resetFilter(state, action.payload);
|
|
196
209
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filtersReducer.js","sourceRoot":"","sources":["../../../../src/components/Filters/context/filtersReducer.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {AttributeFormat, type RecordFilterCondition} from '_ui/_gqlTypes';\nimport {\n type UIFilter,\n type IUIFilterStandard,\n type IUIFilterTree,\n isUIFilterLink,\n isUIFilterStandard,\n isUIFilterThrough,\n isUIFilterTree,\n isUIFilterValueList,\n isUIFilterWithSmartFilter,\n type FiltersOperator,\n type IUIFilterLinkAttribute,\n type IUIFilterThrough,\n} from '../_types';\nimport {hasOnlyNoValueConditions, nullValueConditions} from '../conditionsHelper';\nimport {conditionsByFormat, getFirstConditionByFilterType} from '../filter-items/filter-type/useConditionOptionsByType';\nimport {AttributeConditionFilter, ThroughConditionFilter} from '_ui/types';\nimport {isLinkAttribute} from '_ui/_utils/attributeType';\nimport {type AttributesById} from '../useTransformFilters';\n\nexport type ViewType = 'table' | 'list' | 'timeline' | 'mosaic';\n\nexport const FiltersActionTypes = {\n ADD_FILTER: 'ADD_FILTER',\n RESET_FILTER: 'RESET_FILTER',\n REMOVE_FILTER: 'REMOVE_FILTER',\n MOVE_FILTER: 'MOVE_FILTER',\n CHANGE_FILTER_CONFIG: 'CHANGE_FILTER_CONFIG',\n LOAD_VIEW: 'LOAD_VIEW',\n RESET: 'RESET',\n RESTORE_INITIAL_VIEW_SETTINGS: 'RESTORE_INITIAL_VIEW_SETTINGS',\n UPDATE_VIEWS: 'UPDATE_VIEWS',\n} as const;\n\nexport interface IUIFiltersState {\n libraryId: string;\n viewId: string | null;\n filtersOperator: FiltersOperator;\n filters: UIFilter[] | IUIFilterTree[];\n initialFilters: UIFilter[] | IUIFilterTree[];\n attributesDataById: AttributesById;\n loading: boolean;\n}\n\ninterface IUIFiltersActionAddFilter {\n type: typeof FiltersActionTypes.ADD_FILTER;\n payload: Omit<UIFilter, 'id' | 'value' | 'condition'>;\n}\n\ninterface IIUIFiltersActionResetFilter {\n type: typeof FiltersActionTypes.RESET_FILTER;\n payload: Pick<UIFilter, 'id'>;\n}\n\ninterface IUIFiltersActionRemoveFilter {\n type: typeof FiltersActionTypes.REMOVE_FILTER;\n payload: Pick<UIFilter, 'id'>;\n}\n\ninterface IUIFiltersActionChangeFilterConfig {\n type: typeof FiltersActionTypes.CHANGE_FILTER_CONFIG;\n payload: UIFilter | IUIFilterTree;\n}\n\ninterface IUIFiltersActionMoveFilter {\n type: typeof FiltersActionTypes.MOVE_FILTER;\n payload: {\n indexFrom: number;\n indexTo: number;\n };\n}\n\ninterface IUIFiltersActionReset {\n type: typeof FiltersActionTypes.RESET;\n payload: IUIFiltersState;\n}\n\ninterface IUIFiltersActionLoadView {\n type: typeof FiltersActionTypes.LOAD_VIEW;\n payload: Pick<IUIFiltersState, 'filters' | 'viewId' | 'attributesDataById'>;\n}\n\ninterface IUIFiltersActionRestoreInitialViewSettings {\n type: typeof FiltersActionTypes.RESTORE_INITIAL_VIEW_SETTINGS;\n}\n\ninterface IUIFiltersActionUpdateViewListAndCurrentView {\n type: typeof FiltersActionTypes.UPDATE_VIEWS;\n payload: IUIFiltersState;\n}\n\ntype Reducer<\n PAYLOAD extends {\n type: keyof typeof FiltersActionTypes;\n payload?: unknown;\n } = {type: any; payload: 'no_payload'},\n> = PAYLOAD['payload'] extends 'no_payload'\n ? (state: IUIFiltersState) => IUIFiltersState\n : (state: IUIFiltersState, payload: PAYLOAD['payload']) => IUIFiltersState;\n\nexport type UIFiltersAction =\n | IUIFiltersActionAddFilter\n | IIUIFiltersActionResetFilter\n | IUIFiltersActionRemoveFilter\n | IUIFiltersActionChangeFilterConfig\n | IUIFiltersActionMoveFilter\n | IUIFiltersActionReset\n | IUIFiltersActionLoadView\n | IUIFiltersActionRestoreInitialViewSettings\n | IUIFiltersActionUpdateViewListAndCurrentView;\n\nconst addFilter: Reducer<IUIFiltersActionAddFilter> = (state, payload) => {\n const hasValueList = payload.attribute.valuesList?.enable;\n const isSmartFilter = isUIFilterWithSmartFilter(payload as UIFilter);\n let condition: RecordFilterCondition | null = hasOnlyNoValueConditions(\n (payload as IUIFilterStandard).attribute.format,\n )\n ? null\n : (conditionsByFormat[(payload as IUIFilterStandard).attribute.format][0] ?? null);\n if (hasValueList || isSmartFilter) {\n condition = AttributeConditionFilter.EQUAL;\n }\n\n let filterToAdd;\n if (isSmartFilter && (payload.attribute as IUIFilterLinkAttribute).smartFilter.through) {\n if ((payload.attribute as IUIFilterLinkAttribute).smartFilter.through) {\n filterToAdd = {\n ...payload,\n field: payload.field as string,\n id: window.crypto.randomUUID(),\n condition: ThroughConditionFilter.THROUGH,\n subCondition: AttributeConditionFilter.EQUAL,\n subField: `${(payload.attribute as IUIFilterLinkAttribute).smartFilter.through.id}.id`,\n value: null,\n } satisfies IUIFilterThrough;\n }\n } else if (isUIFilterTree(payload as UIFilter)) {\n const filterWithDefaultValues = state.initialFilters.find(\n initialFilter => initialFilter.attribute.id === payload.attribute.id,\n );\n if (filterWithDefaultValues !== undefined) {\n // TODO : include IS_EMPTY to permissions\n filterToAdd = {...filterWithDefaultValues, withEmptyValues: true};\n } else {\n filterToAdd = {\n ...payload,\n id: window.crypto.randomUUID(),\n field: Array.isArray(payload.field) ? payload.field : [payload.field],\n condition: hasOnlyNoValueConditions((payload as IUIFilterStandard).attribute.format)\n ? null\n : (getFirstConditionByFilterType(payload as UIFilter) as RecordFilterCondition[])[0],\n value: null,\n };\n }\n } else {\n filterToAdd = {\n ...payload,\n field: isLinkAttribute(payload.attribute.type) ? `${payload.field}.id` : (payload.field as string),\n id: window.crypto.randomUUID(),\n condition,\n value: null,\n valuesList: hasValueList ? payload.attribute.valuesList : undefined,\n };\n }\n\n return {\n ...state,\n filters: [...state.filters, filterToAdd],\n viewModified: true,\n };\n};\n\nconst resetFilter: Reducer<IIUIFiltersActionResetFilter> = (state, payload) => ({\n ...state,\n filters: state.filters.map(filter => {\n if (filter.id === payload.id) {\n const initialFilter = state.initialFilters.find(({id}) => id === payload.id);\n if (initialFilter) {\n return initialFilter;\n }\n\n if (isUIFilterValueList(filter)) {\n return {\n ...filter,\n condition: null,\n value: null,\n };\n }\n\n if (isUIFilterStandard(filter)) {\n return {\n ...filter,\n condition: hasOnlyNoValueConditions(filter.attribute.format)\n ? null\n : conditionsByFormat[filter.attribute.format][0],\n value: null,\n formattedValue: null,\n };\n }\n\n if (isUIFilterThrough(filter)) {\n return {\n ...filter,\n condition: ThroughConditionFilter.THROUGH,\n value: null,\n formattedValue: null,\n };\n }\n\n if (isUIFilterLink(filter)) {\n return {\n ...filter,\n condition: conditionsByFormat[AttributeFormat.text][0],\n value: null,\n formattedValue: null,\n };\n }\n\n if (isUIFilterTree(filter)) {\n return {\n ...filter,\n condition: null,\n value: null,\n nodes: null,\n userNodes: null,\n userFormattedValue: null,\n includeHiddenOptions: false,\n };\n }\n }\n return filter;\n }),\n});\n\nconst removeFilter: Reducer<IUIFiltersActionRemoveFilter> = (state, payload) => ({\n ...state,\n filters: state.filters.filter(({id}) => id !== payload.id),\n viewModified: true,\n});\n\nconst changeFilterConfig: Reducer<IUIFiltersActionChangeFilterConfig> = (state, payload) => ({\n ...state,\n filters: state.filters.map(filter => {\n if (filter.id !== payload.id) {\n return filter;\n }\n if (isUIFilterTree(filter)) {\n const treePayload = payload as IUIFilterTree;\n // Convert empty user selection to null (deselecting all → no user selection)\n // Restore initial value/nodes so the filter keeps its viewByDefault values\n if (Array.isArray(treePayload.value) && treePayload.value.length === 0) {\n const initialFilter = state.initialFilters.find(({id}) => id === filter.id) as\n | IUIFilterTree\n | undefined;\n return {\n ...filter,\n ...payload,\n value: initialFilter?.value ?? null,\n nodes: initialFilter?.nodes ?? null,\n userNodes: null,\n userFormattedValue: null,\n };\n }\n return {...filter, ...payload};\n }\n if (isUIFilterValueList(filter) && filter.condition && nullValueConditions.includes(filter.condition)) {\n return {...filter, ...payload, value: null};\n }\n return {...filter, ...payload};\n }),\n viewModified: true,\n});\n\nconst moveFilter: Reducer<IUIFiltersActionMoveFilter> = (state, payload) => {\n const attributesUsedToFilter = [...state.filters];\n const [filterToMove] = attributesUsedToFilter.splice(payload.indexFrom, 1);\n attributesUsedToFilter.splice(payload.indexTo, 0, filterToMove);\n return {\n ...state,\n filters: attributesUsedToFilter,\n viewModified: true,\n };\n};\n\nconst reset: Reducer<IUIFiltersActionReset> = (_, payload) => payload;\n\nconst loadView: Reducer<IUIFiltersActionLoadView> = (state, payload) => ({\n ...state,\n ...payload,\n initialFilters: payload.filters,\n});\n\nconst restoreInitialViewSettings: Reducer = state => ({\n ...state,\n filters: state.initialFilters,\n});\n\nexport const filtersReducer =\n setRefetchViews =>\n (state: IUIFiltersState, action: UIFiltersAction): IUIFiltersState => {\n switch (action.type) {\n case FiltersActionTypes.ADD_FILTER: {\n return addFilter(state, action.payload);\n }\n case FiltersActionTypes.RESET_FILTER: {\n return resetFilter(state, action.payload);\n }\n case FiltersActionTypes.REMOVE_FILTER: {\n return removeFilter(state, action.payload);\n }\n case FiltersActionTypes.CHANGE_FILTER_CONFIG: {\n return changeFilterConfig(state, action.payload);\n }\n case FiltersActionTypes.MOVE_FILTER: {\n return moveFilter(state, action.payload);\n }\n case FiltersActionTypes.RESET: {\n return reset(state, action.payload);\n }\n case FiltersActionTypes.LOAD_VIEW: {\n return loadView(state, action.payload);\n }\n case FiltersActionTypes.RESTORE_INITIAL_VIEW_SETTINGS: {\n return restoreInitialViewSettings(state);\n }\n case FiltersActionTypes.UPDATE_VIEWS: {\n setRefetchViews?.(true);\n return state;\n }\n default:\n return state;\n }\n };\n"]}
|
|
1
|
+
{"version":3,"file":"filtersReducer.js","sourceRoot":"","sources":["../../../../src/components/Filters/context/filtersReducer.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {AttributeFormat, type RecordFilterCondition} from '_ui/_gqlTypes';\nimport {\n type UIFilter,\n type IUIFilterStandard,\n type IUIFilterTree,\n isUIFilterLink,\n isUIFilterStandard,\n isUIFilterThrough,\n isUIFilterTree,\n isUIFilterValueList,\n isUIFilterWithSmartFilter,\n type FiltersOperator,\n type IUIFilterLinkAttribute,\n type IUIFilterThrough,\n} from '../_types';\nimport {hasOnlyNoValueConditions, nullValueConditions} from '../conditionsHelper';\nimport {conditionsByFormat, getFirstConditionByFilterType} from '../filter-items/filter-type/useConditionOptionsByType';\nimport {AttributeConditionFilter, ThroughConditionFilter} from '_ui/types';\nimport {isLinkAttribute} from '_ui/_utils/attributeType';\nimport {type AttributesById} from '../useTransformFilters';\n\nexport type ViewType = 'table' | 'list' | 'timeline' | 'mosaic';\n\nexport const FiltersActionTypes = {\n ADD_FILTER: 'ADD_FILTER',\n SET_FILTERS: 'SET_FILTERS',\n SET_FILTERS_AND_OPERATOR: 'SET_FILTERS_AND_OPERATOR',\n RESET_FILTER: 'RESET_FILTER',\n REMOVE_FILTER: 'REMOVE_FILTER',\n MOVE_FILTER: 'MOVE_FILTER',\n CHANGE_FILTER_CONFIG: 'CHANGE_FILTER_CONFIG',\n LOAD_VIEW: 'LOAD_VIEW',\n RESET: 'RESET',\n RESTORE_INITIAL_VIEW_SETTINGS: 'RESTORE_INITIAL_VIEW_SETTINGS',\n UPDATE_VIEWS: 'UPDATE_VIEWS',\n} as const;\n\nexport interface IUIFiltersState {\n libraryId: string;\n viewId: string | null;\n filtersOperator: FiltersOperator;\n filters: UIFilter[] | IUIFilterTree[];\n initialFilters: UIFilter[] | IUIFilterTree[];\n attributesDataById: AttributesById;\n loading: boolean;\n}\n\ninterface IUIFiltersActionAddFilter {\n type: typeof FiltersActionTypes.ADD_FILTER;\n payload: Omit<UIFilter, 'id' | 'value' | 'condition'>;\n}\n\ninterface IUIFiltersActionSetFilters {\n type: typeof FiltersActionTypes.SET_FILTERS;\n payload: UIFilter[];\n}\n\ninterface IUIFiltersActionSetFiltersAndOperator {\n type: typeof FiltersActionTypes.SET_FILTERS_AND_OPERATOR;\n payload: {filters: UIFilter[]; filtersOperator: FiltersOperator};\n}\n\ninterface IIUIFiltersActionResetFilter {\n type: typeof FiltersActionTypes.RESET_FILTER;\n payload: Pick<UIFilter, 'id'>;\n}\n\ninterface IUIFiltersActionRemoveFilter {\n type: typeof FiltersActionTypes.REMOVE_FILTER;\n payload: Pick<UIFilter, 'id'>;\n}\n\ninterface IUIFiltersActionChangeFilterConfig {\n type: typeof FiltersActionTypes.CHANGE_FILTER_CONFIG;\n payload: UIFilter | IUIFilterTree;\n}\n\ninterface IUIFiltersActionMoveFilter {\n type: typeof FiltersActionTypes.MOVE_FILTER;\n payload: {\n indexFrom: number;\n indexTo: number;\n };\n}\n\ninterface IUIFiltersActionReset {\n type: typeof FiltersActionTypes.RESET;\n payload: IUIFiltersState;\n}\n\ninterface IUIFiltersActionLoadView {\n type: typeof FiltersActionTypes.LOAD_VIEW;\n payload: Pick<IUIFiltersState, 'filters' | 'viewId' | 'attributesDataById'>;\n}\n\ninterface IUIFiltersActionRestoreInitialViewSettings {\n type: typeof FiltersActionTypes.RESTORE_INITIAL_VIEW_SETTINGS;\n}\n\ninterface IUIFiltersActionUpdateViewListAndCurrentView {\n type: typeof FiltersActionTypes.UPDATE_VIEWS;\n payload: IUIFiltersState;\n}\n\ntype Reducer<\n PAYLOAD extends {\n type: keyof typeof FiltersActionTypes;\n payload?: unknown;\n } = {type: any; payload: 'no_payload'},\n> = PAYLOAD['payload'] extends 'no_payload'\n ? (state: IUIFiltersState) => IUIFiltersState\n : (state: IUIFiltersState, payload: PAYLOAD['payload']) => IUIFiltersState;\n\nexport type UIFiltersAction =\n | IUIFiltersActionAddFilter\n | IUIFiltersActionSetFilters\n | IUIFiltersActionSetFiltersAndOperator\n | IIUIFiltersActionResetFilter\n | IUIFiltersActionRemoveFilter\n | IUIFiltersActionChangeFilterConfig\n | IUIFiltersActionMoveFilter\n | IUIFiltersActionReset\n | IUIFiltersActionLoadView\n | IUIFiltersActionRestoreInitialViewSettings\n | IUIFiltersActionUpdateViewListAndCurrentView;\n\nconst addFilter: Reducer<IUIFiltersActionAddFilter> = (state, payload) => {\n const hasValueList = payload.attribute.valuesList?.enable;\n const isSmartFilter = isUIFilterWithSmartFilter(payload as UIFilter);\n let condition: RecordFilterCondition | null = hasOnlyNoValueConditions(\n (payload as IUIFilterStandard).attribute.format,\n )\n ? null\n : (conditionsByFormat[(payload as IUIFilterStandard).attribute.format][0] ?? null);\n if (hasValueList || isSmartFilter) {\n condition = AttributeConditionFilter.EQUAL;\n }\n\n let filterToAdd;\n if (isSmartFilter && (payload.attribute as IUIFilterLinkAttribute).smartFilter.through) {\n if ((payload.attribute as IUIFilterLinkAttribute).smartFilter.through) {\n filterToAdd = {\n ...payload,\n field: payload.field as string,\n id: window.crypto.randomUUID(),\n condition: ThroughConditionFilter.THROUGH,\n subCondition: AttributeConditionFilter.EQUAL,\n subField: `${(payload.attribute as IUIFilterLinkAttribute).smartFilter.through.id}.id`,\n value: null,\n } satisfies IUIFilterThrough;\n }\n } else if (isUIFilterTree(payload as UIFilter)) {\n const filterWithDefaultValues = state.initialFilters.find(\n initialFilter => initialFilter.attribute.id === payload.attribute.id,\n );\n if (filterWithDefaultValues !== undefined) {\n // TODO : include IS_EMPTY to permissions\n filterToAdd = {...filterWithDefaultValues, withEmptyValues: true};\n } else {\n filterToAdd = {\n ...payload,\n id: window.crypto.randomUUID(),\n field: Array.isArray(payload.field) ? payload.field : [payload.field],\n condition: hasOnlyNoValueConditions((payload as IUIFilterStandard).attribute.format)\n ? null\n : (getFirstConditionByFilterType(payload as UIFilter) as RecordFilterCondition[])[0],\n value: null,\n };\n }\n } else {\n filterToAdd = {\n ...payload,\n field: isLinkAttribute(payload.attribute.type) ? `${payload.field}.id` : (payload.field as string),\n id: window.crypto.randomUUID(),\n condition,\n value: null,\n valuesList: hasValueList ? payload.attribute.valuesList : undefined,\n };\n }\n\n return {\n ...state,\n filters: [...state.filters, filterToAdd],\n };\n};\n\nconst setFilters: Reducer<IUIFiltersActionSetFilters> = (state, payload) => ({\n ...state,\n filters: payload,\n});\n\nconst setFiltersAndOperator: Reducer<IUIFiltersActionSetFiltersAndOperator> = (state, payload) => ({\n ...state,\n filters: payload.filters,\n filtersOperator: payload.filtersOperator,\n});\n\nconst resetFilter: Reducer<IIUIFiltersActionResetFilter> = (state, payload) => ({\n ...state,\n filters: state.filters.map(filter => {\n if (filter.id === payload.id) {\n const initialFilter = state.initialFilters.find(({id}) => id === payload.id);\n if (initialFilter) {\n return initialFilter;\n }\n\n if (isUIFilterValueList(filter)) {\n return {\n ...filter,\n condition: null,\n value: null,\n };\n }\n\n if (isUIFilterStandard(filter)) {\n return {\n ...filter,\n condition: hasOnlyNoValueConditions(filter.attribute.format)\n ? null\n : conditionsByFormat[filter.attribute.format][0],\n value: null,\n formattedValue: null,\n };\n }\n\n if (isUIFilterThrough(filter)) {\n return {\n ...filter,\n condition: ThroughConditionFilter.THROUGH,\n value: null,\n formattedValue: null,\n };\n }\n\n if (isUIFilterLink(filter)) {\n return {\n ...filter,\n condition: conditionsByFormat[AttributeFormat.text][0],\n value: null,\n formattedValue: null,\n };\n }\n\n if (isUIFilterTree(filter)) {\n return {\n ...filter,\n condition: null,\n value: null,\n nodes: null,\n userNodes: null,\n userFormattedValue: null,\n includeHiddenOptions: false,\n };\n }\n }\n return filter;\n }),\n});\n\nconst removeFilter: Reducer<IUIFiltersActionRemoveFilter> = (state, payload) => ({\n ...state,\n filters: state.filters.filter(({id}) => id !== payload.id),\n});\n\nconst changeFilterConfig: Reducer<IUIFiltersActionChangeFilterConfig> = (state, payload) => ({\n ...state,\n filters: state.filters.map(filter => {\n if (filter.id !== payload.id) {\n return filter;\n }\n if (isUIFilterTree(filter)) {\n const treePayload = payload as IUIFilterTree;\n // Convert empty user selection to null (deselecting all → no user selection)\n // Restore initial value/nodes so the filter keeps its viewByDefault values\n if (Array.isArray(treePayload.value) && treePayload.value.length === 0) {\n const initialFilter = state.initialFilters.find(({id}) => id === filter.id) as\n | IUIFilterTree\n | undefined;\n return {\n ...filter,\n ...payload,\n value: initialFilter?.value ?? null,\n nodes: initialFilter?.nodes ?? null,\n userNodes: null,\n userFormattedValue: null,\n };\n }\n return {...filter, ...payload};\n }\n if (isUIFilterValueList(filter) && filter.condition && nullValueConditions.includes(filter.condition)) {\n return {...filter, ...payload, value: null};\n }\n return {...filter, ...payload};\n }),\n});\n\nconst moveFilter: Reducer<IUIFiltersActionMoveFilter> = (state, payload) => {\n const attributesUsedToFilter = [...state.filters];\n const [filterToMove] = attributesUsedToFilter.splice(payload.indexFrom, 1);\n attributesUsedToFilter.splice(payload.indexTo, 0, filterToMove);\n return {\n ...state,\n filters: attributesUsedToFilter,\n };\n};\n\nconst reset: Reducer<IUIFiltersActionReset> = (_, payload) => payload;\n\nconst loadView: Reducer<IUIFiltersActionLoadView> = (state, payload) => ({\n ...state,\n ...payload,\n initialFilters: payload.filters,\n});\n\nconst restoreInitialViewSettings: Reducer = state => ({\n ...state,\n filters: state.initialFilters,\n});\n\nexport const filtersReducer =\n setRefetchViews =>\n (state: IUIFiltersState, action: UIFiltersAction): IUIFiltersState => {\n switch (action.type) {\n case FiltersActionTypes.ADD_FILTER: {\n return addFilter(state, action.payload);\n }\n case FiltersActionTypes.SET_FILTERS: {\n return setFilters(state, action.payload);\n }\n case FiltersActionTypes.SET_FILTERS_AND_OPERATOR: {\n return setFiltersAndOperator(state, action.payload);\n }\n case FiltersActionTypes.RESET_FILTER: {\n return resetFilter(state, action.payload);\n }\n case FiltersActionTypes.REMOVE_FILTER: {\n return removeFilter(state, action.payload);\n }\n case FiltersActionTypes.CHANGE_FILTER_CONFIG: {\n return changeFilterConfig(state, action.payload);\n }\n case FiltersActionTypes.MOVE_FILTER: {\n return moveFilter(state, action.payload);\n }\n case FiltersActionTypes.RESET: {\n return reset(state, action.payload);\n }\n case FiltersActionTypes.LOAD_VIEW: {\n return loadView(state, action.payload);\n }\n case FiltersActionTypes.RESTORE_INITIAL_VIEW_SETTINGS: {\n return restoreInitialViewSettings(state);\n }\n case FiltersActionTypes.UPDATE_VIEWS: {\n setRefetchViews?.(true);\n return state;\n }\n default:\n return state;\n }\n };\n"]}
|
|
@@ -47,7 +47,6 @@ export const SmartFilterAttributeDropdown = ({ filter, onFilterChange }) => {
|
|
|
47
47
|
filtersOperator: filtersData.filtersOperator,
|
|
48
48
|
selectedValueIds: selectedNodesIds,
|
|
49
49
|
selectedFormattedValues: filter.formattedValue,
|
|
50
|
-
linkedLibraryId: filter.attribute.linkedLibrary?.id,
|
|
51
50
|
});
|
|
52
51
|
const { filteredSmartFilterData, SearchInput } = useSmartFilterSearch(smartFilterDataToDisplay);
|
|
53
52
|
const isFullyChecked = selectedNodesIds.length > 0 &&
|
|
@@ -67,7 +66,7 @@ export const SmartFilterAttributeDropdown = ({ filter, onFilterChange }) => {
|
|
|
67
66
|
.filter((selectedNode) => Boolean(selectedNode));
|
|
68
67
|
onFilterChange({
|
|
69
68
|
...filter,
|
|
70
|
-
value: selectedNodes.map(selectedNode => selectedNode.
|
|
69
|
+
value: selectedNodes.map(selectedNode => selectedNode.value),
|
|
71
70
|
formattedValue: selectedNodes.map(selectedNode => selectedNode.title),
|
|
72
71
|
});
|
|
73
72
|
};
|
|
@@ -75,7 +74,7 @@ export const SmartFilterAttributeDropdown = ({ filter, onFilterChange }) => {
|
|
|
75
74
|
const selectedNodes = isSelected ? [...smartFilterDataToDisplay] : [];
|
|
76
75
|
onFilterChange({
|
|
77
76
|
...filter,
|
|
78
|
-
value: selectedNodes.map(selectedNode => selectedNode.
|
|
77
|
+
value: selectedNodes.map(selectedNode => selectedNode.value),
|
|
79
78
|
formattedValue: selectedNodes.map(selectedNode => selectedNode.title),
|
|
80
79
|
withEmptyValues: isSelected,
|
|
81
80
|
});
|