@leav/ui 1.14.0-2fd28db5 → 1.14.0-61605d24
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/TableNameCell.js +2 -3
- package/dist/components/Explorer/TableNameCell.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/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/constants.d.ts +0 -1
- package/dist/constants.js +0 -1
- package/dist/constants.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
|
@@ -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"]}
|
|
@@ -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":"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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 {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
|
package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/ComputeIndicator.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComputeIndicator.js","sourceRoot":"","sources":["../../../../../../src/components/RecordEdition/EditRecordContent/uiElements/shared/ComputeIndicator.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAC,UAAU,EAAC,MAAM,YAAY,CAAC;AACtC,OAAO,EAAC,eAAe,EAAC,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAC,YAAY,EAAE,eAAe,EAAC,MAAM,mCAAmC,CAAC;AAChF,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"ComputeIndicator.js","sourceRoot":"","sources":["../../../../../../src/components/RecordEdition/EditRecordContent/uiElements/shared/ComputeIndicator.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAC,UAAU,EAAC,MAAM,YAAY,CAAC;AACtC,OAAO,EAAC,eAAe,EAAC,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAC,YAAY,EAAE,eAAe,EAAC,MAAM,mCAAmC,CAAC;AAChF,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AAEpE,MAAM,uBAAuB,GAAG,MAAM,CAAC,GAAG,CAAA;;CAEzC,CAAC;AAOF,MAAM,CAAC,MAAM,gBAAgB,GAA8C,CAAC,EAAC,eAAe,EAAE,cAAc,EAAC,EAAE,EAAE;IAC7G,MAAM,EAAC,CAAC,EAAC,GAAG,oBAAoB,EAAE,CAAC;IAEnC,MAAM,yBAAyB,GAC3B,eAAe,CAAC,6BAA6B,IAAI,cAAc,CAAC,4BAA4B,CAAC;IACjG,MAAM,0BAA0B,GAC5B,eAAe,CAAC,0BAA0B,IAAI,cAAc,CAAC,yBAAyB,CAAC;IAE3F,OAAO,CACH,MAAC,uBAAuB,eACnB,yBAAyB,IAAI,CAC1B,KAAC,UAAU,IAAC,KAAK,EAAE,CAAC,CAAC,iCAAiC,CAAC,YACnD,KAAC,eAAe,IAAC,IAAI,EAAE,eAAe,GAAI,GACjC,CAChB,EACA,0BAA0B,IAAI,CAC3B,KAAC,UAAU,IAAC,KAAK,EAAE,CAAC,CAAC,gCAAgC,CAAC,YAClD,KAAC,eAAe,IAAC,IAAI,EAAE,YAAY,GAAI,GAC9B,CAChB,IACqB,CAC7B,CAAC;AACN,CAAC,CAAC","sourcesContent":["import {type FunctionComponent} from 'react';\nimport {type CalculatedFlags, type InheritedFlags} from './calculatedInheritedFlags';\nimport {KitTooltip} from 'aristid-ds';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport {faLayerGroup, faSquareRootAlt} from '@fortawesome/free-solid-svg-icons';\nimport styled from 'styled-components';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\n\nconst ComputeIndicatorWrapper = styled.div`\n font-size: calc(var(--general-typography-fontSize7) * 1px);\n`;\n\ninterface IComputeIndicatorProps {\n calculatedFlags: CalculatedFlags;\n inheritedFlags: InheritedFlags;\n}\n\nexport const ComputeIndicator: FunctionComponent<IComputeIndicatorProps> = ({calculatedFlags, inheritedFlags}) => {\n const {t} = useSharedTranslation();\n\n const shouldDisplayComputedIcon =\n calculatedFlags.isCalculatedNotOverrideValues || inheritedFlags.isInheritedNotOverrideValues;\n const shouldDisplayOverridedIcon =\n calculatedFlags.isCalculatedOverrideValues || inheritedFlags.isInheritedOverrideValues;\n\n return (\n <ComputeIndicatorWrapper>\n {shouldDisplayComputedIcon && (\n <KitTooltip title={t('record_edition.calculated_value')}>\n <FontAwesomeIcon icon={faSquareRootAlt} />\n </KitTooltip>\n )}\n {shouldDisplayOverridedIcon && (\n <KitTooltip title={t('record_edition.overrided_value')}>\n <FontAwesomeIcon icon={faLayerGroup} />\n </KitTooltip>\n )}\n </ComputeIndicatorWrapper>\n );\n};\n"]}
|
package/dist/constants.d.ts
CHANGED
|
@@ -30,7 +30,6 @@ export declare const defaultPaginationPageSize = 20;
|
|
|
30
30
|
export declare const GLOBAL_BASE_URL: string;
|
|
31
31
|
export declare const PREFIX_USER_VIEWS_ORDER_KEY = "user_views_order_";
|
|
32
32
|
export declare const PREFIX_SHARED_VIEWS_ORDER_KEY = "shared_views_order_";
|
|
33
|
-
export declare const TOOLTIP_DEFAULT_DELAY_IN_SECONDS = 0.5;
|
|
34
33
|
export declare const INFO_NOTIFICATION_DURATION = 5000;
|
|
35
34
|
export declare const ERROR_NOTIFICATION_DURATION = 5000;
|
|
36
35
|
export declare const SUCCESS_NOTIFICATION_DURATION = 5000;
|
package/dist/constants.js
CHANGED
|
@@ -38,7 +38,6 @@ export const defaultPaginationPageSize = 20;
|
|
|
38
38
|
export const GLOBAL_BASE_URL = window.__global_base_url__ || '';
|
|
39
39
|
export const PREFIX_USER_VIEWS_ORDER_KEY = 'user_views_order_';
|
|
40
40
|
export const PREFIX_SHARED_VIEWS_ORDER_KEY = 'shared_views_order_';
|
|
41
|
-
export const TOOLTIP_DEFAULT_DELAY_IN_SECONDS = 0.5;
|
|
42
41
|
export const INFO_NOTIFICATION_DURATION = 5000;
|
|
43
42
|
export const ERROR_NOTIFICATION_DURATION = 5000;
|
|
44
43
|
export const SUCCESS_NOTIFICATION_DURATION = 5000;
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,sCAAsC;AACtC,OAAO,EAAC,eAAe,EAAE,aAAa,EAAC,MAAM,aAAa,CAAC;AAE3D,sEAAsE;AACtE,MAAM,CAAN,IAAY,WAKX;AALD,WAAY,WAAW;IACnB,4BAAa,CAAA;IACb,8BAAe,CAAA;IACf,gCAAiB,CAAA;IACjB,0BAAW,CAAA;AACf,CAAC,EALW,WAAW,KAAX,WAAW,QAKtB;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,QAAQ,CAAC;AAE5C,MAAM,CAAC,MAAM,uBAAuB,GAAmE;IACnG,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC7C,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;IAChD,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC/C,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;IACrD,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;CAC7C,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAqE;IACvG,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;IAC9C,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3C,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;IACpD,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC;IAC/C,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;IAClD,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;IAChD,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5C,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC9C,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;CACtD,CAAC;AAEF,MAAM,CAAN,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IACzB,oCAAe,CAAA;IACf,0DAAqC,CAAA;IACrC,4DAAuC,CAAA;AAC3C,CAAC,EAJW,iBAAiB,KAAjB,iBAAiB,QAI5B;AAaD,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAC;AAE5C,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,mBAAmB,IAAI,EAAE,CAAC;AAEhE,MAAM,CAAC,MAAM,2BAA2B,GAAG,mBAAmB,CAAC;AAC/D,MAAM,CAAC,MAAM,6BAA6B,GAAG,qBAAqB,CAAC;AAEnE,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017\n// This file is released under LGPL V3\nimport {AttributeFormat, AttributeType} from './_gqlTypes';\n\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nexport enum PreviewSize {\n TINY = 'tiny',\n SMALL = 'small',\n MEDIUM = 'medium',\n BIG = 'big',\n}\n\nexport const ACTIVE_ATTRIBUTE_ID = 'active';\n\nexport const tagColorByAttributeType: {[key in AttributeType]: [border: string, background: string]} = {\n [AttributeType.simple]: ['purple', '#ffe5ff'],\n [AttributeType.simple_link]: ['blue', '#e5e5ff'],\n [AttributeType.advanced]: ['orange', '#fff6e5'],\n [AttributeType.advanced_link]: ['#d4380d', '#fde4dd'],\n [AttributeType.tree]: ['green', '#e5ffe5'],\n};\n\nexport const tagColorByAttributeFormat: {[key in AttributeFormat]: [border: string, background: string]} = {\n [AttributeFormat.boolean]: ['gold', '#fff099'],\n [AttributeFormat.date]: ['blue', '#e5e5ff'],\n [AttributeFormat.date_range]: ['#1d39c4', '#e9ecfc'],\n [AttributeFormat.encrypted]: ['red', '#ffe5e5'],\n [AttributeFormat.extended]: ['magenta', '#ffe5e5'],\n [AttributeFormat.numeric]: ['orange', '#fff6e5'],\n [AttributeFormat.text]: ['green', '#e5ffe5'],\n [AttributeFormat.color]: ['purple', '#ffe5ff'],\n [AttributeFormat.rich_text]: ['#d4380d', '#fde4dd'],\n};\n\nexport enum ErrorDisplayTypes {\n ERROR = 'error',\n PERMISSION_ERROR = 'permission_error',\n PAGE_NOT_FOUND = 'page_not_found_error',\n}\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n interface Window {\n __dynamic_base__?: string;\n __global_base_url__?: string;\n __bugsnag_api_key__?: string;\n __bugsnag_app_version__?: string;\n __bugsnag_release_stage__?: string;\n }\n}\n\nexport const defaultPaginationPageSize = 20;\n\nexport const GLOBAL_BASE_URL = window.__global_base_url__ || '';\n\nexport const PREFIX_USER_VIEWS_ORDER_KEY = 'user_views_order_';\nexport const PREFIX_SHARED_VIEWS_ORDER_KEY = 'shared_views_order_';\n\nexport const INFO_NOTIFICATION_DURATION = 5_000;\nexport const ERROR_NOTIFICATION_DURATION = 5_000;\nexport const SUCCESS_NOTIFICATION_DURATION = 5_000;\nexport const SUBSCRIPTION_NOTIFICATION_DURATION = 10_000;\n\nexport const SUCCESS_ALERT_DURATION = 3_000;\nexport const ERROR_ALERT_DURATION = 5_000;\n\nexport const EDIT_RECORD_SIDEBAR_ID = 'edit_record_sidebar';\n\nexport const STANDARD_FIELD_ID_PREFIX = 'standardfield-';\n\nexport const LINK_FIELD_ID_PREFIX = 'linkfield-';\n\nexport const TREE_FIELD_ID_PREFIX = 'treefield-';\n\nexport const SUBMIT_BUTTONS_PORTAL = 'submit_buttons_portal';\nexport const NEW_RECORD_ID = 'newRecord';\n\nexport const BREAK_TWO_LINES = '\\n\\n';\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MockedLangContextProvider.js","sourceRoot":"","sources":["../../../src/testing/MockedLangContextProvider/MockedLangContextProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAoB,WAAW,EAAC,MAAM,4BAA4B,CAAC;AAE1E,SAAS,yBAAyB,CAAC,EAAC,QAAQ,EAAC;IACzC,MAAM,SAAS,GAAiB;QAC5B,IAAI,EAAE,CAAC,IAAI,CAAC;QACZ,cAAc,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;QAC5B,WAAW,EAAE,IAAI;QACjB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"MockedLangContextProvider.js","sourceRoot":"","sources":["../../../src/testing/MockedLangContextProvider/MockedLangContextProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAoB,WAAW,EAAC,MAAM,4BAA4B,CAAC;AAE1E,SAAS,yBAAyB,CAAC,EAAC,QAAQ,EAAC;IACzC,MAAM,SAAS,GAAiB;QAC5B,IAAI,EAAE,CAAC,IAAI,CAAC;QACZ,cAAc,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;QAC5B,WAAW,EAAE,IAAI;QACjB,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS;KAC3B,CAAC;IAEF,OAAO,KAAC,WAAW,CAAC,QAAQ,IAAC,KAAK,EAAE,SAAS,YAAG,QAAQ,GAAwB,CAAC;AACrF,CAAC;AAED,eAAe,yBAAyB,CAAC","sourcesContent":["import {type ILangContext, LangContext} from '../../contexts/LangContext';\n\nfunction MockedLangContextProvider({children}) {\n const mockLangs: ILangContext = {\n lang: ['fr'],\n availableLangs: ['fr', 'en'],\n defaultLang: 'fr',\n setLang: () => undefined,\n };\n\n return <LangContext.Provider value={mockLangs}>{children}</LangContext.Provider>;\n}\n\nexport default MockedLangContextProvider;\n"]}
|