@leav/ui 1.14.0-2fd28db5 → 1.14.0-3939a7d9
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/EditTreeModal/EditTree/EditTreeInfo/EditTreeInfoForm/TreeLibrariesForm/TreeLibrariesForm.js +1 -1
- package/dist/components/EditTreeModal/EditTree/EditTreeInfo/EditTreeInfoForm/TreeLibrariesForm/TreeLibrariesForm.js.map +1 -1
- package/dist/components/Explorer/ExplorerTitle.js +1 -1
- package/dist/components/Explorer/ExplorerTitle.js.map +1 -1
- package/dist/components/Explorer/TableNameCell.js +2 -3
- package/dist/components/Explorer/TableNameCell.js.map +1 -1
- package/dist/components/Explorer/actions-item/useEditStatusItemAction.js +1 -1
- package/dist/components/Explorer/actions-item/useEditStatusItemAction.js.map +1 -1
- package/dist/components/Explorer/actions-mass/useDeactivateMassAction.js +1 -1
- package/dist/components/Explorer/actions-mass/useDeactivateMassAction.js.map +1 -1
- package/dist/components/Explorer/actions-mass/useDeleteLinkValues.js +1 -1
- package/dist/components/Explorer/actions-mass/useDeleteLinkValues.js.map +1 -1
- package/dist/components/Filters/context/filtersReducer.js +43 -51
- package/dist/components/Filters/context/filtersReducer.js.map +1 -1
- package/dist/components/Filters/context/useFiltersReducer.js +21 -12
- package/dist/components/Filters/context/useFiltersReducer.js.map +1 -1
- package/dist/components/Filters/filter-items/CommonFilterItem.js +11 -7
- package/dist/components/Filters/filter-items/CommonFilterItem.js.map +1 -1
- package/dist/components/Filters/filter-items/filter-type/useConditionOptionsByType.js +16 -3
- package/dist/components/Filters/filter-items/filter-type/useConditionOptionsByType.js.map +1 -1
- package/dist/components/Filters/prepareFiltersForRequest.js +148 -115
- package/dist/components/Filters/prepareFiltersForRequest.js.map +1 -1
- package/dist/components/Filters/useTransformFilters.d.ts +1 -3
- package/dist/components/Filters/useTransformFilters.js +135 -133
- package/dist/components/Filters/useTransformFilters.js.map +1 -1
- package/dist/components/ImportModal/ImportModalConfigStep/ImportSheetSettings/ImportSheetSettings.js +1 -1
- package/dist/components/ImportModal/ImportModalConfigStep/ImportSheetSettings/ImportSheetSettings.js.map +1 -1
- package/dist/components/RecordCard/RecordCard.js +1 -1
- package/dist/components/RecordCard/RecordCard.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordButtons/SidebarButton.js +1 -1
- package/dist/components/RecordEdition/EditRecordButtons/SidebarButton.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/tag/link-record/useLinkRecord.js +1 -2
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/tag/link-record/useLinkRecord.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/ComputeIndicator.js +1 -2
- package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/ComputeIndicator.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/DeleteAllValuesButton.js +1 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/DeleteAllValuesButton.js.map +1 -1
- package/dist/components/RecordEdition/hooks/useCreateCancelConfirm/useCreateCancelConfirm.js +1 -1
- package/dist/components/RecordEdition/hooks/useCreateCancelConfirm/useCreateCancelConfirm.js.map +1 -1
- package/dist/components/SelectTreeNode/SelectTreeNode.js +1 -1
- package/dist/components/SelectTreeNode/SelectTreeNode.js.map +1 -1
- package/dist/components/TriggerPreviewsGenerationModal/TriggerPreviewsGenerationModal.js +1 -1
- package/dist/components/TriggerPreviewsGenerationModal/TriggerPreviewsGenerationModal.js.map +1 -1
- package/dist/components/ValuesVersionConfigurator/VersionTree/VersionTree.js +1 -1
- package/dist/components/ValuesVersionConfigurator/VersionTree/VersionTree.js.map +1 -1
- package/dist/constants.d.ts +0 -1
- package/dist/constants.js +0 -1
- package/dist/constants.js.map +1 -1
- package/dist/hooks/index.d.ts +2 -2
- package/dist/hooks/index.js +2 -2
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/useLang/__mocks__/useLang.js.map +1 -1
- package/dist/hooks/useLang/useLang.js.map +1 -1
- package/dist/testing/MockedLangContextProvider/MockedLangContextProvider.js +1 -1
- package/dist/testing/MockedLangContextProvider/MockedLangContextProvider.js.map +1 -1
- package/package.json +6 -5
- package/dist/hooks/useConfirmModal/__mocks__/index.d.ts +0 -1
- package/dist/hooks/useConfirmModal/__mocks__/index.js +0 -2
- package/dist/hooks/useConfirmModal/__mocks__/index.js.map +0 -1
- package/dist/hooks/useConfirmModal/index.d.ts +0 -1
- package/dist/hooks/useConfirmModal/index.js +0 -2
- package/dist/hooks/useConfirmModal/index.js.map +0 -1
- package/dist/hooks/useLang/__mocks__/index.d.ts +0 -2
- package/dist/hooks/useLang/__mocks__/index.js +0 -3
- package/dist/hooks/useLang/__mocks__/index.js.map +0 -1
- package/dist/hooks/useLang/index.d.ts +0 -2
- package/dist/hooks/useLang/index.js +0 -3
- package/dist/hooks/useLang/index.js.map +0 -1
|
@@ -5,7 +5,6 @@ import { localizedTranslation } from '@leav/utils';
|
|
|
5
5
|
import { useLang } from '../../hooks';
|
|
6
6
|
import { valueListTextConditions } from './filter-items/filter-type/useConditionOptionsByType';
|
|
7
7
|
import dayjs from 'dayjs';
|
|
8
|
-
// --- Type guards ---
|
|
9
8
|
const _isValidFieldFilter = (filter) => !!filter.field;
|
|
10
9
|
const _isValidFieldFilterThrough = (filter) => filter.condition === ThroughConditionFilter.THROUGH && !!filter.subCondition && !!filter.subField;
|
|
11
10
|
const _isValidFieldFilterStandardValuesList = (filter, attribute) => valueListTextConditions.includes(filter.condition) &&
|
|
@@ -16,118 +15,6 @@ const _isValidFieldFilterLinkValuesList = (filter, attribute) => valueListTextCo
|
|
|
16
15
|
[AttributeType.simple_link, AttributeType.advanced_link].includes(attribute.type) &&
|
|
17
16
|
'valuesList' in attribute &&
|
|
18
17
|
!!attribute.valuesList?.enable;
|
|
19
|
-
// --- Per-type converters (pure, module-level) ---
|
|
20
|
-
const _toStandardUIFilter = (filter, attributeData, base, t) => {
|
|
21
|
-
if (_isValidFieldFilterStandardValuesList(filter, attributeData)) {
|
|
22
|
-
const newFilter = {
|
|
23
|
-
field: filter.field,
|
|
24
|
-
// TODO: save filter values as string[] when filter and handle fields with libraries
|
|
25
|
-
value: filter.value ? [filter.value] : [],
|
|
26
|
-
hidden: filter.hidden ?? false,
|
|
27
|
-
id: window.crypto.randomUUID(),
|
|
28
|
-
condition: filter.condition ?? null,
|
|
29
|
-
attribute: {
|
|
30
|
-
...base,
|
|
31
|
-
format: attributeData.format,
|
|
32
|
-
valuesList: attributeData.valuesList,
|
|
33
|
-
},
|
|
34
|
-
withEmptyValues: filter.withEmptyValues ?? false,
|
|
35
|
-
};
|
|
36
|
-
return newFilter;
|
|
37
|
-
}
|
|
38
|
-
let formattedValue;
|
|
39
|
-
if (attributeData.format === AttributeFormat.boolean && filter.value) {
|
|
40
|
-
formattedValue = filter.value === 'true' ? t('explorer.true') : t('explorer.false');
|
|
41
|
-
}
|
|
42
|
-
if (attributeData.format === AttributeFormat.date && filter.value) {
|
|
43
|
-
formattedValue = dayjs(filter.value).format('YYYY-MM-DD');
|
|
44
|
-
}
|
|
45
|
-
const newFilter = {
|
|
46
|
-
field: filter.field,
|
|
47
|
-
value: filter.value ?? null,
|
|
48
|
-
formattedValue,
|
|
49
|
-
hidden: filter.hidden ?? false,
|
|
50
|
-
id: window.crypto.randomUUID(),
|
|
51
|
-
condition: filter.condition ?? null,
|
|
52
|
-
attribute: {
|
|
53
|
-
...base,
|
|
54
|
-
format: attributeData.format,
|
|
55
|
-
smartFilter: attributeData.smart_filter ?? undefined,
|
|
56
|
-
},
|
|
57
|
-
withEmptyValues: filter.withEmptyValues ?? false,
|
|
58
|
-
};
|
|
59
|
-
return newFilter;
|
|
60
|
-
};
|
|
61
|
-
const _toLinkUIFilter = (filter, attributeData, base) => {
|
|
62
|
-
if (_isValidFieldFilterThrough(filter)) {
|
|
63
|
-
const newFilter = {
|
|
64
|
-
field: filter.field,
|
|
65
|
-
value: filter.value ?? null,
|
|
66
|
-
hidden: filter.hidden ?? false,
|
|
67
|
-
id: window.crypto.randomUUID(),
|
|
68
|
-
condition: filter.condition,
|
|
69
|
-
attribute: {
|
|
70
|
-
...base,
|
|
71
|
-
linkedLibrary: attributeData.linked_library,
|
|
72
|
-
smartFilter: attributeData.smart_filter ?? undefined,
|
|
73
|
-
},
|
|
74
|
-
subCondition: filter.subCondition ?? null,
|
|
75
|
-
subField: filter.subField,
|
|
76
|
-
};
|
|
77
|
-
return newFilter;
|
|
78
|
-
}
|
|
79
|
-
if (_isValidFieldFilterLinkValuesList(filter, attributeData)) {
|
|
80
|
-
const newFilter = {
|
|
81
|
-
field: filter.field,
|
|
82
|
-
// TODO: save filter values as string[] when filter and handle fields with libraries
|
|
83
|
-
value: filter.value ? [filter.value] : [],
|
|
84
|
-
hidden: filter.hidden ?? false,
|
|
85
|
-
id: window.crypto.randomUUID(),
|
|
86
|
-
condition: filter.condition,
|
|
87
|
-
attribute: {
|
|
88
|
-
...base,
|
|
89
|
-
linkedLibrary: attributeData.linked_library,
|
|
90
|
-
valuesList: attributeData.valuesList,
|
|
91
|
-
smartFilter: attributeData.smart_filter ?? undefined,
|
|
92
|
-
},
|
|
93
|
-
withEmptyValues: filter.withEmptyValues ?? false,
|
|
94
|
-
};
|
|
95
|
-
return newFilter;
|
|
96
|
-
}
|
|
97
|
-
const newFilter = {
|
|
98
|
-
field: filter.field,
|
|
99
|
-
value: filter.value ?? null,
|
|
100
|
-
hidden: filter.hidden ?? false,
|
|
101
|
-
id: window.crypto.randomUUID(),
|
|
102
|
-
condition: filter.condition,
|
|
103
|
-
attribute: {
|
|
104
|
-
...base,
|
|
105
|
-
linkedLibrary: attributeData.linked_library,
|
|
106
|
-
smartFilter: attributeData.smart_filter ?? undefined,
|
|
107
|
-
},
|
|
108
|
-
};
|
|
109
|
-
return newFilter;
|
|
110
|
-
};
|
|
111
|
-
const _toTreeUIFilter = (filter, attributeData, base, treeFilters) => {
|
|
112
|
-
const treeData = treeFilters[filter.field];
|
|
113
|
-
const newFilter = {
|
|
114
|
-
field: [filter.field],
|
|
115
|
-
// TODO: save filter values as string[] when tree filter and handle fields with libraries
|
|
116
|
-
value: filter.value ? [filter.value] : (treeData?.map(tree => tree.value) ?? null),
|
|
117
|
-
formattedValue: filter.value ? [filter.value] : treeData?.map(tree => tree.label),
|
|
118
|
-
nodes: filter.value ? undefined : treeData?.map(tree => ({ libraryId: tree.libraryId, nodeId: tree.nodeId })),
|
|
119
|
-
hidden: filter.hidden ?? false,
|
|
120
|
-
id: window.crypto.randomUUID(),
|
|
121
|
-
attribute: {
|
|
122
|
-
...base,
|
|
123
|
-
linkedTree: attributeData.linked_tree,
|
|
124
|
-
},
|
|
125
|
-
condition: filter.condition ?? RecordFilterCondition.EQUAL,
|
|
126
|
-
withEmptyValues: filter.withEmptyValues ?? false,
|
|
127
|
-
};
|
|
128
|
-
return newFilter;
|
|
129
|
-
};
|
|
130
|
-
// --- Public exports ---
|
|
131
18
|
export const isLinkAttributeDetails = (linkAttributeData) => 'linked_library' in linkAttributeData;
|
|
132
19
|
export const useTransformFilters = () => {
|
|
133
20
|
const { lang } = useLang();
|
|
@@ -135,9 +22,10 @@ export const useTransformFilters = () => {
|
|
|
135
22
|
if (!_isValidFieldFilter(filter)) {
|
|
136
23
|
return acc;
|
|
137
24
|
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
//
|
|
25
|
+
const _isThroughFilter = filter.field.includes('.');
|
|
26
|
+
if (_isThroughFilter) {
|
|
27
|
+
// Hack because view filters does not have the necessary data to be transformed directly to UI filter,
|
|
28
|
+
// we need to split the field to get the subCondition and subField for through filter, may be fix after LEAVC-569
|
|
141
29
|
const [field, ...subFields] = filter.field.split('.');
|
|
142
30
|
const throughFilter = {
|
|
143
31
|
field,
|
|
@@ -155,29 +43,143 @@ export const useTransformFilters = () => {
|
|
|
155
43
|
return acc;
|
|
156
44
|
}, []);
|
|
157
45
|
const toUIFilters = ({ filters, treeFilters, attributesDataById, t, }) => (filters ?? []).reduce((acc, filter) => {
|
|
158
|
-
|
|
159
|
-
if (!attributeData) {
|
|
46
|
+
if (!attributesDataById[filter.field]) {
|
|
160
47
|
console.warn(`Attribute ${filter.field} from user view not found in database.`);
|
|
161
48
|
return acc;
|
|
162
49
|
}
|
|
163
|
-
const
|
|
164
|
-
id:
|
|
165
|
-
label: localizedTranslation(
|
|
166
|
-
type:
|
|
50
|
+
const filterAttributeBase = {
|
|
51
|
+
id: attributesDataById[filter.field].id,
|
|
52
|
+
label: localizedTranslation(attributesDataById[filter.field].label, lang),
|
|
53
|
+
type: attributesDataById[filter.field].type,
|
|
167
54
|
};
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
55
|
+
// filter is standardFilter
|
|
56
|
+
if (isStandardAttribute(filterAttributeBase.type)) {
|
|
57
|
+
const attributeData = attributesDataById[filter.field];
|
|
58
|
+
if (_isValidFieldFilterStandardValuesList(filter, attributeData)) {
|
|
59
|
+
const newFilter = {
|
|
60
|
+
field: filter.field,
|
|
61
|
+
// TODO : save filter values as string[] when filter and handle fields with libraries
|
|
62
|
+
value: filter.value ? [filter.value] : [],
|
|
63
|
+
hidden: filter.hidden ?? false,
|
|
64
|
+
id: window.crypto.randomUUID(),
|
|
65
|
+
condition: filter.condition ?? null,
|
|
66
|
+
attribute: {
|
|
67
|
+
...filterAttributeBase,
|
|
68
|
+
format: attributeData.format,
|
|
69
|
+
valuesList: attributeData.valuesList,
|
|
70
|
+
},
|
|
71
|
+
withEmptyValues: filter.withEmptyValues ?? false,
|
|
72
|
+
};
|
|
73
|
+
acc.push(newFilter);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
let formattedValue;
|
|
77
|
+
if (attributeData.format === AttributeFormat.boolean && filter.value) {
|
|
78
|
+
formattedValue = filter.value === 'true' ? t('explorer.true') : t('explorer.false');
|
|
79
|
+
}
|
|
80
|
+
if (attributeData.format === AttributeFormat.date && filter.value) {
|
|
81
|
+
formattedValue = dayjs(filter.value).format('YYYY-MM-DD');
|
|
82
|
+
}
|
|
83
|
+
const newFilter = {
|
|
84
|
+
field: filter.field,
|
|
85
|
+
value: filter.value ?? null,
|
|
86
|
+
formattedValue,
|
|
87
|
+
hidden: filter.hidden ?? false,
|
|
88
|
+
id: window.crypto.randomUUID(),
|
|
89
|
+
condition: filter.condition ?? null,
|
|
90
|
+
attribute: {
|
|
91
|
+
...filterAttributeBase,
|
|
92
|
+
format: attributeData.format,
|
|
93
|
+
smartFilter: attributeData.smart_filter ?? undefined,
|
|
94
|
+
},
|
|
95
|
+
withEmptyValues: filter.withEmptyValues ?? false,
|
|
96
|
+
};
|
|
97
|
+
acc.push(newFilter);
|
|
98
|
+
}
|
|
171
99
|
}
|
|
172
|
-
if (isLinkAttribute(
|
|
173
|
-
const
|
|
174
|
-
|
|
175
|
-
|
|
100
|
+
if (isLinkAttribute(filterAttributeBase.type)) {
|
|
101
|
+
const attributeData = attributesDataById[filter.field];
|
|
102
|
+
if (_isValidFieldFilterThrough(filter)) {
|
|
103
|
+
const newFilter = {
|
|
104
|
+
field: filter.field,
|
|
105
|
+
value: filter.value ?? null,
|
|
106
|
+
hidden: filter.hidden ?? false,
|
|
107
|
+
id: window.crypto.randomUUID(),
|
|
108
|
+
condition: filter.condition,
|
|
109
|
+
attribute: {
|
|
110
|
+
...filterAttributeBase,
|
|
111
|
+
linkedLibrary: attributeData.linked_library,
|
|
112
|
+
smartFilter: attributeData.smart_filter ?? undefined,
|
|
113
|
+
},
|
|
114
|
+
subCondition: filter.subCondition ?? null,
|
|
115
|
+
subField: filter.subField,
|
|
116
|
+
};
|
|
117
|
+
acc.push(newFilter);
|
|
118
|
+
}
|
|
119
|
+
else if (_isValidFieldFilterLinkValuesList(filter, attributeData)) {
|
|
120
|
+
const newFilter = {
|
|
121
|
+
field: filter.field,
|
|
122
|
+
// TODO : save filter values as string[] when filter and handle fields with libraries
|
|
123
|
+
value: filter.value ? [filter.value] : [],
|
|
124
|
+
hidden: filter.hidden ?? false,
|
|
125
|
+
id: window.crypto.randomUUID(),
|
|
126
|
+
condition: filter.condition,
|
|
127
|
+
attribute: {
|
|
128
|
+
...filterAttributeBase,
|
|
129
|
+
linkedLibrary: attributeData.linked_library,
|
|
130
|
+
valuesList: attributeData.valuesList,
|
|
131
|
+
smartFilter: attributeData.smart_filter ?? undefined,
|
|
132
|
+
},
|
|
133
|
+
withEmptyValues: filter.withEmptyValues ?? false,
|
|
134
|
+
};
|
|
135
|
+
acc.push(newFilter);
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
const newFilter = {
|
|
139
|
+
field: filter.field,
|
|
140
|
+
value: filter.value ?? null,
|
|
141
|
+
hidden: filter.hidden ?? false,
|
|
142
|
+
id: window.crypto.randomUUID(),
|
|
143
|
+
condition: filter.condition,
|
|
144
|
+
attribute: {
|
|
145
|
+
...filterAttributeBase,
|
|
146
|
+
linkedLibrary: attributeData.linked_library,
|
|
147
|
+
smartFilter: attributeData.smart_filter ?? undefined,
|
|
148
|
+
},
|
|
149
|
+
};
|
|
150
|
+
acc.push(newFilter);
|
|
151
|
+
}
|
|
176
152
|
}
|
|
177
|
-
if (isTreeAttribute(
|
|
178
|
-
const
|
|
179
|
-
|
|
180
|
-
|
|
153
|
+
if (isTreeAttribute(filterAttributeBase.type) && !_isValidFieldFilterThrough(filter)) {
|
|
154
|
+
const attributeData = attributesDataById[filter.field];
|
|
155
|
+
const newFilter = {
|
|
156
|
+
field: [filter.field],
|
|
157
|
+
// TODO : save filter values as string[] when tree filter and handle fields with libraries
|
|
158
|
+
value: filter.value
|
|
159
|
+
? [filter.value]
|
|
160
|
+
: treeFilters[filter.field]
|
|
161
|
+
? treeFilters[filter.field].map(tree => tree.value)
|
|
162
|
+
: null,
|
|
163
|
+
formattedValue: filter.value
|
|
164
|
+
? [filter.value]
|
|
165
|
+
: treeFilters[filter.field]
|
|
166
|
+
? treeFilters[filter.field].map(tree => tree.label)
|
|
167
|
+
: undefined,
|
|
168
|
+
nodes: filter.value
|
|
169
|
+
? undefined
|
|
170
|
+
: treeFilters[filter.field]
|
|
171
|
+
? treeFilters[filter.field].map(tree => ({ libraryId: tree.libraryId, nodeId: tree.nodeId }))
|
|
172
|
+
: undefined,
|
|
173
|
+
hidden: filter.hidden ?? false,
|
|
174
|
+
id: window.crypto.randomUUID(),
|
|
175
|
+
attribute: {
|
|
176
|
+
...filterAttributeBase,
|
|
177
|
+
linkedTree: attributeData.linked_tree,
|
|
178
|
+
},
|
|
179
|
+
condition: filter.condition ?? RecordFilterCondition.EQUAL,
|
|
180
|
+
withEmptyValues: filter.withEmptyValues ?? false,
|
|
181
|
+
};
|
|
182
|
+
acc.push(newFilter);
|
|
181
183
|
}
|
|
182
184
|
return acc;
|
|
183
185
|
}, []);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTransformFilters.js","sourceRoot":"","sources":["../../../src/components/Filters/useTransformFilters.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n type AttributeDetailsLinkAttributeFragment,\n type AttributeDetailsTreeAttributeFragment,\n AttributeFormat,\n AttributeType,\n type ExplorerAttributesQuery,\n type ExplorerLinkAttributeQuery,\n type GetViewsListQuery,\n type LinkAttributeDetailsFragment,\n RecordFilterCondition,\n type StandardAttributeDetailsFragment,\n type ViewDetailsFilterFragment,\n} from '_ui/_gqlTypes';\nimport {\n type UIFilter,\n type IUIFilterBaseAttribute,\n type IUIFilterLink,\n type IUIFilterLinkValueList,\n type IUIFilterStandard,\n type IUIFilterStandardValueList,\n type IUIFilterThrough,\n type IUIFilterTree,\n type ValidFieldFilter,\n type ValidFieldFilterLinkValuesList,\n type ValidFieldFilterStandardValuesList,\n type ValidFieldFilterThrough,\n type ValidFilter,\n} from './_types';\nimport {ThroughConditionFilter} from '_ui/types';\nimport {isLinkAttribute, isStandardAttribute, isTreeAttribute} from '_ui/_utils/attributeType';\nimport {localizedTranslation} from '@leav/utils';\nimport {useLang} from '_ui/hooks';\nimport {valueListTextConditions} from './filter-items/filter-type/useConditionOptionsByType';\nimport dayjs from 'dayjs';\nimport {type TFunction} from 'i18next';\nimport {type ITreeFilters} from './context/useGetTreeFilters';\n\n// --- Shared types ---\n\ntype QueryAttributeItem = NonNullable<ExplorerAttributesQuery['attributes']>['list'][number];\n\ntype AttributeDetailsLinkAttributeWithPermissionsFragment = AttributeDetailsLinkAttributeFragment & {\n permissions: {access_attribute: boolean};\n};\ntype AttributeDetailsTreeAttributeWithPermissionsFragment = AttributeDetailsTreeAttributeFragment & {\n permissions: {access_attribute: boolean};\n};\n\n// --- Type guards ---\n\nconst _isValidFieldFilter = (filter: ViewDetailsFilterFragment | UIFilter): filter is ValidFieldFilter =>\n !!filter.field;\n\nconst _isValidFieldFilterThrough = (filter: ValidFilter): filter is ValidFieldFilterThrough =>\n filter.condition === ThroughConditionFilter.THROUGH && !!filter.subCondition && !!filter.subField;\n\nconst _isValidFieldFilterStandardValuesList = (\n filter: ValidFilter,\n attribute: QueryAttributeItem,\n): filter is ValidFieldFilterStandardValuesList & {attribute: StandardAttributeDetailsFragment} =>\n valueListTextConditions.includes(filter.condition as RecordFilterCondition) &&\n [AttributeType.simple, AttributeType.advanced].includes(attribute.type) &&\n 'valuesList' in attribute &&\n !!attribute.valuesList?.enable;\n\nconst _isValidFieldFilterLinkValuesList = (\n filter: ValidFilter,\n attribute: QueryAttributeItem,\n): filter is ValidFieldFilterLinkValuesList & {attribute: LinkAttributeDetailsFragment} =>\n valueListTextConditions.includes(filter.condition as RecordFilterCondition) &&\n [AttributeType.simple_link, AttributeType.advanced_link].includes(attribute.type) &&\n 'valuesList' in attribute &&\n !!attribute.valuesList?.enable;\n\n// --- Per-type converters (pure, module-level) ---\n\nconst _toStandardUIFilter = (\n filter: ValidFilter,\n attributeData: QueryAttributeItem,\n base: IUIFilterBaseAttribute,\n t: TFunction,\n): IUIFilterStandard | IUIFilterStandardValueList => {\n if (_isValidFieldFilterStandardValuesList(filter, attributeData)) {\n const newFilter: IUIFilterStandardValueList = {\n field: filter.field,\n // TODO: save filter values as string[] when filter and handle fields with libraries\n value: filter.value ? [filter.value] : [],\n hidden: filter.hidden ?? false,\n id: window.crypto.randomUUID(),\n condition: (filter.condition as RecordFilterCondition) ?? null,\n attribute: {\n ...base,\n format: attributeData.format!,\n valuesList: (attributeData as StandardAttributeDetailsFragment).valuesList!,\n },\n withEmptyValues: filter.withEmptyValues ?? false,\n };\n return newFilter;\n }\n\n let formattedValue: string;\n if (attributeData.format === AttributeFormat.boolean && filter.value) {\n formattedValue = filter.value === 'true' ? t('explorer.true') : t('explorer.false');\n }\n if (attributeData.format === AttributeFormat.date && filter.value) {\n formattedValue = dayjs(filter.value).format('YYYY-MM-DD');\n }\n\n const newFilter: IUIFilterStandard = {\n field: filter.field,\n value: filter.value ?? null,\n formattedValue,\n hidden: filter.hidden ?? false,\n id: window.crypto.randomUUID(),\n condition: (filter.condition as RecordFilterCondition) ?? null,\n attribute: {\n ...base,\n format: attributeData.format!,\n smartFilter: (attributeData as StandardAttributeDetailsFragment).smart_filter ?? undefined,\n },\n withEmptyValues: filter.withEmptyValues ?? false,\n };\n return newFilter;\n};\n\nconst _toLinkUIFilter = (\n filter: ValidFilter,\n attributeData: AttributeDetailsLinkAttributeWithPermissionsFragment,\n base: IUIFilterBaseAttribute,\n): IUIFilterThrough | IUIFilterLinkValueList | IUIFilterLink => {\n if (_isValidFieldFilterThrough(filter)) {\n const newFilter: IUIFilterThrough = {\n field: filter.field,\n value: filter.value ?? null,\n hidden: filter.hidden ?? false,\n id: window.crypto.randomUUID(),\n condition: filter.condition,\n attribute: {\n ...base,\n linkedLibrary: attributeData.linked_library!,\n smartFilter: attributeData.smart_filter ?? undefined,\n },\n subCondition: (filter.subCondition as RecordFilterCondition) ?? null,\n subField: filter.subField,\n };\n return newFilter;\n }\n\n if (_isValidFieldFilterLinkValuesList(filter, attributeData)) {\n const newFilter: IUIFilterLinkValueList = {\n field: filter.field,\n // TODO: save filter values as string[] when filter and handle fields with libraries\n value: filter.value ? [filter.value] : [],\n hidden: filter.hidden ?? false,\n id: window.crypto.randomUUID(),\n condition: filter.condition,\n attribute: {\n ...base,\n linkedLibrary: attributeData.linked_library!,\n valuesList: (attributeData as LinkAttributeDetailsFragment).valuesList!,\n smartFilter: attributeData.smart_filter ?? undefined,\n },\n withEmptyValues: filter.withEmptyValues ?? false,\n };\n return newFilter;\n }\n\n const newFilter: IUIFilterLink = {\n field: filter.field,\n value: filter.value ?? null,\n hidden: filter.hidden ?? false,\n id: window.crypto.randomUUID(),\n condition: filter.condition,\n attribute: {\n ...base,\n linkedLibrary: attributeData.linked_library!,\n smartFilter: attributeData.smart_filter ?? undefined,\n },\n };\n return newFilter;\n};\n\nconst _toTreeUIFilter = (\n filter: ValidFilter,\n attributeData: AttributeDetailsTreeAttributeWithPermissionsFragment,\n base: IUIFilterBaseAttribute,\n treeFilters: ITreeFilters,\n): IUIFilterTree => {\n const treeData = treeFilters[filter.field];\n\n const newFilter: IUIFilterTree = {\n field: [filter.field],\n // TODO: save filter values as string[] when tree filter and handle fields with libraries\n value: filter.value ? [filter.value] : (treeData?.map(tree => tree.value) ?? null),\n formattedValue: filter.value ? [filter.value] : treeData?.map(tree => tree.label),\n nodes: filter.value ? undefined : treeData?.map(tree => ({libraryId: tree.libraryId, nodeId: tree.nodeId})),\n hidden: filter.hidden ?? false,\n id: window.crypto.randomUUID(),\n attribute: {\n ...base,\n linkedTree: attributeData.linked_tree!,\n },\n condition: (filter.condition as RecordFilterCondition) ?? RecordFilterCondition.EQUAL,\n withEmptyValues: filter.withEmptyValues ?? false,\n };\n return newFilter;\n};\n\n// --- Public exports ---\n\nexport const isLinkAttributeDetails = (\n linkAttributeData: NonNullable<ExplorerLinkAttributeQuery['attributes']>['list'][number],\n): linkAttributeData is LinkAttributeDetailsFragment & {\n id: string;\n multiple_values: boolean;\n permissions: {\n access_attribute: boolean;\n edit_value: boolean;\n };\n} => 'linked_library' in linkAttributeData;\n\nexport type ValidFiltersArgument = GetViewsListQuery['views']['list'][number]['filters'] | UIFilter[];\n\nexport type AttributesById = Record<string, QueryAttributeItem>;\n\nexport const useTransformFilters = () => {\n const {lang} = useLang();\n\n const toValidFilters = (filters: ValidFiltersArgument): ValidFilter[] =>\n (filters ?? []).reduce<ValidFilter[]>((acc, filter) => {\n if (!_isValidFieldFilter(filter)) {\n return acc;\n }\n\n if (filter.field.includes('.')) {\n // Hack: view filters lack the data to transform directly to UI filter —\n // split the field to extract subCondition and subField. May be fixed after LEAVC-569.\n const [field, ...subFields] = filter.field.split('.');\n const throughFilter: ValidFieldFilterThrough = {\n field,\n subField: subFields.join('.'),\n value: filter.value ?? null,\n hidden: filter.hidden ?? false,\n condition: ThroughConditionFilter.THROUGH,\n subCondition: filter.condition,\n };\n acc.push(throughFilter);\n } else {\n acc.push(filter);\n }\n\n return acc;\n }, []);\n\n const toUIFilters = ({\n filters,\n treeFilters,\n attributesDataById,\n t,\n }: {\n filters: ValidFilter[];\n treeFilters: ITreeFilters;\n attributesDataById: AttributesById;\n t: TFunction;\n }): UIFilter[] =>\n (filters ?? []).reduce<UIFilter[]>((acc, filter) => {\n const attributeData = attributesDataById[filter.field];\n if (!attributeData) {\n console.warn(`Attribute ${filter.field} from user view not found in database.`);\n return acc;\n }\n\n const base: IUIFilterBaseAttribute = {\n id: attributeData.id,\n label: localizedTranslation(attributeData.label, lang),\n type: attributeData.type,\n };\n\n if (isStandardAttribute(base.type)) {\n acc.push(_toStandardUIFilter(filter, attributeData, base, t));\n return acc;\n }\n\n if (isLinkAttribute(base.type)) {\n const linkAttr = attributeData as AttributeDetailsLinkAttributeWithPermissionsFragment;\n acc.push(_toLinkUIFilter(filter, linkAttr, base));\n return acc;\n }\n\n if (isTreeAttribute(base.type) && !_isValidFieldFilterThrough(filter)) {\n const treeAttr = attributeData as AttributeDetailsTreeAttributeWithPermissionsFragment;\n acc.push(_toTreeUIFilter(filter, treeAttr, base, treeFilters));\n return acc;\n }\n\n return acc;\n }, []);\n\n return {\n toValidFilters,\n toUIFilters,\n };\n};\n"]}
|
|
1
|
+
{"version":3,"file":"useTransformFilters.js","sourceRoot":"","sources":["../../../src/components/Filters/useTransformFilters.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n type AttributeDetailsLinkAttributeFragment,\n type AttributeDetailsTreeAttributeFragment,\n AttributeFormat,\n AttributeType,\n type ExplorerAttributesQuery,\n type ExplorerLinkAttributeQuery,\n type GetViewsListQuery,\n type LinkAttributeDetailsFragment,\n RecordFilterCondition,\n type StandardAttributeDetailsFragment,\n type ViewDetailsFilterFragment,\n} from '_ui/_gqlTypes';\nimport {\n type UIFilter,\n type IUIFilterBaseAttribute,\n type IUIFilterLink,\n type IUIFilterLinkValueList,\n type IUIFilterStandard,\n type IUIFilterStandardValueList,\n type IUIFilterThrough,\n type IUIFilterTree,\n type ValidFieldFilter,\n type ValidFieldFilterLinkValuesList,\n type ValidFieldFilterStandardValuesList,\n type ValidFieldFilterThrough,\n type ValidFilter,\n} from './_types';\nimport {ThroughConditionFilter} from '_ui/types';\nimport {isLinkAttribute, isStandardAttribute, isTreeAttribute} from '_ui/_utils/attributeType';\nimport {localizedTranslation} from '@leav/utils';\nimport {useLang} from '_ui/hooks';\nimport {valueListTextConditions} from './filter-items/filter-type/useConditionOptionsByType';\nimport dayjs from 'dayjs';\nimport {type TFunction} from 'i18next';\nimport {type ITreeFilters} from './context/useGetTreeFilters';\n\nconst _isValidFieldFilter = (filter: ViewDetailsFilterFragment | UIFilter): filter is ValidFieldFilter =>\n !!filter.field;\n\nconst _isValidFieldFilterThrough = (filter: ValidFilter): filter is ValidFieldFilterThrough =>\n filter.condition === ThroughConditionFilter.THROUGH && !!filter.subCondition && !!filter.subField;\n\nconst _isValidFieldFilterStandardValuesList = (\n filter: ValidFilter,\n attribute: NonNullable<ExplorerAttributesQuery['attributes']>['list'][number],\n): filter is ValidFieldFilterStandardValuesList & {attribute: StandardAttributeDetailsFragment} =>\n valueListTextConditions.includes(filter.condition as RecordFilterCondition) &&\n [AttributeType.simple, AttributeType.advanced].includes(attribute.type) &&\n 'valuesList' in attribute &&\n !!attribute.valuesList?.enable;\n\nconst _isValidFieldFilterLinkValuesList = (\n filter: ValidFilter,\n attribute: NonNullable<ExplorerAttributesQuery['attributes']>['list'][number],\n): filter is ValidFieldFilterLinkValuesList & {attribute: LinkAttributeDetailsFragment} =>\n valueListTextConditions.includes(filter.condition as RecordFilterCondition) &&\n [AttributeType.simple_link, AttributeType.advanced_link].includes(attribute.type) &&\n 'valuesList' in attribute &&\n !!attribute.valuesList?.enable;\n\ntype AttributeDetailsLinkAttributeWithPermissionsFragment = AttributeDetailsLinkAttributeFragment & {\n permissions: {\n access_attribute: boolean;\n };\n};\ntype AttributeDetailsTreeAttributeWithPermissionsFragment = AttributeDetailsTreeAttributeFragment & {\n permissions: {\n access_attribute: boolean;\n };\n};\n\nexport const isLinkAttributeDetails = (\n linkAttributeData: NonNullable<ExplorerLinkAttributeQuery['attributes']>['list'][number],\n): linkAttributeData is LinkAttributeDetailsFragment & {\n id: string;\n multiple_values: boolean;\n permissions: {\n access_attribute: boolean;\n edit_value: boolean;\n };\n} => 'linked_library' in linkAttributeData;\n\nexport type ValidFiltersArgument = GetViewsListQuery['views']['list'][number]['filters'] | UIFilter[];\n\nexport type AttributesById = Record<string, NonNullable<ExplorerAttributesQuery['attributes']>['list'][number]>;\n\nexport const useTransformFilters = () => {\n const {lang} = useLang();\n\n const toValidFilters = (filters: ValidFiltersArgument): ValidFilter[] =>\n (filters ?? []).reduce<ValidFilter[]>((acc, filter) => {\n if (!_isValidFieldFilter(filter)) {\n return acc;\n }\n const _isThroughFilter = filter.field.includes('.');\n\n if (_isThroughFilter) {\n // Hack because view filters does not have the necessary data to be transformed directly to UI filter,\n // we need to split the field to get the subCondition and subField for through filter, may be fix after LEAVC-569\n const [field, ...subFields] = filter.field.split('.');\n const throughFilter: ValidFieldFilterThrough = {\n field,\n subField: subFields.join('.'),\n value: filter.value ?? null,\n hidden: filter.hidden ?? false,\n condition: ThroughConditionFilter.THROUGH,\n subCondition: filter.condition,\n };\n acc.push(throughFilter);\n } else {\n acc.push(filter);\n }\n\n return acc;\n }, []);\n\n const toUIFilters = ({\n filters,\n treeFilters,\n attributesDataById,\n t,\n }: {\n filters: ValidFilter[];\n treeFilters: ITreeFilters;\n attributesDataById: AttributesById;\n t: TFunction;\n }): UIFilter[] =>\n (filters ?? []).reduce<UIFilter[]>((acc, filter) => {\n if (!attributesDataById[filter.field]) {\n console.warn(`Attribute ${filter.field} from user view not found in database.`);\n return acc;\n }\n\n const filterAttributeBase: IUIFilterBaseAttribute = {\n id: attributesDataById[filter.field].id,\n label: localizedTranslation(attributesDataById[filter.field].label, lang),\n type: attributesDataById[filter.field].type,\n };\n\n // filter is standardFilter\n if (isStandardAttribute(filterAttributeBase.type)) {\n const attributeData = attributesDataById[filter.field];\n if (_isValidFieldFilterStandardValuesList(filter, attributeData)) {\n const newFilter: IUIFilterStandardValueList = {\n field: filter.field,\n // TODO : save filter values as string[] when filter and handle fields with libraries\n value: filter.value ? [filter.value] : [],\n hidden: filter.hidden ?? false,\n id: window.crypto.randomUUID(),\n condition: (filter.condition as RecordFilterCondition) ?? null,\n attribute: {\n ...filterAttributeBase,\n format: attributeData.format!,\n valuesList: (attributeData as StandardAttributeDetailsFragment).valuesList!,\n },\n withEmptyValues: filter.withEmptyValues ?? false,\n };\n acc.push(newFilter);\n } else {\n let formattedValue: string;\n if (attributeData.format === AttributeFormat.boolean && filter.value) {\n formattedValue = filter.value === 'true' ? t('explorer.true') : t('explorer.false');\n }\n\n if (attributeData.format === AttributeFormat.date && filter.value) {\n formattedValue = dayjs(filter.value).format('YYYY-MM-DD');\n }\n\n const newFilter: IUIFilterStandard = {\n field: filter.field,\n value: filter.value ?? null,\n formattedValue,\n hidden: filter.hidden ?? false,\n id: window.crypto.randomUUID(),\n condition: (filter.condition as RecordFilterCondition) ?? null,\n attribute: {\n ...filterAttributeBase,\n format: attributeData.format!,\n smartFilter: (attributeData as StandardAttributeDetailsFragment).smart_filter ?? undefined,\n },\n withEmptyValues: filter.withEmptyValues ?? false,\n };\n acc.push(newFilter);\n }\n }\n\n if (isLinkAttribute(filterAttributeBase.type)) {\n const attributeData = attributesDataById[\n filter.field\n ] as AttributeDetailsLinkAttributeWithPermissionsFragment;\n if (_isValidFieldFilterThrough(filter)) {\n const newFilter: IUIFilterThrough = {\n field: filter.field,\n value: filter.value ?? null,\n hidden: filter.hidden ?? false,\n id: window.crypto.randomUUID(),\n condition: filter.condition,\n attribute: {\n ...filterAttributeBase,\n linkedLibrary: attributeData.linked_library!,\n smartFilter: attributeData.smart_filter ?? undefined,\n },\n subCondition: filter.subCondition ?? null,\n subField: filter.subField,\n };\n acc.push(newFilter);\n } else if (_isValidFieldFilterLinkValuesList(filter, attributeData)) {\n const newFilter: IUIFilterLinkValueList = {\n field: filter.field,\n // TODO : save filter values as string[] when filter and handle fields with libraries\n value: filter.value ? [filter.value] : [],\n hidden: filter.hidden ?? false,\n id: window.crypto.randomUUID(),\n condition: filter.condition,\n attribute: {\n ...filterAttributeBase,\n linkedLibrary: attributeData.linked_library!,\n valuesList: (attributeData as LinkAttributeDetailsFragment).valuesList!,\n smartFilter: attributeData.smart_filter ?? undefined,\n },\n withEmptyValues: filter.withEmptyValues ?? false,\n };\n\n acc.push(newFilter);\n } else {\n const newFilter: IUIFilterLink = {\n field: filter.field,\n value: filter.value ?? null,\n hidden: filter.hidden ?? false,\n id: window.crypto.randomUUID(),\n condition: filter.condition,\n attribute: {\n ...filterAttributeBase,\n linkedLibrary: attributeData.linked_library!,\n smartFilter: attributeData.smart_filter ?? undefined,\n },\n };\n\n acc.push(newFilter);\n }\n }\n\n if (isTreeAttribute(filterAttributeBase.type) && !_isValidFieldFilterThrough(filter)) {\n const attributeData = attributesDataById[\n filter.field\n ] as AttributeDetailsTreeAttributeWithPermissionsFragment;\n const newFilter: IUIFilterTree = {\n field: [filter.field],\n // TODO : save filter values as string[] when tree filter and handle fields with libraries\n value: filter.value\n ? [filter.value]\n : treeFilters[filter.field]\n ? treeFilters[filter.field].map(tree => tree.value)\n : null,\n formattedValue: filter.value\n ? [filter.value]\n : treeFilters[filter.field]\n ? treeFilters[filter.field].map(tree => tree.label)\n : undefined,\n nodes: filter.value\n ? undefined\n : treeFilters[filter.field]\n ? treeFilters[filter.field].map(tree => ({libraryId: tree.libraryId, nodeId: tree.nodeId}))\n : undefined,\n hidden: filter.hidden ?? false,\n id: window.crypto.randomUUID(),\n attribute: {\n ...filterAttributeBase,\n linkedTree: attributeData.linked_tree!,\n },\n condition: filter.condition ?? RecordFilterCondition.EQUAL,\n withEmptyValues: filter.withEmptyValues ?? false,\n };\n acc.push(newFilter);\n }\n\n return acc;\n }, []);\n\n return {\n toValidFilters,\n toUIFilters,\n };\n};\n"]}
|
package/dist/components/ImportModal/ImportModalConfigStep/ImportSheetSettings/ImportSheetSettings.js
CHANGED
|
@@ -3,7 +3,7 @@ import { localizedTranslation } from '@leav/utils';
|
|
|
3
3
|
import { Form, Space } from 'antd';
|
|
4
4
|
import { KitSelect } from 'aristid-ds';
|
|
5
5
|
import styled from 'styled-components';
|
|
6
|
-
import useLang from '../../../../hooks/useLang';
|
|
6
|
+
import useLang from '../../../../hooks/useLang/useLang';
|
|
7
7
|
import { useSharedTranslation } from '../../../../hooks/useSharedTranslation';
|
|
8
8
|
import { AttributeType, ImportMode, ImportType, } from '../../../../_gqlTypes';
|
|
9
9
|
import { useImportReducerContext } from '../../importReducer/ImportReducerContext';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImportSheetSettings.js","sourceRoot":"","sources":["../../../../../src/components/ImportModal/ImportModalConfigStep/ImportSheetSettings/ImportSheetSettings.tsx"],"names":[],"mappings":"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","sourcesContent":["import {localizedTranslation} from '@leav/utils';\nimport {Form, Space} from 'antd';\nimport {KitSelect} from 'aristid-ds';\nimport styled from 'styled-components';\nimport useLang from '_ui/hooks/useLang';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {\n type AttributesByLibAttributeFragment,\n type AttributesByLibAttributeTreeAttributeFragment,\n AttributeType,\n ImportMode,\n ImportType,\n type LibraryLightFragment,\n} from '_ui/_gqlTypes';\nimport {useImportReducerContext} from '../../importReducer/ImportReducerContext';\n\ninterface IImportSettingsProps {\n sheetIndex: number;\n libraries: LibraryLightFragment[];\n onLibrarySelect: (sheetIndex: number, library: string) => void;\n onImportTypeSelect: (sheetIndex: number, type: ImportType) => void;\n onImportModeSelect: (sheetIndex: number, mode: ImportMode) => void;\n onLinkAttributeSelect: (sheetIndex: number, attribute: string) => void;\n onTreeLinkLibrarySelect: (sheetIndex: number, library: string) => void;\n}\n\nconst isLinkAttribute = (attribute: AttributesByLibAttributeFragment): boolean =>\n attribute.type === AttributeType.simple_link ||\n attribute.type === AttributeType.advanced_link ||\n attribute.type === AttributeType.tree;\n\nconst SettingsWrapper = styled(Space)`\n && .ant-form-item-label {\n padding: 0;\n font-weight: bold;\n }\n`;\n\nfunction ImportSheetSettings({\n sheetIndex,\n libraries,\n onLibrarySelect,\n onImportTypeSelect,\n onImportModeSelect,\n onLinkAttributeSelect,\n onTreeLinkLibrarySelect,\n}: IImportSettingsProps): JSX.Element {\n const {lang} = useLang();\n const {t} = useSharedTranslation();\n const {state} = useImportReducerContext();\n const sheet = state.sheets[sheetIndex];\n const isSheetIgnored = sheet.type === ImportType.IGNORE;\n\n const selectTreeLinkLibraryOptions =\n sheet.type === ImportType.LINK && sheet.linkAttributeProps?.type === AttributeType.tree\n ? (\n (sheet.linkAttributeProps as AttributesByLibAttributeTreeAttributeFragment)?.linked_tree?.libraries ??\n []\n ).map(treeLib => ({\n key: treeLib.library.id,\n value: treeLib.library.id,\n label: localizedTranslation(treeLib.library.label, lang),\n }))\n : null;\n\n const typeOptions = Object.values(ImportType).map(type => ({\n key: type,\n value: type,\n label: t(`import.types.${type}`),\n }));\n\n const modeOptions = Object.values(ImportMode).map(mode => ({\n key: mode,\n value: mode,\n label: t(`import.modes.${mode}`),\n }));\n\n const librariesOptions = libraries.map(l => ({\n key: l.id,\n value: l.id,\n label: localizedTranslation(l.label, lang) || l.id,\n }));\n\n const linkAttributeOptions = sheet.attributes.filter(isLinkAttribute).map(a => ({\n key: a.id,\n value: a.id,\n label: localizedTranslation(a.label, lang) || a.id,\n }));\n\n return (\n <Form layout=\"vertical\">\n <SettingsWrapper direction=\"horizontal\" size=\"middle\" wrap>\n <Form.Item label={t('import.type')} required>\n <KitSelect\n style={{minWidth: 200}}\n defaultValue={sheet.type}\n placeholder={t('import.select_type')}\n onChange={value => onImportTypeSelect(sheetIndex, value)}\n options={typeOptions}\n />\n </Form.Item>\n {!isSheetIgnored && (\n <>\n <Form.Item label={t('import.mode')} required>\n <KitSelect\n style={{minWidth: 240}}\n defaultValue={sheet.mode}\n placeholder={t('import.select_mode')}\n onChange={value => onImportModeSelect(sheetIndex, value)}\n options={modeOptions}\n />\n </Form.Item>\n <Form.Item label={t('import.library')} required>\n <KitSelect\n style={{minWidth: 200}}\n defaultValue={sheet.library ?? state.defaultLibrary}\n placeholder={t('import.select_library')}\n onChange={value => onLibrarySelect(sheetIndex, value)}\n options={librariesOptions}\n />\n </Form.Item>\n {sheet.type === ImportType.LINK && sheet.library && (\n <Form.Item label={t('import.link_attribute')} required>\n <KitSelect\n style={{minWidth: 200}}\n defaultValue={sheet.linkAttribute}\n value={sheet.linkAttribute}\n placeholder={t('import.select_link_attribute')}\n onChange={value => onLinkAttributeSelect(sheetIndex, value)}\n options={linkAttributeOptions}\n />\n </Form.Item>\n )}\n {sheet.type === ImportType.LINK && sheet.linkAttributeProps?.type === AttributeType.tree && (\n <Form.Item label={t('import.tree_link_library')} required>\n <KitSelect\n style={{minWidth: 200}}\n value={sheet.treeLinkLibrary}\n placeholder={t('import.select_library')}\n onChange={value => onTreeLinkLibrarySelect(sheetIndex, value)}\n options={selectTreeLinkLibraryOptions}\n />\n </Form.Item>\n )}\n </>\n )}\n </SettingsWrapper>\n </Form>\n );\n}\n\nexport default ImportSheetSettings;\n"]}
|
|
1
|
+
{"version":3,"file":"ImportSheetSettings.js","sourceRoot":"","sources":["../../../../../src/components/ImportModal/ImportModalConfigStep/ImportSheetSettings/ImportSheetSettings.tsx"],"names":[],"mappings":"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","sourcesContent":["import {localizedTranslation} from '@leav/utils';\nimport {Form, Space} from 'antd';\nimport {KitSelect} from 'aristid-ds';\nimport styled from 'styled-components';\nimport useLang from '_ui/hooks/useLang/useLang';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {\n type AttributesByLibAttributeFragment,\n type AttributesByLibAttributeTreeAttributeFragment,\n AttributeType,\n ImportMode,\n ImportType,\n type LibraryLightFragment,\n} from '_ui/_gqlTypes';\nimport {useImportReducerContext} from '../../importReducer/ImportReducerContext';\n\ninterface IImportSettingsProps {\n sheetIndex: number;\n libraries: LibraryLightFragment[];\n onLibrarySelect: (sheetIndex: number, library: string) => void;\n onImportTypeSelect: (sheetIndex: number, type: ImportType) => void;\n onImportModeSelect: (sheetIndex: number, mode: ImportMode) => void;\n onLinkAttributeSelect: (sheetIndex: number, attribute: string) => void;\n onTreeLinkLibrarySelect: (sheetIndex: number, library: string) => void;\n}\n\nconst isLinkAttribute = (attribute: AttributesByLibAttributeFragment): boolean =>\n attribute.type === AttributeType.simple_link ||\n attribute.type === AttributeType.advanced_link ||\n attribute.type === AttributeType.tree;\n\nconst SettingsWrapper = styled(Space)`\n && .ant-form-item-label {\n padding: 0;\n font-weight: bold;\n }\n`;\n\nfunction ImportSheetSettings({\n sheetIndex,\n libraries,\n onLibrarySelect,\n onImportTypeSelect,\n onImportModeSelect,\n onLinkAttributeSelect,\n onTreeLinkLibrarySelect,\n}: IImportSettingsProps): JSX.Element {\n const {lang} = useLang();\n const {t} = useSharedTranslation();\n const {state} = useImportReducerContext();\n const sheet = state.sheets[sheetIndex];\n const isSheetIgnored = sheet.type === ImportType.IGNORE;\n\n const selectTreeLinkLibraryOptions =\n sheet.type === ImportType.LINK && sheet.linkAttributeProps?.type === AttributeType.tree\n ? (\n (sheet.linkAttributeProps as AttributesByLibAttributeTreeAttributeFragment)?.linked_tree?.libraries ??\n []\n ).map(treeLib => ({\n key: treeLib.library.id,\n value: treeLib.library.id,\n label: localizedTranslation(treeLib.library.label, lang),\n }))\n : null;\n\n const typeOptions = Object.values(ImportType).map(type => ({\n key: type,\n value: type,\n label: t(`import.types.${type}`),\n }));\n\n const modeOptions = Object.values(ImportMode).map(mode => ({\n key: mode,\n value: mode,\n label: t(`import.modes.${mode}`),\n }));\n\n const librariesOptions = libraries.map(l => ({\n key: l.id,\n value: l.id,\n label: localizedTranslation(l.label, lang) || l.id,\n }));\n\n const linkAttributeOptions = sheet.attributes.filter(isLinkAttribute).map(a => ({\n key: a.id,\n value: a.id,\n label: localizedTranslation(a.label, lang) || a.id,\n }));\n\n return (\n <Form layout=\"vertical\">\n <SettingsWrapper direction=\"horizontal\" size=\"middle\" wrap>\n <Form.Item label={t('import.type')} required>\n <KitSelect\n style={{minWidth: 200}}\n defaultValue={sheet.type}\n placeholder={t('import.select_type')}\n onChange={value => onImportTypeSelect(sheetIndex, value)}\n options={typeOptions}\n />\n </Form.Item>\n {!isSheetIgnored && (\n <>\n <Form.Item label={t('import.mode')} required>\n <KitSelect\n style={{minWidth: 240}}\n defaultValue={sheet.mode}\n placeholder={t('import.select_mode')}\n onChange={value => onImportModeSelect(sheetIndex, value)}\n options={modeOptions}\n />\n </Form.Item>\n <Form.Item label={t('import.library')} required>\n <KitSelect\n style={{minWidth: 200}}\n defaultValue={sheet.library ?? state.defaultLibrary}\n placeholder={t('import.select_library')}\n onChange={value => onLibrarySelect(sheetIndex, value)}\n options={librariesOptions}\n />\n </Form.Item>\n {sheet.type === ImportType.LINK && sheet.library && (\n <Form.Item label={t('import.link_attribute')} required>\n <KitSelect\n style={{minWidth: 200}}\n defaultValue={sheet.linkAttribute}\n value={sheet.linkAttribute}\n placeholder={t('import.select_link_attribute')}\n onChange={value => onLinkAttributeSelect(sheetIndex, value)}\n options={linkAttributeOptions}\n />\n </Form.Item>\n )}\n {sheet.type === ImportType.LINK && sheet.linkAttributeProps?.type === AttributeType.tree && (\n <Form.Item label={t('import.tree_link_library')} required>\n <KitSelect\n style={{minWidth: 200}}\n value={sheet.treeLinkLibrary}\n placeholder={t('import.select_library')}\n onChange={value => onTreeLinkLibrarySelect(sheetIndex, value)}\n options={selectTreeLinkLibraryOptions}\n />\n </Form.Item>\n )}\n </>\n )}\n </SettingsWrapper>\n </Form>\n );\n}\n\nexport default ImportSheetSettings;\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { localizedTranslation } from '@leav/utils';
|
|
3
|
-
import useLang from '../../hooks/useLang';
|
|
3
|
+
import useLang from '../../hooks/useLang/useLang';
|
|
4
4
|
import { PreviewSize } from '../../constants';
|
|
5
5
|
import { EntityCard } from '../EntityCard';
|
|
6
6
|
const _getPreviewBySize = (preview, size) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecordCard.js","sourceRoot":"","sources":["../../../src/components/RecordCard/RecordCard.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,oBAAoB,EAAC,MAAM,aAAa,CAAC;AACjD,OAAO,OAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"RecordCard.js","sourceRoot":"","sources":["../../../src/components/RecordCard/RecordCard.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,oBAAoB,EAAC,MAAM,aAAa,CAAC;AACjD,OAAO,OAAO,MAAM,2BAA2B,CAAC;AAChD,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAC,UAAU,EAAmB,MAAM,eAAe,CAAC;AAG3D,MAAM,iBAAiB,GAAG,CAAC,OAA0C,EAAE,IAAkB,EAAE,EAAE;IACzF,MAAM,qBAAqB,GAAoC;QAC3D,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM;QAC1B,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM;QAC3B,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,OAAO;QAC7B,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,QAAQ;KAC9B,CAAC;IAEF,MAAM,WAAW,GAAW,CAAC,OAAO,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,IAAI,OAAO,EAAE,KAAK,CAAW,CAAC;IAEjG,OAAO,WAAW,IAAI,EAAE,CAAC;AAC7B,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,EAChB,MAAM,EACN,IAAI,EACJ,KAAK,EACL,YAAY,EACZ,IAAI,EACJ,WAAW,GAAG,IAAI,EAClB,WAAW,GAAG,IAAI,EAClB,SAAS,GAAG,IAAI,EAChB,IAAI,GAAG,KAAK,EACZ,UAAU,GAAG,KAAK,GACH,EAAe,EAAE;IAChC,MAAM,EAAC,IAAI,EAAE,QAAQ,EAAC,GAAG,OAAO,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,EAAE,CAAC;IACxC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ;QAC5B,CAAC,CAAC,MAAM,CAAC,QAAQ;QACjB,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,IAAI,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;IAE1F,MAAM,cAAc,GAAgB;QAChC,KAAK;QACL,QAAQ;QACR,OAAO,EAAE,iBAAiB,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC;QAChD,KAAK,EAAE,MAAM,CAAC,KAAK;KACtB,CAAC;IAEF,OAAO,CACH,KAAC,UAAU,IACP,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,WAAW,EACzB,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,YAAY,GAC5B,CACL,CAAC;AACN,CAAC,CAAC;AAEF,eAAe,UAAU,CAAC","sourcesContent":["import {localizedTranslation} from '@leav/utils';\nimport useLang from '_ui/hooks/useLang/useLang';\nimport {PreviewSize} from '../../constants';\nimport {type IRecordIdentityWhoAmI} from '../../types/records';\nimport {EntityCard, type IEntityData} from '../EntityCard';\nimport {type IRecordCardProps} from './_types';\n\nconst _getPreviewBySize = (preview?: IRecordIdentityWhoAmI['preview'], size?: PreviewSize) => {\n const fileSizeByPreviewSize: {[size in PreviewSize]: string} = {\n [PreviewSize.TINY]: 'tiny',\n [PreviewSize.SMALL]: 'tiny',\n [PreviewSize.MEDIUM]: 'small',\n [PreviewSize.BIG]: 'medium',\n };\n\n const previewPath: string = (preview?.[fileSizeByPreviewSize[size]] ?? preview?.small) as string;\n\n return previewPath ?? '';\n};\n\nconst RecordCard = ({\n record,\n size,\n style,\n previewStyle,\n lang,\n withPreview = true,\n withLibrary = true,\n withColor = true,\n tile = false,\n simplistic = false,\n}: IRecordCardProps): JSX.Element => {\n const {lang: userLang} = useLang();\n const label = record.label || record.id;\n const subLabel = record.subLabel\n ? record.subLabel\n : localizedTranslation(record.library?.label, lang ?? userLang) || record.library?.id;\n\n const recordIdentity: IEntityData = {\n label,\n subLabel,\n preview: _getPreviewBySize(record.preview, size),\n color: record.color,\n };\n\n return (\n <EntityCard\n entity={recordIdentity}\n style={style}\n size={size}\n withPreview={withPreview}\n withSubLabel={withLibrary}\n tile={tile}\n simplistic={simplistic}\n withColor={withColor}\n previewStyle={previewStyle}\n />\n );\n};\n\nexport default RecordCard;\n"]}
|
|
@@ -20,6 +20,6 @@ export const ToggleSidebarButton = () => {
|
|
|
20
20
|
if (!state.enableSidebar) {
|
|
21
21
|
return null;
|
|
22
22
|
}
|
|
23
|
-
return (_jsx(KitTooltip, { title: buttonLabel,
|
|
23
|
+
return (_jsx(KitTooltip, { title: buttonLabel, children: _jsx(KitButton, { id: EDIT_RECORD_SIDEBAR_TOGGLE_BUTON_ID, type: "secondary", size: "m", active: isOpen, icon: _jsx(FontAwesomeIcon, { icon: faInfo }), onClick: toggleSidebar, "aria-label": buttonLabel }) }));
|
|
24
24
|
};
|
|
25
25
|
//# sourceMappingURL=SidebarButton.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SidebarButton.js","sourceRoot":"","sources":["../../../../src/components/RecordEdition/EditRecordButtons/SidebarButton.tsx"],"names":[],"mappings":";AACA,OAAO,EAAC,SAAS,EAAE,UAAU,EAAC,MAAM,YAAY,CAAC;AACjD,OAAO,EAAC,eAAe,EAAC,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AACzD,OAAO,EAAC,oBAAoB,EAAC,MAAM,2CAA2C,CAAC;AAC/E,OAAO,EAAC,6BAA6B,EAAC,MAAM,wCAAwC,CAAC;AACrF,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAC,mCAAmC,EAAC,MAAM,cAAc,CAAC;AAEjE,MAAM,CAAC,MAAM,mBAAmB,GAAsB,GAAG,EAAE;IACvD,MAAM,EAAC,CAAC,EAAC,GAAG,oBAAoB,EAAE,CAAC;IACnC,MAAM,EAAC,KAAK,EAAE,QAAQ,EAAC,GAAG,oBAAoB,EAAE,CAAC;IACjD,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC;IAE5C,MAAM,aAAa,GAAG,GAAG,EAAE;QACvB,QAAQ,CAAC;YACL,IAAI,EAAE,6BAA6B,CAAC,mBAAmB;YACvD,MAAM,EAAE,CAAC,MAAM;SAClB,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC;IAElG,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,CACH,KAAC,UAAU,IAAC,KAAK,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"SidebarButton.js","sourceRoot":"","sources":["../../../../src/components/RecordEdition/EditRecordButtons/SidebarButton.tsx"],"names":[],"mappings":";AACA,OAAO,EAAC,SAAS,EAAE,UAAU,EAAC,MAAM,YAAY,CAAC;AACjD,OAAO,EAAC,eAAe,EAAC,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AACzD,OAAO,EAAC,oBAAoB,EAAC,MAAM,2CAA2C,CAAC;AAC/E,OAAO,EAAC,6BAA6B,EAAC,MAAM,wCAAwC,CAAC;AACrF,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAC,mCAAmC,EAAC,MAAM,cAAc,CAAC;AAEjE,MAAM,CAAC,MAAM,mBAAmB,GAAsB,GAAG,EAAE;IACvD,MAAM,EAAC,CAAC,EAAC,GAAG,oBAAoB,EAAE,CAAC;IACnC,MAAM,EAAC,KAAK,EAAE,QAAQ,EAAC,GAAG,oBAAoB,EAAE,CAAC;IACjD,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC;IAE5C,MAAM,aAAa,GAAG,GAAG,EAAE;QACvB,QAAQ,CAAC;YACL,IAAI,EAAE,6BAA6B,CAAC,mBAAmB;YACvD,MAAM,EAAE,CAAC,MAAM;SAClB,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC;IAElG,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,CACH,KAAC,UAAU,IAAC,KAAK,EAAE,WAAW,YAC1B,KAAC,SAAS,IACN,EAAE,EAAE,mCAAmC,EACvC,IAAI,EAAC,WAAW,EAChB,IAAI,EAAC,GAAG,EACR,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,KAAC,eAAe,IAAC,IAAI,EAAE,MAAM,GAAI,EACvC,OAAO,EAAE,aAAa,gBACV,WAAW,GACzB,GACO,CAChB,CAAC;AACN,CAAC,CAAC","sourcesContent":["import {type FunctionComponent} from 'react';\nimport {KitButton, KitTooltip} from 'aristid-ds';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport {faInfo} from '@fortawesome/free-solid-svg-icons';\nimport {useEditRecordReducer} from '../editRecordReducer/useEditRecordReducer';\nimport {EditRecordReducerActionsTypes} from '../editRecordReducer/editRecordReducer';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {EDIT_RECORD_SIDEBAR_TOGGLE_BUTON_ID} from '../constants';\n\nexport const ToggleSidebarButton: FunctionComponent = () => {\n const {t} = useSharedTranslation();\n const {state, dispatch} = useEditRecordReducer();\n const isOpen = state.isOpenSidebar ?? false;\n\n const toggleSidebar = () => {\n dispatch({\n type: EditRecordReducerActionsTypes.SET_SIDEBAR_IS_OPEN,\n isOpen: !isOpen,\n });\n };\n\n const buttonLabel = isOpen ? t('record_edition.close_sidebar') : t('record_edition.open_sidebar');\n\n if (!state.enableSidebar) {\n return null;\n }\n\n return (\n <KitTooltip title={buttonLabel}>\n <KitButton\n id={EDIT_RECORD_SIDEBAR_TOGGLE_BUTON_ID}\n type=\"secondary\"\n size=\"m\"\n active={isOpen}\n icon={<FontAwesomeIcon icon={faInfo} />}\n onClick={toggleSidebar}\n aria-label={buttonLabel}\n />\n </KitTooltip>\n );\n};\n"]}
|
|
@@ -4,7 +4,6 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
|
4
4
|
import { LINK_RECORDS_MODAL_CLASSNAME } from '../../../../../../../components/Explorer/_constants';
|
|
5
5
|
import { APICallStatus, } from '../../../../../../../components/RecordEdition/EditRecordContent/_types';
|
|
6
6
|
import { SelectRecordForLinkModal } from '../../../../../../../components/SelectRecordForLinkModal';
|
|
7
|
-
import { TOOLTIP_DEFAULT_DELAY_IN_SECONDS } from '../../../../../../../constants';
|
|
8
7
|
import { AntForm, KitButton, KitTooltip } from 'aristid-ds';
|
|
9
8
|
import { useState } from 'react';
|
|
10
9
|
import { useSharedTranslation } from '../../../../../../../hooks/useSharedTranslation';
|
|
@@ -60,7 +59,7 @@ export const useLinkRecord = ({ attribute, isReadOnly, onValueSubmit, backendVal
|
|
|
60
59
|
const valuesList = isValuesListEnabled ? attribute.linkValuesList?.values?.map(value => value.id) : undefined;
|
|
61
60
|
const allowFreeEntry = isValuesListEnabled ? Boolean(attribute.linkValuesList?.allowFreeEntry) : true;
|
|
62
61
|
return {
|
|
63
|
-
LinkRecordButton: !isReadOnly ? (_jsxs(_Fragment, { children: [_jsx(KitTooltip, { title: isReplacementMode ? t('global.replace') : t('global.add'),
|
|
62
|
+
LinkRecordButton: !isReadOnly ? (_jsxs(_Fragment, { children: [_jsx(KitTooltip, { title: isReplacementMode ? t('global.replace') : t('global.add'), children: _jsx(KitButton, { type: "secondary", size: "m", icon: _jsx(FontAwesomeIcon, { icon: faPlus }), onClick: () => {
|
|
64
63
|
setIsModalOpen(true);
|
|
65
64
|
} }) }), linkedTreeId ? (_jsx(SelectTreeNodeModal, { open: isModalOpen, attribute: {
|
|
66
65
|
multiple_values: attribute.multiple_values,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLinkRecord.js","sourceRoot":"","sources":["../../../../../../../../src/components/RecordEdition/EditRecordContent/uiElements/LinkField/tag/link-record/useLinkRecord.tsx"],"names":[],"mappings":"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","sourcesContent":["import {faPlus} from '@fortawesome/free-solid-svg-icons';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport {\n type JoinLibraryContextFragment,\n type ExplorerSelectionIdsQuery,\n type RecordFormAttributeLinkAttributeFragment,\n} from '_ui/_gqlTypes';\nimport {LINK_RECORDS_MODAL_CLASSNAME} from '_ui/components/Explorer/_constants';\nimport {\n APICallStatus,\n type ISubmitMultipleResult,\n type SubmitValueFunc,\n} from '_ui/components/RecordEdition/EditRecordContent/_types';\nimport {SelectRecordForLinkModal} from '_ui/components/SelectRecordForLinkModal';\nimport {TOOLTIP_DEFAULT_DELAY_IN_SECONDS} from '_ui/constants';\nimport {AntForm, KitButton, KitTooltip} from 'aristid-ds';\nimport {type Dispatch, type SetStateAction, useState} from 'react';\nimport {type RecordFormElementsValueLinkValue} from '_ui/hooks/useGetRecordForm';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {SelectTreeNodeModal} from '../../../TreeField/manage-tree-node-selection/SelectTreeNodeModal';\n\ninterface IUseLinkRecordProps {\n attribute: RecordFormAttributeLinkAttributeFragment;\n isReadOnly: boolean;\n onValueSubmit: SubmitValueFunc;\n backendValues: RecordFormElementsValueLinkValue[];\n setBackendValues: Dispatch<SetStateAction<RecordFormElementsValueLinkValue[]>>;\n joinLibraryContext?: JoinLibraryContextFragment;\n}\n\nexport const useLinkRecord = ({\n attribute,\n isReadOnly,\n onValueSubmit,\n backendValues,\n setBackendValues,\n joinLibraryContext,\n}: IUseLinkRecordProps) => {\n const [isModalOpen, setIsModalOpen] = useState(false);\n const {t} = useSharedTranslation();\n const antdForm = AntForm.useFormInstance();\n\n const _buildValueToSubmit = (recordId: string) => ({\n id: recordId,\n whoAmI: {id: recordId, library: {id: attribute.linked_library?.id}},\n });\n\n const _handleLinkRecord = async (data: ExplorerSelectionIdsQuery) => {\n let submitRes: ISubmitMultipleResult;\n\n if (attribute.multiple_values) {\n submitRes = await onValueSubmit(\n data.records.list.map(record => ({value: _buildValueToSubmit(record.id), idValue: null, attribute})),\n null,\n );\n } else {\n submitRes = await onValueSubmit(\n [\n {\n value: _buildValueToSubmit(data.records.list[0].id),\n idValue: backendValues[0]?.id_value ?? null,\n attribute,\n },\n ],\n null,\n );\n }\n\n if (submitRes.status === APICallStatus.SUCCESS) {\n const linkValues = submitRes.values as unknown as RecordFormElementsValueLinkValue[];\n\n if (attribute.multiple_values) {\n setBackendValues(previousBackendValues => [...previousBackendValues, ...linkValues]);\n } else {\n setBackendValues([linkValues[0]]);\n }\n }\n\n if (submitRes.status === APICallStatus.ERROR) {\n antdForm.setFields([\n {\n name: attribute.id,\n errors: [submitRes.error],\n },\n ]);\n }\n };\n\n const isReplacementMode = backendValues.length > 0 && !attribute.multiple_values;\n\n const linkedLibraryId =\n joinLibraryContext &&\n 'linked_library' in joinLibraryContext.mandatoryAttribute &&\n joinLibraryContext.mandatoryAttribute.linked_library?.id;\n\n const linkedTreeId =\n joinLibraryContext &&\n 'linked_tree' in joinLibraryContext.mandatoryAttribute &&\n joinLibraryContext.mandatoryAttribute.linked_tree?.id;\n\n const isValuesListEnabled = attribute.linkValuesList?.enable;\n\n const valuesList = isValuesListEnabled ? attribute.linkValuesList?.values?.map(value => value.id) : undefined;\n\n const allowFreeEntry = isValuesListEnabled ? Boolean(attribute.linkValuesList?.allowFreeEntry) : true;\n\n return {\n LinkRecordButton: !isReadOnly ? (\n <>\n <KitTooltip\n title={isReplacementMode ? t('global.replace') : t('global.add')}\n mouseEnterDelay={TOOLTIP_DEFAULT_DELAY_IN_SECONDS}\n >\n <KitButton\n type=\"secondary\"\n size=\"m\"\n icon={<FontAwesomeIcon icon={faPlus} />}\n onClick={() => {\n setIsModalOpen(true);\n }}\n />\n </KitTooltip>\n {linkedTreeId ? (\n <SelectTreeNodeModal\n open={isModalOpen}\n attribute={{\n multiple_values: attribute.multiple_values,\n linked_tree: {\n id: linkedTreeId,\n },\n }}\n title={t(\n attribute.multiple_values ? 'tree-node-selection.title_many' : 'tree-node-selection.title',\n )}\n // We can select new node(s), ignoring current value(s).\n // Selected element might be duplicated in link attribute in backend for now.\n backendValues={[]}\n onClose={() => setIsModalOpen(false)}\n onConfirm={async selectedNodes => {\n const nodeIds = selectedNodes.map(node => node.id);\n await _handleLinkRecord({records: {list: nodeIds.map(id => ({id}))}});\n }}\n />\n ) : (\n <SelectRecordForLinkModal\n className={LINK_RECORDS_MODAL_CLASSNAME}\n open={isModalOpen}\n childLibraryId={linkedLibraryId || attribute.linked_library?.id}\n onSelectionCompleted={async data => {\n await _handleLinkRecord(data);\n setIsModalOpen(false);\n }}\n columnsToDisplay={[]} // TODO: One day, we should be able to choose the columns to display from a given viewId\n replacementMode={isReplacementMode}\n selectionMode={!attribute.multiple_values ? 'simple' : 'multiple'}\n hideSelectAllAction={!attribute.multiple_values}\n valuesList={valuesList}\n allowFreeEntry={allowFreeEntry}\n isMultivalue={attribute.multiple_values}\n onClose={() => setIsModalOpen(false)}\n joinLibraryContext={joinLibraryContext}\n />\n )}\n </>\n ) : undefined,\n };\n};\n"]}
|
|
1
|
+
{"version":3,"file":"useLinkRecord.js","sourceRoot":"","sources":["../../../../../../../../src/components/RecordEdition/EditRecordContent/uiElements/LinkField/tag/link-record/useLinkRecord.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AACzD,OAAO,EAAC,eAAe,EAAC,MAAM,gCAAgC,CAAC;AAM/D,OAAO,EAAC,4BAA4B,EAAC,MAAM,oCAAoC,CAAC;AAChF,OAAO,EACH,aAAa,GAGhB,MAAM,uDAAuD,CAAC;AAC/D,OAAO,EAAC,wBAAwB,EAAC,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAC,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAqC,QAAQ,EAAC,MAAM,OAAO,CAAC;AAEnE,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAC,mBAAmB,EAAC,MAAM,mEAAmE,CAAC;AAWtG,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAC1B,SAAS,EACT,UAAU,EACV,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,kBAAkB,GACA,EAAE,EAAE;IACtB,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,EAAC,CAAC,EAAC,GAAG,oBAAoB,EAAE,CAAC;IACnC,MAAM,QAAQ,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAE3C,MAAM,mBAAmB,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,CAAC;QAC/C,EAAE,EAAE,QAAQ;QACZ,MAAM,EAAE,EAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAC,EAAE,EAAE,SAAS,CAAC,cAAc,EAAE,EAAE,EAAC,EAAC;KACtE,CAAC,CAAC;IAEH,MAAM,iBAAiB,GAAG,KAAK,EAAE,IAA+B,EAAE,EAAE;QAChE,IAAI,SAAgC,CAAC;QAErC,IAAI,SAAS,CAAC,eAAe,EAAE,CAAC;YAC5B,SAAS,GAAG,MAAM,aAAa,CAC3B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAC,KAAK,EAAE,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAC,CAAC,CAAC,EACpG,IAAI,CACP,CAAC;QACN,CAAC;aAAM,CAAC;YACJ,SAAS,GAAG,MAAM,aAAa,CAC3B;gBACI;oBACI,KAAK,EAAE,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACnD,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,IAAI,IAAI;oBAC3C,SAAS;iBACZ;aACJ,EACD,IAAI,CACP,CAAC;QACN,CAAC;QAED,IAAI,SAAS,CAAC,MAAM,KAAK,aAAa,CAAC,OAAO,EAAE,CAAC;YAC7C,MAAM,UAAU,GAAG,SAAS,CAAC,MAAuD,CAAC;YAErF,IAAI,SAAS,CAAC,eAAe,EAAE,CAAC;gBAC5B,gBAAgB,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,GAAG,qBAAqB,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC;YACzF,CAAC;iBAAM,CAAC;gBACJ,gBAAgB,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtC,CAAC;QACL,CAAC;QAED,IAAI,SAAS,CAAC,MAAM,KAAK,aAAa,CAAC,KAAK,EAAE,CAAC;YAC3C,QAAQ,CAAC,SAAS,CAAC;gBACf;oBACI,IAAI,EAAE,SAAS,CAAC,EAAE;oBAClB,MAAM,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;iBAC5B;aACJ,CAAC,CAAC;QACP,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,iBAAiB,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC;IAEjF,MAAM,eAAe,GACjB,kBAAkB;QAClB,gBAAgB,IAAI,kBAAkB,CAAC,kBAAkB;QACzD,kBAAkB,CAAC,kBAAkB,CAAC,cAAc,EAAE,EAAE,CAAC;IAE7D,MAAM,YAAY,GACd,kBAAkB;QAClB,aAAa,IAAI,kBAAkB,CAAC,kBAAkB;QACtD,kBAAkB,CAAC,kBAAkB,CAAC,WAAW,EAAE,EAAE,CAAC;IAE1D,MAAM,mBAAmB,GAAG,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC;IAE7D,MAAM,UAAU,GAAG,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAE9G,MAAM,cAAc,GAAG,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEtG,OAAO;QACH,gBAAgB,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAC5B,8BACI,KAAC,UAAU,IAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,YACxE,KAAC,SAAS,IACN,IAAI,EAAC,WAAW,EAChB,IAAI,EAAC,GAAG,EACR,IAAI,EAAE,KAAC,eAAe,IAAC,IAAI,EAAE,MAAM,GAAI,EACvC,OAAO,EAAE,GAAG,EAAE;4BACV,cAAc,CAAC,IAAI,CAAC,CAAC;wBACzB,CAAC,GACH,GACO,EACZ,YAAY,CAAC,CAAC,CAAC,CACZ,KAAC,mBAAmB,IAChB,IAAI,EAAE,WAAW,EACjB,SAAS,EAAE;wBACP,eAAe,EAAE,SAAS,CAAC,eAAe;wBAC1C,WAAW,EAAE;4BACT,EAAE,EAAE,YAAY;yBACnB;qBACJ,EACD,KAAK,EAAE,CAAC,CACJ,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,2BAA2B,CAC7F;oBACD,wDAAwD;oBACxD,6EAA6E;oBAC7E,aAAa,EAAE,EAAE,EACjB,OAAO,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,EACpC,SAAS,EAAE,KAAK,EAAC,aAAa,EAAC,EAAE;wBAC7B,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBACnD,MAAM,iBAAiB,CAAC,EAAC,OAAO,EAAE,EAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,CAAC;oBAC1E,CAAC,GACH,CACL,CAAC,CAAC,CAAC,CACA,KAAC,wBAAwB,IACrB,SAAS,EAAE,4BAA4B,EACvC,IAAI,EAAE,WAAW,EACjB,cAAc,EAAE,eAAe,IAAI,SAAS,CAAC,cAAc,EAAE,EAAE,EAC/D,oBAAoB,EAAE,KAAK,EAAC,IAAI,EAAC,EAAE;wBAC/B,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;wBAC9B,cAAc,CAAC,KAAK,CAAC,CAAC;oBAC1B,CAAC,EACD,gBAAgB,EAAE,EAAE,EACpB,eAAe,EAAE,iBAAiB,EAClC,aAAa,EAAE,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,EACjE,mBAAmB,EAAE,CAAC,SAAS,CAAC,eAAe,EAC/C,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,SAAS,CAAC,eAAe,EACvC,OAAO,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,EACpC,kBAAkB,EAAE,kBAAkB,GACxC,CACL,IACF,CACN,CAAC,CAAC,CAAC,SAAS;KAChB,CAAC;AACN,CAAC,CAAC","sourcesContent":["import {faPlus} from '@fortawesome/free-solid-svg-icons';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport {\n type JoinLibraryContextFragment,\n type ExplorerSelectionIdsQuery,\n type RecordFormAttributeLinkAttributeFragment,\n} from '_ui/_gqlTypes';\nimport {LINK_RECORDS_MODAL_CLASSNAME} from '_ui/components/Explorer/_constants';\nimport {\n APICallStatus,\n type ISubmitMultipleResult,\n type SubmitValueFunc,\n} from '_ui/components/RecordEdition/EditRecordContent/_types';\nimport {SelectRecordForLinkModal} from '_ui/components/SelectRecordForLinkModal';\nimport {AntForm, KitButton, KitTooltip} from 'aristid-ds';\nimport {type Dispatch, type SetStateAction, useState} from 'react';\nimport {type RecordFormElementsValueLinkValue} from '_ui/hooks/useGetRecordForm';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {SelectTreeNodeModal} from '../../../TreeField/manage-tree-node-selection/SelectTreeNodeModal';\n\ninterface IUseLinkRecordProps {\n attribute: RecordFormAttributeLinkAttributeFragment;\n isReadOnly: boolean;\n onValueSubmit: SubmitValueFunc;\n backendValues: RecordFormElementsValueLinkValue[];\n setBackendValues: Dispatch<SetStateAction<RecordFormElementsValueLinkValue[]>>;\n joinLibraryContext?: JoinLibraryContextFragment;\n}\n\nexport const useLinkRecord = ({\n attribute,\n isReadOnly,\n onValueSubmit,\n backendValues,\n setBackendValues,\n joinLibraryContext,\n}: IUseLinkRecordProps) => {\n const [isModalOpen, setIsModalOpen] = useState(false);\n const {t} = useSharedTranslation();\n const antdForm = AntForm.useFormInstance();\n\n const _buildValueToSubmit = (recordId: string) => ({\n id: recordId,\n whoAmI: {id: recordId, library: {id: attribute.linked_library?.id}},\n });\n\n const _handleLinkRecord = async (data: ExplorerSelectionIdsQuery) => {\n let submitRes: ISubmitMultipleResult;\n\n if (attribute.multiple_values) {\n submitRes = await onValueSubmit(\n data.records.list.map(record => ({value: _buildValueToSubmit(record.id), idValue: null, attribute})),\n null,\n );\n } else {\n submitRes = await onValueSubmit(\n [\n {\n value: _buildValueToSubmit(data.records.list[0].id),\n idValue: backendValues[0]?.id_value ?? null,\n attribute,\n },\n ],\n null,\n );\n }\n\n if (submitRes.status === APICallStatus.SUCCESS) {\n const linkValues = submitRes.values as unknown as RecordFormElementsValueLinkValue[];\n\n if (attribute.multiple_values) {\n setBackendValues(previousBackendValues => [...previousBackendValues, ...linkValues]);\n } else {\n setBackendValues([linkValues[0]]);\n }\n }\n\n if (submitRes.status === APICallStatus.ERROR) {\n antdForm.setFields([\n {\n name: attribute.id,\n errors: [submitRes.error],\n },\n ]);\n }\n };\n\n const isReplacementMode = backendValues.length > 0 && !attribute.multiple_values;\n\n const linkedLibraryId =\n joinLibraryContext &&\n 'linked_library' in joinLibraryContext.mandatoryAttribute &&\n joinLibraryContext.mandatoryAttribute.linked_library?.id;\n\n const linkedTreeId =\n joinLibraryContext &&\n 'linked_tree' in joinLibraryContext.mandatoryAttribute &&\n joinLibraryContext.mandatoryAttribute.linked_tree?.id;\n\n const isValuesListEnabled = attribute.linkValuesList?.enable;\n\n const valuesList = isValuesListEnabled ? attribute.linkValuesList?.values?.map(value => value.id) : undefined;\n\n const allowFreeEntry = isValuesListEnabled ? Boolean(attribute.linkValuesList?.allowFreeEntry) : true;\n\n return {\n LinkRecordButton: !isReadOnly ? (\n <>\n <KitTooltip title={isReplacementMode ? t('global.replace') : t('global.add')}>\n <KitButton\n type=\"secondary\"\n size=\"m\"\n icon={<FontAwesomeIcon icon={faPlus} />}\n onClick={() => {\n setIsModalOpen(true);\n }}\n />\n </KitTooltip>\n {linkedTreeId ? (\n <SelectTreeNodeModal\n open={isModalOpen}\n attribute={{\n multiple_values: attribute.multiple_values,\n linked_tree: {\n id: linkedTreeId,\n },\n }}\n title={t(\n attribute.multiple_values ? 'tree-node-selection.title_many' : 'tree-node-selection.title',\n )}\n // We can select new node(s), ignoring current value(s).\n // Selected element might be duplicated in link attribute in backend for now.\n backendValues={[]}\n onClose={() => setIsModalOpen(false)}\n onConfirm={async selectedNodes => {\n const nodeIds = selectedNodes.map(node => node.id);\n await _handleLinkRecord({records: {list: nodeIds.map(id => ({id}))}});\n }}\n />\n ) : (\n <SelectRecordForLinkModal\n className={LINK_RECORDS_MODAL_CLASSNAME}\n open={isModalOpen}\n childLibraryId={linkedLibraryId || attribute.linked_library?.id}\n onSelectionCompleted={async data => {\n await _handleLinkRecord(data);\n setIsModalOpen(false);\n }}\n columnsToDisplay={[]} // TODO: One day, we should be able to choose the columns to display from a given viewId\n replacementMode={isReplacementMode}\n selectionMode={!attribute.multiple_values ? 'simple' : 'multiple'}\n hideSelectAllAction={!attribute.multiple_values}\n valuesList={valuesList}\n allowFreeEntry={allowFreeEntry}\n isMultivalue={attribute.multiple_values}\n onClose={() => setIsModalOpen(false)}\n joinLibraryContext={joinLibraryContext}\n />\n )}\n </>\n ) : undefined,\n };\n};\n"]}
|
package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/ComputeIndicator.js
CHANGED
|
@@ -4,7 +4,6 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
|
4
4
|
import { faLayerGroup, faSquareRootAlt } from '@fortawesome/free-solid-svg-icons';
|
|
5
5
|
import styled from 'styled-components';
|
|
6
6
|
import { useSharedTranslation } from '../../../../../hooks/useSharedTranslation';
|
|
7
|
-
import { TOOLTIP_DEFAULT_DELAY_IN_SECONDS } from '../../../../../constants';
|
|
8
7
|
const ComputeIndicatorWrapper = styled.div `
|
|
9
8
|
font-size: calc(var(--general-typography-fontSize7) * 1px);
|
|
10
9
|
`;
|
|
@@ -12,6 +11,6 @@ export const ComputeIndicator = ({ calculatedFlags, inheritedFlags }) => {
|
|
|
12
11
|
const { t } = useSharedTranslation();
|
|
13
12
|
const shouldDisplayComputedIcon = calculatedFlags.isCalculatedNotOverrideValues || inheritedFlags.isInheritedNotOverrideValues;
|
|
14
13
|
const shouldDisplayOverridedIcon = calculatedFlags.isCalculatedOverrideValues || inheritedFlags.isInheritedOverrideValues;
|
|
15
|
-
return (_jsxs(ComputeIndicatorWrapper, { children: [shouldDisplayComputedIcon && (_jsx(KitTooltip, { title: t('record_edition.calculated_value'),
|
|
14
|
+
return (_jsxs(ComputeIndicatorWrapper, { children: [shouldDisplayComputedIcon && (_jsx(KitTooltip, { title: t('record_edition.calculated_value'), children: _jsx(FontAwesomeIcon, { icon: faSquareRootAlt }) })), shouldDisplayOverridedIcon && (_jsx(KitTooltip, { title: t('record_edition.overrided_value'), children: _jsx(FontAwesomeIcon, { icon: faLayerGroup }) }))] }));
|
|
16
15
|
};
|
|
17
16
|
//# sourceMappingURL=ComputeIndicator.js.map
|