@leav/ui 1.5.1-1929c505 → 1.5.1-36ba391b
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/__mocks__/common/attribute.js +1 -0
- package/dist/__mocks__/common/attribute.js.map +1 -1
- package/dist/_gqlTypes/index.d.ts +115 -1
- package/dist/_gqlTypes/index.js +86 -0
- package/dist/_gqlTypes/index.js.map +1 -1
- package/dist/_queries/attributes/attributeDetailsFragment.js +1 -0
- package/dist/_queries/attributes/attributeDetailsFragment.js.map +1 -1
- package/dist/components/Explorer/Explorer.d.ts +1 -1
- package/dist/components/Explorer/Explorer.js +15 -3
- package/dist/components/Explorer/Explorer.js.map +1 -1
- package/dist/components/Explorer/_queries/useExplorerData.js +13 -2
- package/dist/components/Explorer/_queries/useExplorerData.js.map +1 -1
- package/dist/components/Explorer/actions-mass/edit-attribute/EditAttributeMassActionModal.d.ts +13 -0
- package/dist/components/Explorer/actions-mass/edit-attribute/EditAttributeMassActionModal.js +20 -0
- package/dist/components/Explorer/actions-mass/edit-attribute/EditAttributeMassActionModal.js.map +1 -0
- package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValueLine.d.ts +10 -0
- package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValueLine.js +38 -0
- package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValueLine.js.map +1 -0
- package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValuesMapping.d.ts +8 -0
- package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValuesMapping.js +16 -0
- package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValuesMapping.js.map +1 -0
- package/dist/components/Explorer/actions-mass/edit-attribute/useCountValuesOccurrencesHook.d.ts +10 -0
- package/dist/components/Explorer/actions-mass/edit-attribute/useCountValuesOccurrencesHook.js +28 -0
- package/dist/components/Explorer/actions-mass/edit-attribute/useCountValuesOccurrencesHook.js.map +1 -0
- package/dist/components/Explorer/actions-mass/edit-attribute/useListEditableAttributeHook.d.ts +5 -0
- package/dist/components/Explorer/actions-mass/edit-attribute/useListEditableAttributeHook.js +12 -0
- package/dist/components/Explorer/actions-mass/edit-attribute/useListEditableAttributeHook.js.map +1 -0
- package/dist/components/Explorer/actions-mass/edit-attribute/useListTreeAttributeValuesHook.d.ts +5 -0
- package/dist/components/Explorer/actions-mass/edit-attribute/useListTreeAttributeValuesHook.js +20 -0
- package/dist/components/Explorer/actions-mass/edit-attribute/useListTreeAttributeValuesHook.js.map +1 -0
- package/dist/components/Explorer/actions-mass/useEditAttributeMassAction.d.ts +11 -0
- package/dist/components/Explorer/actions-mass/useEditAttributeMassAction.js +106 -0
- package/dist/components/Explorer/actions-mass/useEditAttributeMassAction.js.map +1 -0
- package/dist/components/Explorer/actions-mass/useExportMassAction.js +4 -6
- package/dist/components/Explorer/actions-mass/useExportMassAction.js.map +1 -1
- package/dist/components/Filters/context/filtersReducer.js +0 -1
- package/dist/components/Filters/context/filtersReducer.js.map +1 -1
- package/dist/components/Filters/filter-items/filter-type/TreeAttributeDropDown.js +15 -17
- package/dist/components/Filters/filter-items/filter-type/TreeAttributeDropDown.js.map +1 -1
- package/dist/components/Filters/prepareFiltersForRequest.js +1 -1
- package/dist/components/Filters/prepareFiltersForRequest.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/antdUtils.js +12 -3
- package/dist/components/RecordEdition/EditRecordContent/antdUtils.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/LinkField.js +4 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/LinkField.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardField.js +6 -3
- package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardField.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSBooleanWrapper.js +6 -5
- package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSBooleanWrapper.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSColorPickerWrapper.js +9 -8
- package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSColorPickerWrapper.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSDatePickerWrapper.js +8 -7
- package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSDatePickerWrapper.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSInputNumberWrapper.js +6 -5
- package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSInputNumberWrapper.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSInputWrapper.js +6 -5
- package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSInputWrapper.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSRangePickerWrapper.js +12 -11
- package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSRangePickerWrapper.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSRichTextWrapper.js +16 -7
- package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSRichTextWrapper.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/ValuesList/DSListSelect.js +6 -5
- package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/ValuesList/DSListSelect.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/useGetPresentationValues.d.ts +3 -3
- package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/useGetPresentationValues.js +10 -4
- package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/useGetPresentationValues.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/TreeField.js +4 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/TreeField.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/ComputeIndicator.js +2 -2
- package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/ComputeIndicator.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/calculatedInheritedFlags.d.ts +24 -24
- package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/calculatedInheritedFlags.js +34 -35
- package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/calculatedInheritedFlags.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordSidebar/EditRecordSidebar.js +1 -1
- package/dist/components/RecordEdition/EditRecordSidebar/EditRecordSidebar.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordSidebar/ValuesSummary/ValuesSummary.d.ts +1 -1
- package/dist/components/RecordEdition/EditRecordSidebar/ValuesSummary/ValuesSummary.js +15 -10
- package/dist/components/RecordEdition/EditRecordSidebar/ValuesSummary/ValuesSummary.js.map +1 -1
- package/dist/components/RecordEdition/editRecordReducer/editRecordReducer.d.ts +1 -1
- package/dist/components/RecordEdition/editRecordReducer/editRecordReducer.js +4 -3
- package/dist/components/RecordEdition/editRecordReducer/editRecordReducer.js.map +1 -1
- package/dist/components/SelectTreeNode/SelectTreeNodeContent.js +3 -0
- package/dist/components/SelectTreeNode/SelectTreeNodeContent.js.map +1 -1
- package/dist/hooks/useIFrameMessenger/schema.d.ts +43 -4
- package/dist/hooks/useIFrameMessenger/schema.js +11 -5
- package/dist/hooks/useIFrameMessenger/schema.js.map +1 -1
- package/dist/hooks/useIFrameMessenger/types.d.ts +2 -1
- package/dist/hooks/useIFrameMessenger/types.js.map +1 -1
- package/dist/locales/en/shared.json +20 -7
- package/dist/locales/fr/shared.json +20 -7
- package/package.json +3 -3
|
@@ -1,56 +1,55 @@
|
|
|
1
1
|
export const computeInheritedFlags = (fieldValues) => {
|
|
2
|
-
const
|
|
3
|
-
const
|
|
4
|
-
if (
|
|
2
|
+
const inheritedValues = fieldValues.filter(fieldValue => fieldValue.isInherited);
|
|
3
|
+
const overrideValues = fieldValues.filter(fieldValue => !fieldValue.isInherited && !fieldValue.isCalculated && fieldValue.payload !== null);
|
|
4
|
+
if (inheritedValues.length === 0) {
|
|
5
5
|
return {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
inheritedValues: null,
|
|
7
|
+
isInheritedValues: false,
|
|
8
|
+
isInheritedOverrideValues: false,
|
|
9
|
+
isInheritedNotOverrideValues: false,
|
|
10
10
|
};
|
|
11
11
|
}
|
|
12
|
-
|
|
13
|
-
if (!overrideValue || overrideValue.payload === null) {
|
|
12
|
+
if (overrideValues.length === 0) {
|
|
14
13
|
return {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
14
|
+
inheritedValues,
|
|
15
|
+
isInheritedValues: true,
|
|
16
|
+
isInheritedNotOverrideValues: true,
|
|
17
|
+
isInheritedOverrideValues: false,
|
|
19
18
|
};
|
|
20
19
|
}
|
|
21
20
|
return {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
inheritedValues,
|
|
22
|
+
isInheritedValues: true,
|
|
23
|
+
isInheritedNotOverrideValues: false,
|
|
24
|
+
isInheritedOverrideValues: true,
|
|
26
25
|
};
|
|
27
26
|
};
|
|
28
27
|
export const computeCalculatedFlags = (fieldValues) => {
|
|
29
|
-
const
|
|
30
|
-
const
|
|
31
|
-
(fieldValue.isInherited === null || fieldValue.isInherited === undefined)
|
|
32
|
-
|
|
28
|
+
const calculatedValues = fieldValues.filter(fieldValue => fieldValue.isCalculated !== null && fieldValue.isCalculated !== undefined);
|
|
29
|
+
const overrideValues = fieldValues.filter(fieldValue => (fieldValue.isCalculated === null || fieldValue.isCalculated === undefined) &&
|
|
30
|
+
(fieldValue.isInherited === null || fieldValue.isInherited === undefined) &&
|
|
31
|
+
fieldValue.payload !== null);
|
|
32
|
+
if (calculatedValues.length === 0) {
|
|
33
33
|
return {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
34
|
+
calculatedValues: null,
|
|
35
|
+
isCalculatedValues: false,
|
|
36
|
+
isCalculatedOverrideValues: false,
|
|
37
|
+
isCalculatedNotOverrideValues: false,
|
|
38
38
|
};
|
|
39
39
|
}
|
|
40
|
-
|
|
41
|
-
if (!overrideValue || overrideValue.payload === null) {
|
|
40
|
+
if (overrideValues.length === 0) {
|
|
42
41
|
return {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
42
|
+
calculatedValues,
|
|
43
|
+
isCalculatedValues: true,
|
|
44
|
+
isCalculatedNotOverrideValues: true,
|
|
45
|
+
isCalculatedOverrideValues: false,
|
|
47
46
|
};
|
|
48
47
|
}
|
|
49
48
|
return {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
49
|
+
calculatedValues,
|
|
50
|
+
isCalculatedValues: true,
|
|
51
|
+
isCalculatedNotOverrideValues: false,
|
|
52
|
+
isCalculatedOverrideValues: true,
|
|
54
53
|
};
|
|
55
54
|
};
|
|
56
55
|
//# sourceMappingURL=calculatedInheritedFlags.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calculatedInheritedFlags.js","sourceRoot":"","sources":["../../../../../../src/components/RecordEdition/EditRecordContent/uiElements/shared/calculatedInheritedFlags.ts"],"names":[],"mappings":"AA4BA,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,WAAmD,EAAkB,EAAE;IACzG,MAAM,
|
|
1
|
+
{"version":3,"file":"calculatedInheritedFlags.js","sourceRoot":"","sources":["../../../../../../src/components/RecordEdition/EditRecordContent/uiElements/shared/calculatedInheritedFlags.ts"],"names":[],"mappings":"AA4BA,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,WAAmD,EAAkB,EAAE;IACzG,MAAM,eAAe,GAAG,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IACjF,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,CACrC,UAAU,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,WAAW,IAAI,CAAC,UAAU,CAAC,YAAY,IAAI,UAAU,CAAC,OAAO,KAAK,IAAI,CACnG,CAAC;IAEF,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO;YACH,eAAe,EAAE,IAAI;YACrB,iBAAiB,EAAE,KAAK;YACxB,yBAAyB,EAAE,KAAK;YAChC,4BAA4B,EAAE,KAAK;SACtC,CAAC;IACN,CAAC;IAED,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO;YACH,eAAe;YACf,iBAAiB,EAAE,IAAI;YACvB,4BAA4B,EAAE,IAAI;YAClC,yBAAyB,EAAE,KAAK;SACnC,CAAC;IACN,CAAC;IAED,OAAO;QACH,eAAe;QACf,iBAAiB,EAAE,IAAI;QACvB,4BAA4B,EAAE,KAAK;QACnC,yBAAyB,EAAE,IAAI;KAClC,CAAC;AACN,CAAC,CAAC;AAyBF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,WAAmD,EAAmB,EAAE;IAC3G,MAAM,gBAAgB,GAAG,WAAW,CAAC,MAAM,CACvC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,KAAK,IAAI,IAAI,UAAU,CAAC,YAAY,KAAK,SAAS,CAC1F,CAAC;IACF,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,CACrC,UAAU,CAAC,EAAE,CACT,CAAC,UAAU,CAAC,YAAY,KAAK,IAAI,IAAI,UAAU,CAAC,YAAY,KAAK,SAAS,CAAC;QAC3E,CAAC,UAAU,CAAC,WAAW,KAAK,IAAI,IAAI,UAAU,CAAC,WAAW,KAAK,SAAS,CAAC;QACzE,UAAU,CAAC,OAAO,KAAK,IAAI,CAClC,CAAC;IAEF,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO;YACH,gBAAgB,EAAE,IAAI;YACtB,kBAAkB,EAAE,KAAK;YACzB,0BAA0B,EAAE,KAAK;YACjC,6BAA6B,EAAE,KAAK;SACvC,CAAC;IACN,CAAC;IAED,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO;YACH,gBAAgB;YAChB,kBAAkB,EAAE,IAAI;YACxB,6BAA6B,EAAE,IAAI;YACnC,0BAA0B,EAAE,KAAK;SACpC,CAAC;IACN,CAAC;IAED,OAAO;QACH,gBAAgB;QAChB,kBAAkB,EAAE,IAAI;QACxB,6BAA6B,EAAE,KAAK;QACpC,0BAA0B,EAAE,IAAI;KACnC,CAAC;AACN,CAAC,CAAC","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {type RecordFormElementsValueStandardValue} from '_ui/hooks/useGetRecordForm';\n\ninterface IInheritedNotOverride {\n isInheritedValues: true;\n isInheritedOverrideValues: false;\n isInheritedNotOverrideValues: true;\n inheritedValues: RecordFormElementsValueStandardValue[];\n}\n\ninterface IInheritedOverride {\n isInheritedValues: true;\n isInheritedOverrideValues: true;\n isInheritedNotOverrideValues: false;\n inheritedValues: RecordFormElementsValueStandardValue[];\n}\n\ninterface INotInherited {\n isInheritedValues: false;\n isInheritedOverrideValues: false;\n isInheritedNotOverrideValues: false;\n inheritedValues: null;\n}\n\nexport type InheritedFlags = INotInherited | IInheritedOverride | IInheritedNotOverride;\n\nexport const computeInheritedFlags = (fieldValues: RecordFormElementsValueStandardValue[]): InheritedFlags => {\n const inheritedValues = fieldValues.filter(fieldValue => fieldValue.isInherited);\n const overrideValues = fieldValues.filter(\n fieldValue => !fieldValue.isInherited && !fieldValue.isCalculated && fieldValue.payload !== null,\n );\n\n if (inheritedValues.length === 0) {\n return {\n inheritedValues: null,\n isInheritedValues: false,\n isInheritedOverrideValues: false,\n isInheritedNotOverrideValues: false,\n };\n }\n\n if (overrideValues.length === 0) {\n return {\n inheritedValues,\n isInheritedValues: true,\n isInheritedNotOverrideValues: true,\n isInheritedOverrideValues: false,\n };\n }\n\n return {\n inheritedValues,\n isInheritedValues: true,\n isInheritedNotOverrideValues: false,\n isInheritedOverrideValues: true,\n };\n};\n\ninterface ICalculatedNotOverride {\n isCalculatedValues: true;\n isCalculatedOverrideValues: false;\n isCalculatedNotOverrideValues: true;\n calculatedValues: RecordFormElementsValueStandardValue[];\n}\n\ninterface ICalculatedOverride {\n isCalculatedValues: true;\n isCalculatedOverrideValues: true;\n isCalculatedNotOverrideValues: false;\n calculatedValues: RecordFormElementsValueStandardValue[];\n}\n\ninterface INotCalculated {\n isCalculatedValues: false;\n isCalculatedOverrideValues: false;\n isCalculatedNotOverrideValues: false;\n calculatedValues: null;\n}\n\nexport type CalculatedFlags = INotCalculated | ICalculatedOverride | ICalculatedNotOverride;\n\nexport const computeCalculatedFlags = (fieldValues: RecordFormElementsValueStandardValue[]): CalculatedFlags => {\n const calculatedValues = fieldValues.filter(\n fieldValue => fieldValue.isCalculated !== null && fieldValue.isCalculated !== undefined,\n );\n const overrideValues = fieldValues.filter(\n fieldValue =>\n (fieldValue.isCalculated === null || fieldValue.isCalculated === undefined) &&\n (fieldValue.isInherited === null || fieldValue.isInherited === undefined) &&\n fieldValue.payload !== null,\n );\n\n if (calculatedValues.length === 0) {\n return {\n calculatedValues: null,\n isCalculatedValues: false,\n isCalculatedOverrideValues: false,\n isCalculatedNotOverrideValues: false,\n };\n }\n\n if (overrideValues.length === 0) {\n return {\n calculatedValues,\n isCalculatedValues: true,\n isCalculatedNotOverrideValues: true,\n isCalculatedOverrideValues: false,\n };\n }\n\n return {\n calculatedValues,\n isCalculatedValues: true,\n isCalculatedNotOverrideValues: false,\n isCalculatedOverrideValues: true,\n };\n};\n"]}
|
|
@@ -29,7 +29,7 @@ const _getRecordSidebarContent = (state, onMetadataSubmit) => {
|
|
|
29
29
|
case 'none':
|
|
30
30
|
return null;
|
|
31
31
|
case 'valueDetails':
|
|
32
|
-
return (_jsxs(StyledDivContentWrapper, { children: [_jsx(AttributeSummary, { attribute: state.activeAttribute.attribute }), _jsx(ValuesSummary, { record: state.record, attributeId: state.activeAttribute.attribute.id, globalValues: state.activeAttribute.globalValues,
|
|
32
|
+
return (_jsxs(StyledDivContentWrapper, { children: [_jsx(AttributeSummary, { attribute: state.activeAttribute.attribute }), _jsx(ValuesSummary, { record: state.record, attributeId: state.activeAttribute.attribute.id, globalValues: state.activeAttribute.globalValues, calculatedValues: state.activeAttribute.calculatedValues })] }));
|
|
33
33
|
case 'valuesVersions':
|
|
34
34
|
return _jsx(ValuesVersions, {});
|
|
35
35
|
default:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditRecordSidebar.js","sourceRoot":"","sources":["../../../../src/components/RecordEdition/EditRecordSidebar/EditRecordSidebar.tsx"],"names":[],"mappings":";AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAyB,SAAS,EAAW,MAAM,EAAC,MAAM,OAAO,CAAC;AAEzE,OAAO,EAAC,oBAAoB,EAAC,MAAM,2CAA2C,CAAC;AAC/E,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAC,YAAY,EAAC,MAAM,WAAW,CAAC;AACvC,OAAO,EAAC,+BAA+B,EAA+B,MAAM,wCAAwC,CAAC;AACrH,OAAO,EAAC,YAAY,EAAC,MAAM,YAAY,CAAC;AAExC,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAC,sBAAsB,EAAC,MAAM,eAAe,CAAC;AACrD,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAClC,OAAO,EAAC,oBAAoB,EAAC,MAAM,aAAa,CAAC;AAOjD,MAAM,uBAAuB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;CAKzC,CAAC;AAEF,MAAM,wBAAwB,GAAG,CAAC,KAA8B,EAAE,gBAAyC,EAAE,EAAE;IAC3G,6DAA6D;IAC7D,QAAQ,KAAK,CAAC,cAAc,EAAE,CAAC;QAC3B,KAAK,MAAM;YACP,OAAO,IAAI,CAAC;QAChB,KAAK,cAAc;YACf,OAAO,CACH,MAAC,uBAAuB,eACpB,KAAC,gBAAgB,IAAC,SAAS,EAAE,KAAK,CAAC,eAAe,CAAC,SAAS,GAAI,EAChE,KAAC,aAAa,IACV,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,WAAW,EAAE,KAAK,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,EAC/C,YAAY,EAAE,KAAK,CAAC,eAAe,CAAC,YAAY,EAChD,
|
|
1
|
+
{"version":3,"file":"EditRecordSidebar.js","sourceRoot":"","sources":["../../../../src/components/RecordEdition/EditRecordSidebar/EditRecordSidebar.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {type FunctionComponent, useEffect, useMemo, useRef} from 'react';\nimport {type MetadataSubmitValueFunc} from '../EditRecordContent/_types';\nimport {useEditRecordReducer} from '../editRecordReducer/useEditRecordReducer';\nimport RecordSummary from './RecordSummary';\nimport ValuesVersions from './ValuesVersions';\nimport {createPortal} from 'react-dom';\nimport {EditRecordSidebarContentTypeMap, type IEditRecordReducerState} from '../editRecordReducer/editRecordReducer';\nimport {KitSidePanel} from 'aristid-ds';\nimport {type KitSidePanelRef} from 'aristid-ds/dist/Kit/Navigation/SidePanel/types';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {EDIT_RECORD_SIDEBAR_ID} from '_ui/constants';\nimport Breadcrumb from './Breacrumb';\nimport AttributeSummary from './AttributeSummary';\nimport ValuesSummary from './ValuesSummary';\nimport styled from 'styled-components';\nimport {useLang} from '_ui/hooks';\nimport {localizedTranslation} from '@leav/utils';\n\ninterface IEditRecordSidebarProps {\n onMetadataSubmit: MetadataSubmitValueFunc;\n sidebarContainer?: HTMLElement;\n}\n\nconst StyledDivContentWrapper = styled.div`\n display: flex;\n flex-direction: column;\n gap: calc(var(--general-spacing-s) * 1px);\n height: 100%;\n`;\n\nconst _getRecordSidebarContent = (state: IEditRecordReducerState, onMetadataSubmit: MetadataSubmitValueFunc) => {\n // TODO: ValuesVersions should be removed or refactored later\n switch (state.sidebarContent) {\n case 'none':\n return null;\n case 'valueDetails':\n return (\n <StyledDivContentWrapper>\n <AttributeSummary attribute={state.activeAttribute.attribute} />\n <ValuesSummary\n record={state.record}\n attributeId={state.activeAttribute.attribute.id}\n globalValues={state.activeAttribute.globalValues}\n calculatedValues={state.activeAttribute.calculatedValues}\n />\n </StyledDivContentWrapper>\n );\n case 'valuesVersions':\n return <ValuesVersions />;\n default:\n return <RecordSummary record={state.record} />;\n }\n};\n\nconst StyledKitSidePanel = styled(KitSidePanel)<{$hideBoxShadow: boolean; $isOpen: boolean}>`\n ${({$hideBoxShadow}) =>\n $hideBoxShadow &&\n `&&& section {\n box-shadow: none;\n }`}\n grid-area: sidebar;\n display: ${({$isOpen}) => ($isOpen ? 'block' : 'none')};\n`;\n\nexport const EditRecordSidebar: FunctionComponent<IEditRecordSidebarProps> = ({onMetadataSubmit, sidebarContainer}) => {\n const {t} = useSharedTranslation();\n const {lang} = useLang();\n const {state} = useEditRecordReducer();\n const sidePanelRef = useRef<KitSidePanelRef | null>(null);\n const sidePanelTitle =\n state.sidebarContent === EditRecordSidebarContentTypeMap.VALUE_DETAILS\n ? localizedTranslation(state.activeAttribute?.attribute.label, lang)\n : (state.record?.label ?? state.record?.id ?? t('record_summary.new_record'));\n\n const editRecordSidebarContent = (\n <StyledKitSidePanel\n ref={sidePanelRef}\n initialOpen={state.isOpenSidebar && state.enableSidebar}\n idCardProps={{title: sidePanelTitle}}\n id={EDIT_RECORD_SIDEBAR_ID}\n headerExtra={<Breadcrumb />}\n $hideBoxShadow={!sidebarContainer}\n $isOpen={state.isOpenSidebar}\n >\n {_getRecordSidebarContent(state, onMetadataSubmit)}\n </StyledKitSidePanel>\n );\n\n useEffect(() => {\n if (sidePanelRef.current && state.enableSidebar) {\n if (state.isOpenSidebar) {\n sidePanelRef.current.open();\n } else {\n sidePanelRef.current.close();\n }\n }\n }, [state.enableSidebar, state.isOpenSidebar, sidePanelRef.current]);\n\n if (!state.enableSidebar) {\n return null;\n }\n\n return sidebarContainer === undefined\n ? editRecordSidebarContent\n : createPortal(editRecordSidebarContent, sidebarContainer);\n};\n\nexport default EditRecordSidebar;\n"]}
|
|
@@ -5,7 +5,7 @@ interface IValuesSummaryProps {
|
|
|
5
5
|
record: IRecordIdentityWhoAmI | null;
|
|
6
6
|
attributeId: string;
|
|
7
7
|
globalValues?: Array<RecordFormElementsValueStandardValue['payload']>;
|
|
8
|
-
|
|
8
|
+
calculatedValues?: Array<RecordFormElementsValueStandardValue['payload']>;
|
|
9
9
|
}
|
|
10
10
|
export declare const ValuesSummary: FunctionComponent<IValuesSummaryProps>;
|
|
11
11
|
export default ValuesSummary;
|
|
@@ -20,7 +20,7 @@ const stripHtml = (html) => {
|
|
|
20
20
|
return doc.body.textContent || '';
|
|
21
21
|
};
|
|
22
22
|
const _isDateRangeValue = (value) => !!value && typeof value === 'object' && 'from' in value && 'to' in value;
|
|
23
|
-
export const ValuesSummary = ({ record, attributeId, globalValues = [],
|
|
23
|
+
export const ValuesSummary = ({ record, attributeId, globalValues = [], calculatedValues = [], }) => {
|
|
24
24
|
const { t } = useSharedTranslation();
|
|
25
25
|
const stringifyValue = (value) => {
|
|
26
26
|
if (typeof value === 'string') {
|
|
@@ -41,12 +41,12 @@ export const ValuesSummary = ({ record, attributeId, globalValues = [], calculat
|
|
|
41
41
|
return value;
|
|
42
42
|
};
|
|
43
43
|
const stripedGlobalValues = globalValues.map(stringifyValue);
|
|
44
|
-
const
|
|
44
|
+
const stripedCalculatedValues = calculatedValues.map(stringifyValue);
|
|
45
45
|
return (_jsx(StyledDivContentWrapper, { children: _jsx(KitTabs, { items: [
|
|
46
46
|
{
|
|
47
47
|
key: 'version_values',
|
|
48
48
|
label: t('record_summary.values_version'),
|
|
49
|
-
tabContent: (_jsx(InformationsWrapper, { children: _jsx(KitTree, { defaultExpandAll: true, selectedKeys:
|
|
49
|
+
tabContent: (_jsx(InformationsWrapper, { children: _jsx(KitTree, { defaultExpandAll: true, selectedKeys: calculatedValues.length > 0 && globalValues.length === 0
|
|
50
50
|
? [calculatedValueKey]
|
|
51
51
|
: [globalValueKey], treeData: [
|
|
52
52
|
{
|
|
@@ -55,13 +55,18 @@ export const ValuesSummary = ({ record, attributeId, globalValues = [], calculat
|
|
|
55
55
|
display: 'flex',
|
|
56
56
|
alignItems: 'center',
|
|
57
57
|
justifyContent: 'space-between',
|
|
58
|
-
}, children: [_jsxs("span", { children: [_jsx(FaSquareRootAlt, {}), " ", t('record_summary.calculated_value')] }), _jsx(KitBadge, { count:
|
|
59
|
-
children:
|
|
60
|
-
{
|
|
61
|
-
key: `${calculatedValueKey}
|
|
62
|
-
title:
|
|
63
|
-
}
|
|
64
|
-
|
|
58
|
+
}, children: [_jsxs("span", { children: [_jsx(FaSquareRootAlt, {}), " ", t('record_summary.calculated_value')] }), _jsx(KitBadge, { count: stripedCalculatedValues.length, color: "primary" })] })),
|
|
59
|
+
children: stripedCalculatedValues.length > 0
|
|
60
|
+
? stripedCalculatedValues.map((calculatedValue, index) => ({
|
|
61
|
+
key: `${calculatedValueKey}-${index}`,
|
|
62
|
+
title: calculatedValue,
|
|
63
|
+
}))
|
|
64
|
+
: [
|
|
65
|
+
{
|
|
66
|
+
key: `${calculatedValueKey}-${0}`,
|
|
67
|
+
title: _jsx("i", { children: t('record_summary.no_value') }),
|
|
68
|
+
},
|
|
69
|
+
],
|
|
65
70
|
},
|
|
66
71
|
{
|
|
67
72
|
key: globalValueKey,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ValuesSummary.js","sourceRoot":"","sources":["../../../../../src/components/RecordEdition/EditRecordSidebar/ValuesSummary/ValuesSummary.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {type FunctionComponent} from 'react';\nimport {type RecordFormElementsValueStandardValue} from '_ui/hooks/useGetRecordForm';\nimport {KitBadge, KitTabs, KitTree} from 'aristid-ds';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {FaLayerGroup, FaSquareRootAlt} from 'react-icons/fa';\nimport styled from 'styled-components';\nimport {type IRecordIdentityWhoAmI} from '_ui/types';\nimport {RecordHistory} from '../../../RecordHistory/RecordHistory';\n\nconst InformationsWrapper = styled.div`\n margin-top: calc(var(--general-spacing-s) * 1px);\n`;\n\nconst StyledDivContentWrapper = styled.div`\n display: flex;\n flex-direction: column;\n height: 100%;\n`;\n\ninterface IValuesSummaryProps {\n record: IRecordIdentityWhoAmI | null;\n attributeId: string;\n globalValues?: Array<RecordFormElementsValueStandardValue['payload']>;\n calculatedValue?: RecordFormElementsValueStandardValue['payload'];\n}\n\nconst calculatedValueKey = '0';\nconst globalValueKey = '1';\n\n// https://stackoverflow.com/questions/822452/strip-html-tags-from-text-using-plain-javascript\nconst stripHtml = (html: string): string => {\n const doc = new DOMParser().parseFromString(html, 'text/html');\n return doc.body.textContent || '';\n};\n\nconst _isDateRangeValue = (value: any): value is {from: string; to: string} =>\n !!value && typeof value === 'object' && 'from' in value && 'to' in value;\n\nexport const ValuesSummary: FunctionComponent<IValuesSummaryProps> = ({\n record,\n attributeId,\n globalValues = [],\n calculatedValue,\n}) => {\n const {t} = useSharedTranslation();\n\n const stringifyValue = (value: RecordFormElementsValueStandardValue['payload']): string => {\n if (typeof value === 'string') {\n return stripHtml(value);\n }\n\n if (typeof value === 'boolean') {\n return value ? t('global.yes') : t('global.no');\n }\n\n if (_isDateRangeValue(value)) {\n return t('record_edition.date_range_value', {\n from: value.from,\n to: value.to,\n interpolation: {\n escapeValue: false,\n },\n });\n }\n\n return value;\n };\n\n const stripedGlobalValues = globalValues.map(stringifyValue);\n const stripedCalculatedValue = stringifyValue(calculatedValue);\n\n return (\n <StyledDivContentWrapper>\n <KitTabs\n items={[\n {\n key: 'version_values',\n label: t('record_summary.values_version'),\n tabContent: (\n <InformationsWrapper>\n <KitTree\n defaultExpandAll\n selectedKeys={\n calculatedValue && globalValues.length === 0\n ? [calculatedValueKey]\n : [globalValueKey]\n }\n treeData={[\n {\n key: calculatedValueKey,\n title: (\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n }}\n >\n <span>\n <FaSquareRootAlt /> {t('record_summary.calculated_value')}\n </span>\n <KitBadge\n count={stripedCalculatedValue ? 1 : undefined}\n color=\"primary\"\n />\n </div>\n ),\n children: [\n {\n key: `${calculatedValueKey}-0`,\n title: stripedCalculatedValue ?? (\n <i>{t('record_summary.no_value')}</i>\n ),\n },\n ],\n },\n {\n key: globalValueKey,\n title: (\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n }}\n >\n <span>\n <FaLayerGroup /> {t('record_summary.global')}\n </span>\n <KitBadge count={stripedGlobalValues.length} color=\"primary\" />\n </div>\n ),\n children:\n stripedGlobalValues.length > 0\n ? stripedGlobalValues.map((value, index) => ({\n key: `${globalValueKey}-${index}`,\n title: value,\n }))\n : [\n {\n key: `${globalValueKey}-${0}`,\n title: <i>{t('record_summary.no_value')}</i>,\n },\n ],\n },\n ]}\n />\n </InformationsWrapper>\n ),\n },\n {\n key: 'history',\n label: t('record_summary.history'),\n tabContent: <RecordHistory record={record} attributeId={attributeId} />,\n },\n ]}\n />\n </StyledDivContentWrapper>\n );\n};\n\nexport default ValuesSummary;\n"]}
|
|
1
|
+
{"version":3,"file":"ValuesSummary.js","sourceRoot":"","sources":["../../../../../src/components/RecordEdition/EditRecordSidebar/ValuesSummary/ValuesSummary.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {type FunctionComponent} from 'react';\nimport {type RecordFormElementsValueStandardValue} from '_ui/hooks/useGetRecordForm';\nimport {KitBadge, KitTabs, KitTree} from 'aristid-ds';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {FaLayerGroup, FaSquareRootAlt} from 'react-icons/fa';\nimport styled from 'styled-components';\nimport {type IRecordIdentityWhoAmI} from '_ui/types';\nimport {RecordHistory} from '../../../RecordHistory/RecordHistory';\n\nconst InformationsWrapper = styled.div`\n margin-top: calc(var(--general-spacing-s) * 1px);\n`;\n\nconst StyledDivContentWrapper = styled.div`\n display: flex;\n flex-direction: column;\n height: 100%;\n`;\n\ninterface IValuesSummaryProps {\n record: IRecordIdentityWhoAmI | null;\n attributeId: string;\n globalValues?: Array<RecordFormElementsValueStandardValue['payload']>;\n calculatedValues?: Array<RecordFormElementsValueStandardValue['payload']>;\n}\n\nconst calculatedValueKey = '0';\nconst globalValueKey = '1';\n\n// https://stackoverflow.com/questions/822452/strip-html-tags-from-text-using-plain-javascript\nconst stripHtml = (html: string): string => {\n const doc = new DOMParser().parseFromString(html, 'text/html');\n return doc.body.textContent || '';\n};\n\nconst _isDateRangeValue = (value: any): value is {from: string; to: string} =>\n !!value && typeof value === 'object' && 'from' in value && 'to' in value;\n\nexport const ValuesSummary: FunctionComponent<IValuesSummaryProps> = ({\n record,\n attributeId,\n globalValues = [],\n calculatedValues = [],\n}) => {\n const {t} = useSharedTranslation();\n\n const stringifyValue = (value: RecordFormElementsValueStandardValue['payload']): string => {\n if (typeof value === 'string') {\n return stripHtml(value);\n }\n\n if (typeof value === 'boolean') {\n return value ? t('global.yes') : t('global.no');\n }\n\n if (_isDateRangeValue(value)) {\n return t('record_edition.date_range_value', {\n from: value.from,\n to: value.to,\n interpolation: {\n escapeValue: false,\n },\n });\n }\n\n return value;\n };\n\n const stripedGlobalValues = globalValues.map(stringifyValue);\n const stripedCalculatedValues = calculatedValues.map(stringifyValue);\n\n return (\n <StyledDivContentWrapper>\n <KitTabs\n items={[\n {\n key: 'version_values',\n label: t('record_summary.values_version'),\n tabContent: (\n <InformationsWrapper>\n <KitTree\n defaultExpandAll\n selectedKeys={\n calculatedValues.length > 0 && globalValues.length === 0\n ? [calculatedValueKey]\n : [globalValueKey]\n }\n treeData={[\n {\n key: calculatedValueKey,\n title: (\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n }}\n >\n <span>\n <FaSquareRootAlt /> {t('record_summary.calculated_value')}\n </span>\n <KitBadge count={stripedCalculatedValues.length} color=\"primary\" />\n </div>\n ),\n children:\n stripedCalculatedValues.length > 0\n ? stripedCalculatedValues.map((calculatedValue, index) => ({\n key: `${calculatedValueKey}-${index}`,\n title: calculatedValue,\n }))\n : [\n {\n key: `${calculatedValueKey}-${0}`,\n title: <i>{t('record_summary.no_value')}</i>,\n },\n ],\n },\n {\n key: globalValueKey,\n title: (\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n }}\n >\n <span>\n <FaLayerGroup /> {t('record_summary.global')}\n </span>\n <KitBadge count={stripedGlobalValues.length} color=\"primary\" />\n </div>\n ),\n children:\n stripedGlobalValues.length > 0\n ? stripedGlobalValues.map((value, index) => ({\n key: `${globalValueKey}-${index}`,\n title: value,\n }))\n : [\n {\n key: `${globalValueKey}-${0}`,\n title: <i>{t('record_summary.no_value')}</i>,\n },\n ],\n },\n ]}\n />\n </InformationsWrapper>\n ),\n },\n {\n key: 'history',\n label: t('record_summary.history'),\n tabContent: <RecordHistory record={record} attributeId={attributeId} />,\n },\n ]}\n />\n </StyledDivContentWrapper>\n );\n};\n\nexport default ValuesSummary;\n"]}
|
|
@@ -4,7 +4,7 @@ import { type RecordFormElementsValueLinkValue, type RecordFormElementsValueStan
|
|
|
4
4
|
export interface IRecordPropertyWithAttribute {
|
|
5
5
|
attribute: RecordFormAttributeFragment;
|
|
6
6
|
globalValues?: Array<RecordFormElementsValueStandardValue['payload']>;
|
|
7
|
-
|
|
7
|
+
calculatedValues?: Array<RecordFormElementsValueStandardValue['payload']>;
|
|
8
8
|
}
|
|
9
9
|
export declare const EditRecordSidebarContentTypeMap: {
|
|
10
10
|
readonly SUMMARY: "summary";
|
|
@@ -82,8 +82,9 @@ const editRecordReducer = (state, action) => {
|
|
|
82
82
|
}
|
|
83
83
|
return value?.payload;
|
|
84
84
|
}),
|
|
85
|
-
|
|
86
|
-
|
|
85
|
+
calculatedValues: action.values
|
|
86
|
+
?.filter(value => value.isCalculated || value.isInherited)
|
|
87
|
+
.map(calculatedOrInheritedValue => {
|
|
87
88
|
if (TypeGuards.isRecordFormElementsValuesLinkValue(calculatedOrInheritedValue)) {
|
|
88
89
|
return (calculatedOrInheritedValue.linkValue.whoAmI.label ??
|
|
89
90
|
calculatedOrInheritedValue.linkValue.whoAmI.id);
|
|
@@ -93,7 +94,7 @@ const editRecordReducer = (state, action) => {
|
|
|
93
94
|
calculatedOrInheritedValue.treeValue.record.whoAmI.id);
|
|
94
95
|
}
|
|
95
96
|
return calculatedOrInheritedValue?.payload;
|
|
96
|
-
})
|
|
97
|
+
}) ?? [],
|
|
97
98
|
},
|
|
98
99
|
sidebarContent: newSidebarContent,
|
|
99
100
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editRecordReducer.js","sourceRoot":"","sources":["../../../../src/components/RecordEdition/editRecordReducer/editRecordReducer.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {type IRecordIdentityWhoAmI, type SystemTranslation, type IValueVersion} from '_ui/types';\nimport {\n type RecordFormAttributeFragment,\n type RecordUpdateSubscription,\n type ValueDetailsFragment,\n} from '_ui/_gqlTypes';\nimport {\n type RecordFormElementsValueLinkValue,\n type RecordFormElementsValueStandardValue,\n type RecordFormElementsValueTreeValue,\n} from '_ui/hooks/useGetRecordForm';\nimport {TypeGuards} from '_ui/components/LibraryItemsList/LibraryItemsListTable/Cell/typeGuards';\n\nexport interface IRecordPropertyWithAttribute {\n attribute: RecordFormAttributeFragment;\n globalValues?: Array<RecordFormElementsValueStandardValue['payload']>;\n calculatedValue?: RecordFormElementsValueStandardValue['payload'];\n}\n\nexport const EditRecordSidebarContentTypeMap = {\n SUMMARY: 'summary',\n VALUE_DETAILS: 'valueDetails',\n VALUES_VERSIONS: 'valuesVersions',\n NONE: 'none',\n} as const;\n\ntype EditRecordSidebarContentType =\n (typeof EditRecordSidebarContentTypeMap)[keyof typeof EditRecordSidebarContentTypeMap];\n\nexport interface IEditRecordReducerState {\n record: IRecordIdentityWhoAmI;\n libraryId: string;\n libraryLabel: SystemTranslation | null;\n activeAttribute: IRecordPropertyWithAttribute;\n sidebarContent: EditRecordSidebarContentType;\n enableSidebar: boolean;\n isOpenSidebar: boolean;\n sidebarDefaultHidden?: boolean;\n valuesVersion: IValueVersion;\n originValuesVersion: IValueVersion;\n refreshRequested: boolean;\n externalUpdate: {\n modifiers: IRecordIdentityWhoAmI[];\n updatedValues: {\n [attribute: string]: ValueDetailsFragment[];\n };\n };\n withInfoButton: boolean;\n}\n\nexport enum EditRecordReducerActionsTypes {\n SET_RECORD = 'SET_RECORD',\n SET_LIBRARY_LABEL = 'SET_LIBRARY_LABEL',\n SET_ACTIVE_VALUE = 'SET_ACTIVE_VALUE',\n INITIALIZE_SIDEBAR = 'INITIALIZE_SIDEBAR',\n SET_ENABLE_SIDEBAR = 'SET_ENABLE_SIDEBAR',\n SET_SIDEBAR_CONTENT = 'SET_SIDEBAR_CONTENT',\n SET_SIDEBAR_IS_OPEN = 'SET_SIDEBAR_IS_OPEN',\n SET_SIDEBAR_DEFAULT_HIDDEN = 'SET_SIDEBAR_DEFAULT_HIDDEN',\n SET_VALUES_VERSION = 'SET_VALUES_VERSION',\n REQUEST_REFRESH = 'REQUEST_REFRESH',\n REFRESH_DONE = 'REFRESH_DONE',\n ADD_EXTERNAL_UPDATE = 'ADD_EXTERNAL_UPDATE',\n CLEAR_EXTERNAL_UPDATE = 'CLEAR_EXTERNAL_UPDATE',\n}\n\nexport type IEditRecordReducerActions =\n | {\n type: EditRecordReducerActionsTypes.SET_RECORD;\n record: IEditRecordReducerState['record'];\n }\n | {\n type: EditRecordReducerActionsTypes.SET_LIBRARY_LABEL;\n label: SystemTranslation;\n }\n | {\n type: EditRecordReducerActionsTypes.SET_ACTIVE_VALUE;\n attribute?: IEditRecordReducerState['activeAttribute']['attribute'];\n values?:\n | RecordFormElementsValueStandardValue[]\n | RecordFormElementsValueLinkValue[]\n | RecordFormElementsValueTreeValue[];\n }\n | {\n type: EditRecordReducerActionsTypes.INITIALIZE_SIDEBAR;\n enabled: IEditRecordReducerState['enableSidebar'];\n isOpenByDefault: IEditRecordReducerState['sidebarDefaultHidden'];\n }\n | {\n type: EditRecordReducerActionsTypes.SET_ENABLE_SIDEBAR;\n enabled: IEditRecordReducerState['enableSidebar'];\n }\n | {\n type: EditRecordReducerActionsTypes.SET_SIDEBAR_IS_OPEN;\n isOpen: IEditRecordReducerState['isOpenSidebar'];\n }\n | {\n type: EditRecordReducerActionsTypes.SET_SIDEBAR_CONTENT;\n content: IEditRecordReducerState['sidebarContent'];\n }\n | {\n type: EditRecordReducerActionsTypes.SET_SIDEBAR_DEFAULT_HIDDEN;\n value: IEditRecordReducerState['sidebarDefaultHidden'];\n }\n | {\n type: EditRecordReducerActionsTypes.SET_VALUES_VERSION;\n valuesVersion: IEditRecordReducerState['valuesVersion'];\n }\n | {\n type: EditRecordReducerActionsTypes.REQUEST_REFRESH;\n }\n | {\n type: EditRecordReducerActionsTypes.REFRESH_DONE;\n }\n | {\n type: EditRecordReducerActionsTypes.ADD_EXTERNAL_UPDATE;\n modifier: IRecordIdentityWhoAmI;\n updatedValues: RecordUpdateSubscription['recordUpdate']['updatedValues'];\n }\n | {\n type: EditRecordReducerActionsTypes.CLEAR_EXTERNAL_UPDATE;\n };\n\nexport const initialState: IEditRecordReducerState = {\n record: null,\n libraryId: null,\n libraryLabel: null,\n activeAttribute: null,\n enableSidebar: false,\n isOpenSidebar: false,\n sidebarContent: EditRecordSidebarContentTypeMap.NONE,\n sidebarDefaultHidden: false,\n valuesVersion: null,\n originValuesVersion: null,\n refreshRequested: false,\n externalUpdate: {\n modifiers: [],\n updatedValues: {},\n },\n withInfoButton: false,\n};\n\nconst editRecordReducer = (\n state: IEditRecordReducerState,\n action: IEditRecordReducerActions,\n): IEditRecordReducerState => {\n switch (action.type) {\n case EditRecordReducerActionsTypes.SET_RECORD:\n return {...state, record: action.record};\n case EditRecordReducerActionsTypes.SET_LIBRARY_LABEL:\n return {...state, libraryLabel: action.label};\n case EditRecordReducerActionsTypes.INITIALIZE_SIDEBAR: {\n const {enabled, isOpenByDefault} = action;\n // If the sidebar is not enabled, don't check for isOpenByDefault\n const isOpen = enabled && isOpenByDefault;\n return {\n ...state,\n enableSidebar: enabled,\n sidebarDefaultHidden: !isOpenByDefault,\n sidebarContent: isOpen ? EditRecordSidebarContentTypeMap.SUMMARY : EditRecordSidebarContentTypeMap.NONE,\n isOpenSidebar: isOpen,\n };\n }\n case EditRecordReducerActionsTypes.SET_ENABLE_SIDEBAR:\n return {...state, enableSidebar: action.enabled};\n case EditRecordReducerActionsTypes.SET_SIDEBAR_DEFAULT_HIDDEN:\n return {...state, sidebarDefaultHidden: action.value};\n case EditRecordReducerActionsTypes.SET_ACTIVE_VALUE:\n const newSidebarContent =\n action.attribute !== null\n ? EditRecordSidebarContentTypeMap.VALUE_DETAILS\n : state.sidebarDefaultHidden\n ? EditRecordSidebarContentTypeMap.NONE\n : EditRecordSidebarContentTypeMap.SUMMARY;\n return {\n ...state,\n activeAttribute: {\n attribute: action.attribute ?? state.activeAttribute?.attribute ?? null,\n globalValues: action.values\n ?.filter(value => !value.isCalculated && !value.isInherited)\n .map(value => {\n if (TypeGuards.isRecordFormElementsValuesLinkValue(value)) {\n return value.linkValue.whoAmI.label ?? value.linkValue.whoAmI.id;\n }\n\n if (TypeGuards.isRecordFormElementsValuesTreeValue(value)) {\n return value.treeValue.record.whoAmI.label ?? value.treeValue.record.whoAmI.id;\n }\n\n return value?.payload;\n }),\n calculatedValue: (() => {\n const calculatedOrInheritedValue = action.values?.filter(\n value => value.isCalculated || value.isInherited,\n )?.[0];\n\n if (TypeGuards.isRecordFormElementsValuesLinkValue(calculatedOrInheritedValue)) {\n return (\n calculatedOrInheritedValue.linkValue.whoAmI.label ??\n calculatedOrInheritedValue.linkValue.whoAmI.id\n );\n }\n\n if (TypeGuards.isRecordFormElementsValuesTreeValue(calculatedOrInheritedValue)) {\n return (\n calculatedOrInheritedValue.treeValue.record.whoAmI.label ??\n calculatedOrInheritedValue.treeValue.record.whoAmI.id\n );\n }\n\n return calculatedOrInheritedValue?.payload;\n })(),\n },\n sidebarContent: newSidebarContent,\n };\n case EditRecordReducerActionsTypes.SET_SIDEBAR_CONTENT:\n return {...state, sidebarContent: action.content};\n case EditRecordReducerActionsTypes.SET_SIDEBAR_IS_OPEN:\n return {\n ...state,\n sidebarContent: action.isOpen\n ? EditRecordSidebarContentTypeMap.SUMMARY\n : EditRecordSidebarContentTypeMap.NONE,\n isOpenSidebar: action.isOpen,\n };\n case EditRecordReducerActionsTypes.SET_VALUES_VERSION:\n return {...state, valuesVersion: action.valuesVersion};\n case EditRecordReducerActionsTypes.REQUEST_REFRESH:\n return {...state, refreshRequested: true};\n case EditRecordReducerActionsTypes.REFRESH_DONE:\n return {...state, refreshRequested: false};\n case EditRecordReducerActionsTypes.ADD_EXTERNAL_UPDATE:\n const newState = {...state};\n const newModifiers = state.externalUpdate?.modifiers.find(({id}) => id === action.modifier.id)\n ? (newState.externalUpdate?.modifiers ?? [])\n : [...(newState.externalUpdate?.modifiers ?? []), action.modifier];\n\n const newValues = action.updatedValues.reduce(\n (acc, updatedValue) => ({\n ...acc,\n [updatedValue.attribute]: [\n ...(newState.externalUpdate?.[updatedValue.attribute] ?? []),\n updatedValue.value,\n ],\n }),\n {},\n );\n\n newState.externalUpdate = {\n modifiers: newModifiers,\n updatedValues: {...(state.externalUpdate?.updatedValues ?? {}), ...newValues},\n };\n\n return newState;\n case EditRecordReducerActionsTypes.CLEAR_EXTERNAL_UPDATE:\n return {...state, externalUpdate: {...initialState.externalUpdate}};\n default:\n console.warn('Unknown action type in editRecordReducer:', action);\n return state;\n }\n};\n\nexport default editRecordReducer;\n"]}
|
|
1
|
+
{"version":3,"file":"editRecordReducer.js","sourceRoot":"","sources":["../../../../src/components/RecordEdition/editRecordReducer/editRecordReducer.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {type IRecordIdentityWhoAmI, type SystemTranslation, type IValueVersion} from '_ui/types';\nimport {\n type RecordFormAttributeFragment,\n type RecordUpdateSubscription,\n type ValueDetailsFragment,\n} from '_ui/_gqlTypes';\nimport {\n type RecordFormElementsValueLinkValue,\n type RecordFormElementsValueStandardValue,\n type RecordFormElementsValueTreeValue,\n} from '_ui/hooks/useGetRecordForm';\nimport {TypeGuards} from '_ui/components/LibraryItemsList/LibraryItemsListTable/Cell/typeGuards';\n\nexport interface IRecordPropertyWithAttribute {\n attribute: RecordFormAttributeFragment;\n globalValues?: Array<RecordFormElementsValueStandardValue['payload']>;\n calculatedValues?: Array<RecordFormElementsValueStandardValue['payload']>;\n}\n\nexport const EditRecordSidebarContentTypeMap = {\n SUMMARY: 'summary',\n VALUE_DETAILS: 'valueDetails',\n VALUES_VERSIONS: 'valuesVersions',\n NONE: 'none',\n} as const;\n\ntype EditRecordSidebarContentType =\n (typeof EditRecordSidebarContentTypeMap)[keyof typeof EditRecordSidebarContentTypeMap];\n\nexport interface IEditRecordReducerState {\n record: IRecordIdentityWhoAmI;\n libraryId: string;\n libraryLabel: SystemTranslation | null;\n activeAttribute: IRecordPropertyWithAttribute;\n sidebarContent: EditRecordSidebarContentType;\n enableSidebar: boolean;\n isOpenSidebar: boolean;\n sidebarDefaultHidden?: boolean;\n valuesVersion: IValueVersion;\n originValuesVersion: IValueVersion;\n refreshRequested: boolean;\n externalUpdate: {\n modifiers: IRecordIdentityWhoAmI[];\n updatedValues: {\n [attribute: string]: ValueDetailsFragment[];\n };\n };\n withInfoButton: boolean;\n}\n\nexport enum EditRecordReducerActionsTypes {\n SET_RECORD = 'SET_RECORD',\n SET_LIBRARY_LABEL = 'SET_LIBRARY_LABEL',\n SET_ACTIVE_VALUE = 'SET_ACTIVE_VALUE',\n INITIALIZE_SIDEBAR = 'INITIALIZE_SIDEBAR',\n SET_ENABLE_SIDEBAR = 'SET_ENABLE_SIDEBAR',\n SET_SIDEBAR_CONTENT = 'SET_SIDEBAR_CONTENT',\n SET_SIDEBAR_IS_OPEN = 'SET_SIDEBAR_IS_OPEN',\n SET_SIDEBAR_DEFAULT_HIDDEN = 'SET_SIDEBAR_DEFAULT_HIDDEN',\n SET_VALUES_VERSION = 'SET_VALUES_VERSION',\n REQUEST_REFRESH = 'REQUEST_REFRESH',\n REFRESH_DONE = 'REFRESH_DONE',\n ADD_EXTERNAL_UPDATE = 'ADD_EXTERNAL_UPDATE',\n CLEAR_EXTERNAL_UPDATE = 'CLEAR_EXTERNAL_UPDATE',\n}\n\nexport type IEditRecordReducerActions =\n | {\n type: EditRecordReducerActionsTypes.SET_RECORD;\n record: IEditRecordReducerState['record'];\n }\n | {\n type: EditRecordReducerActionsTypes.SET_LIBRARY_LABEL;\n label: SystemTranslation;\n }\n | {\n type: EditRecordReducerActionsTypes.SET_ACTIVE_VALUE;\n attribute?: IEditRecordReducerState['activeAttribute']['attribute'];\n values?:\n | RecordFormElementsValueStandardValue[]\n | RecordFormElementsValueLinkValue[]\n | RecordFormElementsValueTreeValue[];\n }\n | {\n type: EditRecordReducerActionsTypes.INITIALIZE_SIDEBAR;\n enabled: IEditRecordReducerState['enableSidebar'];\n isOpenByDefault: IEditRecordReducerState['sidebarDefaultHidden'];\n }\n | {\n type: EditRecordReducerActionsTypes.SET_ENABLE_SIDEBAR;\n enabled: IEditRecordReducerState['enableSidebar'];\n }\n | {\n type: EditRecordReducerActionsTypes.SET_SIDEBAR_IS_OPEN;\n isOpen: IEditRecordReducerState['isOpenSidebar'];\n }\n | {\n type: EditRecordReducerActionsTypes.SET_SIDEBAR_CONTENT;\n content: IEditRecordReducerState['sidebarContent'];\n }\n | {\n type: EditRecordReducerActionsTypes.SET_SIDEBAR_DEFAULT_HIDDEN;\n value: IEditRecordReducerState['sidebarDefaultHidden'];\n }\n | {\n type: EditRecordReducerActionsTypes.SET_VALUES_VERSION;\n valuesVersion: IEditRecordReducerState['valuesVersion'];\n }\n | {\n type: EditRecordReducerActionsTypes.REQUEST_REFRESH;\n }\n | {\n type: EditRecordReducerActionsTypes.REFRESH_DONE;\n }\n | {\n type: EditRecordReducerActionsTypes.ADD_EXTERNAL_UPDATE;\n modifier: IRecordIdentityWhoAmI;\n updatedValues: RecordUpdateSubscription['recordUpdate']['updatedValues'];\n }\n | {\n type: EditRecordReducerActionsTypes.CLEAR_EXTERNAL_UPDATE;\n };\n\nexport const initialState: IEditRecordReducerState = {\n record: null,\n libraryId: null,\n libraryLabel: null,\n activeAttribute: null,\n enableSidebar: false,\n isOpenSidebar: false,\n sidebarContent: EditRecordSidebarContentTypeMap.NONE,\n sidebarDefaultHidden: false,\n valuesVersion: null,\n originValuesVersion: null,\n refreshRequested: false,\n externalUpdate: {\n modifiers: [],\n updatedValues: {},\n },\n withInfoButton: false,\n};\n\nconst editRecordReducer = (\n state: IEditRecordReducerState,\n action: IEditRecordReducerActions,\n): IEditRecordReducerState => {\n switch (action.type) {\n case EditRecordReducerActionsTypes.SET_RECORD:\n return {...state, record: action.record};\n case EditRecordReducerActionsTypes.SET_LIBRARY_LABEL:\n return {...state, libraryLabel: action.label};\n case EditRecordReducerActionsTypes.INITIALIZE_SIDEBAR: {\n const {enabled, isOpenByDefault} = action;\n // If the sidebar is not enabled, don't check for isOpenByDefault\n const isOpen = enabled && isOpenByDefault;\n return {\n ...state,\n enableSidebar: enabled,\n sidebarDefaultHidden: !isOpenByDefault,\n sidebarContent: isOpen ? EditRecordSidebarContentTypeMap.SUMMARY : EditRecordSidebarContentTypeMap.NONE,\n isOpenSidebar: isOpen,\n };\n }\n case EditRecordReducerActionsTypes.SET_ENABLE_SIDEBAR:\n return {...state, enableSidebar: action.enabled};\n case EditRecordReducerActionsTypes.SET_SIDEBAR_DEFAULT_HIDDEN:\n return {...state, sidebarDefaultHidden: action.value};\n case EditRecordReducerActionsTypes.SET_ACTIVE_VALUE:\n const newSidebarContent =\n action.attribute !== null\n ? EditRecordSidebarContentTypeMap.VALUE_DETAILS\n : state.sidebarDefaultHidden\n ? EditRecordSidebarContentTypeMap.NONE\n : EditRecordSidebarContentTypeMap.SUMMARY;\n return {\n ...state,\n activeAttribute: {\n attribute: action.attribute ?? state.activeAttribute?.attribute ?? null,\n globalValues: action.values\n ?.filter(value => !value.isCalculated && !value.isInherited)\n .map(value => {\n if (TypeGuards.isRecordFormElementsValuesLinkValue(value)) {\n return value.linkValue.whoAmI.label ?? value.linkValue.whoAmI.id;\n }\n\n if (TypeGuards.isRecordFormElementsValuesTreeValue(value)) {\n return value.treeValue.record.whoAmI.label ?? value.treeValue.record.whoAmI.id;\n }\n\n return value?.payload;\n }),\n calculatedValues:\n action.values\n ?.filter(value => value.isCalculated || value.isInherited)\n .map(calculatedOrInheritedValue => {\n if (TypeGuards.isRecordFormElementsValuesLinkValue(calculatedOrInheritedValue)) {\n return (\n calculatedOrInheritedValue.linkValue.whoAmI.label ??\n calculatedOrInheritedValue.linkValue.whoAmI.id\n );\n }\n\n if (TypeGuards.isRecordFormElementsValuesTreeValue(calculatedOrInheritedValue)) {\n return (\n calculatedOrInheritedValue.treeValue.record.whoAmI.label ??\n calculatedOrInheritedValue.treeValue.record.whoAmI.id\n );\n }\n\n return calculatedOrInheritedValue?.payload;\n }) ?? [],\n },\n sidebarContent: newSidebarContent,\n };\n case EditRecordReducerActionsTypes.SET_SIDEBAR_CONTENT:\n return {...state, sidebarContent: action.content};\n case EditRecordReducerActionsTypes.SET_SIDEBAR_IS_OPEN:\n return {\n ...state,\n sidebarContent: action.isOpen\n ? EditRecordSidebarContentTypeMap.SUMMARY\n : EditRecordSidebarContentTypeMap.NONE,\n isOpenSidebar: action.isOpen,\n };\n case EditRecordReducerActionsTypes.SET_VALUES_VERSION:\n return {...state, valuesVersion: action.valuesVersion};\n case EditRecordReducerActionsTypes.REQUEST_REFRESH:\n return {...state, refreshRequested: true};\n case EditRecordReducerActionsTypes.REFRESH_DONE:\n return {...state, refreshRequested: false};\n case EditRecordReducerActionsTypes.ADD_EXTERNAL_UPDATE:\n const newState = {...state};\n const newModifiers = state.externalUpdate?.modifiers.find(({id}) => id === action.modifier.id)\n ? (newState.externalUpdate?.modifiers ?? [])\n : [...(newState.externalUpdate?.modifiers ?? []), action.modifier];\n\n const newValues = action.updatedValues.reduce(\n (acc, updatedValue) => ({\n ...acc,\n [updatedValue.attribute]: [\n ...(newState.externalUpdate?.[updatedValue.attribute] ?? []),\n updatedValue.value,\n ],\n }),\n {},\n );\n\n newState.externalUpdate = {\n modifiers: newModifiers,\n updatedValues: {...(state.externalUpdate?.updatedValues ?? {}), ...newValues},\n };\n\n return newState;\n case EditRecordReducerActionsTypes.CLEAR_EXTERNAL_UPDATE:\n return {...state, externalUpdate: {...initialState.externalUpdate}};\n default:\n console.warn('Unknown action type in editRecordReducer:', action);\n return state;\n }\n};\n\nexport default editRecordReducer;\n"]}
|
|
@@ -157,6 +157,9 @@ export const SelectTreeNodeContent = ({ treeData: tree, childrenAsRecordValuePer
|
|
|
157
157
|
}
|
|
158
158
|
};
|
|
159
159
|
const _handleCheck = selection => {
|
|
160
|
+
if (!canSelectRoot && Array.isArray(selection) && selection.includes(tree.id)) {
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
160
163
|
const checkedKeys = _isObjectSelection(selection) ? selection.checked : selection;
|
|
161
164
|
const nodes = checkedKeys.map(key => treeMap[key]);
|
|
162
165
|
onCheck(nodes);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectTreeNodeContent.js","sourceRoot":"","sources":["../../../src/components/SelectTreeNode/SelectTreeNodeContent.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {type ComponentProps, type FunctionComponent, useEffect, useState} from 'react';\nimport {KitTree} from 'aristid-ds';\nimport {Spin} from 'antd';\nimport {type EventDataNode} from 'antd/lib/tree';\nimport {type ITreeNodeWithRecord} from '_ui/types';\nimport {type ChildrenAsRecordValuePermissionFilterInput, useTreeNodeChildrenLazyQuery} from '_ui/_gqlTypes';\nimport {defaultPaginationPageSize, ErrorDisplay} from '../../index';\nimport {TreeNodeTitle} from './TreeNodeTitle';\nimport {_isObjectSelection, type ITreeMap, type ITreeMapElement} from './_types';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\n\ninterface ISelectTreeNodeContentProps {\n treeData: {id: string; label: string};\n childrenAsRecordValuePermissionFilter?: ChildrenAsRecordValuePermissionFilterInput;\n selectedNodes?: string[];\n disabledNodes?: string[];\n onSelect: (node: ITreeNodeWithRecord, selected: boolean) => void;\n onCheck?: (selection: ITreeNodeWithRecord[]) => void;\n multiple?: boolean;\n checkable?: boolean;\n checkStrictly?: boolean;\n canSelectRoot?: boolean;\n selectableLibraries?: string[]; // all by default\n loadRecursively?: boolean;\n noPagination?: boolean;\n showSelectChildrenButton?: boolean;\n}\n\nexport const SelectTreeNodeContent: FunctionComponent<ISelectTreeNodeContentProps> = ({\n treeData: tree,\n childrenAsRecordValuePermissionFilter,\n onSelect,\n onCheck,\n selectedNodes = [],\n disabledNodes = [],\n multiple = false,\n checkable = false,\n checkStrictly = true,\n canSelectRoot = false,\n selectableLibraries,\n loadRecursively = true,\n noPagination = false,\n showSelectChildrenButton = false,\n}) => {\n const {t} = useSharedTranslation();\n\n const rootNode: ITreeMapElement = {\n title: tree.label,\n record: null,\n id: tree.id,\n key: tree.id,\n isLeaf: false,\n parents: [],\n paginationOffset: 0,\n children: [],\n };\n\n // As we'll fetch children when a node is expanded, we store the whole tree content in a hash map\n // to make update easier and more efficient\n const [treeMap, setTreeMap] = useState<ITreeMap>({\n [tree.id]: rootNode,\n });\n\n const [fetchError, setFetchError] = useState<string | undefined>();\n const [loadTreeContent, {error, called}] = useTreeNodeChildrenLazyQuery();\n\n const _fetchTreeContent = async (parentNodeKey?: string, offset = 0, currentTreeMap = {...treeMap}) => {\n try {\n const {\n data: {treeNodeChildren},\n } = await loadTreeContent({\n variables: {\n treeId: tree.id,\n node: parentNodeKey && parentNodeKey !== tree.id ? parentNodeKey : null,\n pagination: noPagination\n ? undefined\n : {\n limit: defaultPaginationPageSize,\n offset,\n },\n childrenAsRecordValuePermissionFilter,\n },\n });\n\n const parentMapKey = parentNodeKey ?? tree.id;\n const totalCount = treeNodeChildren.totalCount;\n const parentElement = currentTreeMap[parentMapKey];\n const showMoreKey = '__showMore' + parentMapKey + offset;\n\n const parentPath = parentElement?.parents ?? [];\n const currentParents = [...parentPath, parentMapKey];\n\n const formattedNodes = treeNodeChildren.list.map(e => ({\n record: e.record,\n title: e.record.whoAmI.label || e.record.whoAmI.id,\n id: e.id,\n key: e.id,\n isLeaf: !e.childrenCount,\n children: [],\n parents: currentParents,\n paginationOffset: 0,\n disabled: disabledNodes.includes(e.id),\n }));\n\n const existingKeys = new Set(parentElement.children.map(child => child.key));\n const newNodes = formattedNodes.filter(node => !existingKeys.has(node.key));\n parentElement.children = [\n ...parentElement.children.filter(child => !child.key.startsWith(`__showMore${parentMapKey}`)),\n ...newNodes,\n ];\n\n for (const node of formattedNodes) {\n currentTreeMap[node.key] = node as ITreeMapElement;\n parentElement.paginationOffset = offset;\n }\n\n if (!noPagination && totalCount > parentElement.paginationOffset + defaultPaginationPageSize) {\n const showMoreElement: ITreeMapElement = {\n isShowMore: true,\n record: null,\n title: t('tree-node-selection.show_more'),\n id: parentMapKey,\n key: showMoreKey,\n isLeaf: false,\n children: [],\n paginationOffset: 0,\n };\n parentElement.children.push(showMoreElement);\n }\n\n const newOffset = offset + defaultPaginationPageSize;\n if (treeNodeChildren.totalCount > newOffset) {\n await _fetchTreeContent(parentNodeKey, newOffset, currentTreeMap);\n }\n\n if (loadRecursively) {\n for (const node of formattedNodes) {\n if (!node.isLeaf) {\n await _fetchTreeContent(node.key, 0, currentTreeMap);\n }\n }\n }\n\n setTreeMap(currentTreeMap);\n setFetchError(undefined);\n } catch (err) {\n setFetchError((err as Error).message);\n }\n };\n\n useEffect(() => {\n _fetchTreeContent(undefined, 0);\n }, []);\n\n /**\n * In strict mode, loadData handler is called twice\n * https://github.com/ant-design/ant-design/issues/54497\n */\n const _handleLoadData: ComponentProps<typeof KitTree>['loadData'] = async nodeData => {\n const {id, isShowMore} = nodeData as EventDataNode<ITreeMapElement>;\n\n // Handle offset if we get here through the \"show more\" element\n const currentNodeOffset = treeMap[id]?.paginationOffset ?? 0;\n const paginationOffset = isShowMore\n ? (treeMap[id]?.paginationOffset ?? 0) + defaultPaginationPageSize\n : currentNodeOffset;\n\n if (id === tree.id && !isShowMore) {\n // Root has already been loaded\n return;\n }\n\n await _fetchTreeContent(id, paginationOffset);\n };\n\n const _handleSelect: ComponentProps<typeof KitTree>['onSelect'] = (_, e) => {\n // Prevent selecting when clicking on select all children button\n if (e.nativeEvent.target instanceof HTMLButtonElement) {\n return;\n }\n // If user clicked on the text \"show more\", we load more children instead of selecting the node\n if ('isShowMore' in e.node && e.node.isShowMore) {\n _handleLoadData(e.node);\n return;\n }\n\n const node = treeMap[e.node.key];\n const isRoot = node.id === tree.id;\n\n if (\n (!canSelectRoot && isRoot) ||\n (!isRoot && selectableLibraries && !selectableLibraries.includes(node.record.whoAmI.library.id))\n ) {\n return;\n }\n\n const getAllDescendants = (nodeId: string): string[] =>\n treeMap[nodeId].children.reduce<string[]>(\n (acc, child) => [...acc, child.id, ...getAllDescendants(child.id)],\n [],\n );\n\n if (node) {\n if (checkable) {\n const isDeselecting = selectedNodes.includes(node.id);\n if (isDeselecting) {\n const nodeToDeselect = [node.id, ...node.parents, ...getAllDescendants(node.id)];\n const selectionToKeep = selectedNodes.filter(\n selectedNode => !nodeToDeselect.includes(selectedNode),\n );\n _handleCheck(selectionToKeep, null);\n } else {\n _handleCheck([...selectedNodes, node.id], null);\n }\n } else {\n onSelect(node, e.selected);\n }\n }\n };\n\n const _handleCheck: ComponentProps<typeof KitTree>['onCheck'] = selection => {\n const checkedKeys = _isObjectSelection(selection) ? selection.checked : selection;\n const nodes = checkedKeys.map(key => treeMap[key]);\n onCheck(nodes);\n };\n\n if (!called) {\n return <Spin />;\n }\n\n if (error || fetchError) {\n return <ErrorDisplay message={error?.message ?? fetchError} />;\n }\n\n return (\n <KitTree\n checkStrictly={checkStrictly}\n treeData={[treeMap[rootNode.key]]}\n loadData={loadRecursively ? undefined : _handleLoadData}\n multiple={multiple}\n checkable={checkable}\n defaultExpandedKeys={selectedNodes.length > 0 ? [...selectedNodes, tree.id] : [tree.id]}\n selectedKeys={selectedNodes}\n checkedKeys={selectedNodes}\n titleRender={node => (\n <TreeNodeTitle\n checkable={checkable}\n disabledNodes={disabledNodes}\n loadRecursively={loadRecursively}\n node={node as ITreeMapElement}\n onSelect={onSelect}\n selectedNodes={selectedNodes}\n showSelectChildrenButton={showSelectChildrenButton}\n />\n )}\n onSelect={_handleSelect}\n onCheck={_handleCheck}\n />\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"SelectTreeNodeContent.js","sourceRoot":"","sources":["../../../src/components/SelectTreeNode/SelectTreeNodeContent.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {type ComponentProps, type FunctionComponent, useEffect, useState} from 'react';\nimport {KitTree} from 'aristid-ds';\nimport {Spin} from 'antd';\nimport {type EventDataNode} from 'antd/lib/tree';\nimport {type ITreeNodeWithRecord} from '_ui/types';\nimport {type ChildrenAsRecordValuePermissionFilterInput, useTreeNodeChildrenLazyQuery} from '_ui/_gqlTypes';\nimport {defaultPaginationPageSize, ErrorDisplay} from '../../index';\nimport {TreeNodeTitle} from './TreeNodeTitle';\nimport {_isObjectSelection, type ITreeMap, type ITreeMapElement} from './_types';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\n\ninterface ISelectTreeNodeContentProps {\n treeData: {id: string; label: string};\n childrenAsRecordValuePermissionFilter?: ChildrenAsRecordValuePermissionFilterInput;\n selectedNodes?: string[];\n disabledNodes?: string[];\n onSelect: (node: ITreeNodeWithRecord, selected: boolean) => void;\n onCheck?: (selection: ITreeNodeWithRecord[]) => void;\n multiple?: boolean;\n checkable?: boolean;\n checkStrictly?: boolean;\n canSelectRoot?: boolean;\n selectableLibraries?: string[]; // all by default\n loadRecursively?: boolean;\n noPagination?: boolean;\n showSelectChildrenButton?: boolean;\n}\n\nexport const SelectTreeNodeContent: FunctionComponent<ISelectTreeNodeContentProps> = ({\n treeData: tree,\n childrenAsRecordValuePermissionFilter,\n onSelect,\n onCheck,\n selectedNodes = [],\n disabledNodes = [],\n multiple = false,\n checkable = false,\n checkStrictly = true,\n canSelectRoot = false,\n selectableLibraries,\n loadRecursively = true,\n noPagination = false,\n showSelectChildrenButton = false,\n}) => {\n const {t} = useSharedTranslation();\n\n const rootNode: ITreeMapElement = {\n title: tree.label,\n record: null,\n id: tree.id,\n key: tree.id,\n isLeaf: false,\n parents: [],\n paginationOffset: 0,\n children: [],\n };\n\n // As we'll fetch children when a node is expanded, we store the whole tree content in a hash map\n // to make update easier and more efficient\n const [treeMap, setTreeMap] = useState<ITreeMap>({\n [tree.id]: rootNode,\n });\n\n const [fetchError, setFetchError] = useState<string | undefined>();\n const [loadTreeContent, {error, called}] = useTreeNodeChildrenLazyQuery();\n\n const _fetchTreeContent = async (parentNodeKey?: string, offset = 0, currentTreeMap = {...treeMap}) => {\n try {\n const {\n data: {treeNodeChildren},\n } = await loadTreeContent({\n variables: {\n treeId: tree.id,\n node: parentNodeKey && parentNodeKey !== tree.id ? parentNodeKey : null,\n pagination: noPagination\n ? undefined\n : {\n limit: defaultPaginationPageSize,\n offset,\n },\n childrenAsRecordValuePermissionFilter,\n },\n });\n\n const parentMapKey = parentNodeKey ?? tree.id;\n const totalCount = treeNodeChildren.totalCount;\n const parentElement = currentTreeMap[parentMapKey];\n const showMoreKey = '__showMore' + parentMapKey + offset;\n\n const parentPath = parentElement?.parents ?? [];\n const currentParents = [...parentPath, parentMapKey];\n\n const formattedNodes = treeNodeChildren.list.map(e => ({\n record: e.record,\n title: e.record.whoAmI.label || e.record.whoAmI.id,\n id: e.id,\n key: e.id,\n isLeaf: !e.childrenCount,\n children: [],\n parents: currentParents,\n paginationOffset: 0,\n disabled: disabledNodes.includes(e.id),\n }));\n\n const existingKeys = new Set(parentElement.children.map(child => child.key));\n const newNodes = formattedNodes.filter(node => !existingKeys.has(node.key));\n parentElement.children = [\n ...parentElement.children.filter(child => !child.key.startsWith(`__showMore${parentMapKey}`)),\n ...newNodes,\n ];\n\n for (const node of formattedNodes) {\n currentTreeMap[node.key] = node as ITreeMapElement;\n parentElement.paginationOffset = offset;\n }\n\n if (!noPagination && totalCount > parentElement.paginationOffset + defaultPaginationPageSize) {\n const showMoreElement: ITreeMapElement = {\n isShowMore: true,\n record: null,\n title: t('tree-node-selection.show_more'),\n id: parentMapKey,\n key: showMoreKey,\n isLeaf: false,\n children: [],\n paginationOffset: 0,\n };\n parentElement.children.push(showMoreElement);\n }\n\n const newOffset = offset + defaultPaginationPageSize;\n if (treeNodeChildren.totalCount > newOffset) {\n await _fetchTreeContent(parentNodeKey, newOffset, currentTreeMap);\n }\n\n if (loadRecursively) {\n for (const node of formattedNodes) {\n if (!node.isLeaf) {\n await _fetchTreeContent(node.key, 0, currentTreeMap);\n }\n }\n }\n\n setTreeMap(currentTreeMap);\n setFetchError(undefined);\n } catch (err) {\n setFetchError((err as Error).message);\n }\n };\n\n useEffect(() => {\n _fetchTreeContent(undefined, 0);\n }, []);\n\n /**\n * In strict mode, loadData handler is called twice\n * https://github.com/ant-design/ant-design/issues/54497\n */\n const _handleLoadData: ComponentProps<typeof KitTree>['loadData'] = async nodeData => {\n const {id, isShowMore} = nodeData as EventDataNode<ITreeMapElement>;\n\n // Handle offset if we get here through the \"show more\" element\n const currentNodeOffset = treeMap[id]?.paginationOffset ?? 0;\n const paginationOffset = isShowMore\n ? (treeMap[id]?.paginationOffset ?? 0) + defaultPaginationPageSize\n : currentNodeOffset;\n\n if (id === tree.id && !isShowMore) {\n // Root has already been loaded\n return;\n }\n\n await _fetchTreeContent(id, paginationOffset);\n };\n\n const _handleSelect: ComponentProps<typeof KitTree>['onSelect'] = (_, e) => {\n // Prevent selecting when clicking on select all children button\n if (e.nativeEvent.target instanceof HTMLButtonElement) {\n return;\n }\n // If user clicked on the text \"show more\", we load more children instead of selecting the node\n if ('isShowMore' in e.node && e.node.isShowMore) {\n _handleLoadData(e.node);\n return;\n }\n\n const node = treeMap[e.node.key];\n const isRoot = node.id === tree.id;\n\n if (\n (!canSelectRoot && isRoot) ||\n (!isRoot && selectableLibraries && !selectableLibraries.includes(node.record.whoAmI.library.id))\n ) {\n return;\n }\n\n const getAllDescendants = (nodeId: string): string[] =>\n treeMap[nodeId].children.reduce<string[]>(\n (acc, child) => [...acc, child.id, ...getAllDescendants(child.id)],\n [],\n );\n\n if (node) {\n if (checkable) {\n const isDeselecting = selectedNodes.includes(node.id);\n if (isDeselecting) {\n const nodeToDeselect = [node.id, ...node.parents, ...getAllDescendants(node.id)];\n const selectionToKeep = selectedNodes.filter(\n selectedNode => !nodeToDeselect.includes(selectedNode),\n );\n _handleCheck(selectionToKeep, null);\n } else {\n _handleCheck([...selectedNodes, node.id], null);\n }\n } else {\n onSelect(node, e.selected);\n }\n }\n };\n\n const _handleCheck: ComponentProps<typeof KitTree>['onCheck'] = selection => {\n if (!canSelectRoot && Array.isArray(selection) && selection.includes(tree.id)) {\n return;\n }\n const checkedKeys = _isObjectSelection(selection) ? selection.checked : selection;\n const nodes = checkedKeys.map(key => treeMap[key]);\n onCheck(nodes);\n };\n\n if (!called) {\n return <Spin />;\n }\n\n if (error || fetchError) {\n return <ErrorDisplay message={error?.message ?? fetchError} />;\n }\n\n return (\n <KitTree\n checkStrictly={checkStrictly}\n treeData={[treeMap[rootNode.key]]}\n loadData={loadRecursively ? undefined : _handleLoadData}\n multiple={multiple}\n checkable={checkable}\n defaultExpandedKeys={selectedNodes.length > 0 ? [...selectedNodes, tree.id] : [tree.id]}\n selectedKeys={selectedNodes}\n checkedKeys={selectedNodes}\n titleRender={node => (\n <TreeNodeTitle\n checkable={checkable}\n disabledNodes={disabledNodes}\n loadRecursively={loadRecursively}\n node={node as ITreeMapElement}\n onSelect={onSelect}\n selectedNodes={selectedNodes}\n showSelectChildrenButton={showSelectChildrenButton}\n />\n )}\n onSelect={_handleSelect}\n onCheck={_handleCheck}\n />\n );\n};\n"]}
|