@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.
Files changed (91) hide show
  1. package/dist/__mocks__/common/attribute.js +1 -0
  2. package/dist/__mocks__/common/attribute.js.map +1 -1
  3. package/dist/_gqlTypes/index.d.ts +115 -1
  4. package/dist/_gqlTypes/index.js +86 -0
  5. package/dist/_gqlTypes/index.js.map +1 -1
  6. package/dist/_queries/attributes/attributeDetailsFragment.js +1 -0
  7. package/dist/_queries/attributes/attributeDetailsFragment.js.map +1 -1
  8. package/dist/components/Explorer/Explorer.d.ts +1 -1
  9. package/dist/components/Explorer/Explorer.js +15 -3
  10. package/dist/components/Explorer/Explorer.js.map +1 -1
  11. package/dist/components/Explorer/_queries/useExplorerData.js +13 -2
  12. package/dist/components/Explorer/_queries/useExplorerData.js.map +1 -1
  13. package/dist/components/Explorer/actions-mass/edit-attribute/EditAttributeMassActionModal.d.ts +13 -0
  14. package/dist/components/Explorer/actions-mass/edit-attribute/EditAttributeMassActionModal.js +20 -0
  15. package/dist/components/Explorer/actions-mass/edit-attribute/EditAttributeMassActionModal.js.map +1 -0
  16. package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValueLine.d.ts +10 -0
  17. package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValueLine.js +38 -0
  18. package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValueLine.js.map +1 -0
  19. package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValuesMapping.d.ts +8 -0
  20. package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValuesMapping.js +16 -0
  21. package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValuesMapping.js.map +1 -0
  22. package/dist/components/Explorer/actions-mass/edit-attribute/useCountValuesOccurrencesHook.d.ts +10 -0
  23. package/dist/components/Explorer/actions-mass/edit-attribute/useCountValuesOccurrencesHook.js +28 -0
  24. package/dist/components/Explorer/actions-mass/edit-attribute/useCountValuesOccurrencesHook.js.map +1 -0
  25. package/dist/components/Explorer/actions-mass/edit-attribute/useListEditableAttributeHook.d.ts +5 -0
  26. package/dist/components/Explorer/actions-mass/edit-attribute/useListEditableAttributeHook.js +12 -0
  27. package/dist/components/Explorer/actions-mass/edit-attribute/useListEditableAttributeHook.js.map +1 -0
  28. package/dist/components/Explorer/actions-mass/edit-attribute/useListTreeAttributeValuesHook.d.ts +5 -0
  29. package/dist/components/Explorer/actions-mass/edit-attribute/useListTreeAttributeValuesHook.js +20 -0
  30. package/dist/components/Explorer/actions-mass/edit-attribute/useListTreeAttributeValuesHook.js.map +1 -0
  31. package/dist/components/Explorer/actions-mass/useEditAttributeMassAction.d.ts +11 -0
  32. package/dist/components/Explorer/actions-mass/useEditAttributeMassAction.js +106 -0
  33. package/dist/components/Explorer/actions-mass/useEditAttributeMassAction.js.map +1 -0
  34. package/dist/components/Explorer/actions-mass/useExportMassAction.js +4 -6
  35. package/dist/components/Explorer/actions-mass/useExportMassAction.js.map +1 -1
  36. package/dist/components/Filters/context/filtersReducer.js +0 -1
  37. package/dist/components/Filters/context/filtersReducer.js.map +1 -1
  38. package/dist/components/Filters/filter-items/filter-type/TreeAttributeDropDown.js +15 -17
  39. package/dist/components/Filters/filter-items/filter-type/TreeAttributeDropDown.js.map +1 -1
  40. package/dist/components/Filters/prepareFiltersForRequest.js +1 -1
  41. package/dist/components/Filters/prepareFiltersForRequest.js.map +1 -1
  42. package/dist/components/RecordEdition/EditRecordContent/antdUtils.js +12 -3
  43. package/dist/components/RecordEdition/EditRecordContent/antdUtils.js.map +1 -1
  44. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/LinkField.js +4 -1
  45. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/LinkField.js.map +1 -1
  46. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardField.js +6 -3
  47. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardField.js.map +1 -1
  48. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSBooleanWrapper.js +6 -5
  49. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSBooleanWrapper.js.map +1 -1
  50. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSColorPickerWrapper.js +9 -8
  51. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSColorPickerWrapper.js.map +1 -1
  52. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSDatePickerWrapper.js +8 -7
  53. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSDatePickerWrapper.js.map +1 -1
  54. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSInputNumberWrapper.js +6 -5
  55. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSInputNumberWrapper.js.map +1 -1
  56. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSInputWrapper.js +6 -5
  57. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSInputWrapper.js.map +1 -1
  58. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSRangePickerWrapper.js +12 -11
  59. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSRangePickerWrapper.js.map +1 -1
  60. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSRichTextWrapper.js +16 -7
  61. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSRichTextWrapper.js.map +1 -1
  62. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/ValuesList/DSListSelect.js +6 -5
  63. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/ValuesList/DSListSelect.js.map +1 -1
  64. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/useGetPresentationValues.d.ts +3 -3
  65. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/useGetPresentationValues.js +10 -4
  66. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/useGetPresentationValues.js.map +1 -1
  67. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/TreeField.js +4 -1
  68. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/TreeField.js.map +1 -1
  69. package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/ComputeIndicator.js +2 -2
  70. package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/ComputeIndicator.js.map +1 -1
  71. package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/calculatedInheritedFlags.d.ts +24 -24
  72. package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/calculatedInheritedFlags.js +34 -35
  73. package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/calculatedInheritedFlags.js.map +1 -1
  74. package/dist/components/RecordEdition/EditRecordSidebar/EditRecordSidebar.js +1 -1
  75. package/dist/components/RecordEdition/EditRecordSidebar/EditRecordSidebar.js.map +1 -1
  76. package/dist/components/RecordEdition/EditRecordSidebar/ValuesSummary/ValuesSummary.d.ts +1 -1
  77. package/dist/components/RecordEdition/EditRecordSidebar/ValuesSummary/ValuesSummary.js +15 -10
  78. package/dist/components/RecordEdition/EditRecordSidebar/ValuesSummary/ValuesSummary.js.map +1 -1
  79. package/dist/components/RecordEdition/editRecordReducer/editRecordReducer.d.ts +1 -1
  80. package/dist/components/RecordEdition/editRecordReducer/editRecordReducer.js +4 -3
  81. package/dist/components/RecordEdition/editRecordReducer/editRecordReducer.js.map +1 -1
  82. package/dist/components/SelectTreeNode/SelectTreeNodeContent.js +3 -0
  83. package/dist/components/SelectTreeNode/SelectTreeNodeContent.js.map +1 -1
  84. package/dist/hooks/useIFrameMessenger/schema.d.ts +43 -4
  85. package/dist/hooks/useIFrameMessenger/schema.js +11 -5
  86. package/dist/hooks/useIFrameMessenger/schema.js.map +1 -1
  87. package/dist/hooks/useIFrameMessenger/types.d.ts +2 -1
  88. package/dist/hooks/useIFrameMessenger/types.js.map +1 -1
  89. package/dist/locales/en/shared.json +20 -7
  90. package/dist/locales/fr/shared.json +20 -7
  91. package/package.json +3 -3
@@ -1,56 +1,55 @@
1
1
  export const computeInheritedFlags = (fieldValues) => {
2
- const inheritedValue = fieldValues.find(fieldValue => fieldValue.isInherited);
3
- const overrideValue = fieldValues.find(fieldValue => !fieldValue.isInherited && !fieldValue.isCalculated);
4
- if (inheritedValue === undefined) {
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
- inheritedValue: null,
7
- isInheritedValue: false,
8
- isInheritedOverrideValue: false,
9
- isInheritedNotOverrideValue: false,
6
+ inheritedValues: null,
7
+ isInheritedValues: false,
8
+ isInheritedOverrideValues: false,
9
+ isInheritedNotOverrideValues: false,
10
10
  };
11
11
  }
12
- const isInheritedValue = true;
13
- if (!overrideValue || overrideValue.payload === null) {
12
+ if (overrideValues.length === 0) {
14
13
  return {
15
- inheritedValue,
16
- isInheritedValue,
17
- isInheritedNotOverrideValue: true,
18
- isInheritedOverrideValue: false,
14
+ inheritedValues,
15
+ isInheritedValues: true,
16
+ isInheritedNotOverrideValues: true,
17
+ isInheritedOverrideValues: false,
19
18
  };
20
19
  }
21
20
  return {
22
- inheritedValue,
23
- isInheritedValue,
24
- isInheritedNotOverrideValue: false,
25
- isInheritedOverrideValue: true,
21
+ inheritedValues,
22
+ isInheritedValues: true,
23
+ isInheritedNotOverrideValues: false,
24
+ isInheritedOverrideValues: true,
26
25
  };
27
26
  };
28
27
  export const computeCalculatedFlags = (fieldValues) => {
29
- const calculatedValue = fieldValues.find(fieldValue => fieldValue.isCalculated !== null && fieldValue.isCalculated !== undefined);
30
- const overrideValue = fieldValues.find(fieldValue => (fieldValue.isCalculated === null || fieldValue.isCalculated === undefined) &&
31
- (fieldValue.isInherited === null || fieldValue.isInherited === undefined));
32
- if (calculatedValue === undefined) {
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
- calculatedValue: null,
35
- isCalculatedValue: false,
36
- isCalculatedOverrideValue: false,
37
- isCalculatedNotOverrideValue: false,
34
+ calculatedValues: null,
35
+ isCalculatedValues: false,
36
+ isCalculatedOverrideValues: false,
37
+ isCalculatedNotOverrideValues: false,
38
38
  };
39
39
  }
40
- const isCalculatedValue = true;
41
- if (!overrideValue || overrideValue.payload === null) {
40
+ if (overrideValues.length === 0) {
42
41
  return {
43
- calculatedValue,
44
- isCalculatedValue,
45
- isCalculatedNotOverrideValue: true,
46
- isCalculatedOverrideValue: false,
42
+ calculatedValues,
43
+ isCalculatedValues: true,
44
+ isCalculatedNotOverrideValues: true,
45
+ isCalculatedOverrideValues: false,
47
46
  };
48
47
  }
49
48
  return {
50
- calculatedValue,
51
- isCalculatedValue,
52
- isCalculatedNotOverrideValue: false,
53
- isCalculatedOverrideValue: true,
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,cAAc,GAAG,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAC9E,MAAM,aAAa,GAAG,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,WAAW,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IAE1G,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO;YACH,cAAc,EAAE,IAAI;YACpB,gBAAgB,EAAE,KAAK;YACvB,wBAAwB,EAAE,KAAK;YAC/B,2BAA2B,EAAE,KAAK;SACrC,CAAC;IACN,CAAC;IAED,MAAM,gBAAgB,GAAG,IAAI,CAAC;IAE9B,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QACnD,OAAO;YACH,cAAc;YACd,gBAAgB;YAChB,2BAA2B,EAAE,IAAI;YACjC,wBAAwB,EAAE,KAAK;SAClC,CAAC;IACN,CAAC;IAED,OAAO;QACH,cAAc;QACd,gBAAgB;QAChB,2BAA2B,EAAE,KAAK;QAClC,wBAAwB,EAAE,IAAI;KACjC,CAAC;AACN,CAAC,CAAC;AAyBF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,WAAmD,EAAmB,EAAE;IAC3G,MAAM,eAAe,GAAG,WAAW,CAAC,IAAI,CACpC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,KAAK,IAAI,IAAI,UAAU,CAAC,YAAY,KAAK,SAAS,CAC1F,CAAC;IACF,MAAM,aAAa,GAAG,WAAW,CAAC,IAAI,CAClC,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,CAChF,CAAC;IAEF,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO;YACH,eAAe,EAAE,IAAI;YACrB,iBAAiB,EAAE,KAAK;YACxB,yBAAyB,EAAE,KAAK;YAChC,4BAA4B,EAAE,KAAK;SACtC,CAAC;IACN,CAAC;IAED,MAAM,iBAAiB,GAAG,IAAI,CAAC;IAE/B,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QACnD,OAAO;YACH,eAAe;YACf,iBAAiB;YACjB,4BAA4B,EAAE,IAAI;YAClC,yBAAyB,EAAE,KAAK;SACnC,CAAC;IACN,CAAC;IAED,OAAO;QACH,eAAe;QACf,iBAAiB;QACjB,4BAA4B,EAAE,KAAK;QACnC,yBAAyB,EAAE,IAAI;KAClC,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 isInheritedValue: true;\n isInheritedOverrideValue: false;\n isInheritedNotOverrideValue: true;\n inheritedValue: RecordFormElementsValueStandardValue;\n}\n\ninterface IInheritedOverride {\n isInheritedValue: true;\n isInheritedOverrideValue: true;\n isInheritedNotOverrideValue: false;\n inheritedValue: RecordFormElementsValueStandardValue;\n}\n\ninterface INotInherited {\n isInheritedValue: false;\n isInheritedOverrideValue: false;\n isInheritedNotOverrideValue: false;\n inheritedValue: null;\n}\n\nexport type InheritedFlags = INotInherited | IInheritedOverride | IInheritedNotOverride;\n\nexport const computeInheritedFlags = (fieldValues: RecordFormElementsValueStandardValue[]): InheritedFlags => {\n const inheritedValue = fieldValues.find(fieldValue => fieldValue.isInherited);\n const overrideValue = fieldValues.find(fieldValue => !fieldValue.isInherited && !fieldValue.isCalculated);\n\n if (inheritedValue === undefined) {\n return {\n inheritedValue: null,\n isInheritedValue: false,\n isInheritedOverrideValue: false,\n isInheritedNotOverrideValue: false,\n };\n }\n\n const isInheritedValue = true;\n\n if (!overrideValue || overrideValue.payload === null) {\n return {\n inheritedValue,\n isInheritedValue,\n isInheritedNotOverrideValue: true,\n isInheritedOverrideValue: false,\n };\n }\n\n return {\n inheritedValue,\n isInheritedValue,\n isInheritedNotOverrideValue: false,\n isInheritedOverrideValue: true,\n };\n};\n\ninterface ICalculatedNotOverride {\n isCalculatedValue: true;\n isCalculatedOverrideValue: false;\n isCalculatedNotOverrideValue: true;\n calculatedValue: RecordFormElementsValueStandardValue;\n}\n\ninterface ICalculatedOverride {\n isCalculatedValue: true;\n isCalculatedOverrideValue: true;\n isCalculatedNotOverrideValue: false;\n calculatedValue: RecordFormElementsValueStandardValue;\n}\n\ninterface INotCalculated {\n isCalculatedValue: false;\n isCalculatedOverrideValue: false;\n isCalculatedNotOverrideValue: false;\n calculatedValue: null;\n}\n\nexport type CalculatedFlags = INotCalculated | ICalculatedOverride | ICalculatedNotOverride;\n\nexport const computeCalculatedFlags = (fieldValues: RecordFormElementsValueStandardValue[]): CalculatedFlags => {\n const calculatedValue = fieldValues.find(\n fieldValue => fieldValue.isCalculated !== null && fieldValue.isCalculated !== undefined,\n );\n const overrideValue = fieldValues.find(\n fieldValue =>\n (fieldValue.isCalculated === null || fieldValue.isCalculated === undefined) &&\n (fieldValue.isInherited === null || fieldValue.isInherited === undefined),\n );\n\n if (calculatedValue === undefined) {\n return {\n calculatedValue: null,\n isCalculatedValue: false,\n isCalculatedOverrideValue: false,\n isCalculatedNotOverrideValue: false,\n };\n }\n\n const isCalculatedValue = true;\n\n if (!overrideValue || overrideValue.payload === null) {\n return {\n calculatedValue,\n isCalculatedValue,\n isCalculatedNotOverrideValue: true,\n isCalculatedOverrideValue: false,\n };\n }\n\n return {\n calculatedValue,\n isCalculatedValue,\n isCalculatedNotOverrideValue: false,\n isCalculatedOverrideValue: true,\n };\n};\n"]}
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, calculatedValue: state.activeAttribute.calculatedValue })] }));
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,eAAe,EAAE,KAAK,CAAC,eAAe,CAAC,eAAe,GACxD,IACoB,CAC7B,CAAC;QACN,KAAK,gBAAgB;YACjB,OAAO,KAAC,cAAc,KAAG,CAAC;QAC9B;YACI,OAAO,KAAC,aAAa,IAAC,MAAM,EAAE,KAAK,CAAC,MAAM,GAAI,CAAC;IACvD,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,MAAM,CAAC,YAAY,CAAC,CAA6C;MACtF,CAAC,EAAC,cAAc,EAAC,EAAE,EAAE,CACnB,cAAc;IACd;;UAEE;;eAEK,CAAC,EAAC,OAAO,EAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;CACzD,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAA+C,CAAC,EAAC,gBAAgB,EAAE,gBAAgB,EAAC,EAAE,EAAE;IAClH,MAAM,EAAC,CAAC,EAAC,GAAG,oBAAoB,EAAE,CAAC;IACnC,MAAM,EAAC,IAAI,EAAC,GAAG,OAAO,EAAE,CAAC;IACzB,MAAM,EAAC,KAAK,EAAC,GAAG,oBAAoB,EAAE,CAAC;IACvC,MAAM,YAAY,GAAG,MAAM,CAAyB,IAAI,CAAC,CAAC;IAC1D,MAAM,cAAc,GAChB,KAAK,CAAC,cAAc,KAAK,+BAA+B,CAAC,aAAa;QAClE,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,eAAe,EAAE,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC;QACpE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC;IAEtF,MAAM,wBAAwB,GAAG,CAC7B,KAAC,kBAAkB,IACf,GAAG,EAAE,YAAY,EACjB,WAAW,EAAE,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,aAAa,EACvD,WAAW,EAAE,EAAC,KAAK,EAAE,cAAc,EAAC,EACpC,EAAE,EAAE,sBAAsB,EAC1B,WAAW,EAAE,KAAC,UAAU,KAAG,oBACX,CAAC,gBAAgB,aACxB,KAAK,CAAC,aAAa,YAE3B,wBAAwB,CAAC,KAAK,EAAE,gBAAgB,CAAC,GACjC,CACxB,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,YAAY,CAAC,OAAO,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YAC9C,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;gBACtB,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACJ,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACjC,CAAC;QACL,CAAC;IACL,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IAErE,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,gBAAgB,KAAK,SAAS;QACjC,CAAC,CAAC,wBAAwB;QAC1B,CAAC,CAAC,YAAY,CAAC,wBAAwB,EAAE,gBAAgB,CAAC,CAAC;AACnE,CAAC,CAAC;AAEF,eAAe,iBAAiB,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 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 calculatedValue={state.activeAttribute.calculatedValue}\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"]}
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
- calculatedValue?: RecordFormElementsValueStandardValue['payload'];
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 = [], calculatedValue, }) => {
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 stripedCalculatedValue = stringifyValue(calculatedValue);
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: calculatedValue && globalValues.length === 0
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: stripedCalculatedValue ? 1 : undefined, color: "primary" })] })),
59
- children: [
60
- {
61
- key: `${calculatedValueKey}-0`,
62
- title: stripedCalculatedValue ?? (_jsx("i", { children: t('record_summary.no_value') })),
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
- calculatedValue?: RecordFormElementsValueStandardValue['payload'];
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
- calculatedValue: (() => {
86
- const calculatedOrInheritedValue = action.values?.filter(value => value.isCalculated || value.isInherited)?.[0];
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"]}