@leav/ui 1.13.0-3e5f362c → 1.13.0-679fc681
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/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/manage-view-settings/filter-items/FilterItems.js +4 -4
- 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/context/filtersReducer.d.ts +9 -1
- package/dist/components/Filters/context/filtersReducer.js +9 -5
- package/dist/components/Filters/context/filtersReducer.js.map +1 -1
- package/dist/components/Filters/filter-items/filter-type/tree/TreeAttributeDropDown.js +14 -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/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/package.json +4 -9
|
@@ -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"]}
|
|
@@ -4,6 +4,7 @@ export type ViewType = 'table' | 'list' | 'timeline' | 'mosaic';
|
|
|
4
4
|
export declare const FiltersActionTypes: {
|
|
5
5
|
readonly ADD_FILTER: "ADD_FILTER";
|
|
6
6
|
readonly SET_FILTERS: "SET_FILTERS";
|
|
7
|
+
readonly SET_FILTERS_AND_OPERATOR: "SET_FILTERS_AND_OPERATOR";
|
|
7
8
|
readonly RESET_FILTER: "RESET_FILTER";
|
|
8
9
|
readonly REMOVE_FILTER: "REMOVE_FILTER";
|
|
9
10
|
readonly MOVE_FILTER: "MOVE_FILTER";
|
|
@@ -30,6 +31,13 @@ interface IUIFiltersActionSetFilters {
|
|
|
30
31
|
type: typeof FiltersActionTypes.SET_FILTERS;
|
|
31
32
|
payload: UIFilter[];
|
|
32
33
|
}
|
|
34
|
+
interface IUIFiltersActionSetFiltersAndOperator {
|
|
35
|
+
type: typeof FiltersActionTypes.SET_FILTERS_AND_OPERATOR;
|
|
36
|
+
payload: {
|
|
37
|
+
filters: UIFilter[];
|
|
38
|
+
filtersOperator: FiltersOperator;
|
|
39
|
+
};
|
|
40
|
+
}
|
|
33
41
|
interface IIUIFiltersActionResetFilter {
|
|
34
42
|
type: typeof FiltersActionTypes.RESET_FILTER;
|
|
35
43
|
payload: Pick<UIFilter, 'id'>;
|
|
@@ -64,6 +72,6 @@ interface IUIFiltersActionUpdateViewListAndCurrentView {
|
|
|
64
72
|
type: typeof FiltersActionTypes.UPDATE_VIEWS;
|
|
65
73
|
payload: IUIFiltersState;
|
|
66
74
|
}
|
|
67
|
-
export type UIFiltersAction = IUIFiltersActionAddFilter | IUIFiltersActionSetFilters | IIUIFiltersActionResetFilter | IUIFiltersActionRemoveFilter | IUIFiltersActionChangeFilterConfig | IUIFiltersActionMoveFilter | IUIFiltersActionReset | IUIFiltersActionLoadView | IUIFiltersActionRestoreInitialViewSettings | IUIFiltersActionUpdateViewListAndCurrentView;
|
|
75
|
+
export type UIFiltersAction = IUIFiltersActionAddFilter | IUIFiltersActionSetFilters | IUIFiltersActionSetFiltersAndOperator | IIUIFiltersActionResetFilter | IUIFiltersActionRemoveFilter | IUIFiltersActionChangeFilterConfig | IUIFiltersActionMoveFilter | IUIFiltersActionReset | IUIFiltersActionLoadView | IUIFiltersActionRestoreInitialViewSettings | IUIFiltersActionUpdateViewListAndCurrentView;
|
|
68
76
|
export declare const filtersReducer: (setRefetchViews: any) => (state: IUIFiltersState, action: UIFiltersAction) => IUIFiltersState;
|
|
69
77
|
export {};
|
|
@@ -10,6 +10,7 @@ import { isLinkAttribute } from '../../../_utils/attributeType';
|
|
|
10
10
|
export const FiltersActionTypes = {
|
|
11
11
|
ADD_FILTER: 'ADD_FILTER',
|
|
12
12
|
SET_FILTERS: 'SET_FILTERS',
|
|
13
|
+
SET_FILTERS_AND_OPERATOR: 'SET_FILTERS_AND_OPERATOR',
|
|
13
14
|
RESET_FILTER: 'RESET_FILTER',
|
|
14
15
|
REMOVE_FILTER: 'REMOVE_FILTER',
|
|
15
16
|
MOVE_FILTER: 'MOVE_FILTER',
|
|
@@ -73,13 +74,16 @@ const addFilter = (state, payload) => {
|
|
|
73
74
|
return {
|
|
74
75
|
...state,
|
|
75
76
|
filters: [...state.filters, filterToAdd],
|
|
76
|
-
viewModified: true,
|
|
77
77
|
};
|
|
78
78
|
};
|
|
79
79
|
const setFilters = (state, payload) => ({
|
|
80
80
|
...state,
|
|
81
81
|
filters: payload,
|
|
82
|
-
|
|
82
|
+
});
|
|
83
|
+
const setFiltersAndOperator = (state, payload) => ({
|
|
84
|
+
...state,
|
|
85
|
+
filters: payload.filters,
|
|
86
|
+
filtersOperator: payload.filtersOperator,
|
|
83
87
|
});
|
|
84
88
|
const resetFilter = (state, payload) => ({
|
|
85
89
|
...state,
|
|
@@ -140,7 +144,6 @@ const resetFilter = (state, payload) => ({
|
|
|
140
144
|
const removeFilter = (state, payload) => ({
|
|
141
145
|
...state,
|
|
142
146
|
filters: state.filters.filter(({ id }) => id !== payload.id),
|
|
143
|
-
viewModified: true,
|
|
144
147
|
});
|
|
145
148
|
const changeFilterConfig = (state, payload) => ({
|
|
146
149
|
...state,
|
|
@@ -170,7 +173,6 @@ const changeFilterConfig = (state, payload) => ({
|
|
|
170
173
|
}
|
|
171
174
|
return { ...filter, ...payload };
|
|
172
175
|
}),
|
|
173
|
-
viewModified: true,
|
|
174
176
|
});
|
|
175
177
|
const moveFilter = (state, payload) => {
|
|
176
178
|
const attributesUsedToFilter = [...state.filters];
|
|
@@ -179,7 +181,6 @@ const moveFilter = (state, payload) => {
|
|
|
179
181
|
return {
|
|
180
182
|
...state,
|
|
181
183
|
filters: attributesUsedToFilter,
|
|
182
|
-
viewModified: true,
|
|
183
184
|
};
|
|
184
185
|
};
|
|
185
186
|
const reset = (_, payload) => payload;
|
|
@@ -200,6 +201,9 @@ export const filtersReducer = setRefetchViews => (state, action) => {
|
|
|
200
201
|
case FiltersActionTypes.SET_FILTERS: {
|
|
201
202
|
return setFilters(state, action.payload);
|
|
202
203
|
}
|
|
204
|
+
case FiltersActionTypes.SET_FILTERS_AND_OPERATOR: {
|
|
205
|
+
return setFiltersAndOperator(state, action.payload);
|
|
206
|
+
}
|
|
203
207
|
case FiltersActionTypes.RESET_FILTER: {
|
|
204
208
|
return resetFilter(state, action.payload);
|
|
205
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 SET_FILTERS: 'SET_FILTERS',\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 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 | 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 setFilters: Reducer<IUIFiltersActionSetFilters> = (state, payload) => ({\n ...state,\n filters: payload,\n viewModified: true,\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.SET_FILTERS: {\n return setFilters(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"]}
|
|
@@ -34,6 +34,13 @@ const StyledKitTreeWithGhostedNodes = styled(KitTree) `
|
|
|
34
34
|
font-style: italic;
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
+
|
|
38
|
+
& .ant-tree-treenode:has(.ant-tree-checkbox-disabled) {
|
|
39
|
+
.ant-tree-node-content-wrapper,
|
|
40
|
+
.ant-typography {
|
|
41
|
+
cursor: default;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
37
44
|
`;
|
|
38
45
|
export const TreeAttributeDropDown = ({ filter, onFilterChange, toggleHiddenRef, onPermissionConfiguredChange, }) => {
|
|
39
46
|
const { filtersData } = useFiltersContext();
|
|
@@ -71,7 +78,10 @@ export const TreeAttributeDropDown = ({ filter, onFilterChange, toggleHiddenRef,
|
|
|
71
78
|
// disabled-checkbox parents whose children are in a different permission group.
|
|
72
79
|
// This ensures the count reflects the actual selected descendants regardless of splitting.
|
|
73
80
|
const selectedChildrenCount = countSelectedTreeChildren(nodeData, selectedNodesIds);
|
|
74
|
-
const isHiddenByDefault =
|
|
81
|
+
const isHiddenByDefault = isAccessPermissionConfigured &&
|
|
82
|
+
(includeHiddenOptions
|
|
83
|
+
? nodeData.accessRecordByDefaultPermission === false
|
|
84
|
+
: nodeData.accessRecordByDefaultPermission !== true);
|
|
75
85
|
return (_jsx(FilterTreeNodeTitle, { title: nodeData.title, count: selectedChildrenCount > 0 ? selectedChildrenCount : undefined, ghosted: isHiddenByDefault }));
|
|
76
86
|
},
|
|
77
87
|
onExpand: expandedKeys => {
|
|
@@ -83,6 +93,9 @@ export const TreeAttributeDropDown = ({ filter, onFilterChange, toggleHiddenRef,
|
|
|
83
93
|
},
|
|
84
94
|
onSelect: (_, info) => {
|
|
85
95
|
const node = info.node;
|
|
96
|
+
if (node.disableCheckbox) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
86
99
|
handleOnSelect(node, info.selected);
|
|
87
100
|
},
|
|
88
101
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeAttributeDropDown.js","sourceRoot":"","sources":["../../../../../../src/components/Filters/filter-items/filter-type/tree/TreeAttributeDropDown.tsx"],"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 ComponentProps, type FunctionComponent, type Key, useEffect, useState} from 'react';\nimport {type IFilterChildrenTreeDropDownProps} from '../_types';\nimport styled from 'styled-components';\nimport {KitLoader, KitSpace, KitTree} from 'aristid-ds';\nimport {type EventDataNode} from 'antd/lib/tree';\nimport {type ITreeNode, useGetTreeData} from './useGetTreeData';\nimport {ErrorDisplay} from '_ui/components/ErrorDisplay';\nimport {useTreesSearch} from './useTreesSearch';\nimport {useFiltersContext} from '_ui/components/Filters/useFiltersContext';\nimport {EmptyValueCheckbox} from '../../shared/EmptyValueCheckbox';\nimport {SelectAllCheckbox} from '../../shared/SelectAllCheckbox';\nimport {countSelectedTreeChildren} from './utils/countSelectedTreeChildren';\nimport {FilterTreeNodeTitle} from '../../shared/FilterTreeNodeTitle';\nimport {useTreePermissions} from './useTreePermissions';\nimport {useTreeNodeSelection} from './useTreeNodeSelection';\n\nconst ScrollableContent = styled.div`\n max-height: 348px; /* Equal to 10.5 nodes of KitTree */\n overflow-y: auto;\n overflow-x: hidden;\n width: 100%;\n`;\n\nconst DropdownContentWrapper = styled(KitSpace)`\n width: 327px;\n justify-content: center;\n`;\n\n// Applies ghosted styling to tree nodes that have data-ghosted=\"true\" on their title wrapper.\n// Used to visually distinguish hidden-by-default nodes when the toggle is active.\nconst StyledKitTreeWithGhostedNodes = styled(KitTree)`\n & .ant-tree-treenode:has(div[data-ghosted='true']) {\n .ant-typography {\n color: var(--general-colors-neutral-grey-500);\n font-style: italic;\n }\n }\n`;\n\nexport const TreeAttributeDropDown: FunctionComponent<IFilterChildrenTreeDropDownProps> = ({\n filter,\n onFilterChange,\n toggleHiddenRef,\n onPermissionConfiguredChange,\n}) => {\n const {filtersData} = useFiltersContext();\n\n const {treeData, isLoading, error} = useGetTreeData({\n treeId: filter.attribute.linkedTree?.id ?? '',\n attributeId: filter.attribute.id,\n libraryId: filtersData.libraryId,\n });\n\n const includeHiddenOptions = filter.includeHiddenOptions ?? false;\n\n const {displayTree, flattenTreeData, flattenForSelectAll, isAccessPermissionConfigured} = useTreePermissions(\n treeData,\n includeHiddenOptions,\n );\n\n const {selectedNodesIds, allSelected, indeterminate, handleOnSelectEmptyValue, handleOnSelect, handleOnSelectAll} =\n useTreeNodeSelection({\n filter,\n onFilterChange,\n flattenTreeData,\n flattenForSelectAll,\n isAccessPermissionConfigured,\n toggleHiddenRef,\n });\n\n const {filteredTree, expandedNodeIdsFromSearch, SearchInput} = useTreesSearch(displayTree);\n\n const [expandedNodeIdsFromUser, setExpandedNodeIdsFromUser] = useState<Key[]>([]);\n\n useEffect(() => {\n onPermissionConfiguredChange?.(isAccessPermissionConfigured);\n }, [isAccessPermissionConfigured, onPermissionConfiguredChange]);\n\n const treeCommonProps: ComponentProps<typeof StyledKitTreeWithGhostedNodes> = {\n selectedKeys: selectedNodesIds,\n checkedKeys: selectedNodesIds,\n defaultExpandedKeys: selectedNodesIds,\n expandedKeys: [...expandedNodeIdsFromUser, ...expandedNodeIdsFromSearch],\n checkable: true,\n checkStrictly: true,\n multiple: true,\n titleRender(node) {\n const nodeData = node as EventDataNode<ITreeNode>;\n\n // TODO: countSelectedTreeChildren is computed here because the tree may contain\n // disabled-checkbox parents whose children are in a different permission group.\n // This ensures the count reflects the actual selected descendants regardless of splitting.\n const selectedChildrenCount = countSelectedTreeChildren(nodeData, selectedNodesIds);\n const isHiddenByDefault = includeHiddenOptions && nodeData.accessRecordByDefaultPermission === false;\n\n return (\n <FilterTreeNodeTitle\n title={nodeData.title}\n count={selectedChildrenCount > 0 ? selectedChildrenCount : undefined}\n ghosted={isHiddenByDefault}\n />\n );\n },\n onExpand: expandedKeys => {\n setExpandedNodeIdsFromUser(expandedKeys);\n },\n onCheck: (_, info) => {\n const node = info.node as EventDataNode<ITreeNode>;\n handleOnSelect(node, info.checked);\n },\n onSelect: (_, info) => {\n const node = info.node as EventDataNode<ITreeNode>;\n handleOnSelect(node, info.selected);\n },\n };\n\n if (isLoading) {\n return (\n <DropdownContentWrapper>\n <KitLoader />\n </DropdownContentWrapper>\n );\n }\n\n if (error) {\n return (\n <DropdownContentWrapper>\n <ErrorDisplay message={error.message} />\n </DropdownContentWrapper>\n );\n }\n\n return (\n <DropdownContentWrapper direction=\"vertical\" size=\"xs\">\n {SearchInput}\n <ScrollableContent>\n <EmptyValueCheckbox onSelect={handleOnSelectEmptyValue} filter={filter} />\n <SelectAllCheckbox\n checked={allSelected}\n indeterminate={indeterminate}\n onChange={checked => handleOnSelectAll(flattenForSelectAll, checked)}\n />\n <StyledKitTreeWithGhostedNodes treeData={filteredTree} {...treeCommonProps} />\n </ScrollableContent>\n </DropdownContentWrapper>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"TreeAttributeDropDown.js","sourceRoot":"","sources":["../../../../../../src/components/Filters/filter-items/filter-type/tree/TreeAttributeDropDown.tsx"],"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 ComponentProps, type FunctionComponent, type Key, useEffect, useState} from 'react';\nimport {type IFilterChildrenTreeDropDownProps} from '../_types';\nimport styled from 'styled-components';\nimport {KitLoader, KitSpace, KitTree} from 'aristid-ds';\nimport {type EventDataNode} from 'antd/lib/tree';\nimport {type ITreeNode, useGetTreeData} from './useGetTreeData';\nimport {ErrorDisplay} from '_ui/components/ErrorDisplay';\nimport {useTreesSearch} from './useTreesSearch';\nimport {useFiltersContext} from '_ui/components/Filters/useFiltersContext';\nimport {EmptyValueCheckbox} from '../../shared/EmptyValueCheckbox';\nimport {SelectAllCheckbox} from '../../shared/SelectAllCheckbox';\nimport {countSelectedTreeChildren} from './utils/countSelectedTreeChildren';\nimport {FilterTreeNodeTitle} from '../../shared/FilterTreeNodeTitle';\nimport {useTreePermissions} from './useTreePermissions';\nimport {useTreeNodeSelection} from './useTreeNodeSelection';\n\nconst ScrollableContent = styled.div`\n max-height: 348px; /* Equal to 10.5 nodes of KitTree */\n overflow-y: auto;\n overflow-x: hidden;\n width: 100%;\n`;\n\nconst DropdownContentWrapper = styled(KitSpace)`\n width: 327px;\n justify-content: center;\n`;\n\n// Applies ghosted styling to tree nodes that have data-ghosted=\"true\" on their title wrapper.\n// Used to visually distinguish hidden-by-default nodes when the toggle is active.\nconst StyledKitTreeWithGhostedNodes = styled(KitTree)`\n & .ant-tree-treenode:has(div[data-ghosted='true']) {\n .ant-typography {\n color: var(--general-colors-neutral-grey-500);\n font-style: italic;\n }\n }\n\n & .ant-tree-treenode:has(.ant-tree-checkbox-disabled) {\n .ant-tree-node-content-wrapper,\n .ant-typography {\n cursor: default;\n }\n }\n`;\n\nexport const TreeAttributeDropDown: FunctionComponent<IFilterChildrenTreeDropDownProps> = ({\n filter,\n onFilterChange,\n toggleHiddenRef,\n onPermissionConfiguredChange,\n}) => {\n const {filtersData} = useFiltersContext();\n\n const {treeData, isLoading, error} = useGetTreeData({\n treeId: filter.attribute.linkedTree?.id ?? '',\n attributeId: filter.attribute.id,\n libraryId: filtersData.libraryId,\n });\n\n const includeHiddenOptions = filter.includeHiddenOptions ?? false;\n\n const {displayTree, flattenTreeData, flattenForSelectAll, isAccessPermissionConfigured} = useTreePermissions(\n treeData,\n includeHiddenOptions,\n );\n\n const {selectedNodesIds, allSelected, indeterminate, handleOnSelectEmptyValue, handleOnSelect, handleOnSelectAll} =\n useTreeNodeSelection({\n filter,\n onFilterChange,\n flattenTreeData,\n flattenForSelectAll,\n isAccessPermissionConfigured,\n toggleHiddenRef,\n });\n\n const {filteredTree, expandedNodeIdsFromSearch, SearchInput} = useTreesSearch(displayTree);\n\n const [expandedNodeIdsFromUser, setExpandedNodeIdsFromUser] = useState<Key[]>([]);\n\n useEffect(() => {\n onPermissionConfiguredChange?.(isAccessPermissionConfigured);\n }, [isAccessPermissionConfigured, onPermissionConfiguredChange]);\n\n const treeCommonProps: ComponentProps<typeof StyledKitTreeWithGhostedNodes> = {\n selectedKeys: selectedNodesIds,\n checkedKeys: selectedNodesIds,\n defaultExpandedKeys: selectedNodesIds,\n expandedKeys: [...expandedNodeIdsFromUser, ...expandedNodeIdsFromSearch],\n checkable: true,\n checkStrictly: true,\n multiple: true,\n titleRender(node) {\n const nodeData = node as EventDataNode<ITreeNode>;\n\n // TODO: countSelectedTreeChildren is computed here because the tree may contain\n // disabled-checkbox parents whose children are in a different permission group.\n // This ensures the count reflects the actual selected descendants regardless of splitting.\n const selectedChildrenCount = countSelectedTreeChildren(nodeData, selectedNodesIds);\n const isHiddenByDefault =\n isAccessPermissionConfigured &&\n (includeHiddenOptions\n ? nodeData.accessRecordByDefaultPermission === false\n : nodeData.accessRecordByDefaultPermission !== true);\n\n return (\n <FilterTreeNodeTitle\n title={nodeData.title}\n count={selectedChildrenCount > 0 ? selectedChildrenCount : undefined}\n ghosted={isHiddenByDefault}\n />\n );\n },\n onExpand: expandedKeys => {\n setExpandedNodeIdsFromUser(expandedKeys);\n },\n onCheck: (_, info) => {\n const node = info.node as EventDataNode<ITreeNode>;\n handleOnSelect(node, info.checked);\n },\n onSelect: (_, info) => {\n const node = info.node as EventDataNode<ITreeNode>;\n if (node.disableCheckbox) {\n return;\n }\n handleOnSelect(node, info.selected);\n },\n };\n\n if (isLoading) {\n return (\n <DropdownContentWrapper>\n <KitLoader />\n </DropdownContentWrapper>\n );\n }\n\n if (error) {\n return (\n <DropdownContentWrapper>\n <ErrorDisplay message={error.message} />\n </DropdownContentWrapper>\n );\n }\n\n return (\n <DropdownContentWrapper direction=\"vertical\" size=\"xs\">\n {SearchInput}\n <ScrollableContent>\n <EmptyValueCheckbox onSelect={handleOnSelectEmptyValue} filter={filter} />\n <SelectAllCheckbox\n checked={allSelected}\n indeterminate={indeterminate}\n onChange={checked => handleOnSelectAll(flattenForSelectAll, checked)}\n />\n <StyledKitTreeWithGhostedNodes treeData={filteredTree} {...treeCommonProps} />\n </ScrollableContent>\n </DropdownContentWrapper>\n );\n};\n"]}
|
|
@@ -6,7 +6,7 @@ import { buildFlattenTree } from './utils/buildFlattenTreeMap';
|
|
|
6
6
|
import { filterTreeByPermission } from './utils/filterTreeByPermission';
|
|
7
7
|
const markDisabledParents = (nodes) => nodes.map(node => ({
|
|
8
8
|
...node,
|
|
9
|
-
disableCheckbox: node.accessRecordByDefaultPermission
|
|
9
|
+
disableCheckbox: node.accessRecordByDefaultPermission !== true,
|
|
10
10
|
children: markDisabledParents(node.children),
|
|
11
11
|
}));
|
|
12
12
|
export const useTreePermissions = (treeData, includeHiddenOptions) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTreePermissions.js","sourceRoot":"","sources":["../../../../../../src/components/Filters/filter-items/filter-type/tree/useTreePermissions.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAC,OAAO,EAAC,MAAM,OAAO,CAAC;AAE9B,OAAO,EAAC,gBAAgB,EAAC,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAC,sBAAsB,EAAC,MAAM,gCAAgC,CAAC;AAEtE,MAAM,mBAAmB,GAAG,CAAC,KAAkB,EAAe,EAAE,CAC5D,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,GAAG,IAAI;IACP,eAAe,EAAE,IAAI,CAAC,+BAA+B,KAAK,
|
|
1
|
+
{"version":3,"file":"useTreePermissions.js","sourceRoot":"","sources":["../../../../../../src/components/Filters/filter-items/filter-type/tree/useTreePermissions.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAC,OAAO,EAAC,MAAM,OAAO,CAAC;AAE9B,OAAO,EAAC,gBAAgB,EAAC,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAC,sBAAsB,EAAC,MAAM,gCAAgC,CAAC;AAEtE,MAAM,mBAAmB,GAAG,CAAC,KAAkB,EAAe,EAAE,CAC5D,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,GAAG,IAAI;IACP,eAAe,EAAE,IAAI,CAAC,+BAA+B,KAAK,IAAI;IAC9D,QAAQ,EAAE,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC;CAC/C,CAAC,CAAC,CAAC;AASR,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,QAAqB,EAAE,oBAA6B,EAAoB,EAAE;IACzG,wEAAwE;IACxE,mFAAmF;IACnF,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEpF,MAAM,kCAAkC,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,eAAe,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IAElH,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE9E,0DAA0D;IAC1D,MAAM,4BAA4B,GAAG,OAAO,CAAC,GAAG,EAAE;QAC9C,MAAM,GAAG,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAC;QAC9C,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE;YACrB,IAAI,CAAC,IAAI,CAAC,+BAA+B,EAAE,CAAC;gBACxC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACnB,CAAC;QACL,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACf,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IAEtB,uEAAuE;IACvE,0FAA0F;IAC1F,MAAM,4BAA4B,GAAG,OAAO,CACxC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,+BAA+B,KAAK,IAAI,CAAC,EACtG,CAAC,eAAe,CAAC,CACpB,CAAC;IAEF,MAAM,WAAW,GACb,4BAA4B,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAE1G,MAAM,mBAAmB,GACrB,4BAA4B,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,eAAe,CAAC;IAE3G,OAAO;QACH,WAAW;QACX,eAAe;QACf,mBAAmB;QACnB,4BAA4B;KAC/B,CAAC;AACN,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 {useMemo} from 'react';\nimport {type ITreeNode} from './useGetTreeData';\nimport {buildFlattenTree} from './utils/buildFlattenTreeMap';\nimport {filterTreeByPermission} from './utils/filterTreeByPermission';\n\nconst markDisabledParents = (nodes: ITreeNode[]): ITreeNode[] =>\n nodes.map(node => ({\n ...node,\n disableCheckbox: node.accessRecordByDefaultPermission !== true,\n children: markDisabledParents(node.children),\n }));\n\nexport interface ITreePermissions {\n displayTree: ITreeNode[];\n flattenTreeData: Map<string, ITreeNode>;\n flattenForSelectAll: Map<string, ITreeNode>;\n isAccessPermissionConfigured: boolean;\n}\n\nexport const useTreePermissions = (treeData: ITreeNode[], includeHiddenOptions: boolean): ITreePermissions => {\n // visibleOnlyTree: nodes with accessRecordByDefaultPermission === true,\n // plus structural parents (=== false or undefined) that have === true descendants.\n const visibleOnlyTree = useMemo(() => filterTreeByPermission(treeData), [treeData]);\n\n const visibleOnlyTreeWithDisabledParents = useMemo(() => markDisabledParents(visibleOnlyTree), [visibleOnlyTree]);\n\n const flattenTreeData = useMemo(() => buildFlattenTree(treeData), [treeData]);\n\n // Only === true nodes are selectable; other are excluded.\n const flattenSelectableVisibleTree = useMemo(() => {\n const map = buildFlattenTree(visibleOnlyTree);\n map.forEach((node, id) => {\n if (!node.accessRecordByDefaultPermission) {\n map.delete(id);\n }\n });\n return map;\n }, [visibleOnlyTree]);\n\n // Active only when at least one node is explicitly visible (=== true).\n // When all permissions are undefined, the feature is inactive and the full tree is shown.\n const isAccessPermissionConfigured = useMemo(\n () => Array.from(flattenTreeData.values()).some(node => node.accessRecordByDefaultPermission === true),\n [flattenTreeData],\n );\n\n const displayTree =\n isAccessPermissionConfigured && !includeHiddenOptions ? visibleOnlyTreeWithDisabledParents : treeData;\n\n const flattenForSelectAll =\n isAccessPermissionConfigured && !includeHiddenOptions ? flattenSelectableVisibleTree : flattenTreeData;\n\n return {\n displayTree,\n flattenTreeData,\n flattenForSelectAll,\n isAccessPermissionConfigured,\n };\n};\n"]}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import { type RegisterHandlers } from './types';
|
|
1
|
+
import { type DispatchToNativePanel, type RegisterHandlers, type RegisterNativePanelHandlers } from './types';
|
|
2
2
|
export interface IIFrameMessengerContext {
|
|
3
3
|
registerHandlers: RegisterHandlers;
|
|
4
|
+
registerNativePanelHandlers: RegisterNativePanelHandlers;
|
|
5
|
+
dispatchToNativePanel: DispatchToNativePanel;
|
|
4
6
|
changeLangInAllFrames: (language: string) => void;
|
|
5
7
|
}
|
|
6
8
|
export declare const IFrameMessengerContext: import("react").Context<IIFrameMessengerContext>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iFrameMessengerContext.js","sourceRoot":"","sources":["../../../src/hooks/useIFrameMessenger/iFrameMessengerContext.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AAEtE,qEAAqE;AACrE,iFAAiF;AACjF,OAAO,EAAC,aAAa,EAAC,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"iFrameMessengerContext.js","sourceRoot":"","sources":["../../../src/hooks/useIFrameMessenger/iFrameMessengerContext.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AAEtE,qEAAqE;AACrE,iFAAiF;AACjF,OAAO,EAAC,aAAa,EAAC,MAAM,OAAO,CAAC;AAUpC,MAAM,CAAC,MAAM,sBAAsB,GAAG,aAAa,CAA0B,IAAI,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\n\n// Kept in a separate file from the Provider component to satisfy the\n// react-refresh/only-export-components ESLint rule (Context is not a component).\nimport {createContext} from 'react';\nimport {type DispatchToNativePanel, type RegisterHandlers, type RegisterNativePanelHandlers} from './types';\n\nexport interface IIFrameMessengerContext {\n registerHandlers: RegisterHandlers;\n registerNativePanelHandlers: RegisterNativePanelHandlers;\n dispatchToNativePanel: DispatchToNativePanel;\n changeLangInAllFrames: (language: string) => void;\n}\n\nexport const IFrameMessengerContext = createContext<IIFrameMessengerContext>(null);\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type MutableRefObject } from 'react';
|
|
2
|
-
import { type AlertMessage, type Callbacks, type CallCbFunction, type ClosePanelMessage, type IUseIFrameMessengerOptions, type GetUrlMessage, type Message, type MessageDispatcher, type MessageHandler, type MessageToPanelMessage, type ModalConfirmMessage, type NavigateToIframeMessage, type NavigateToPanelMessage, type NotificationMessage, type SimpleMessage, type OpenFlapPanelMessage, type GetPanelConfigMessage } from './types';
|
|
2
|
+
import { type AlertMessage, type Callbacks, type CallCbFunction, type ClosePanelMessage, type ExplorerViewChangedMessage, type IUseIFrameMessengerOptions, type GetUrlMessage, type Message, type MessageDispatcher, type MessageHandler, type MessageToPanelMessage, type ModalConfirmMessage, type NavigateToIframeMessage, type NavigateToPanelMessage, type NotificationMessage, type SimpleMessage, type OpenFlapPanelMessage, type GetPanelConfigMessage } from './types';
|
|
3
3
|
export declare const encodeMessage: (message: Message) => string;
|
|
4
4
|
export declare const decodeMessage: (raw: string) => Message | undefined;
|
|
5
5
|
export declare const initClientHandlers: (callCb: CallCbFunction, options?: IUseIFrameMessengerOptions, callbacksList?: MutableRefObject<Callbacks>) => MessageHandler;
|
|
@@ -16,4 +16,5 @@ export declare const getExposedMethods: (callbacksStore: MutableRefObject<Callba
|
|
|
16
16
|
closeFlapPanel: () => void;
|
|
17
17
|
getPanelConfig: (data: GetPanelConfigMessage["data"]) => void;
|
|
18
18
|
getUrl: (data: GetUrlMessage["data"]) => void;
|
|
19
|
+
explorerViewChanged: (data: ExplorerViewChangedMessage["data"]) => void;
|
|
19
20
|
};
|
|
@@ -75,6 +75,12 @@ export const initClientHandlers = (callCb, options, callbacksList) => (message,
|
|
|
75
75
|
case 'get-url':
|
|
76
76
|
options?.handlers?.onGetUrl?.(setCallbacks(message.id, message.__frameId, message.data, callCb, message.overrides));
|
|
77
77
|
break;
|
|
78
|
+
case 'explorer-view-changed':
|
|
79
|
+
options?.handlers?.onExplorerViewChanged?.(message.data);
|
|
80
|
+
break;
|
|
81
|
+
case 'view-config-update':
|
|
82
|
+
options?.handlers?.onViewConfigUpdate?.(message.data);
|
|
83
|
+
break;
|
|
78
84
|
default:
|
|
79
85
|
break;
|
|
80
86
|
}
|
|
@@ -141,5 +147,8 @@ export const getExposedMethods = (callbacksStore, dispatch) => ({
|
|
|
141
147
|
const { data: nextData, overrides } = storeCallbacks(data, id, callbacksStore);
|
|
142
148
|
dispatch?.({ type: 'get-url', data: nextData, id, overrides });
|
|
143
149
|
},
|
|
150
|
+
explorerViewChanged: (data) => {
|
|
151
|
+
dispatch?.({ type: 'explorer-view-changed', data });
|
|
152
|
+
},
|
|
144
153
|
});
|
|
145
154
|
//# sourceMappingURL=messageHandlers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messageHandlers.js","sourceRoot":"","sources":["../../../src/hooks/useIFrameMessenger/messageHandlers.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 MutableRefObject} from 'react';\nimport {\n type AlertMessage,\n type CallbackFunction,\n type Callbacks,\n type CallCbFunction,\n type ClosePanelMessage,\n type IEncodedMessage,\n type IUseIFrameMessengerOptions,\n type GetUrlMessage,\n type Message,\n type MessageDispatcher,\n type MessageHandler,\n type MessageToPanelMessage,\n type ModalConfirmMessage,\n type NavigateToIframeMessage,\n type NavigateToPanelMessage,\n type NotificationMessage,\n packetId,\n type SimpleMessage,\n type OpenFlapPanelMessage,\n type GetPanelConfigMessage,\n} from './types';\n\nexport const encodeMessage = (message: Message): string =>\n JSON.stringify({\n payload: JSON.stringify(message),\n [packetId]: true,\n });\n\nexport const decodeMessage = (raw: string): Message | undefined => {\n try {\n const decoded: IEncodedMessage = JSON.parse(raw) as unknown as IEncodedMessage;\n if (packetId in decoded && decoded[packetId] === true) {\n return JSON.parse(decoded.payload) as Message;\n }\n } catch (e) {\n return undefined;\n }\n return undefined;\n};\n\nconst getCallback = (path: string, callbacksList?: MutableRefObject<Callbacks>): CallbackFunction | null => {\n if (!callbacksList?.current) {\n return null;\n }\n const pathArray = path.split('.');\n let callback: CallbackFunction | Callbacks | Record<string, CallbackFunction> = callbacksList.current;\n pathArray.forEach(part => (callback = (callback as Callbacks | Record<string, CallbackFunction>)?.[part]));\n return typeof callback === 'function' ? callback : null;\n};\n\nconst setCallbacks = (\n id: string,\n frameId: string,\n data: unknown,\n callCb: CallCbFunction,\n overrides?: string[],\n): unknown => {\n if (!overrides) {\n return data;\n }\n\n const nextData = {...(data as Record<string, unknown>)};\n overrides.forEach((key: string) => {\n nextData[key] = (...args: unknown[]) => {\n callCb(`${id}.${key}`, args, frameId);\n };\n });\n return nextData;\n};\n\nexport const initClientHandlers: (\n callCb: CallCbFunction,\n options?: IUseIFrameMessengerOptions,\n callbacksList?: MutableRefObject<Callbacks>,\n) => MessageHandler = (callCb, options, callbacksList) => (message, dispatch) => {\n switch (message.type) {\n case 'modal-confirm':\n options?.handlers?.onModalConfirm?.(\n setCallbacks(\n message.id,\n message.__frameId,\n message.data,\n callCb,\n message.overrides,\n ) as ModalConfirmMessage['data'],\n message.id,\n dispatch,\n callCb,\n );\n break;\n case 'alert':\n options?.handlers?.onAlert?.(\n setCallbacks(\n message.id,\n message.__frameId,\n message.data,\n callCb,\n message.overrides,\n ) as AlertMessage['data'],\n message.id,\n dispatch,\n callCb,\n );\n break;\n case 'notification':\n options?.handlers?.onNotification?.(\n setCallbacks(\n message.id,\n message.__frameId,\n message.data,\n callCb,\n message.overrides,\n ) as NotificationMessage['data'],\n message.id,\n dispatch,\n callCb,\n );\n break;\n case 'message':\n options?.handlers?.onMessage?.(message.data, message.id, dispatch, callCb);\n break;\n case 'on-call-callback':\n // TODO How to know if handler can be removed from callbacksList ?\n getCallback(message.path, callbacksList)?.(...(message.data as never[]));\n break;\n case 'navigate-to-panel':\n options?.handlers?.onNavigateToPanel?.(message.data);\n break;\n case 'close-panel':\n options?.handlers?.onClosePanel?.(message.data);\n break;\n case 'navigate-to-iframe':\n options?.handlers?.onNavigateToIframe?.(message.data);\n break;\n case 'open-flap-panel':\n options?.handlers?.onOpenFlapPanel?.(message.data);\n break;\n case 'close-flap-panel':\n options?.handlers?.onCloseFlapPanel?.();\n break;\n case 'get-panel-config':\n options?.handlers?.onGetPanelConfig?.(\n setCallbacks(\n message.id,\n message.__frameId,\n message.data,\n callCb,\n message.overrides,\n ) as GetPanelConfigMessage['data'],\n message.id,\n dispatch,\n callCb,\n );\n break;\n case 'get-url':\n options?.handlers?.onGetUrl?.(\n setCallbacks(\n message.id,\n message.__frameId,\n message.data,\n callCb,\n message.overrides,\n ) as GetUrlMessage['data'],\n );\n break;\n default:\n break;\n }\n};\n\nconst storeCallbacks = (\n data: unknown,\n id: string,\n callbacksStore: MutableRefObject<Callbacks>,\n): {data: unknown; overrides: string[]} => {\n const nextData = {...(data as Record<string, unknown>)};\n const overrides: string[] = [];\n Object.entries(nextData).forEach(([key, value]) => {\n if (typeof value === 'function') {\n callbacksStore.current[id] = {\n ...callbacksStore.current[id],\n [key]: value as CallbackFunction,\n };\n overrides.push(key);\n }\n });\n return {data: nextData, overrides};\n};\n\nexport const getExposedMethods = (callbacksStore: MutableRefObject<Callbacks>, dispatch?: MessageDispatcher) => ({\n showModalConfirm: (data: ModalConfirmMessage['data']) => {\n const id = Date.now().toString();\n const {data: nextData, overrides} = storeCallbacks(data, id, callbacksStore);\n dispatch?.({type: 'modal-confirm', data: nextData as ModalConfirmMessage['data'], id, overrides});\n },\n showAlert: (data: AlertMessage['data']) => {\n const id = Date.now().toString();\n const {data: nextData, overrides} = storeCallbacks(data, id, callbacksStore);\n dispatch?.({type: 'alert', data: nextData as AlertMessage['data'], id, overrides});\n },\n showNotification: (data: NotificationMessage['data']) => {\n const id = Date.now().toString();\n const {data: nextData, overrides} = storeCallbacks(data, id, callbacksStore);\n dispatch?.({type: 'notification', data: nextData as NotificationMessage['data'], id, overrides});\n },\n messageToParent: (data: SimpleMessage['data']) => {\n const id = Date.now().toString();\n dispatch?.({type: 'message', data, id});\n },\n navigateToPanel: (data: NavigateToPanelMessage['data']) => {\n dispatch?.({type: 'navigate-to-panel', data});\n },\n closePanel: (data: ClosePanelMessage['data']) => {\n dispatch?.({type: 'close-panel', data});\n },\n navigateToIframe: (data: NavigateToIframeMessage['data']) => {\n dispatch?.({type: 'navigate-to-iframe', data});\n },\n messageToPanel: (data: MessageToPanelMessage['data']) => {\n dispatch?.({type: 'message-to-panel', data});\n },\n openFlapPanel: (data: OpenFlapPanelMessage['data']) => {\n dispatch?.({type: 'open-flap-panel', data});\n },\n closeFlapPanel: () => {\n dispatch?.({type: 'close-flap-panel'});\n },\n getPanelConfig: (data: GetPanelConfigMessage['data']) => {\n const id = Date.now().toString();\n const {data: nextData, overrides} = storeCallbacks(data, id, callbacksStore);\n dispatch?.({type: 'get-panel-config', data: nextData as GetPanelConfigMessage['data'], id, overrides});\n },\n getUrl: (data: GetUrlMessage['data']) => {\n const id = Date.now().toString();\n const {data: nextData, overrides} = storeCallbacks(data, id, callbacksStore);\n dispatch?.({type: 'get-url', data: nextData as GetUrlMessage['data'], id, overrides});\n },\n});\n"]}
|
|
1
|
+
{"version":3,"file":"messageHandlers.js","sourceRoot":"","sources":["../../../src/hooks/useIFrameMessenger/messageHandlers.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 MutableRefObject} from 'react';\nimport {\n type AlertMessage,\n type CallbackFunction,\n type Callbacks,\n type CallCbFunction,\n type ClosePanelMessage,\n type ExplorerViewChangedMessage,\n type IEncodedMessage,\n type IUseIFrameMessengerOptions,\n type GetUrlMessage,\n type Message,\n type MessageDispatcher,\n type MessageHandler,\n type MessageToPanelMessage,\n type ModalConfirmMessage,\n type NavigateToIframeMessage,\n type NavigateToPanelMessage,\n type NotificationMessage,\n packetId,\n type SimpleMessage,\n type OpenFlapPanelMessage,\n type GetPanelConfigMessage,\n type ViewConfigUpdateMessage,\n} from './types';\n\nexport const encodeMessage = (message: Message): string =>\n JSON.stringify({\n payload: JSON.stringify(message),\n [packetId]: true,\n });\n\nexport const decodeMessage = (raw: string): Message | undefined => {\n try {\n const decoded: IEncodedMessage = JSON.parse(raw) as unknown as IEncodedMessage;\n if (packetId in decoded && decoded[packetId] === true) {\n return JSON.parse(decoded.payload) as Message;\n }\n } catch (e) {\n return undefined;\n }\n return undefined;\n};\n\nconst getCallback = (path: string, callbacksList?: MutableRefObject<Callbacks>): CallbackFunction | null => {\n if (!callbacksList?.current) {\n return null;\n }\n const pathArray = path.split('.');\n let callback: CallbackFunction | Callbacks | Record<string, CallbackFunction> = callbacksList.current;\n pathArray.forEach(part => (callback = (callback as Callbacks | Record<string, CallbackFunction>)?.[part]));\n return typeof callback === 'function' ? callback : null;\n};\n\nconst setCallbacks = (\n id: string,\n frameId: string,\n data: unknown,\n callCb: CallCbFunction,\n overrides?: string[],\n): unknown => {\n if (!overrides) {\n return data;\n }\n\n const nextData = {...(data as Record<string, unknown>)};\n overrides.forEach((key: string) => {\n nextData[key] = (...args: unknown[]) => {\n callCb(`${id}.${key}`, args, frameId);\n };\n });\n return nextData;\n};\n\nexport const initClientHandlers: (\n callCb: CallCbFunction,\n options?: IUseIFrameMessengerOptions,\n callbacksList?: MutableRefObject<Callbacks>,\n) => MessageHandler = (callCb, options, callbacksList) => (message, dispatch) => {\n switch (message.type) {\n case 'modal-confirm':\n options?.handlers?.onModalConfirm?.(\n setCallbacks(\n message.id,\n message.__frameId,\n message.data,\n callCb,\n message.overrides,\n ) as ModalConfirmMessage['data'],\n message.id,\n dispatch,\n callCb,\n );\n break;\n case 'alert':\n options?.handlers?.onAlert?.(\n setCallbacks(\n message.id,\n message.__frameId,\n message.data,\n callCb,\n message.overrides,\n ) as AlertMessage['data'],\n message.id,\n dispatch,\n callCb,\n );\n break;\n case 'notification':\n options?.handlers?.onNotification?.(\n setCallbacks(\n message.id,\n message.__frameId,\n message.data,\n callCb,\n message.overrides,\n ) as NotificationMessage['data'],\n message.id,\n dispatch,\n callCb,\n );\n break;\n case 'message':\n options?.handlers?.onMessage?.(message.data, message.id, dispatch, callCb);\n break;\n case 'on-call-callback':\n // TODO How to know if handler can be removed from callbacksList ?\n getCallback(message.path, callbacksList)?.(...(message.data as never[]));\n break;\n case 'navigate-to-panel':\n options?.handlers?.onNavigateToPanel?.(message.data);\n break;\n case 'close-panel':\n options?.handlers?.onClosePanel?.(message.data);\n break;\n case 'navigate-to-iframe':\n options?.handlers?.onNavigateToIframe?.(message.data);\n break;\n case 'open-flap-panel':\n options?.handlers?.onOpenFlapPanel?.(message.data);\n break;\n case 'close-flap-panel':\n options?.handlers?.onCloseFlapPanel?.();\n break;\n case 'get-panel-config':\n options?.handlers?.onGetPanelConfig?.(\n setCallbacks(\n message.id,\n message.__frameId,\n message.data,\n callCb,\n message.overrides,\n ) as GetPanelConfigMessage['data'],\n message.id,\n dispatch,\n callCb,\n );\n break;\n case 'get-url':\n options?.handlers?.onGetUrl?.(\n setCallbacks(\n message.id,\n message.__frameId,\n message.data,\n callCb,\n message.overrides,\n ) as GetUrlMessage['data'],\n );\n break;\n case 'explorer-view-changed':\n options?.handlers?.onExplorerViewChanged?.(message.data as ExplorerViewChangedMessage['data']);\n break;\n case 'view-config-update':\n options?.handlers?.onViewConfigUpdate?.(message.data as ViewConfigUpdateMessage['data']);\n break;\n default:\n break;\n }\n};\n\nconst storeCallbacks = (\n data: unknown,\n id: string,\n callbacksStore: MutableRefObject<Callbacks>,\n): {data: unknown; overrides: string[]} => {\n const nextData = {...(data as Record<string, unknown>)};\n const overrides: string[] = [];\n Object.entries(nextData).forEach(([key, value]) => {\n if (typeof value === 'function') {\n callbacksStore.current[id] = {\n ...callbacksStore.current[id],\n [key]: value as CallbackFunction,\n };\n overrides.push(key);\n }\n });\n return {data: nextData, overrides};\n};\n\nexport const getExposedMethods = (callbacksStore: MutableRefObject<Callbacks>, dispatch?: MessageDispatcher) => ({\n showModalConfirm: (data: ModalConfirmMessage['data']) => {\n const id = Date.now().toString();\n const {data: nextData, overrides} = storeCallbacks(data, id, callbacksStore);\n dispatch?.({type: 'modal-confirm', data: nextData as ModalConfirmMessage['data'], id, overrides});\n },\n showAlert: (data: AlertMessage['data']) => {\n const id = Date.now().toString();\n const {data: nextData, overrides} = storeCallbacks(data, id, callbacksStore);\n dispatch?.({type: 'alert', data: nextData as AlertMessage['data'], id, overrides});\n },\n showNotification: (data: NotificationMessage['data']) => {\n const id = Date.now().toString();\n const {data: nextData, overrides} = storeCallbacks(data, id, callbacksStore);\n dispatch?.({type: 'notification', data: nextData as NotificationMessage['data'], id, overrides});\n },\n messageToParent: (data: SimpleMessage['data']) => {\n const id = Date.now().toString();\n dispatch?.({type: 'message', data, id});\n },\n navigateToPanel: (data: NavigateToPanelMessage['data']) => {\n dispatch?.({type: 'navigate-to-panel', data});\n },\n closePanel: (data: ClosePanelMessage['data']) => {\n dispatch?.({type: 'close-panel', data});\n },\n navigateToIframe: (data: NavigateToIframeMessage['data']) => {\n dispatch?.({type: 'navigate-to-iframe', data});\n },\n messageToPanel: (data: MessageToPanelMessage['data']) => {\n dispatch?.({type: 'message-to-panel', data});\n },\n openFlapPanel: (data: OpenFlapPanelMessage['data']) => {\n dispatch?.({type: 'open-flap-panel', data});\n },\n closeFlapPanel: () => {\n dispatch?.({type: 'close-flap-panel'});\n },\n getPanelConfig: (data: GetPanelConfigMessage['data']) => {\n const id = Date.now().toString();\n const {data: nextData, overrides} = storeCallbacks(data, id, callbacksStore);\n dispatch?.({type: 'get-panel-config', data: nextData as GetPanelConfigMessage['data'], id, overrides});\n },\n getUrl: (data: GetUrlMessage['data']) => {\n const id = Date.now().toString();\n const {data: nextData, overrides} = storeCallbacks(data, id, callbacksStore);\n dispatch?.({type: 'get-url', data: nextData as GetUrlMessage['data'], id, overrides});\n },\n explorerViewChanged: (data: ExplorerViewChangedMessage['data']) => {\n dispatch?.({type: 'explorer-view-changed', data});\n },\n});\n"]}
|
|
@@ -6,6 +6,7 @@ import { type ToastedAlertProps } from 'aristid-ds/dist/Kit/Feedback/Alert/types
|
|
|
6
6
|
import { type LibraryIdSchema, type WhereSchema, type PanelIdSchema, type PanelSchema, type PanelIFrameSchema, type FlapPanelIdSchema, type attributeExplorerPanelSchema, type baseExplorerPanelSchema } from '../../hooks/useIFrameMessenger/schema';
|
|
7
7
|
import { type AnyPrimitive } from '@leav/utils';
|
|
8
8
|
import { type IRecordIdentity, type ITreeNodeWithRecord } from '../../types';
|
|
9
|
+
import { type SerializedView } from '../../components/Explorer/_types';
|
|
9
10
|
export declare const packetId = "__fromIframeMessenger";
|
|
10
11
|
export interface IEncodedMessage {
|
|
11
12
|
payload: string;
|
|
@@ -16,6 +17,7 @@ export type ComponentPropsWithKey<T extends keyof JSX.IntrinsicElements | JSXEle
|
|
|
16
17
|
};
|
|
17
18
|
export interface IMessageBase {
|
|
18
19
|
__frameId?: string;
|
|
20
|
+
__targetPanelId?: string;
|
|
19
21
|
}
|
|
20
22
|
export type ModalConfirmMessage = IMessageBase & {
|
|
21
23
|
type: 'modal-confirm';
|
|
@@ -145,12 +147,25 @@ export type GetPanelConfigMessage = IMessageBase & {
|
|
|
145
147
|
};
|
|
146
148
|
overrides?: string[];
|
|
147
149
|
};
|
|
148
|
-
export type
|
|
150
|
+
export type ExplorerViewChangedMessage = IMessageBase & {
|
|
151
|
+
type: 'explorer-view-changed';
|
|
152
|
+
data: {
|
|
153
|
+
serializedView: SerializedView;
|
|
154
|
+
};
|
|
155
|
+
};
|
|
156
|
+
export type ViewConfigUpdateMessage = IMessageBase & {
|
|
157
|
+
type: 'view-config-update';
|
|
158
|
+
data: {
|
|
159
|
+
targetPanelId: string;
|
|
160
|
+
serializedView: SerializedView;
|
|
161
|
+
};
|
|
162
|
+
};
|
|
163
|
+
export type MessageToParent = ModalConfirmMessage | AlertMessage | NotificationMessage | SimpleMessage | RegisterMessage | UnregisterMessage | NavigateToPanelMessage | ClosePanelMessage | NavigateToIframeMessage | MessageToPanelMessage | OpenFlapPanelMessage | CloseFlapPanelMessage | GetUrlMessage | GetPanelConfigMessage | ExplorerViewChangedMessage;
|
|
149
164
|
export type MessageFromParent = (IMessageBase & {
|
|
150
165
|
type: 'on-call-callback';
|
|
151
166
|
path: string;
|
|
152
167
|
data: unknown;
|
|
153
|
-
}) | IsRegisteredMessage | ChangeLanguageMessage;
|
|
168
|
+
}) | IsRegisteredMessage | ChangeLanguageMessage | ViewConfigUpdateMessage;
|
|
154
169
|
export type Message = MessageToParent | MessageFromParent;
|
|
155
170
|
export type MessageHandler<T = Message> = (message: T, dispatch: MessageDispatcher<T>) => void;
|
|
156
171
|
export type MessageDispatcher<T = Message> = (message: T, frameId?: string) => void;
|
|
@@ -161,6 +176,8 @@ export type MessageToPanelMessageHandler = (data: MessageToPanelMessage['data'][
|
|
|
161
176
|
export type AddMessageToPanelMessageHandler = (type: string, handler: MessageToPanelMessageHandler) => void;
|
|
162
177
|
export type UnregisterHandlers = () => void;
|
|
163
178
|
export type RegisterHandlers = (iframeRef: RefObject<HTMLIFrameElement>, handlers: IUseIFrameMessengerOptions['handlers']) => UnregisterHandlers;
|
|
179
|
+
export type RegisterNativePanelHandlers = (panelId: string, handlers: IUseIFrameMessengerOptions['handlers']) => UnregisterHandlers;
|
|
180
|
+
export type DispatchToNativePanel = (panelId: string, message: Message) => void;
|
|
164
181
|
export interface IUseIFrameMessengerOptions {
|
|
165
182
|
ref?: RefObject<HTMLIFrameElement>;
|
|
166
183
|
id?: string;
|
|
@@ -177,6 +194,8 @@ export interface IUseIFrameMessengerOptions {
|
|
|
177
194
|
onGetUrl?: (data: GetUrlMessage['data']) => void;
|
|
178
195
|
onGetPanelConfig?: (data: GetPanelConfigMessage['data'], id: string, dispatch: MessageDispatcher, callCb: CallCbFunction) => void;
|
|
179
196
|
onCloseFlapPanel?: () => void;
|
|
197
|
+
onExplorerViewChanged?: (data: ExplorerViewChangedMessage['data']) => void;
|
|
198
|
+
onViewConfigUpdate?: (data: ViewConfigUpdateMessage['data']) => void;
|
|
180
199
|
};
|
|
181
200
|
}
|
|
182
201
|
export {};
|