@leav/ui 0.4.0-58529dc → 0.4.0-5a0192c5

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 (166) hide show
  1. package/README.md +1 -0
  2. package/dist/__mocks__/common/form.d.ts +632 -0
  3. package/dist/__mocks__/common/form.js +27 -22
  4. package/dist/__mocks__/common/form.js.map +1 -1
  5. package/dist/_gqlTypes/index.d.ts +3212 -2076
  6. package/dist/_gqlTypes/index.js +1548 -1242
  7. package/dist/_gqlTypes/index.js.map +1 -1
  8. package/dist/_queries/records/getRecordFormQuery.js +10 -5
  9. package/dist/_queries/records/getRecordFormQuery.js.map +1 -1
  10. package/dist/_queries/trees/treeNodeChildrenQuery.js +12 -2
  11. package/dist/_queries/trees/treeNodeChildrenQuery.js.map +1 -1
  12. package/dist/components/Explorer/DataView.js +4 -4
  13. package/dist/components/Explorer/DataView.js.map +1 -1
  14. package/dist/components/Explorer/Explorer.d.ts +5 -4
  15. package/dist/components/Explorer/Explorer.js +3 -2
  16. package/dist/components/Explorer/Explorer.js.map +1 -1
  17. package/dist/components/Explorer/ExplorerToolbar.d.ts +2 -1
  18. package/dist/components/Explorer/ExplorerToolbar.js +5 -4
  19. package/dist/components/Explorer/ExplorerToolbar.js.map +1 -1
  20. package/dist/components/Explorer/_queries/useExplorerData.js +2 -2
  21. package/dist/components/Explorer/_queries/useExplorerData.js.map +1 -1
  22. package/dist/components/Explorer/_types.d.ts +4 -1
  23. package/dist/components/Explorer/_types.js.map +1 -1
  24. package/dist/components/Explorer/actions-primary/useCreatePrimaryAction.d.ts +3 -1
  25. package/dist/components/Explorer/actions-primary/useCreatePrimaryAction.js +14 -6
  26. package/dist/components/Explorer/actions-primary/useCreatePrimaryAction.js.map +1 -1
  27. package/dist/components/Explorer/manage-view-settings/_shared/useTransformFilters.js +4 -0
  28. package/dist/components/Explorer/manage-view-settings/_shared/useTransformFilters.js.map +1 -1
  29. package/dist/components/Explorer/manage-view-settings/filter-items/filter-type/FilterDropDown.js +2 -2
  30. package/dist/components/Explorer/manage-view-settings/filter-items/filter-type/FilterDropDown.js.map +1 -1
  31. package/dist/components/Explorer/manage-view-settings/store-view-settings/viewSettingsInitialState.js +2 -1
  32. package/dist/components/Explorer/manage-view-settings/store-view-settings/viewSettingsInitialState.js.map +1 -1
  33. package/dist/components/Explorer/manage-view-settings/store-view-settings/viewSettingsReducer.d.ts +1 -0
  34. package/dist/components/Explorer/manage-view-settings/store-view-settings/viewSettingsReducer.js.map +1 -1
  35. package/dist/components/Explorer/useViewSettingsReducer.js +6 -2
  36. package/dist/components/Explorer/useViewSettingsReducer.js.map +1 -1
  37. package/dist/components/LibraryItemsList/FiltersPanel/Filter/Filter.js +2 -2
  38. package/dist/components/LibraryItemsList/FiltersPanel/Filter/Filter.js.map +1 -1
  39. package/dist/components/LinkSelect/LinkSelect.d.ts +7 -4
  40. package/dist/components/LinkSelect/LinkSelect.js +60 -16
  41. package/dist/components/LinkSelect/LinkSelect.js.map +1 -1
  42. package/dist/components/RecordEdition/EditRecordContent/EditRecordContent.js +59 -27
  43. package/dist/components/RecordEdition/EditRecordContent/EditRecordContent.js.map +1 -1
  44. package/dist/components/RecordEdition/EditRecordContent/_types.d.ts +14 -8
  45. package/dist/components/RecordEdition/EditRecordContent/_types.js.map +1 -1
  46. package/dist/components/RecordEdition/EditRecordContent/antdUtils.d.ts +6 -0
  47. package/dist/components/RecordEdition/EditRecordContent/antdUtils.js +7 -1
  48. package/dist/components/RecordEdition/EditRecordContent/antdUtils.js.map +1 -1
  49. package/dist/components/RecordEdition/EditRecordContent/helpers/extractFormElements/extractFormElements.d.ts +15 -2
  50. package/dist/components/RecordEdition/EditRecordContent/helpers/extractFormElements/extractFormElements.js +47 -24
  51. package/dist/components/RecordEdition/EditRecordContent/helpers/extractFormElements/extractFormElements.js.map +1 -1
  52. package/dist/components/RecordEdition/EditRecordContent/hooks/useFetchVisibleFormValue.d.ts +13 -0
  53. package/dist/components/RecordEdition/EditRecordContent/hooks/useFetchVisibleFormValue.js +117 -0
  54. package/dist/components/RecordEdition/EditRecordContent/hooks/useFetchVisibleFormValue.js.map +1 -0
  55. package/dist/components/RecordEdition/EditRecordContent/hooks/useTabManagement.d.ts +12 -0
  56. package/dist/components/RecordEdition/EditRecordContent/hooks/useTabManagement.js +39 -0
  57. package/dist/components/RecordEdition/EditRecordContent/hooks/useTabManagement.js.map +1 -0
  58. package/dist/components/RecordEdition/EditRecordContent/uiElements/Container/Container.d.ts +2 -2
  59. package/dist/components/RecordEdition/EditRecordContent/uiElements/Container/Container.js +3 -5
  60. package/dist/components/RecordEdition/EditRecordContent/uiElements/Container/Container.js.map +1 -1
  61. package/dist/components/RecordEdition/EditRecordContent/uiElements/FormTabs/FormTabs.js +25 -5
  62. package/dist/components/RecordEdition/EditRecordContent/uiElements/FormTabs/FormTabs.js.map +1 -1
  63. package/dist/components/RecordEdition/EditRecordContent/uiElements/Frame/Frame.d.ts +1 -1
  64. package/dist/components/RecordEdition/EditRecordContent/uiElements/Frame/Frame.js +1 -3
  65. package/dist/components/RecordEdition/EditRecordContent/uiElements/Frame/Frame.js.map +1 -1
  66. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/LinkField.js +11 -10
  67. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/LinkField.js.map +1 -1
  68. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/link-record-in-creation/useLinkRecordsInCreation.js +2 -2
  69. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/link-record-in-creation/useLinkRecordsInCreation.js.map +1 -1
  70. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/link-record-in-edition/useLinkRecordsInEdition.d.ts +3 -3
  71. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/link-record-in-edition/useLinkRecordsInEdition.js +234 -48
  72. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/link-record-in-edition/useLinkRecordsInEdition.js.map +1 -1
  73. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardField.d.ts +0 -2
  74. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardField.js +63 -72
  75. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardField.js.map +1 -1
  76. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSInputWrapper.js +2 -1
  77. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSInputWrapper.js.map +1 -1
  78. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/StandardFieldValue.d.ts +2 -1
  79. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/StandardFieldValue.js +2 -1
  80. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/StandardFieldValue.js.map +1 -1
  81. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/_types.d.ts +1 -0
  82. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/TreeField.d.ts +1 -1
  83. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/TreeField.js +24 -19
  84. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/TreeField.js.map +1 -1
  85. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/display-tree-node/TreeNodeItem.d.ts +2 -1
  86. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/display-tree-node/TreeNodeItem.js +2 -2
  87. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/display-tree-node/TreeNodeItem.js.map +1 -1
  88. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/display-tree-node/{useDisplayTreeNode.d.ts → TreeNodeList.d.ts} +4 -4
  89. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/display-tree-node/TreeNodeList.js +5 -0
  90. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/display-tree-node/TreeNodeList.js.map +1 -0
  91. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/manage-tree-node-selection/SelectTreeNodeModal.d.ts +16 -4
  92. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/manage-tree-node-selection/SelectTreeNodeModal.js +12 -13
  93. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/manage-tree-node-selection/SelectTreeNodeModal.js.map +1 -1
  94. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/manage-tree-node-selection/useManageTreeNodeSelection.d.ts +3 -2
  95. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/manage-tree-node-selection/useManageTreeNodeSelection.js +56 -58
  96. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/manage-tree-node-selection/useManageTreeNodeSelection.js.map +1 -1
  97. package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/calculatedInheritedFlags.js +4 -4
  98. package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/calculatedInheritedFlags.js.map +1 -1
  99. package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/useOutsideInteractionDetector.d.ts +3 -3
  100. package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/useOutsideInteractionDetector.js +8 -8
  101. package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/useOutsideInteractionDetector.js.map +1 -1
  102. package/dist/components/RecordEdition/editRecordReducer/editRecordReducer.d.ts +6 -1
  103. package/dist/components/RecordEdition/editRecordReducer/editRecordReducer.js +5 -1
  104. package/dist/components/RecordEdition/editRecordReducer/editRecordReducer.js.map +1 -1
  105. package/dist/components/RecordEdition/index.d.ts +1 -0
  106. package/dist/components/RecordEdition/index.js +1 -0
  107. package/dist/components/RecordEdition/index.js.map +1 -1
  108. package/dist/components/SelectRecordForLinkModal/SelectRecordForLinkModal.d.ts +2 -1
  109. package/dist/components/SelectRecordForLinkModal/SelectRecordForLinkModal.js +2 -2
  110. package/dist/components/SelectRecordForLinkModal/SelectRecordForLinkModal.js.map +1 -1
  111. package/dist/components/SelectTreeNode/SelectTreeNode.d.ts +5 -3
  112. package/dist/components/SelectTreeNode/SelectTreeNode.js +2 -3
  113. package/dist/components/SelectTreeNode/SelectTreeNode.js.map +1 -1
  114. package/dist/components/SelectTreeNode/SelectTreeNodeContent.d.ts +3 -1
  115. package/dist/components/SelectTreeNode/SelectTreeNodeContent.js +18 -23
  116. package/dist/components/SelectTreeNode/SelectTreeNodeContent.js.map +1 -1
  117. package/dist/components/SelectTreeNode/_types.d.ts +17 -0
  118. package/dist/components/SelectTreeNode/_types.js +2 -0
  119. package/dist/components/SelectTreeNode/_types.js.map +1 -0
  120. package/dist/components/{SelectTreeNodeModal/SelectTreeNodeModal.d.ts → SelectTreeNodeModalOld/SelectTreeNodeModalOld.d.ts} +1 -1
  121. package/dist/components/{SelectTreeNodeModal/SelectTreeNodeModal.js → SelectTreeNodeModalOld/SelectTreeNodeModalOld.js} +4 -2
  122. package/dist/components/SelectTreeNodeModalOld/SelectTreeNodeModalOld.js.map +1 -0
  123. package/dist/components/SelectTreeNodeModalOld/index.d.ts +1 -0
  124. package/dist/components/{SelectTreeNodeModal → SelectTreeNodeModalOld}/index.js +1 -1
  125. package/dist/components/SelectTreeNodeModalOld/index.js.map +1 -0
  126. package/dist/components/ValuesVersionConfigurator/VersionTree/VersionTree.js +2 -2
  127. package/dist/components/ValuesVersionConfigurator/VersionTree/VersionTree.js.map +1 -1
  128. package/dist/components/index.d.ts +1 -2
  129. package/dist/components/index.js +1 -2
  130. package/dist/components/index.js.map +1 -1
  131. package/dist/hooks/index.d.ts +2 -0
  132. package/dist/hooks/index.js +2 -0
  133. package/dist/hooks/index.js.map +1 -1
  134. package/dist/hooks/useGetRecordForm/useGetRecordForm.d.ts +2 -1
  135. package/dist/hooks/useGetRecordForm/useGetRecordForm.js +3 -14
  136. package/dist/hooks/useGetRecordForm/useGetRecordForm.js.map +1 -1
  137. package/dist/hooks/useIFrameMessenger/messageHandlers.d.ts +3 -1
  138. package/dist/hooks/useIFrameMessenger/messageHandlers.js +13 -2
  139. package/dist/hooks/useIFrameMessenger/messageHandlers.js.map +1 -1
  140. package/dist/hooks/useIFrameMessenger/schema.d.ts +21 -0
  141. package/dist/hooks/useIFrameMessenger/schema.js +76 -0
  142. package/dist/hooks/useIFrameMessenger/schema.js.map +1 -0
  143. package/dist/hooks/useIFrameMessenger/types.d.ts +41 -6
  144. package/dist/hooks/useIFrameMessenger/types.js.map +1 -1
  145. package/dist/hooks/useIFrameMessenger/useIFrameMessenger.d.ts +10 -1
  146. package/dist/hooks/useIFrameMessenger/useIFrameMessenger.js +55 -20
  147. package/dist/hooks/useIFrameMessenger/useIFrameMessenger.js.map +1 -1
  148. package/dist/hooks/useIFrameMessengerClient/IFrameMessengerClient.d.ts +7 -0
  149. package/dist/hooks/useIFrameMessengerClient/IFrameMessengerClient.js +13 -0
  150. package/dist/hooks/useIFrameMessengerClient/IFrameMessengerClient.js.map +1 -0
  151. package/dist/hooks/useIFrameMessengerClient/iFrameMessengerClientContext.d.ts +13 -0
  152. package/dist/hooks/useIFrameMessengerClient/iFrameMessengerClientContext.js +6 -0
  153. package/dist/hooks/useIFrameMessengerClient/iFrameMessengerClientContext.js.map +1 -0
  154. package/dist/hooks/useIFrameMessengerClient/useIFrameMessengerClient.d.ts +13 -0
  155. package/dist/hooks/useIFrameMessengerClient/useIFrameMessengerClient.js +13 -0
  156. package/dist/hooks/useIFrameMessengerClient/useIFrameMessengerClient.js.map +1 -0
  157. package/dist/types/attributes.d.ts +2 -1
  158. package/package.json +22 -6
  159. package/dist/components/RecordEdition/EditRecordContent/hooks/useRecordEditionContext.d.ts +0 -3
  160. package/dist/components/RecordEdition/EditRecordContent/hooks/useRecordEditionContext.js +0 -7
  161. package/dist/components/RecordEdition/EditRecordContent/hooks/useRecordEditionContext.js.map +0 -1
  162. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/display-tree-node/useDisplayTreeNode.js +0 -8
  163. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/display-tree-node/useDisplayTreeNode.js.map +0 -1
  164. package/dist/components/SelectTreeNodeModal/SelectTreeNodeModal.js.map +0 -1
  165. package/dist/components/SelectTreeNodeModal/index.d.ts +0 -1
  166. package/dist/components/SelectTreeNodeModal/index.js.map +0 -1
@@ -4,41 +4,123 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-run
4
4
  // License text available at https://www.gnu.org/licenses/lgpl-3.0.txt
5
5
  import { Explorer } from '../../../../../../components/Explorer';
6
6
  import { useEffect, useState } from 'react';
7
- import { FaList } from 'react-icons/fa';
8
7
  import { useSharedTranslation } from '../../../../../../hooks/useSharedTranslation';
9
8
  import { ExplorerWrapper } from '../shared/ExplorerWrapper';
10
- import { LinkActionsButtons } from '../shared/LinkActionsButtons';
11
9
  import { DeleteAllValuesButton } from '../../shared/DeleteAllValuesButton';
12
- import { AntForm } from 'aristid-ds';
10
+ import { AttributeType, RecordFilterCondition, RecordFilterOperator, useGetLibraryByIdQuery, useGetJoinLibraryMandatoryAttributeValuesLazyQuery, useGetRecordsFromLibraryQuery } from '../../../../../../_gqlTypes';
11
+ import useSaveValueBatchMutation from '../../../../../../components/RecordEdition/EditRecordContent/hooks/useExecuteSaveValueBatchMutation';
12
+ import { AntForm, KitButton } from 'aristid-ds';
13
13
  import { EditRecordReducerActionsTypes } from '../../../../../../components/RecordEdition/editRecordReducer/editRecordReducer';
14
14
  import { useLinkRecords } from './useLinkRecords';
15
- import { useGetRecordValuesQuery } from '../../../../../../hooks/useGetRecordValuesQuery/useGetRecordValuesQuery';
16
15
  import LinkSelect from '../../../../../../components/LinkSelect';
16
+ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
17
+ import { faPlus } from '@fortawesome/free-solid-svg-icons';
18
+ import { SelectTreeNodeModal } from '../../TreeField/manage-tree-node-selection/SelectTreeNodeModal';
19
+ import _ from 'lodash';
17
20
  const _shouldUpdateExplorerActions = (ref, explorerActions) => ref?.createAction?.disabled !== explorerActions?.createAction?.disabled ||
18
21
  ref?.linkAction?.disabled !== explorerActions?.linkAction?.disabled ||
19
22
  ref?.totalCount !== explorerActions?.totalCount;
20
- export const useLinkRecordsInEdition = ({ libraryId, recordId, attribute, columnsToDisplay, backendValues, setBackendValues, activeAttribute, dispatch, isHookUsed, isReadOnly, isFieldInError, tagDisplayMode, hasNoValue, onDeleteMultipleValues }) => {
23
+ export const useLinkRecordsInEdition = ({ libraryId, recordId, attribute, joinLibraryContext, columnsToDisplay, backendValues, setBackendValues, activeAttribute, dispatch, isHookUsed, isReadOnly, isFieldInError, tagDisplayMode, onDeleteMultipleValues }) => {
21
24
  const { t } = useSharedTranslation();
22
- const [explorerActions, setExplorerActions] = useState(null);
23
25
  const form = AntForm.useFormInstance();
26
+ const [isExplorerAddButtonClicked, setIsExplorerAddButtonClicked] = useState(false);
27
+ const [explorerActions, setExplorerActions] = useState(null);
28
+ const [fullTextSearchAttributes, setFullTextSearchAttributes] = useState([]);
29
+ const [linkedIds, setLinkIds] = useState([]);
30
+ const [selectOptions, setSelectOptions] = useState([]);
31
+ const [totalCountInExplorer, setTotalCountInExplorer] = useState(0);
32
+ /**
33
+ * Keys is joined record id (e.g. thematic), values is join record Id (e.g. structure_item)
34
+ * Necessary to get the id_value of the link when we want to delete a value
35
+ */
36
+ const [joinedRecordIdsMap, setJoinedRecordIdsMap] = useState(null);
24
37
  const { handleDeleteAllValues, handleExplorerCreateValue, handleExplorerLinkValue, handleExplorerMassDeactivateValues, handleExplorerRemoveValue } = useLinkRecords({
25
38
  attribute,
26
39
  backendValues,
27
40
  setBackendValues,
28
41
  onDeleteMultipleValues
29
42
  });
43
+ const _getLibraryId = () => (joinLibraryContext?.mandatoryAttribute &&
44
+ 'linked_library' in joinLibraryContext.mandatoryAttribute &&
45
+ joinLibraryContext.mandatoryAttribute.linked_library?.id) ||
46
+ attribute.linked_library.id;
47
+ // Query to get all records from the linked library
48
+ // Network-only is useful to avoid caching, we have a side effect otherwise
49
+ // When the record is created, if we call getRecordsFromLibrary(), the previous records are returned
50
+ const { data: libraryItems, refetch: getRecordsFromLibrary } = useGetRecordsFromLibraryQuery({
51
+ fetchPolicy: 'network-only',
52
+ variables: {
53
+ libraryId: _getLibraryId(),
54
+ pagination: { limit: 10, offset: 0 }
55
+ }
56
+ });
57
+ // Function to get the library configuration
58
+ const { data: libraryLinked } = useGetLibraryByIdQuery({
59
+ variables: {
60
+ id: _getLibraryId()
61
+ }
62
+ });
63
+ useEffect(() => {
64
+ if (libraryLinked) {
65
+ setFullTextSearchAttributes(libraryLinked.libraries.list[0].fullTextAttributes);
66
+ }
67
+ }, [libraryLinked]);
68
+ // For each record in backendValues, get the id of the record linked by the mandatory attribute
69
+ // Will create a map of joined record ids to their corresponding link ids in joinedRecordIdsMap
70
+ const [getJoinLibraryMandatoryAttributeValues, { data: mandatoryAttributeValues }] = useGetJoinLibraryMandatoryAttributeValuesLazyQuery({
71
+ fetchPolicy: 'no-cache'
72
+ });
30
73
  useEffect(() => {
31
- if (isHookUsed && backendValues.length === 0 && attribute.required) {
32
- // Set field in error when LinkField is displayed for the first time. Otherwise, errors will be handled by _removeValues() or _handleExplorerLinkValue()
33
- form.setFields([
34
- {
35
- name: attribute.id,
36
- errors: [t('errors.standard_field_required')]
74
+ if (mandatoryAttributeValues) {
75
+ const _joinedRecordIdsMap = mandatoryAttributeValues?.records?.list.reduce((acc, record) => {
76
+ const joinedRecordId = record.property[0]?.payload?.id;
77
+ if (joinedRecordId) {
78
+ acc[joinedRecordId] = record.id;
37
79
  }
38
- ]);
80
+ return acc;
81
+ }, {});
82
+ const linkIds = Object.keys(_joinedRecordIdsMap);
83
+ setJoinedRecordIdsMap(_joinedRecordIdsMap);
84
+ setLinkIds(linkIds);
39
85
  }
40
- }, []);
86
+ }, [mandatoryAttributeValues]);
87
+ // Function to refetch data with current parameters
88
+ const getRecordsRefetch = (customVariables = {}) => getRecordsFromLibrary({
89
+ libraryId: _getLibraryId(),
90
+ pagination: { limit: 10, offset: 0 },
91
+ ...customVariables
92
+ });
41
93
  useEffect(() => {
94
+ // will be set by specific useEffect on joinLinkOrTreeValue after getLinkOrTreeAttributeValueOfRecord
95
+ if (backendValues.length) {
96
+ if (joinLibraryContext?.mandatoryAttribute?.id) {
97
+ const filteredJoinRecords = backendValues.reduce((acc, value, index) => {
98
+ // Add OR operator between filters (except before the first filter)
99
+ if (index > 0) {
100
+ acc.push({ operator: RecordFilterOperator.OR });
101
+ }
102
+ acc.push({
103
+ condition: RecordFilterCondition.EQUAL,
104
+ field: 'id',
105
+ value: value.linkValue.id
106
+ });
107
+ return acc;
108
+ }, []);
109
+ getJoinLibraryMandatoryAttributeValues({
110
+ variables: {
111
+ joinLibraryId: attribute.linked_library.id,
112
+ filters: filteredJoinRecords,
113
+ mandatoryAttributeId: joinLibraryContext.mandatoryAttribute.id
114
+ }
115
+ });
116
+ }
117
+ else {
118
+ setLinkIds(backendValues.map(bv => bv.linkValue.id));
119
+ }
120
+ }
121
+ else {
122
+ setLinkIds([]);
123
+ }
42
124
  if (isHookUsed && activeAttribute?.attribute.id === attribute.id) {
43
125
  // Update active value used in the sidebar when backendValues change
44
126
  dispatch({
@@ -46,23 +128,36 @@ export const useLinkRecordsInEdition = ({ libraryId, recordId, attribute, column
46
128
  values: backendValues
47
129
  });
48
130
  }
49
- }, [backendValues]);
50
- const { data: fieldValues } = useGetRecordValuesQuery(libraryId, [attribute.id], [recordId]);
51
- const selectOptions = (fieldValues?.[recordId]?.[attribute.id] ?? []).map(({ linkValue: record }) => ({
52
- value: record.id,
53
- label: record.whoAmI.label ?? record.whoAmI.id,
54
- idCard: {
55
- description: record.whoAmI.label ?? record.whoAmI.id,
56
- avatarProps: {
57
- size: 'small',
58
- shape: 'square',
59
- imageFit: 'contain',
60
- src: record.whoAmI.preview?.small,
61
- label: record.whoAmI.label ?? record.whoAmI.id
62
- }
131
+ }, [backendValues, joinLibraryContext]);
132
+ // Update options for LinkSelect when libraryItems update
133
+ useEffect(() => {
134
+ if (libraryItems?.records?.list) {
135
+ setSelectOptions(libraryItems.records.list.map(record => ({
136
+ value: record.id,
137
+ label: record.whoAmI.label ?? record.whoAmI.id,
138
+ idCard: {
139
+ description: record.whoAmI.label ?? record.whoAmI.id,
140
+ avatarProps: {
141
+ size: 'small',
142
+ shape: 'square',
143
+ imageFit: 'contain',
144
+ src: record.whoAmI.preview?.small,
145
+ label: record.whoAmI.label ?? record.whoAmI.id
146
+ }
147
+ }
148
+ })));
63
149
  }
64
- }));
150
+ }, [libraryItems]);
151
+ useEffect(() => {
152
+ if (!totalCountInExplorer && attribute.required) {
153
+ form.setFields([{ name: attribute.id, errors: [t('errors.standard_field_required')] }]);
154
+ }
155
+ else {
156
+ form.setFields([{ name: attribute.id, errors: [] }]);
157
+ }
158
+ }, [totalCountInExplorer]);
65
159
  const _handleExplorerRef = (ref) => {
160
+ setTotalCountInExplorer(ref?.totalCount);
66
161
  if (_shouldUpdateExplorerActions(ref, explorerActions)) {
67
162
  setExplorerActions({
68
163
  createAction: ref?.createAction,
@@ -71,15 +166,107 @@ export const useLinkRecordsInEdition = ({ libraryId, recordId, attribute, column
71
166
  });
72
167
  }
73
168
  };
74
- const _getExplorerItemActions = () => {
75
- if (isReadOnly) {
76
- return [];
169
+ const _openLinkSelect = () => {
170
+ setIsExplorerAddButtonClicked(true);
171
+ };
172
+ const { saveValues } = useSaveValueBatchMutation();
173
+ // eventually change Set to Array can simplify a bit that method !
174
+ const _onSelectionDone = async (itemsToLink, itemsToDelete) => {
175
+ // In case of joinLibraryContext,
176
+ // itemsToLink and itemsToDelete are a Set of joined record ids (e.g. thematic ids instead structure_item ids)
177
+ // - for insertion, backend can receive joined record ids, it is ok
178
+ // - but for deletion, we need the id of linked record (e.g. structure_item id), to be able to get the id_value of that link
179
+ // (e.g. between campaign and structure_item), so we use a map of joined record ids to their corresponding link ids
180
+ // (e.g. switch from thematic id to structure_item id)
181
+ const backendIdToDelete = joinedRecordIdsMap
182
+ ? new Set([...itemsToDelete.values()].map(itemToDelete => joinedRecordIdsMap[itemToDelete]))
183
+ : itemsToDelete;
184
+ // If there is no value to link or to remove, return early
185
+ if (itemsToLink.size === 0 && itemsToDelete.size === 0) {
186
+ setIsExplorerAddButtonClicked(false);
187
+ return;
77
188
  }
78
- if ((!attribute.multiple_values && attribute.required) ||
79
- (attribute.multiple_values && backendValues.length === 1 && attribute.required)) {
80
- return ['edit'];
189
+ // Convert itemsToLink Set to Array once to avoid repeated conversions
190
+ const itemsToLinkArray = Array.from(itemsToLink);
191
+ // Find values to remove and prepare payload for backend
192
+ const valuesToRemove = backendValues.filter(bv => backendIdToDelete.has(bv.linkValue.id));
193
+ const idValuesToRemove = valuesToRemove.map(bv => bv.id_value);
194
+ // Prepare batch operation payload
195
+ const values = [
196
+ // Items to link (create new links)
197
+ ...itemsToLinkArray.map(item => ({
198
+ attribute: attribute.id,
199
+ idValue: null,
200
+ value: item
201
+ })),
202
+ // Items to delete (remove existing links)
203
+ ...idValuesToRemove.map(item => ({
204
+ attribute: attribute.id,
205
+ idValue: item,
206
+ value: null
207
+ }))
208
+ ];
209
+ // Send the values to the backend
210
+ const res = await saveValues({ id: recordId, library: { id: libraryId } }, values, undefined, true);
211
+ const resValues = res.values;
212
+ // Update linked IDs: add new links and remove deleted ones
213
+ // Maybe not necessary because setBackendValues will trigger an effect to re set linkedIds !
214
+ const updatedLinkedIds = linkedIds.filter(id => !itemsToDelete.has(id)).concat(itemsToLinkArray);
215
+ setLinkIds(updatedLinkedIds);
216
+ // Extract newly added values from response, filter because saveValues return delete values in resValues !
217
+ const newlyAddedValues = resValues.filter(v =>
218
+ // We do not do a positive filter based on itemsToLink because in case of joinLibraryContext,
219
+ // we do not have the mapping between linkIds and backendValue ids.
220
+ // However in we know the mapping between linkIds and backendValue ids for itemsToDelete, so we do a negative filter here
221
+ !backendIdToDelete.has(v.linkValue.id));
222
+ // Update backend values: remove deleted ones and add new ones
223
+ setBackendValues([...backendValues.filter(bv => !backendIdToDelete.has(bv.linkValue.id)), ...newlyAddedValues]);
224
+ // Hide linkSelect
225
+ setIsExplorerAddButtonClicked(false);
226
+ };
227
+ const _onBlurLinkSelect = async (itemsToLink, itemsToDelete) => {
228
+ _onSelectionDone(itemsToLink, itemsToDelete);
229
+ };
230
+ const _onSelectTreeNodeConfirm = async (selectedNodes) => {
231
+ // Convert selectedNodes to a Set of ids
232
+ const itemsToLink = new Set(_.difference(selectedNodes.map(node => node.id), linkedIds));
233
+ const itemsToDelete = new Set(_.difference(linkedIds, selectedNodes.map(node => node.id)));
234
+ _onSelectionDone(itemsToLink, itemsToDelete);
235
+ };
236
+ // search records that match the text typed in the search bar
237
+ const _onLinkSelectSearch = async (text) => {
238
+ const filters = fullTextSearchAttributes.reduce((acc, attr, index) => {
239
+ // Add OR operator between filters (except before the first filter)
240
+ if (index > 0) {
241
+ acc.push({ operator: RecordFilterOperator.OR });
242
+ }
243
+ // Add the filter condition
244
+ acc.push({
245
+ condition: RecordFilterCondition.CONTAINS,
246
+ field: attr.id,
247
+ value: text
248
+ });
249
+ return acc;
250
+ }, []);
251
+ await getRecordsRefetch({
252
+ filters
253
+ });
254
+ };
255
+ const _onCreateLinkSelect = async () => {
256
+ setIsExplorerAddButtonClicked(false);
257
+ explorerActions?.createAction?.callback();
258
+ };
259
+ const _onDeselect = linkId => {
260
+ const item = backendValues.find(bv => bv.linkValue.id === linkId);
261
+ if (!item) {
262
+ return null;
81
263
  }
82
- return ['edit', 'remove'];
264
+ return {
265
+ id_value: item.id_value,
266
+ libraryId,
267
+ attribute,
268
+ recordId
269
+ };
83
270
  };
84
271
  return {
85
272
  UnlinkAllRecordsInEdition: isHookUsed &&
@@ -88,7 +275,7 @@ export const useLinkRecordsInEdition = ({ libraryId, recordId, attribute, column
88
275
  !attribute.required && (_jsx(DeleteAllValuesButton, { handleDelete: handleDeleteAllValues, disabled: isReadOnly, danger: isFieldInError })),
89
276
  LinkRecordsInEditionExplorer: isHookUsed &&
90
277
  recordId &&
91
- (tagDisplayMode ? (_jsx(LinkSelect, { tagDisplay: true, options: selectOptions, defaultValues: selectOptions.map(({ value }) => value), onUpdateSelection: () => null, onCreate: () => null, onAdvanceSearch: () => null })) : (_jsxs(_Fragment, { children: [_jsx(ExplorerWrapper, { children: _jsx(Explorer, { ref: _handleExplorerRef, defaultViewSettings: {
278
+ (tagDisplayMode ? (_jsx(LinkSelect, { tagDisplay: true, options: selectOptions, defaultValues: linkedIds })) : (_jsxs(_Fragment, { children: [_jsx(ExplorerWrapper, { children: _jsx(Explorer, { ref: _handleExplorerRef, defaultViewSettings: {
92
279
  attributesIds: columnsToDisplay
93
280
  }, entrypoint: {
94
281
  type: 'link',
@@ -108,17 +295,16 @@ export const useLinkRecordsInEdition = ({ libraryId, recordId, attribute, column
108
295
  }
109
296
  }, showTitle: false, showSearch: false, selectionMode: attribute.multiple_values ? 'multiple' : 'simple', disableSelection: isReadOnly ||
110
297
  !attribute.multiple_values ||
111
- (attribute.required && attribute.multiple_values && backendValues.length === 1), defaultActionsForItem: _getExplorerItemActions(), hidePrimaryActions: true, hideTableHeader: true, iconsOnlyItemActions: true }) }), _jsx(LinkActionsButtons, { createButtonProps: {
112
- icon: explorerActions?.createAction?.icon,
113
- label: explorerActions?.createAction?.label,
114
- callback: explorerActions?.createAction?.callback,
115
- disabled: isReadOnly || explorerActions?.createAction?.disabled
116
- }, linkButtonProps: {
117
- icon: _jsx(FaList, {}),
118
- label: explorerActions?.linkAction?.label,
119
- callback: explorerActions?.linkAction?.callback,
120
- disabled: isReadOnly || (attribute.multiple_values && explorerActions?.linkAction?.disabled)
121
- }, hasNoValue: hasNoValue })] })))
298
+ (attribute.required && attribute.multiple_values && backendValues.length === 1), defaultActionsForItem: [], joinLibraryContext: joinLibraryContext, hidePrimaryActions: true, hideTableHeader: true, iconsOnlyItemActions: true }) }), _jsx(KitButton, { disabled: isReadOnly, onClick: _openLinkSelect, icon: _jsx(FontAwesomeIcon, { icon: faPlus }) }), isExplorerAddButtonClicked && (_jsxs(_Fragment, { children: [joinLibraryContext?.mandatoryAttribute.type !== AttributeType.tree && (_jsx(LinkSelect, { tagDisplay: false, options: selectOptions, defaultValues: linkedIds, onClickCreateButton: _onCreateLinkSelect, onBlur: _onBlurLinkSelect, onParentDeselect: _onDeselect, onSearch: _onLinkSelectSearch })), joinLibraryContext?.mandatoryAttribute.type === AttributeType.tree && (_jsx(SelectTreeNodeModal, { title: "title", open: true, attribute: {
299
+ ...joinLibraryContext.mandatoryAttribute,
300
+ multiple_values: attribute.multiple_values
301
+ }, backendValues: linkedIds.map(linkId => ({
302
+ treeValue: {
303
+ id: linkId
304
+ }
305
+ })), onClose: () => {
306
+ setIsExplorerAddButtonClicked(false);
307
+ }, onConfirm: _onSelectTreeNodeConfirm }))] }))] })))
122
308
  };
123
309
  };
124
310
  //# sourceMappingURL=useLinkRecordsInEdition.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useLinkRecordsInEdition.js","sourceRoot":"","sources":["../../../../../../../src/components/RecordEdition/EditRecordContent/uiElements/LinkField/link-record-in-edition/useLinkRecordsInEdition.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useLinkRecordsInEdition.js","sourceRoot":"","sources":["../../../../../../../src/components/RecordEdition/EditRecordContent/uiElements/LinkField/link-record-in-edition/useLinkRecordsInEdition.tsx"],"names":[],"mappings":"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"}
@@ -3,9 +3,7 @@ import { FunctionComponent } from 'react';
3
3
  import { RecordFormElementsValueStandardValue } from '../../../../../hooks/useGetRecordForm/useGetRecordForm';
4
4
  import { IFormElementProps } from '../../_types';
5
5
  import { FormInstance } from 'antd';
6
- import { GetRecordColumnsValuesRecord, IRecordColumnValueStandard } from '../../../../../_queries/records/getRecordColumnsValues';
7
6
  declare const StandardField: FunctionComponent<IFormElementProps<IRequiredFieldsSettings, RecordFormElementsValueStandardValue> & {
8
7
  antdForm?: FormInstance;
9
- computedValues?: GetRecordColumnsValuesRecord<IRecordColumnValueStandard>;
10
8
  }>;
11
9
  export default StandardField;
@@ -58,24 +58,31 @@ const KitAddValueButton = styled(KitButton) `
58
58
  margin-top: calc((var(--general-spacing-xs) - 3) * 1px);
59
59
  margin-bottom: 3px;
60
60
  `;
61
- const StandardField = ({ element, computedValues, antdForm, readonly, formIdToLoad, pendingValues, onValueSubmit, onValueDelete, onDeleteMultipleValues, metadataEdit = false }) => {
61
+ const StandardField = ({ element, antdForm, readonly, isCreationForm, pendingValues, onValueSubmit, onValueDelete, onDeleteMultipleValues, metadataEdit = false }) => {
62
62
  const { t } = useSharedTranslation();
63
63
  const { lang } = useLang();
64
+ const [elementValuesWithoutCalculatedOrInherited, setElementValuesWithoutCalculatedOrInherited] = useState([]);
64
65
  const antdListFieldsRef = useRef(null);
65
66
  const { attribute } = element;
66
67
  useEffect(() => {
67
- if (computedValues && computedValues[attribute.id]) {
68
- setBackendValues(computedValues[attribute.id]);
69
- antdForm.setFieldValue(attribute.id, getAntdDisplayedValue(computedValues[attribute.id], attribute));
68
+ if (element?.values?.length && antdForm && attribute) {
69
+ if (attribute.multiple_values) {
70
+ const antdDisplayedValues = element.values
71
+ .sort((a, b) => Number(a.id_value) - Number(b.id_value))
72
+ .map(v => getAntdDisplayedValue([v], attribute));
73
+ antdForm.setFieldValue(attribute.id, antdDisplayedValues);
74
+ }
75
+ else {
76
+ antdForm.setFieldValue(attribute.id, getAntdDisplayedValue(element.values, attribute));
77
+ }
70
78
  }
71
- }, [computedValues]);
79
+ }, [element.values]);
72
80
  if (!attribute) {
73
81
  return _jsx(ErrorDisplay, { message: t('record_edition.missing_attribute') });
74
82
  }
75
83
  const { state, dispatch } = useEditRecordReducer();
76
- const [backendValues, setBackendValues] = useState(element.values);
77
- const calculatedFlags = computeCalculatedFlags(backendValues);
78
- const inheritedFlags = computeInheritedFlags(backendValues);
84
+ const calculatedFlags = computeCalculatedFlags(element.values ?? []);
85
+ const inheritedFlags = computeInheritedFlags(element.values ?? []);
79
86
  const defaultValueToAddInAntdForm = getEmptyInitialValue(attribute);
80
87
  const [attributePendingValues, setAttributePendingValues] = useState([]);
81
88
  useEffect(() => {
@@ -87,26 +94,30 @@ const StandardField = ({ element, computedValues, antdForm, readonly, formIdToLo
87
94
  if (state.activeAttribute?.attribute.id === attribute.id) {
88
95
  dispatch({
89
96
  type: EditRecordReducerActionsTypes.SET_ACTIVE_VALUE,
90
- values: backendValues
97
+ values: element.values
91
98
  });
92
99
  }
93
- }, [backendValues]);
100
+ // Refresh elementValuesWithoutCalculatedOrInherited that depends on element.values
101
+ // Todo, ideally refactor this part
102
+ // If the backend send back inherited value as an attribute of the value and not as another value
103
+ // it would simplify the code and permit to use element.values as it is
104
+ setElementValuesWithoutCalculatedOrInherited((element.values ?? [])
105
+ .filter(elementValue => !elementValue.isCalculated && !elementValue.isInherited)
106
+ .sort((a, b) => Number(a.id_value) - Number(b.id_value)));
107
+ }, [element.values]);
94
108
  useOutsideInteractionDetector({
95
109
  attribute,
96
110
  activeAttribute: state.activeAttribute,
97
111
  attributePrefix: STANDARD_FIELD_ID_PREFIX,
98
112
  dispatch,
99
- formIdToLoad,
100
- backendValues,
113
+ isCreationForm,
114
+ elementValues: element.values ?? [],
101
115
  pendingValues: attributePendingValues,
102
116
  allowedSelectors: ['.ant-popover.ant-color-picker', '.ant-picker-dropdown', '.kit-modal-wrapper.link-modal']
103
117
  });
104
- const backendWithoutCalculatedOrInheritedValues = backendValues
105
- .filter(backendValue => !backendValue.isCalculated && !backendValue.isInherited)
106
- .sort((a, b) => Number(a.id_value) - Number(b.id_value));
107
118
  const { presentationValues } = useGetPresentationValues({
108
119
  //TODO fix type
109
- values: backendWithoutCalculatedOrInheritedValues,
120
+ values: elementValuesWithoutCalculatedOrInherited,
110
121
  format: attribute.format,
111
122
  calculatedValue: calculatedFlags.calculatedValue,
112
123
  inheritedValue: inheritedFlags.inheritedValue
@@ -114,58 +125,30 @@ const StandardField = ({ element, computedValues, antdForm, readonly, formIdToLo
114
125
  const _handleSubmit = (idValue, fieldName) => async (valueToSave) => {
115
126
  const shouldSpecifyFieldName = attribute.multiple_values && fieldName !== undefined;
116
127
  const name = shouldSpecifyFieldName ? [attribute.id, fieldName] : attribute.id;
128
+ // Clear error on the input
117
129
  if (antdForm) {
118
- antdForm.setFields([
119
- {
120
- name,
121
- errors: null
122
- }
123
- ]);
130
+ antdForm.setFields([{ name, errors: undefined }]);
124
131
  }
132
+ // Send request to api
125
133
  let submitRes;
126
134
  if (attribute.multiple_values) {
127
135
  submitRes = await onValueSubmit([{ value: valueToSave, idValue: idValue ?? null, attribute }], null);
128
- if (submitRes.status === APICallStatus.SUCCESS) {
129
- setBackendValues(previousBackendValues => {
130
- const newBackendValues = [...previousBackendValues, ...submitRes.values].reduce((acc, backendValue) => {
131
- const existingValue = acc.find(o => o.id_value === backendValue.id_value &&
132
- o.isCalculated === backendValue.isCalculated &&
133
- o.isInherited === backendValue.isInherited);
134
- if (existingValue) {
135
- Object.assign(existingValue, backendValue);
136
- }
137
- else {
138
- acc.push(backendValue);
139
- }
140
- return acc;
141
- }, []);
142
- return newBackendValues;
143
- });
144
- return submitRes;
145
- }
146
136
  }
147
137
  else {
148
- if (valueToSave) {
149
- submitRes = await onValueSubmit([{ value: valueToSave, idValue: idValue ?? null, attribute }], null);
150
- if (submitRes.status === APICallStatus.SUCCESS) {
151
- setBackendValues(submitRes.values ?? []);
152
- return submitRes;
153
- }
138
+ if (!valueToSave) {
139
+ submitRes = await onValueDelete({ id_value: idValue, payload: null }, attribute.id);
154
140
  }
155
141
  else {
156
- if (backendWithoutCalculatedOrInheritedValues.length > 0) {
157
- submitRes = await onValueDelete({ id_value: idValue, payload: null }, attribute.id);
158
- if (submitRes.status === APICallStatus.SUCCESS) {
159
- setBackendValues(previousBackendValues => previousBackendValues.filter(value => (value.isCalculated !== null && value.isCalculated !== undefined) ||
160
- (value.isInherited !== null && value.isInherited !== undefined)));
161
- return submitRes;
162
- }
163
- }
142
+ submitRes = await onValueSubmit([{ value: valueToSave, idValue: idValue ?? null, attribute }], null);
164
143
  }
165
144
  }
166
145
  if (!submitRes) {
167
146
  return;
168
147
  }
148
+ if (submitRes.status === APICallStatus.SUCCESS) {
149
+ return submitRes;
150
+ }
151
+ // Parse errors from api response
169
152
  if (!submitRes.error && submitRes.errors) {
170
153
  const attributeError = submitRes.errors.filter(err => err.attribute === attribute.id)?.[0];
171
154
  if (attributeError) {
@@ -175,35 +158,43 @@ const StandardField = ({ element, computedValues, antdForm, readonly, formIdToLo
175
158
  : t(`errors.${attributeError.type}`);
176
159
  }
177
160
  }
161
+ // Display errors on input if found
178
162
  if (submitRes.error && antdForm) {
179
- antdForm.setFields([
180
- {
181
- name,
182
- errors: [submitRes.error]
183
- }
184
- ]);
163
+ antdForm.setFields([{ name, errors: [submitRes.error] }]);
185
164
  }
186
165
  return submitRes;
187
166
  };
167
+ const resetErrors = (fieldName) => {
168
+ // Re check error if we click in the input
169
+ if (attribute.multiple_values && fieldName !== undefined) {
170
+ antdForm?.setFields([{ name: [attribute.id, fieldName], errors: undefined }]);
171
+ }
172
+ else {
173
+ antdForm?.setFields([{ name: attribute.id, errors: undefined }]);
174
+ }
175
+ };
188
176
  const _handleDeleteValue = async (idValue, antdRemove, deletedFieldIndex) => {
189
177
  if (idValue) {
190
178
  await onValueDelete({ id_value: idValue }, attribute.id);
191
- setBackendValues(previousBackendValues => previousBackendValues.filter(backendValue => backendValue.id_value !== idValue));
179
+ // remove the value from element.values
180
+ setElementValuesWithoutCalculatedOrInherited(elementValuesWithoutCalculatedOrInherited
181
+ .filter(elementValue => elementValue.id_value !== idValue)
182
+ .sort((a, b) => Number(a.id_value) - Number(b.id_value)));
192
183
  }
193
184
  antdRemove(deletedFieldIndex);
194
185
  };
195
186
  const _handleDeleteAllValues = async () => {
196
- const deleteRes = await onDeleteMultipleValues(attribute.id, backendValues.filter(b => b.id_value), null);
187
+ const deleteRes = await onDeleteMultipleValues(attribute.id, (element.values ?? []).filter(b => b.id_value), null);
197
188
  if (deleteRes.status === APICallStatus.SUCCESS) {
198
189
  antdListFieldsRef.current.remove(antdListFieldsRef.current.indexes);
199
190
  antdListFieldsRef.current.add(defaultValueToAddInAntdForm);
200
- setBackendValues(previousBackendValues => previousBackendValues.filter(backendValue => !backendValue.id_value));
191
+ setElementValuesWithoutCalculatedOrInherited([]);
201
192
  return;
202
193
  }
203
194
  };
204
195
  let isFieldInError = false;
205
196
  if (antdForm) {
206
- const hasErrorsInFormList = backendValues.some((_, index) => {
197
+ const hasErrorsInFormList = element.values?.some((_, index) => {
207
198
  const errors = antdForm.getFieldError([attribute.id, index]);
208
199
  return errors.length > 0;
209
200
  });
@@ -211,21 +202,21 @@ const StandardField = ({ element, computedValues, antdForm, readonly, formIdToLo
211
202
  isFieldInError =
212
203
  antdForm.getFieldError(attribute.id).length > 0 || hasErrorsInFormList || multipleFieldRequiredInError;
213
204
  }
214
- const isMultipleValues = element.attribute.multiple_values;
215
- const hasValue = isMultipleValues && backendValues.length > 0;
205
+ const isMultipleValues = element.attribute?.multiple_values;
206
+ const hasValue = isMultipleValues && (element.values ?? []).length > 0;
216
207
  const canAddAnotherValue = !readonly &&
217
208
  isMultipleValues &&
218
209
  !isFieldInError &&
219
210
  attribute.format !== AttributeFormat.boolean &&
220
211
  attribute.format !== AttributeFormat.encrypted;
221
- const canDeleteAllValues = hasValue && backendValues.length > 1 && !attribute.required;
212
+ const canDeleteAllValues = hasValue && element.values.length > 1 && !attribute.required;
222
213
  const label = localizedTranslation(element.settings.label, lang);
223
- const isReadOnly = attribute.readonly || readonly;
224
- return (_jsx(Wrapper, { "$metadataEdit": metadataEdit, children: _jsxs(KitInputWrapperStyled, { id: STANDARD_FIELD_ID_PREFIX + attribute.id, label: label, required: attribute.required, disabled: isReadOnly, bordered: attribute.multiple_values, status: isFieldInError ? 'error' : undefined, extra: _jsxs(_Fragment, { children: [_jsx(KitInputExtraAlignLeft, { children: _jsx(ComputeIndicator, { calculatedFlags: calculatedFlags, inheritedFlags: inheritedFlags }) }), canDeleteAllValues && (_jsx(DeleteAllValuesButton, { handleDelete: _handleDeleteAllValues, disabled: isReadOnly, danger: isFieldInError }))] }), htmlFor: attribute.id, children: [!attribute.multiple_values && (_jsx(StandardFieldValue, { presentationValue: presentationValues[0] ?? '', handleSubmit: _handleSubmit(backendWithoutCalculatedOrInheritedValues[0]?.id_value), attribute: attribute, readonly: isReadOnly, label: label, calculatedFlags: calculatedFlags, inheritedFlags: inheritedFlags })), attribute.multiple_values && (_jsx(Form.List, { name: attribute.id, children: (fields, { add, remove }) => {
214
+ const isReadOnly = attribute.readonly || !attribute.permissions.edit_value || readonly;
215
+ return (_jsx(Wrapper, { "$metadataEdit": metadataEdit, children: _jsxs(KitInputWrapperStyled, { id: STANDARD_FIELD_ID_PREFIX + attribute.id, label: label, required: attribute.required, disabled: isReadOnly, bordered: attribute.multiple_values, status: isFieldInError ? 'error' : undefined, extra: _jsxs(_Fragment, { children: [_jsx(KitInputExtraAlignLeft, { children: _jsx(ComputeIndicator, { calculatedFlags: calculatedFlags, inheritedFlags: inheritedFlags }) }), canDeleteAllValues && (_jsx(DeleteAllValuesButton, { handleDelete: _handleDeleteAllValues, disabled: isReadOnly, danger: isFieldInError }))] }), htmlFor: attribute.id, children: [!attribute.multiple_values && (_jsx(StandardFieldValue, { presentationValue: presentationValues[0] ?? '', handleSubmit: _handleSubmit(elementValuesWithoutCalculatedOrInherited[0]?.id_value), attribute: attribute, readonly: isReadOnly, label: label, onFocus: resetErrors, calculatedFlags: calculatedFlags, inheritedFlags: inheritedFlags })), attribute.multiple_values && (_jsx(Form.List, { name: attribute.id, children: (fields, { add, remove }) => {
225
216
  antdListFieldsRef.current = { add, remove, indexes: fields.map((_, index) => index) };
226
- const shouldDisabledAddValueButton = fields.length > backendWithoutCalculatedOrInheritedValues.length;
227
- return (_jsxs(_Fragment, { children: [_jsx(KitFieldsWrapper, { children: fields.map((field, index) => (_jsxs(RowValueWrapper, { children: [_jsx(StandardFieldValueWrapper, { children: _jsx(StandardFieldValue, { listField: field, presentationValue: presentationValues[index] ?? '', handleSubmit: _handleSubmit(backendWithoutCalculatedOrInheritedValues[index]?.id_value, field.name), attribute: attribute, label: label, readonly: isReadOnly, calculatedFlags: calculatedFlags, inheritedFlags: inheritedFlags, isLastValueOfMultivalues: index === fields.length - 1 && index !== 0, removeLastValueOfMultivalues: () => remove(index) }) }), fields.length > 1 && (_jsx(KitDeleteValueButton, { type: "tertiary", title: t('record_edition.delete_value'), icon: _jsx(FaTrash, {}), onClick: () => _handleDeleteValue(backendWithoutCalculatedOrInheritedValues[index]
228
- ?.id_value, remove, index), disabled: isReadOnly }))] }, field.key))) }), canAddAnotherValue && (_jsx(KitTooltip, { title: shouldDisabledAddValueButton
217
+ const shouldDisabledAddValueButton = fields.length > elementValuesWithoutCalculatedOrInherited.length;
218
+ return (_jsxs(_Fragment, { children: [_jsx(KitFieldsWrapper, { children: fields.map((field, index) => (_jsxs(RowValueWrapper, { children: [_jsx(StandardFieldValueWrapper, { children: _jsx(StandardFieldValue, { listField: field, presentationValue: presentationValues[index] ?? '', handleSubmit: _handleSubmit(elementValuesWithoutCalculatedOrInherited[index]?.id_value, field.name), attribute: attribute, label: label, readonly: isReadOnly, onFocus: () => resetErrors(field.name), calculatedFlags: calculatedFlags, inheritedFlags: inheritedFlags, isLastValueOfMultivalues: index === fields.length - 1 && index !== 0, removeLastValueOfMultivalues: () => remove(index) }) }), fields.length > 1 && (_jsx(KitDeleteValueButton, { type: "tertiary", title: t('record_edition.delete_value'), icon: _jsx(FaTrash, {}), onClick: () => _handleDeleteValue(elementValuesWithoutCalculatedOrInherited[index]
219
+ .id_value, remove, index), disabled: isReadOnly }))] }, field.key))) }), canAddAnotherValue && (_jsx(KitTooltip, { title: shouldDisabledAddValueButton
229
220
  ? t('record_edition.please_select_value_before_adding')
230
221
  : undefined, children: _jsx(KitAddValueButton, { type: "secondary", size: "m", icon: _jsx(FaPlus, {}), onClick: () => add(defaultValueToAddInAntdForm), disabled: isReadOnly || shouldDisabledAddValueButton, children: t('record_edition.add_value') }) }))] }));
231
222
  } }))] }) }));