@leav/ui 1.5.1-339c20fb → 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 (81) 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/RecordEdition/EditRecordContent/antdUtils.js +12 -3
  37. package/dist/components/RecordEdition/EditRecordContent/antdUtils.js.map +1 -1
  38. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/LinkField.js +4 -1
  39. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/LinkField.js.map +1 -1
  40. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardField.js +6 -3
  41. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardField.js.map +1 -1
  42. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSBooleanWrapper.js +6 -5
  43. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSBooleanWrapper.js.map +1 -1
  44. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSColorPickerWrapper.js +9 -8
  45. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSColorPickerWrapper.js.map +1 -1
  46. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSDatePickerWrapper.js +8 -7
  47. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSDatePickerWrapper.js.map +1 -1
  48. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSInputNumberWrapper.js +6 -5
  49. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSInputNumberWrapper.js.map +1 -1
  50. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSInputWrapper.js +6 -5
  51. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSInputWrapper.js.map +1 -1
  52. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSRangePickerWrapper.js +12 -11
  53. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSRangePickerWrapper.js.map +1 -1
  54. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSRichTextWrapper.js +16 -7
  55. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSRichTextWrapper.js.map +1 -1
  56. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/ValuesList/DSListSelect.js +6 -5
  57. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/ValuesList/DSListSelect.js.map +1 -1
  58. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/useGetPresentationValues.d.ts +3 -3
  59. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/useGetPresentationValues.js +10 -4
  60. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/useGetPresentationValues.js.map +1 -1
  61. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/TreeField.js +4 -1
  62. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/TreeField.js.map +1 -1
  63. package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/ComputeIndicator.js +2 -2
  64. package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/ComputeIndicator.js.map +1 -1
  65. package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/calculatedInheritedFlags.d.ts +24 -24
  66. package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/calculatedInheritedFlags.js +34 -35
  67. package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/calculatedInheritedFlags.js.map +1 -1
  68. package/dist/components/RecordEdition/EditRecordSidebar/EditRecordSidebar.js +1 -1
  69. package/dist/components/RecordEdition/EditRecordSidebar/EditRecordSidebar.js.map +1 -1
  70. package/dist/components/RecordEdition/EditRecordSidebar/ValuesSummary/ValuesSummary.d.ts +1 -1
  71. package/dist/components/RecordEdition/EditRecordSidebar/ValuesSummary/ValuesSummary.js +15 -10
  72. package/dist/components/RecordEdition/EditRecordSidebar/ValuesSummary/ValuesSummary.js.map +1 -1
  73. package/dist/components/RecordEdition/editRecordReducer/editRecordReducer.d.ts +1 -1
  74. package/dist/components/RecordEdition/editRecordReducer/editRecordReducer.js +4 -3
  75. package/dist/components/RecordEdition/editRecordReducer/editRecordReducer.js.map +1 -1
  76. package/dist/hooks/useIFrameMessenger/schema.d.ts +15 -4
  77. package/dist/hooks/useIFrameMessenger/schema.js +7 -1
  78. package/dist/hooks/useIFrameMessenger/schema.js.map +1 -1
  79. package/dist/locales/en/shared.json +20 -7
  80. package/dist/locales/fr/shared.json +20 -7
  81. package/package.json +3 -3
@@ -0,0 +1,11 @@
1
+ import { type FeatureHook, type IMassActions } from '../_types';
2
+ import { type IViewSettingsState } from '../manage-view-settings';
3
+ export declare const useEditAttributeMassAction: ({ isEnabled, store: { view }, totalCount, }: FeatureHook<{
4
+ store: {
5
+ view: IViewSettingsState;
6
+ };
7
+ totalCount: number;
8
+ }>) => {
9
+ editAttributeMassAction: IMassActions;
10
+ editAttributeMassActionModal: JSX.Element;
11
+ };
@@ -0,0 +1,106 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ // Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06
3
+ // This file is released under LGPL V3
4
+ // License text available at https://www.gnu.org/licenses/lgpl-3.0.txt
5
+ import { AttributeType, useSaveValueBulkMutation, } from '../../../_gqlTypes';
6
+ import { useSharedTranslation } from '../../../hooks/useSharedTranslation';
7
+ import { useEffect, useMemo, useState } from 'react';
8
+ import { FaEdit } from 'react-icons/fa';
9
+ import { MASS_SELECTION_ALL } from '../_constants';
10
+ import { EditTreeAttributeValuesMapping } from './edit-attribute/EditTreeAttributeValuesMapping';
11
+ import { EditAttributeMassActionModal } from './edit-attribute/EditAttributeMassActionModal';
12
+ import { useListEditableAttributeHook } from './edit-attribute/useListEditableAttributeHook';
13
+ import { useCountValuesOccurrencesHook } from './edit-attribute/useCountValuesOccurrencesHook';
14
+ import { KitAlert, useKitNotification } from 'aristid-ds';
15
+ import { ERROR_ALERT_DURATION, INFO_NOTIFICATION_DURATION_SECONDS } from '../../../constants';
16
+ import { Loading } from '../../../components/Loading';
17
+ export const useEditAttributeMassAction = ({ isEnabled, store: { view }, totalCount, }) => {
18
+ if (!isEnabled) {
19
+ return {
20
+ editAttributeMassAction: null,
21
+ editAttributeMassActionModal: null,
22
+ };
23
+ }
24
+ const { t } = useSharedTranslation();
25
+ const { kitNotification } = useKitNotification();
26
+ const [selectedAttribute, setSelectedAttribute] = useState(undefined);
27
+ const [massSelectionFilter, setMassSelectionFilter] = useState([]);
28
+ const [openModal, setOpenModal] = useState(false);
29
+ const [editionMapping, setEditionMapping] = useState([]);
30
+ const editableAttributes = useListEditableAttributeHook({ libraryId: view.libraryId });
31
+ const valuesOccurrences = useCountValuesOccurrencesHook({
32
+ attributeId: selectedAttribute?.id,
33
+ libraryId: view.libraryId,
34
+ recordFilters: massSelectionFilter,
35
+ });
36
+ const [executeSaveValueBulk] = useSaveValueBulkMutation();
37
+ useEffect(() => {
38
+ setEditionMapping([]);
39
+ }, [selectedAttribute]);
40
+ const _editAttributeMassAction = useMemo(() => ({
41
+ label: t('explorer.massAction.editAttribute'),
42
+ icon: _jsx(FaEdit, {}),
43
+ deselectAll: false,
44
+ callback: _massSelectionFilter => {
45
+ setMassSelectionFilter(_massSelectionFilter);
46
+ setEditionMapping([]);
47
+ setOpenModal(true);
48
+ },
49
+ }), [t, view.massSelection]);
50
+ const closeModal = () => {
51
+ setOpenModal(false);
52
+ setMassSelectionFilter([]);
53
+ setSelectedAttribute(undefined);
54
+ setEditionMapping([]);
55
+ };
56
+ const isMappingCompleted = useMemo(() => valuesOccurrences.noValueCount === 0
57
+ ? editionMapping.length === valuesOccurrences.occurrences.length
58
+ : editionMapping.length === valuesOccurrences.occurrences.length + 1, // for undefined values
59
+ [editionMapping, valuesOccurrences]);
60
+ const bulkCounter = useMemo(() => (view.massSelection === MASS_SELECTION_ALL ? totalCount : view.massSelection.length), [view.massSelection, totalCount]);
61
+ const onOkButtonClick = async () => {
62
+ if (!selectedAttribute || !isMappingCompleted) {
63
+ return;
64
+ }
65
+ try {
66
+ await executeSaveValueBulk({
67
+ variables: {
68
+ libraryId: view.libraryId,
69
+ recordsFilters: massSelectionFilter,
70
+ attributeId: selectedAttribute.id,
71
+ mapValues: editionMapping,
72
+ },
73
+ });
74
+ closeModal();
75
+ kitNotification.info({
76
+ message: t('explorer.massAction.editAttribute_submit_notification_title'),
77
+ description: t('explorer.massAction.editAttribute_submit_notification_description', {
78
+ counter: bulkCounter,
79
+ }),
80
+ duration: INFO_NOTIFICATION_DURATION_SECONDS,
81
+ });
82
+ }
83
+ catch (error) {
84
+ KitAlert.error({
85
+ showIcon: true,
86
+ duration: ERROR_ALERT_DURATION,
87
+ message: t('error.error_occurred'),
88
+ description: t('explorer.massAction.editAttribute_submit_error'),
89
+ closable: true,
90
+ });
91
+ }
92
+ };
93
+ if (editableAttributes.length === 0) {
94
+ return {
95
+ editAttributeMassAction: null,
96
+ editAttributeMassActionModal: null,
97
+ };
98
+ }
99
+ return {
100
+ editAttributeMassAction: _editAttributeMassAction,
101
+ editAttributeMassActionModal: (_jsxs(EditAttributeMassActionModal, { isOpen: openModal, attributes: editableAttributes, setSelectedAttribute: setSelectedAttribute, massSelectionFilter: massSelectionFilter, elementsCount: bulkCounter, disableOkButton: !isMappingCompleted, onOkButtonClick: onOkButtonClick, onCancelButtonClick: closeModal, children: [selectedAttribute != null && valuesOccurrences.loading ? _jsx(Loading, {}) : null, selectedAttribute?.type === AttributeType.tree && (_jsx(EditTreeAttributeValuesMapping, { selectedAttribute: selectedAttribute, valuesOccurrences: valuesOccurrences, setAttributeMapping: (before, after) => {
102
+ setEditionMapping(editionMapping.filter(mapping => mapping.before !== before).concat([{ before, after }]));
103
+ } }))] })),
104
+ };
105
+ };
106
+ //# sourceMappingURL=useEditAttributeMassAction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useEditAttributeMassAction.js","sourceRoot":"","sources":["../../../../src/components/Explorer/actions-mass/useEditAttributeMassAction.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 {\n type AttributeDetailsFragment,\n AttributeType,\n type RecordFilterInput,\n useSaveValueBulkMutation,\n} from '_ui/_gqlTypes';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {useEffect, useMemo, useState} from 'react';\nimport {FaEdit} from 'react-icons/fa';\nimport {MASS_SELECTION_ALL} from '../_constants';\nimport {type FeatureHook, type IMassActions} from '../_types';\nimport {type IViewSettingsState} from '../manage-view-settings';\nimport {EditTreeAttributeValuesMapping} from './edit-attribute/EditTreeAttributeValuesMapping';\nimport {EditAttributeMassActionModal} from './edit-attribute/EditAttributeMassActionModal';\nimport {useListEditableAttributeHook} from './edit-attribute/useListEditableAttributeHook';\nimport {useCountValuesOccurrencesHook} from './edit-attribute/useCountValuesOccurrencesHook';\nimport {KitAlert, useKitNotification} from 'aristid-ds';\nimport {ERROR_ALERT_DURATION, INFO_NOTIFICATION_DURATION_SECONDS} from '_ui/constants';\nimport {Loading} from '_ui/components/Loading';\n\nexport const useEditAttributeMassAction = ({\n isEnabled,\n store: {view},\n totalCount,\n}: FeatureHook<{\n store: {\n view: IViewSettingsState;\n };\n totalCount: number;\n}>) => {\n if (!isEnabled) {\n return {\n editAttributeMassAction: null,\n editAttributeMassActionModal: null,\n };\n }\n\n const {t} = useSharedTranslation();\n const {kitNotification} = useKitNotification();\n\n const [selectedAttribute, setSelectedAttribute] = useState<AttributeDetailsFragment | undefined>(undefined);\n const [massSelectionFilter, setMassSelectionFilter] = useState<RecordFilterInput[]>([]);\n const [openModal, setOpenModal] = useState<boolean>(false);\n const [editionMapping, setEditionMapping] = useState<Array<{before: string | null; after: string | null}>>([]);\n\n const editableAttributes = useListEditableAttributeHook({libraryId: view.libraryId});\n const valuesOccurrences = useCountValuesOccurrencesHook({\n attributeId: selectedAttribute?.id,\n libraryId: view.libraryId,\n recordFilters: massSelectionFilter,\n });\n\n const [executeSaveValueBulk] = useSaveValueBulkMutation();\n\n useEffect(() => {\n setEditionMapping([]);\n }, [selectedAttribute]);\n\n const _editAttributeMassAction: IMassActions = useMemo(\n () => ({\n label: t('explorer.massAction.editAttribute'),\n icon: <FaEdit />,\n deselectAll: false,\n callback: _massSelectionFilter => {\n setMassSelectionFilter(_massSelectionFilter);\n setEditionMapping([]);\n setOpenModal(true);\n },\n }),\n [t, view.massSelection],\n );\n\n const closeModal = () => {\n setOpenModal(false);\n setMassSelectionFilter([]);\n setSelectedAttribute(undefined);\n setEditionMapping([]);\n };\n\n const isMappingCompleted = useMemo(\n () =>\n valuesOccurrences.noValueCount === 0\n ? editionMapping.length === valuesOccurrences.occurrences.length\n : editionMapping.length === valuesOccurrences.occurrences.length + 1, // for undefined values\n [editionMapping, valuesOccurrences],\n );\n\n const bulkCounter = useMemo(\n () => (view.massSelection === MASS_SELECTION_ALL ? totalCount : view.massSelection.length),\n [view.massSelection, totalCount],\n );\n\n const onOkButtonClick = async () => {\n if (!selectedAttribute || !isMappingCompleted) {\n return;\n }\n try {\n await executeSaveValueBulk({\n variables: {\n libraryId: view.libraryId,\n recordsFilters: massSelectionFilter,\n attributeId: selectedAttribute.id,\n mapValues: editionMapping,\n },\n });\n\n closeModal();\n kitNotification.info({\n message: t('explorer.massAction.editAttribute_submit_notification_title'),\n description: t('explorer.massAction.editAttribute_submit_notification_description', {\n counter: bulkCounter,\n }),\n duration: INFO_NOTIFICATION_DURATION_SECONDS,\n });\n } catch (error) {\n KitAlert.error({\n showIcon: true,\n duration: ERROR_ALERT_DURATION,\n message: t('error.error_occurred'),\n description: t('explorer.massAction.editAttribute_submit_error'),\n closable: true,\n });\n }\n };\n\n if (editableAttributes.length === 0) {\n return {\n editAttributeMassAction: null,\n editAttributeMassActionModal: null,\n };\n }\n\n return {\n editAttributeMassAction: _editAttributeMassAction,\n editAttributeMassActionModal: (\n <EditAttributeMassActionModal\n isOpen={openModal}\n attributes={editableAttributes}\n setSelectedAttribute={setSelectedAttribute}\n massSelectionFilter={massSelectionFilter}\n elementsCount={bulkCounter}\n disableOkButton={!isMappingCompleted}\n onOkButtonClick={onOkButtonClick}\n onCancelButtonClick={closeModal}\n >\n {selectedAttribute != null && valuesOccurrences.loading ? <Loading /> : null}\n {selectedAttribute?.type === AttributeType.tree && (\n <EditTreeAttributeValuesMapping\n selectedAttribute={selectedAttribute}\n valuesOccurrences={valuesOccurrences}\n setAttributeMapping={(before, after) => {\n setEditionMapping(\n editionMapping.filter(mapping => mapping.before !== before).concat([{before, after}]),\n );\n }}\n />\n )}\n </EditAttributeMassActionModal>\n ),\n };\n};\n"]}
@@ -55,7 +55,7 @@ export const useExportMassAction = ({ isEnabled, store: { view, dispatch }, tota
55
55
  throw errorWithExtensions;
56
56
  }
57
57
  kitNotification.info({
58
- message: t('explorer.massAction.export_message', { count: total }),
58
+ message: t('explorer.massAction.export_message'),
59
59
  description: t('explorer.massAction.export_description', {
60
60
  count: total,
61
61
  total,
@@ -69,10 +69,8 @@ export const useExportMassAction = ({ isEnabled, store: { view, dispatch }, tota
69
69
  KitAlert.error({
70
70
  showIcon: true,
71
71
  duration: ERROR_ALERT_DURATION,
72
- message: t('error.error_occurred', { count: total }),
73
- description: t('explorer.massAction.export_config_error_description', {
74
- library: view.libraryId,
75
- }),
72
+ message: t('explorer.massAction.export_config_error_message'),
73
+ description: t('explorer.massAction.export_config_error_description'),
76
74
  closable: true,
77
75
  });
78
76
  }
@@ -80,7 +78,7 @@ export const useExportMassAction = ({ isEnabled, store: { view, dispatch }, tota
80
78
  KitAlert.error({
81
79
  showIcon: true,
82
80
  duration: ERROR_ALERT_DURATION,
83
- message: t('error.error_occurred'),
81
+ message: t('explorer.massAction.export_error_message'),
84
82
  description: t('explorer.massAction.export_error_description', { count: total }),
85
83
  closable: true,
86
84
  });
@@ -1 +1 @@
1
- {"version":3,"file":"useExportMassAction.js","sourceRoot":"","sources":["../../../../src/components/Explorer/actions-mass/useExportMassAction.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 Dispatch, useMemo} from 'react';\nimport {FaFileExport} from 'react-icons/fa';\nimport {KitAlert, KitModal, useKitNotification} from 'aristid-ds';\nimport {useExportLazyQuery} from '_ui/_gqlTypes';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {type FeatureHook, type IMassActions} from '../_types';\nimport {type IViewSettingsAction, type IViewSettingsState} from '../manage-view-settings';\nimport {BREAK_TWO_LINES, MASS_SELECTION_ALL} from '../_constants';\nimport {ERROR_ALERT_DURATION, INFO_NOTIFICATION_DURATION_SECONDS} from '_ui/constants';\n\n/**\n * Hook that provides a mass action configuration for exporting selected or all items\n * from a view/data set\n */\nexport const useExportMassAction = ({\n isEnabled,\n store: {view, dispatch},\n totalCount,\n onExport,\n}: FeatureHook<{\n store: {\n view: IViewSettingsState;\n dispatch: Dispatch<IViewSettingsAction>;\n };\n totalCount: number;\n onExport?: IMassActions['callback'];\n}>) => {\n const {t} = useSharedTranslation();\n const {kitNotification} = useKitNotification();\n\n const [exportQuery] = useExportLazyQuery();\n\n const _exportMassAction: IMassActions = useMemo(\n () => ({\n label: t('explorer.massAction.export'),\n icon: <FaFileExport />,\n deselectAll: false,\n callback: massSelectionFilter => {\n KitModal.confirm({\n width: '100%',\n style: {content: {width: '90vw', maxWidth: '656px'}},\n icon: false,\n type: 'confirm',\n title:\n t('explorer.export_item', {\n count: view.massSelection === MASS_SELECTION_ALL ? Infinity : view.massSelection.length,\n }) ?? undefined,\n content:\n t('explorer.export_item_description', {\n count: view.massSelection === MASS_SELECTION_ALL ? Infinity : view.massSelection.length,\n }) +\n BREAK_TWO_LINES +\n t('global.are_you_sure'),\n okText: t('global.confirm') ?? undefined,\n cancelText: t('global.cancel') ?? undefined,\n onOk: async () => {\n const total =\n view.massSelection === MASS_SELECTION_ALL ? totalCount : view.massSelection.length;\n try {\n const {data, error} = await exportQuery({\n variables: {\n library: view.libraryId,\n filters: massSelectionFilter,\n profile: 'default', // Set 'default' by default, it'll change when we can select a profile from the UI\n },\n });\n if (error) {\n // Preserve the extensions property which contains the error code\n const graphQLError = error.graphQLErrors?.[0];\n const errorWithExtensions = new Error(error.message);\n (errorWithExtensions as any).extensions = graphQLError?.extensions;\n throw errorWithExtensions;\n }\n\n kitNotification.info({\n message: t('explorer.massAction.export_message', {count: total}),\n description: t('explorer.massAction.export_description', {\n count: total,\n total,\n }),\n duration: INFO_NOTIFICATION_DURATION_SECONDS,\n });\n\n onExport?.(massSelectionFilter, view.massSelection);\n } catch (e) {\n if (e.extensions?.code === 'CUSTOM_CONFIG_ERROR') {\n KitAlert.error({\n showIcon: true,\n duration: ERROR_ALERT_DURATION,\n message: t('error.error_occurred', {count: total}),\n description: t('explorer.massAction.export_config_error_description', {\n library: view.libraryId,\n }),\n closable: true,\n });\n } else {\n KitAlert.error({\n showIcon: true,\n duration: ERROR_ALERT_DURATION,\n message: t('error.error_occurred'),\n description: t('explorer.massAction.export_error_description', {count: total}),\n closable: true,\n });\n }\n }\n },\n });\n },\n }),\n [t, exportQuery, view.massSelection, dispatch, view.libraryId],\n );\n\n return {\n exportMassAction: isEnabled ? _exportMassAction : null,\n };\n};\n"]}
1
+ {"version":3,"file":"useExportMassAction.js","sourceRoot":"","sources":["../../../../src/components/Explorer/actions-mass/useExportMassAction.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 Dispatch, useMemo} from 'react';\nimport {FaFileExport} from 'react-icons/fa';\nimport {KitAlert, KitModal, useKitNotification} from 'aristid-ds';\nimport {useExportLazyQuery} from '_ui/_gqlTypes';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {type FeatureHook, type IMassActions} from '../_types';\nimport {type IViewSettingsAction, type IViewSettingsState} from '../manage-view-settings';\nimport {BREAK_TWO_LINES, MASS_SELECTION_ALL} from '../_constants';\nimport {ERROR_ALERT_DURATION, INFO_NOTIFICATION_DURATION_SECONDS} from '_ui/constants';\n\n/**\n * Hook that provides a mass action configuration for exporting selected or all items\n * from a view/data set\n */\nexport const useExportMassAction = ({\n isEnabled,\n store: {view, dispatch},\n totalCount,\n onExport,\n}: FeatureHook<{\n store: {\n view: IViewSettingsState;\n dispatch: Dispatch<IViewSettingsAction>;\n };\n totalCount: number;\n onExport?: IMassActions['callback'];\n}>) => {\n const {t} = useSharedTranslation();\n const {kitNotification} = useKitNotification();\n\n const [exportQuery] = useExportLazyQuery();\n\n const _exportMassAction: IMassActions = useMemo(\n () => ({\n label: t('explorer.massAction.export'),\n icon: <FaFileExport />,\n deselectAll: false,\n callback: massSelectionFilter => {\n KitModal.confirm({\n width: '100%',\n style: {content: {width: '90vw', maxWidth: '656px'}},\n icon: false,\n type: 'confirm',\n title:\n t('explorer.export_item', {\n count: view.massSelection === MASS_SELECTION_ALL ? Infinity : view.massSelection.length,\n }) ?? undefined,\n content:\n t('explorer.export_item_description', {\n count: view.massSelection === MASS_SELECTION_ALL ? Infinity : view.massSelection.length,\n }) +\n BREAK_TWO_LINES +\n t('global.are_you_sure'),\n okText: t('global.confirm') ?? undefined,\n cancelText: t('global.cancel') ?? undefined,\n onOk: async () => {\n const total =\n view.massSelection === MASS_SELECTION_ALL ? totalCount : view.massSelection.length;\n try {\n const {data, error} = await exportQuery({\n variables: {\n library: view.libraryId,\n filters: massSelectionFilter,\n profile: 'default', // Set 'default' by default, it'll change when we can select a profile from the UI\n },\n });\n if (error) {\n // Preserve the extensions property which contains the error code\n const graphQLError = error.graphQLErrors?.[0];\n const errorWithExtensions = new Error(error.message);\n (errorWithExtensions as any).extensions = graphQLError?.extensions;\n throw errorWithExtensions;\n }\n\n kitNotification.info({\n message: t('explorer.massAction.export_message'),\n description: t('explorer.massAction.export_description', {\n count: total,\n total,\n }),\n duration: INFO_NOTIFICATION_DURATION_SECONDS,\n });\n\n onExport?.(massSelectionFilter, view.massSelection);\n } catch (e) {\n if (e.extensions?.code === 'CUSTOM_CONFIG_ERROR') {\n KitAlert.error({\n showIcon: true,\n duration: ERROR_ALERT_DURATION,\n message: t('explorer.massAction.export_config_error_message'),\n description: t('explorer.massAction.export_config_error_description'),\n closable: true,\n });\n } else {\n KitAlert.error({\n showIcon: true,\n duration: ERROR_ALERT_DURATION,\n message: t('explorer.massAction.export_error_message'),\n description: t('explorer.massAction.export_error_description', {count: total}),\n closable: true,\n });\n }\n }\n },\n });\n },\n }),\n [t, exportQuery, view.massSelection, dispatch, view.libraryId],\n );\n\n return {\n exportMassAction: isEnabled ? _exportMassAction : null,\n };\n};\n"]}
@@ -58,11 +58,20 @@ export const getAntdFormInitialValues = (recordForm) => recordForm.elements.redu
58
58
  return acc;
59
59
  }
60
60
  if (isRecordFormElementsMultipleValues(attribute)) {
61
- const valuesWithoutCalculatedOrInherited = values.filter(val => val.id_value);
61
+ const userInputValues = values.filter(val => val.id_value);
62
+ const calculatedValues = values.filter(val => val.isCalculated);
63
+ const inheritedValues = values.filter(val => val.isInherited);
64
+ const effectiveValues = userInputValues.length > 0
65
+ ? userInputValues
66
+ : calculatedValues.length > 0
67
+ ? calculatedValues
68
+ : inheritedValues.length > 0
69
+ ? inheritedValues
70
+ : [];
62
71
  acc[attribute.id] =
63
- valuesWithoutCalculatedOrInherited.length === 0
72
+ effectiveValues.length === 0
64
73
  ? [getEmptyInitialValue(attribute)]
65
- : valuesWithoutCalculatedOrInherited
74
+ : effectiveValues
66
75
  .sort((a, b) => Number(a.id_value) - Number(b.id_value))
67
76
  .map(val => formatStandardInitialValue(val, attribute));
68
77
  return acc;
@@ -1 +1 @@
1
- {"version":3,"file":"antdUtils.js","sourceRoot":"","sources":["../../../../src/components/RecordEdition/EditRecordContent/antdUtils.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 {\n type IRecordForm,\n type RecordFormElementAttribute,\n type RecordFormElementsValue,\n type RecordFormElementsValueLinkValue,\n type RecordFormElementsValueStandardValue,\n} from '_ui/hooks/useGetRecordForm';\nimport {AttributeFormat, AttributeType} from '_ui/_gqlTypes';\nimport {type IDateRangeValue} from '@leav/utils';\nimport {type Store} from 'antd/lib/form/interface';\nimport dayjs from 'dayjs';\n\nconst hasDateRangeValues = (dateRange: unknown): dateRange is IDateRangeValue =>\n (dateRange as IDateRangeValue).from !== undefined && (dateRange as IDateRangeValue).to !== undefined;\n\nconst getCalculatedValue = values => values.find(value => value.isCalculated);\n\nconst getInheritedValue = values => values.find(value => value.isInherited);\n\nconst getUserInputValue = values =>\n values.find(value => !value.isInherited && !value.isCalculated && value.raw_payload !== null);\n\nconst isRecordFormElementsValueLinkValue = (\n value: RecordFormElementsValue,\n attribute: RecordFormElementAttribute,\n): value is RecordFormElementsValueLinkValue =>\n attribute.type === AttributeType.simple_link ||\n (attribute.type === AttributeType.advanced_link && attribute.multiple_values === false);\n\nconst isRecordFormElementsValueLinkValues = (\n values: RecordFormElementsValue[],\n attribute: RecordFormElementAttribute,\n): values is RecordFormElementsValueLinkValue[] =>\n attribute.type === AttributeType.advanced_link && attribute.multiple_values === true;\n\nconst isRecordFormElementsMultipleValues = (attribute: RecordFormElementAttribute) =>\n attribute.type === AttributeType.advanced && attribute.multiple_values === true;\n\nconst formatStandardInitialValue = (\n standardValue: RecordFormElementsValueStandardValue,\n attribute: RecordFormElementAttribute,\n) => {\n if (!standardValue?.raw_payload) {\n return getEmptyInitialValue(attribute);\n }\n\n switch (attribute.format) {\n case AttributeFormat.color:\n case AttributeFormat.text:\n case AttributeFormat.rich_text:\n case AttributeFormat.boolean:\n return standardValue.raw_payload;\n case AttributeFormat.numeric:\n return Number(standardValue.raw_payload);\n case AttributeFormat.date:\n return dayjs.unix(Number(standardValue.raw_payload));\n case AttributeFormat.date_range:\n if (hasDateRangeValues(standardValue.raw_payload)) {\n return [\n dayjs.unix(Number(standardValue.raw_payload.from)),\n dayjs.unix(Number(standardValue.raw_payload.to)),\n ];\n } else if (typeof standardValue.raw_payload === 'string') {\n const convertedFieldValue = JSON.parse(standardValue.raw_payload) as any;\n return [dayjs.unix(Number(convertedFieldValue.from)), dayjs.unix(Number(convertedFieldValue.to))];\n }\n }\n};\n\nexport const EMPTY_INITIAL_VALUE_STRING = '';\nexport const EMPTY_INITIAL_VALUE_UNDEFINED = undefined;\n\nexport const getEmptyInitialValue = (attribute: RecordFormElementAttribute) => {\n if ([AttributeFormat.date_range, AttributeFormat.color].includes(attribute.format)) {\n return EMPTY_INITIAL_VALUE_UNDEFINED;\n }\n return EMPTY_INITIAL_VALUE_STRING;\n};\n\nexport const getAntdDisplayedValue = (\n values: RecordFormElementsValueStandardValue[],\n attribute: RecordFormElementAttribute,\n) =>\n formatStandardInitialValue(\n getUserInputValue(values) ?? getInheritedValue(values) ?? getCalculatedValue(values) ?? null,\n attribute,\n );\n\nexport const getAntdFormInitialValues = (recordForm: IRecordForm) =>\n recordForm.elements.reduce<Store>((acc, {attribute, values}) => {\n if (!attribute) {\n return acc;\n }\n\n const value = getUserInputValue(values) ?? getInheritedValue(values) ?? getCalculatedValue(values) ?? null;\n\n if (isRecordFormElementsValueLinkValue(value, attribute)) {\n acc[attribute.id] = value?.linkValue?.id;\n return acc;\n }\n\n if (isRecordFormElementsValueLinkValues(values, attribute)) {\n acc[attribute.id] = values.map(val => val?.linkValue?.id ?? undefined);\n return acc;\n }\n\n if (isRecordFormElementsMultipleValues(attribute)) {\n const valuesWithoutCalculatedOrInherited = values.filter(val => val.id_value);\n acc[attribute.id] =\n valuesWithoutCalculatedOrInherited.length === 0\n ? [getEmptyInitialValue(attribute)]\n : valuesWithoutCalculatedOrInherited\n .sort((a, b) => Number(a.id_value) - Number(b.id_value))\n .map(val => formatStandardInitialValue(val, attribute));\n return acc;\n }\n\n const standardValue = value as RecordFormElementsValueStandardValue;\n\n acc[attribute.id] = formatStandardInitialValue(standardValue, attribute);\n\n return acc;\n }, {});\n"]}
1
+ {"version":3,"file":"antdUtils.js","sourceRoot":"","sources":["../../../../src/components/RecordEdition/EditRecordContent/antdUtils.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 {\n type IRecordForm,\n type RecordFormElementAttribute,\n type RecordFormElementsValue,\n type RecordFormElementsValueLinkValue,\n type RecordFormElementsValueStandardValue,\n} from '_ui/hooks/useGetRecordForm';\nimport {AttributeFormat, AttributeType} from '_ui/_gqlTypes';\nimport {type IDateRangeValue} from '@leav/utils';\nimport {type Store} from 'antd/lib/form/interface';\nimport dayjs from 'dayjs';\n\nconst hasDateRangeValues = (dateRange: unknown): dateRange is IDateRangeValue =>\n (dateRange as IDateRangeValue).from !== undefined && (dateRange as IDateRangeValue).to !== undefined;\n\nconst getCalculatedValue = values => values.find(value => value.isCalculated);\n\nconst getInheritedValue = values => values.find(value => value.isInherited);\n\nconst getUserInputValue = values =>\n values.find(value => !value.isInherited && !value.isCalculated && value.raw_payload !== null);\n\nconst isRecordFormElementsValueLinkValue = (\n value: RecordFormElementsValue,\n attribute: RecordFormElementAttribute,\n): value is RecordFormElementsValueLinkValue =>\n attribute.type === AttributeType.simple_link ||\n (attribute.type === AttributeType.advanced_link && attribute.multiple_values === false);\n\nconst isRecordFormElementsValueLinkValues = (\n values: RecordFormElementsValue[],\n attribute: RecordFormElementAttribute,\n): values is RecordFormElementsValueLinkValue[] =>\n attribute.type === AttributeType.advanced_link && attribute.multiple_values === true;\n\nconst isRecordFormElementsMultipleValues = (attribute: RecordFormElementAttribute) =>\n attribute.type === AttributeType.advanced && attribute.multiple_values === true;\n\nconst formatStandardInitialValue = (\n standardValue: RecordFormElementsValueStandardValue,\n attribute: RecordFormElementAttribute,\n) => {\n if (!standardValue?.raw_payload) {\n return getEmptyInitialValue(attribute);\n }\n\n switch (attribute.format) {\n case AttributeFormat.color:\n case AttributeFormat.text:\n case AttributeFormat.rich_text:\n case AttributeFormat.boolean:\n return standardValue.raw_payload;\n case AttributeFormat.numeric:\n return Number(standardValue.raw_payload);\n case AttributeFormat.date:\n return dayjs.unix(Number(standardValue.raw_payload));\n case AttributeFormat.date_range:\n if (hasDateRangeValues(standardValue.raw_payload)) {\n return [\n dayjs.unix(Number(standardValue.raw_payload.from)),\n dayjs.unix(Number(standardValue.raw_payload.to)),\n ];\n } else if (typeof standardValue.raw_payload === 'string') {\n const convertedFieldValue = JSON.parse(standardValue.raw_payload) as any;\n return [dayjs.unix(Number(convertedFieldValue.from)), dayjs.unix(Number(convertedFieldValue.to))];\n }\n }\n};\n\nexport const EMPTY_INITIAL_VALUE_STRING = '';\nexport const EMPTY_INITIAL_VALUE_UNDEFINED = undefined;\n\nexport const getEmptyInitialValue = (attribute: RecordFormElementAttribute) => {\n if ([AttributeFormat.date_range, AttributeFormat.color].includes(attribute.format)) {\n return EMPTY_INITIAL_VALUE_UNDEFINED;\n }\n return EMPTY_INITIAL_VALUE_STRING;\n};\n\nexport const getAntdDisplayedValue = (\n values: RecordFormElementsValueStandardValue[],\n attribute: RecordFormElementAttribute,\n) =>\n formatStandardInitialValue(\n getUserInputValue(values) ?? getInheritedValue(values) ?? getCalculatedValue(values) ?? null,\n attribute,\n );\n\nexport const getAntdFormInitialValues = (recordForm: IRecordForm) =>\n recordForm.elements.reduce<Store>((acc, {attribute, values}) => {\n if (!attribute) {\n return acc;\n }\n\n const value = getUserInputValue(values) ?? getInheritedValue(values) ?? getCalculatedValue(values) ?? null;\n\n if (isRecordFormElementsValueLinkValue(value, attribute)) {\n acc[attribute.id] = value?.linkValue?.id;\n return acc;\n }\n\n if (isRecordFormElementsValueLinkValues(values, attribute)) {\n acc[attribute.id] = values.map(val => val?.linkValue?.id ?? undefined);\n return acc;\n }\n\n if (isRecordFormElementsMultipleValues(attribute)) {\n const userInputValues = values.filter(val => val.id_value);\n const calculatedValues = values.filter(val => val.isCalculated);\n const inheritedValues = values.filter(val => val.isInherited);\n\n const effectiveValues =\n userInputValues.length > 0\n ? userInputValues\n : calculatedValues.length > 0\n ? calculatedValues\n : inheritedValues.length > 0\n ? inheritedValues\n : [];\n\n acc[attribute.id] =\n effectiveValues.length === 0\n ? [getEmptyInitialValue(attribute)]\n : effectiveValues\n .sort((a, b) => Number(a.id_value) - Number(b.id_value))\n .map(val => formatStandardInitialValue(val, attribute));\n return acc;\n }\n\n const standardValue = value as RecordFormElementsValueStandardValue;\n\n acc[attribute.id] = formatStandardInitialValue(standardValue, attribute);\n\n return acc;\n }, {});\n"]}
@@ -56,8 +56,11 @@ const LinkField = ({ element, readonly, isFormCreationMode, onDeleteMultipleValu
56
56
  const form = AntForm.useFormInstance();
57
57
  const label = localizedTranslation(settings.label, lang);
58
58
  const fieldErrors = form.getFieldError(attribute.id);
59
+ // TODO: Temporary const that should be removed (and all it's usages) when we will have a proper way to override multiple values
60
+ const tmpCantOverrideValues = attribute.multiple_values &&
61
+ (calculatedFlags.calculatedValues?.length > 1 || inheritedFlags.inheritedValues?.length > 1);
59
62
  const columnsToDisplay = settings.columns?.map(({ id }) => id);
60
- const isReadOnly = attribute.readonly || !attribute.permissions.edit_value || readonly;
63
+ const isReadOnly = attribute.readonly || !attribute.permissions.edit_value || readonly || tmpCantOverrideValues;
61
64
  const isFieldInError = fieldErrors.length > 0;
62
65
  useOutsideInteractionDetector({
63
66
  attribute,
@@ -1 +1 @@
1
- {"version":3,"file":"LinkField.js","sourceRoot":"","sources":["../../../../../../src/components/RecordEdition/EditRecordContent/uiElements/LinkField/LinkField.tsx"],"names":[],"mappings":";AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAC,oBAAoB,EAAC,MAAM,aAAa,CAAC;AACjD,OAAO,EAAoC,QAAQ,EAAC,MAAM,OAAO,CAAC;AAClE,OAAO,EAAC,oBAAoB,EAAC,MAAM,qEAAqE,CAAC;AAKzG,OAAO,EAAC,OAAO,EAAE,eAAe,EAAC,MAAM,YAAY,CAAC;AACpD,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAClC,OAAO,MAAM,EAAE,EAAC,GAAG,EAAC,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAC,oBAAoB,EAAC,MAAM,eAAe,CAAC;AACnD,OAAO,EAAC,sBAAsB,EAAE,qBAAqB,EAAC,MAAM,oCAAoC,CAAC;AACjG,OAAO,EAAC,gBAAgB,EAAC,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAC,6BAA6B,EAAC,MAAM,yCAAyC,CAAC;AACtF,OAAO,EAAC,cAAc,EAAC,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EACH,6BAA6B,EAC7B,2BAA2B,EAC3B,4BAA4B,GAC/B,MAAM,oCAAoC,CAAC;AAK5C,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAA0B;qBAC/B,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;CAChE,CAAC;AAEF,MAAM,sBAAsB,GAAG,MAAM,CAAC,GAAG,CAAA;;;CAGxC,CAAC;AAEF,MAAM,qBAAqB,GAAG,MAAM,CAAC,eAAe,CAAC,CAAgC;MAC/E,KAAK,CAAC,EAAE,CACN,KAAK,CAAC,mBAAmB;IACzB,GAAG,CAAA;;;;SAIF;;;;;;;;;;;;;;;;;;CAkBR,CAAC;AAWF,MAAM,SAAS,GAAsC,CAAC,EAClD,OAAO,EACP,QAAQ,EACR,kBAAkB,EAClB,sBAAsB,EACtB,YAAY,GAAG,KAAK,GACvB,EAAE,EAAE;IACD,MAAM,EAAC,KAAK,EAAE,QAAQ,EAAC,GAAG,oBAAoB,EAAE,CAAC;IACjD,MAAM,EAAC,IAAI,EAAC,GAAG,OAAO,EAAE,CAAC;IACzB,MAAM,EACF,QAAQ,EACR,SAAS,EACT,kBAAkB,GACrB,GAIG,OAAO,CAAC;IAEZ,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAqC,OAAO,CAAC,MAAM,CAAC,CAAC;IAEvG,MAAM,eAAe,GAAG,sBAAsB,CAAC,aAAa,CAAC,CAAC;IAC9D,MAAM,cAAc,GAAG,qBAAqB,CAAC,aAAa,CAAC,CAAC;IAC5D,MAAM,IAAI,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IACvC,MAAM,KAAK,GAAG,oBAAoB,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACzD,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAErD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,SAAS,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,UAAU,IAAI,QAAQ,CAAC;IACvF,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;IAE9C,6BAA6B,CAAC;QAC1B,SAAS;QACT,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,eAAe,EAAE,oBAAoB;QACrC,QAAQ;QACR,aAAa;QACb,gBAAgB,EAAE;YACd,+CAA+C;YAC/C,oBAAoB;YACpB,IAAI,6BAA6B,EAAE;YACnC,IAAI,4BAA4B,EAAE;YAClC,IAAI,2BAA2B,EAAE;YACjC,8BAA8B;SACjC;KACJ,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IAE5E,MAAM,EAAC,gBAAgB,EAAE,mBAAmB,EAAC,GAAG,cAAc,CAAC;QAC3D,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE;QAC1B,aAAa;QACb,kBAAkB;QAClB,SAAS;QACT,kBAAkB;QAClB,gBAAgB;QAChB,aAAa;QACb,gBAAgB;QAChB,UAAU;QACV,cAAc;QACd,UAAU,EAAE,aAAa,CAAC,MAAM,KAAK,CAAC;QACtC,sBAAsB;KACzB,CAAC,CAAC;IAEH,OAAO,CACH,KAAC,OAAO,qBAAgB,YAAY,YAChC,KAAC,OAAO,CAAC,IAAI,IAAC,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,OAAO,kBACrC,KAAC,qBAAqB,IAClB,EAAE,EAAE,oBAAoB,GAAG,SAAS,CAAC,EAAE,iBAC3B,YAAY,EACxB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAC5B,QAAQ,QACR,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAC5C,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAC3D,KAAK,EACD,8BACI,KAAC,sBAAsB,cACnB,KAAC,gBAAgB,IAAC,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,GAAI,GACjE,EACxB,gBAAgB,IAClB,yBAEc,UAAU,YAE9B,mBAAmB,GACA,GACb,GACT,CACb,CAAC;AACN,CAAC,CAAC;AAEF,eAAe,SAAS,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 {localizedTranslation} from '@leav/utils';\nimport {type FunctionComponent, useEffect, useState} from 'react';\nimport {useEditRecordReducer} from '_ui/components/RecordEdition/editRecordReducer/useEditRecordReducer';\nimport {type RecordFormElementsValueLinkValue} from '_ui/hooks/useGetRecordForm/useGetRecordForm';\nimport {type JoinLibraryContextFragment, type RecordFormAttributeLinkAttributeFragment} from '_ui/_gqlTypes';\nimport {type ILinkFieldState} from '../../reducers/linkFieldReducer/linkFieldReducer';\nimport {type IFormElementProps} from '../../_types';\nimport {AntForm, KitInputWrapper} from 'aristid-ds';\nimport {useLang} from '_ui/hooks';\nimport styled, {css} from 'styled-components';\nimport {LINK_FIELD_ID_PREFIX} from '_ui/constants';\nimport {computeCalculatedFlags, computeInheritedFlags} from '../shared/calculatedInheritedFlags';\nimport {ComputeIndicator} from '../shared/ComputeIndicator';\nimport {useOutsideInteractionDetector} from '../shared/useOutsideInteractionDetector';\nimport {useLinkRecords} from './link-record/useLinkRecords';\nimport {\n CREATE_RECORD_MODAL_CLASSNAME,\n EDIT_RECORD_MODAL_CLASSNAME,\n LINK_RECORDS_MODAL_CLASSNAME,\n} from '_ui/components/Explorer/_constants';\nimport {type IFormLinkFieldSettings} from '@leav/utils/src/types/forms';\n\nexport type LinkFieldReducerState = ILinkFieldState<RecordFormElementsValueLinkValue>;\n\nconst Wrapper = styled.div<{$metadataEdit: boolean}>`\n margin-bottom: ${props => (props.$metadataEdit ? 0 : '1.5em')};\n`;\n\nconst KitInputExtraAlignLeft = styled.div`\n margin-right: auto;\n line-height: 12px;\n`;\n\nconst KitInputWrapperStyled = styled(KitInputWrapper)<{$readonlyBackground: boolean}>`\n ${props =>\n props.$readonlyBackground &&\n css`\n .kit-input-wrapper-content {\n background-color: var(--general-utilities-neutral-light);\n }\n `}\n\n &.disabled {\n .kit-input-wrapper-content {\n background-color: var(--general-utilities-neutral-light);\n }\n }\n\n &.error:not(.disabled) {\n .kit-input-wrapper-content {\n background-color: var(--general-utilities-error-light);\n }\n }\n\n .ant-empty-image,\n .ant-empty-description {\n display: none;\n }\n`;\n\ntype LinkFieldProps = IFormElementProps<\n IFormLinkFieldSettings & {\n columns?: Array<{\n id: string;\n label: Record<string, string>;\n }>;\n }\n>;\n\nconst LinkField: FunctionComponent<LinkFieldProps> = ({\n element,\n readonly,\n isFormCreationMode,\n onDeleteMultipleValues,\n metadataEdit = false,\n}) => {\n const {state, dispatch} = useEditRecordReducer();\n const {lang} = useLang();\n const {\n settings,\n attribute,\n joinLibraryContext,\n }: {\n settings: typeof element.settings;\n attribute?: RecordFormAttributeLinkAttributeFragment;\n joinLibraryContext?: JoinLibraryContextFragment;\n } = element;\n\n const [backendValues, setBackendValues] = useState<RecordFormElementsValueLinkValue[]>(element.values);\n\n const calculatedFlags = computeCalculatedFlags(backendValues);\n const inheritedFlags = computeInheritedFlags(backendValues);\n const form = AntForm.useFormInstance();\n const label = localizedTranslation(settings.label, lang);\n const fieldErrors = form.getFieldError(attribute.id);\n\n const columnsToDisplay = settings.columns?.map(({id}) => id);\n const isReadOnly = attribute.readonly || !attribute.permissions.edit_value || readonly;\n const isFieldInError = fieldErrors.length > 0;\n\n useOutsideInteractionDetector({\n attribute,\n activeAttribute: state.activeAttribute,\n attributePrefix: LINK_FIELD_ID_PREFIX,\n dispatch,\n backendValues,\n allowedSelectors: [\n 'div[role=\"status\"]:has(.kit-snackbar-message)',\n '.kit-modal-wrapper',\n `.${CREATE_RECORD_MODAL_CLASSNAME}`,\n `.${LINK_RECORDS_MODAL_CLASSNAME}`,\n `.${EDIT_RECORD_MODAL_CLASSNAME}`,\n '.kit-select-dropdown-content',\n ],\n });\n\n const editionFormId = settings.editFormId ? settings.editFormId : 'edition';\n\n const {UnlinkAllRecords, LinkRecordsExplorer} = useLinkRecords({\n libraryId: state.libraryId,\n recordId: state.record?.id,\n editionFormId,\n isFormCreationMode,\n attribute,\n joinLibraryContext,\n columnsToDisplay,\n backendValues,\n setBackendValues,\n isReadOnly,\n isFieldInError,\n hasNoValue: backendValues.length === 0,\n onDeleteMultipleValues,\n });\n\n return (\n <Wrapper $metadataEdit={metadataEdit}>\n <AntForm.Item name={attribute.id} noStyle>\n <KitInputWrapperStyled\n id={LINK_FIELD_ID_PREFIX + attribute.id}\n data-testid=\"link-field\"\n label={label}\n required={attribute.required}\n bordered\n status={isFieldInError ? 'error' : undefined}\n helper={isFieldInError ? String(fieldErrors[0]) : undefined}\n extra={\n <>\n <KitInputExtraAlignLeft>\n <ComputeIndicator calculatedFlags={calculatedFlags} inheritedFlags={inheritedFlags} />\n </KitInputExtraAlignLeft>\n {UnlinkAllRecords}\n </>\n }\n $readonlyBackground={isReadOnly}\n >\n {LinkRecordsExplorer}\n </KitInputWrapperStyled>\n </AntForm.Item>\n </Wrapper>\n );\n};\n\nexport default LinkField;\n"]}
1
+ {"version":3,"file":"LinkField.js","sourceRoot":"","sources":["../../../../../../src/components/RecordEdition/EditRecordContent/uiElements/LinkField/LinkField.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 {localizedTranslation} from '@leav/utils';\nimport {type FunctionComponent, useEffect, useState} from 'react';\nimport {useEditRecordReducer} from '_ui/components/RecordEdition/editRecordReducer/useEditRecordReducer';\nimport {type RecordFormElementsValueLinkValue} from '_ui/hooks/useGetRecordForm/useGetRecordForm';\nimport {type JoinLibraryContextFragment, type RecordFormAttributeLinkAttributeFragment} from '_ui/_gqlTypes';\nimport {type ILinkFieldState} from '../../reducers/linkFieldReducer/linkFieldReducer';\nimport {type IFormElementProps} from '../../_types';\nimport {AntForm, KitInputWrapper} from 'aristid-ds';\nimport {useLang} from '_ui/hooks';\nimport styled, {css} from 'styled-components';\nimport {LINK_FIELD_ID_PREFIX} from '_ui/constants';\nimport {computeCalculatedFlags, computeInheritedFlags} from '../shared/calculatedInheritedFlags';\nimport {ComputeIndicator} from '../shared/ComputeIndicator';\nimport {useOutsideInteractionDetector} from '../shared/useOutsideInteractionDetector';\nimport {useLinkRecords} from './link-record/useLinkRecords';\nimport {\n CREATE_RECORD_MODAL_CLASSNAME,\n EDIT_RECORD_MODAL_CLASSNAME,\n LINK_RECORDS_MODAL_CLASSNAME,\n} from '_ui/components/Explorer/_constants';\nimport {type IFormLinkFieldSettings} from '@leav/utils/src/types/forms';\n\nexport type LinkFieldReducerState = ILinkFieldState<RecordFormElementsValueLinkValue>;\n\nconst Wrapper = styled.div<{$metadataEdit: boolean}>`\n margin-bottom: ${props => (props.$metadataEdit ? 0 : '1.5em')};\n`;\n\nconst KitInputExtraAlignLeft = styled.div`\n margin-right: auto;\n line-height: 12px;\n`;\n\nconst KitInputWrapperStyled = styled(KitInputWrapper)<{$readonlyBackground: boolean}>`\n ${props =>\n props.$readonlyBackground &&\n css`\n .kit-input-wrapper-content {\n background-color: var(--general-utilities-neutral-light);\n }\n `}\n\n &.disabled {\n .kit-input-wrapper-content {\n background-color: var(--general-utilities-neutral-light);\n }\n }\n\n &.error:not(.disabled) {\n .kit-input-wrapper-content {\n background-color: var(--general-utilities-error-light);\n }\n }\n\n .ant-empty-image,\n .ant-empty-description {\n display: none;\n }\n`;\n\ntype LinkFieldProps = IFormElementProps<\n IFormLinkFieldSettings & {\n columns?: Array<{\n id: string;\n label: Record<string, string>;\n }>;\n }\n>;\n\nconst LinkField: FunctionComponent<LinkFieldProps> = ({\n element,\n readonly,\n isFormCreationMode,\n onDeleteMultipleValues,\n metadataEdit = false,\n}) => {\n const {state, dispatch} = useEditRecordReducer();\n const {lang} = useLang();\n const {\n settings,\n attribute,\n joinLibraryContext,\n }: {\n settings: typeof element.settings;\n attribute?: RecordFormAttributeLinkAttributeFragment;\n joinLibraryContext?: JoinLibraryContextFragment;\n } = element;\n\n const [backendValues, setBackendValues] = useState<RecordFormElementsValueLinkValue[]>(element.values);\n\n const calculatedFlags = computeCalculatedFlags(backendValues);\n const inheritedFlags = computeInheritedFlags(backendValues);\n const form = AntForm.useFormInstance();\n const label = localizedTranslation(settings.label, lang);\n const fieldErrors = form.getFieldError(attribute.id);\n\n // TODO: Temporary const that should be removed (and all it's usages) when we will have a proper way to override multiple values\n const tmpCantOverrideValues =\n attribute.multiple_values &&\n (calculatedFlags.calculatedValues?.length > 1 || inheritedFlags.inheritedValues?.length > 1);\n\n const columnsToDisplay = settings.columns?.map(({id}) => id);\n const isReadOnly = attribute.readonly || !attribute.permissions.edit_value || readonly || tmpCantOverrideValues;\n const isFieldInError = fieldErrors.length > 0;\n\n useOutsideInteractionDetector({\n attribute,\n activeAttribute: state.activeAttribute,\n attributePrefix: LINK_FIELD_ID_PREFIX,\n dispatch,\n backendValues,\n allowedSelectors: [\n 'div[role=\"status\"]:has(.kit-snackbar-message)',\n '.kit-modal-wrapper',\n `.${CREATE_RECORD_MODAL_CLASSNAME}`,\n `.${LINK_RECORDS_MODAL_CLASSNAME}`,\n `.${EDIT_RECORD_MODAL_CLASSNAME}`,\n '.kit-select-dropdown-content',\n ],\n });\n\n const editionFormId = settings.editFormId ? settings.editFormId : 'edition';\n\n const {UnlinkAllRecords, LinkRecordsExplorer} = useLinkRecords({\n libraryId: state.libraryId,\n recordId: state.record?.id,\n editionFormId,\n isFormCreationMode,\n attribute,\n joinLibraryContext,\n columnsToDisplay,\n backendValues,\n setBackendValues,\n isReadOnly,\n isFieldInError,\n hasNoValue: backendValues.length === 0,\n onDeleteMultipleValues,\n });\n\n return (\n <Wrapper $metadataEdit={metadataEdit}>\n <AntForm.Item name={attribute.id} noStyle>\n <KitInputWrapperStyled\n id={LINK_FIELD_ID_PREFIX + attribute.id}\n data-testid=\"link-field\"\n label={label}\n required={attribute.required}\n bordered\n status={isFieldInError ? 'error' : undefined}\n helper={isFieldInError ? String(fieldErrors[0]) : undefined}\n extra={\n <>\n <KitInputExtraAlignLeft>\n <ComputeIndicator calculatedFlags={calculatedFlags} inheritedFlags={inheritedFlags} />\n </KitInputExtraAlignLeft>\n {UnlinkAllRecords}\n </>\n }\n $readonlyBackground={isReadOnly}\n >\n {LinkRecordsExplorer}\n </KitInputWrapperStyled>\n </AntForm.Item>\n </Wrapper>\n );\n};\n\nexport default LinkField;\n"]}
@@ -112,8 +112,8 @@ const StandardField = ({ element, computedValues, isFormCreationMode, antdForm,
112
112
  //TODO fix type
113
113
  values: backendWithoutCalculatedOrInheritedValues,
114
114
  format: attribute.format,
115
- calculatedValue: calculatedFlags.calculatedValue,
116
- inheritedValue: inheritedFlags.inheritedValue,
115
+ calculatedValues: calculatedFlags.calculatedValues,
116
+ inheritedValues: inheritedFlags.inheritedValues,
117
117
  });
118
118
  const _handleSubmit = (idValue, fieldName, submittedFieldIndex) => async (valueToSave) => {
119
119
  const shouldSpecifyFieldName = attribute.multiple_values && fieldName !== undefined;
@@ -229,8 +229,11 @@ const StandardField = ({ element, computedValues, isFormCreationMode, antdForm,
229
229
  !isFieldInError &&
230
230
  attribute.format !== AttributeFormat.boolean &&
231
231
  attribute.format !== AttributeFormat.encrypted;
232
+ // TODO: Temporary const that should be removed (and all it's usages) when we will have a proper way to override multiple values
233
+ const tmpCantOverrideValues = attribute.multiple_values &&
234
+ (calculatedFlags.calculatedValues?.length > 1 || inheritedFlags.inheritedValues?.length > 1);
232
235
  const label = localizedTranslation(element.settings.label, lang);
233
- const isReadOnly = attribute.readonly || !attribute.permissions.edit_value || readonly;
236
+ const isReadOnly = attribute.readonly || !attribute.permissions.edit_value || readonly || tmpCantOverrideValues;
234
237
  const canDeleteAllValues = !isReadOnly && !attribute.required && hasValue && backendValues.length > 1;
235
238
  const canDeleteSingleValue = !isReadOnly &&
236
239
  (!attribute.required || (attribute.required && backendWithoutCalculatedOrInheritedValues.length > 1));
@@ -1 +1 @@
1
- {"version":3,"file":"StandardField.js","sourceRoot":"","sources":["../../../../../../src/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardField.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 AnyPrimitive, ErrorTypes, type IRequiredFieldsSettings, localizedTranslation} from '@leav/utils';\nimport {type FunctionComponent, useEffect, useRef, useState} from 'react';\nimport styled, {css} from 'styled-components';\nimport {ErrorDisplay} from '_ui/components';\nimport {type RecordFormElementsValueStandardValue} from '_ui/hooks/useGetRecordForm/useGetRecordForm';\nimport {AttributeFormat, type ValueDetailsFragment} from '_ui/_gqlTypes';\nimport {APICallStatus, type IFormElementProps, type ISubmitMultipleResult} from '../../_types';\nimport StandardFieldValue from './StandardFieldValue';\nimport {Form, type FormInstance, type FormListOperation} from 'antd';\nimport {KitButton, KitInputWrapper, KitTooltip} from 'aristid-ds';\nimport {useLang} from '_ui/hooks';\nimport {FaPlus, FaTrash} from 'react-icons/fa';\nimport {DeleteAllValuesButton} from '../shared/DeleteAllValuesButton';\nimport {computeCalculatedFlags, computeInheritedFlags} from '../shared/calculatedInheritedFlags';\nimport {useGetPresentationValues} from './useGetPresentationValues';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {getAntdDisplayedValue, getEmptyInitialValue} from '../../antdUtils';\nimport {\n type GetRecordColumnsValuesRecord,\n type IRecordColumnValueStandard,\n} from '_ui/_queries/records/getRecordColumnsValues';\nimport {useEditRecordReducer} from '_ui/components/RecordEdition/editRecordReducer/useEditRecordReducer';\nimport {STANDARD_FIELD_ID_PREFIX} from '_ui/constants';\nimport {ComputeIndicator} from '../shared/ComputeIndicator';\nimport {useOutsideInteractionDetector} from '../shared/useOutsideInteractionDetector';\nimport {EditRecordReducerActionsTypes} from '_ui/components/RecordEdition/editRecordReducer/editRecordReducer';\nimport {INPUT_MAX_HEIGHT} from '../../formConstants';\n\nconst Wrapper = styled.div<{$metadataEdit: boolean}>`\n margin-bottom: ${props => (props.$metadataEdit ? 0 : '1.5em')};\n`;\n\nconst KitFieldsWrapper = styled.div`\n max-height: ${INPUT_MAX_HEIGHT};\n overflow-y: scroll;\n`;\n\nconst RowValueWrapper = styled.div`\n display: flex;\n flex-direction: row;\n`;\n\nconst StandardFieldValueWrapper = styled.div`\n flex: 1;\n`;\n\nconst KitInputWrapperStyled = styled(KitInputWrapper)<{$readonlyBackground: boolean}>`\n &.bordered > .kit-input-wrapper-content {\n padding: calc((var(--general-spacing-xs) - 3) * 1px);\n\n .kit-input-wrapper-content {\n margin: 3px;\n }\n }\n\n ${props =>\n props.$readonlyBackground &&\n css`\n .kit-input-wrapper-content {\n background-color: var(--general-utilities-neutral-light);\n }\n `}\n`;\n\nconst KitInputExtraAlignLeft = styled.div`\n margin-right: auto;\n line-height: 12px;\n`;\n\nconst KitDeleteValueButton = styled(KitButton)`\n margin: 3px;\n`;\n\nconst KitAddValueButton = styled(KitButton)`\n margin-top: calc((var(--general-spacing-xs) - 3) * 1px);\n margin-bottom: 3px;\n`;\n\nconst StandardField: FunctionComponent<\n IFormElementProps<IRequiredFieldsSettings, RecordFormElementsValueStandardValue> & {\n antdForm?: FormInstance;\n computedValues?: GetRecordColumnsValuesRecord<IRecordColumnValueStandard>;\n }\n> = ({\n element,\n computedValues,\n isFormCreationMode,\n antdForm,\n readonly,\n onValueSubmit,\n onValueDelete,\n onDeleteMultipleValues,\n metadataEdit = false,\n}) => {\n const {t} = useSharedTranslation();\n const {lang} = useLang();\n\n const antdListFieldsRef = useRef<{\n add: FormListOperation['add'];\n remove: FormListOperation['remove'];\n indexes: number[];\n } | null>(null);\n\n const {attribute} = element;\n\n useEffect(() => {\n if (computedValues && computedValues[attribute.id] && Array.isArray(computedValues[attribute.id])) {\n setBackendValues(computedValues[attribute.id]);\n antdForm.setFieldValue(attribute.id, getAntdDisplayedValue(computedValues[attribute.id], attribute));\n }\n }, [computedValues]);\n\n if (!attribute) {\n return <ErrorDisplay message={t('record_edition.missing_attribute')} />;\n }\n\n const {state, dispatch} = useEditRecordReducer();\n\n const [backendValues, setBackendValues] = useState<RecordFormElementsValueStandardValue[]>(element.values);\n\n const calculatedFlags = computeCalculatedFlags(backendValues);\n const inheritedFlags = computeInheritedFlags(backendValues);\n const defaultValueToAddInAntdForm = getEmptyInitialValue(attribute);\n\n useEffect(() => {\n if (state.activeAttribute?.attribute.id === attribute.id) {\n dispatch({\n type: EditRecordReducerActionsTypes.SET_ACTIVE_VALUE,\n values: backendValues,\n });\n }\n }, [backendValues]);\n\n useEffect(() => {\n if (!isFormCreationMode && backendValues.length === 0 && attribute.required) {\n antdForm.setFields([{name: attribute.id, errors: [t('errors.standard_field_required')]}]);\n }\n }, []);\n\n useOutsideInteractionDetector({\n attribute,\n activeAttribute: state.activeAttribute,\n attributePrefix: STANDARD_FIELD_ID_PREFIX,\n dispatch,\n backendValues,\n allowedSelectors: ['.ant-popover.ant-color-picker', '.ant-picker-dropdown', '.kit-modal-wrapper.link-modal'],\n });\n\n const backendWithoutCalculatedOrInheritedValues = backendValues\n .filter(backendValue => !backendValue.isCalculated && !backendValue.isInherited)\n .sort((a, b) => Number(a.id_value) - Number(b.id_value));\n\n const {presentationValues} = useGetPresentationValues({\n //TODO fix type\n values: backendWithoutCalculatedOrInheritedValues as unknown as ValueDetailsFragment[],\n format: attribute.format,\n calculatedValue: calculatedFlags.calculatedValue,\n inheritedValue: inheritedFlags.inheritedValue,\n });\n\n const _handleSubmit =\n (idValue?: string, fieldName?: number, submittedFieldIndex?: number) =>\n async (valueToSave: AnyPrimitive): Promise<ISubmitMultipleResult> => {\n const shouldSpecifyFieldName = attribute.multiple_values && fieldName !== undefined;\n const name = shouldSpecifyFieldName ? [attribute.id, fieldName] : attribute.id;\n if (antdForm) {\n antdForm.setFields([\n {\n name,\n errors: null,\n },\n ]);\n }\n\n let submitRes;\n if (attribute.multiple_values) {\n if (valueToSave === '') {\n _handleDeleteValue(idValue, submittedFieldIndex);\n return;\n }\n submitRes = await onValueSubmit([{value: valueToSave, idValue: idValue ?? null, attribute}], null);\n if (submitRes.status === APICallStatus.SUCCESS) {\n setBackendValues(previousBackendValues => {\n const newBackendValues = [...previousBackendValues, ...submitRes.values].reduce(\n (acc, backendValue) => {\n const existingValue = acc.find(\n o =>\n o.id_value === backendValue.id_value &&\n o.isCalculated === backendValue.isCalculated &&\n o.isInherited === backendValue.isInherited,\n );\n\n if (existingValue) {\n Object.assign(existingValue, backendValue);\n } else {\n acc.push(backendValue);\n }\n\n return acc;\n },\n [],\n );\n\n return newBackendValues;\n });\n\n return submitRes;\n }\n } else {\n if (valueToSave) {\n submitRes = await onValueSubmit([{value: valueToSave, idValue: idValue ?? null, attribute}], null);\n if (submitRes.status === APICallStatus.SUCCESS) {\n setBackendValues((submitRes.values as unknown as RecordFormElementsValueStandardValue[]) ?? []);\n\n return submitRes;\n }\n } else {\n if (backendWithoutCalculatedOrInheritedValues.length > 0) {\n submitRes = await onValueDelete({id_value: idValue, payload: null}, attribute.id);\n\n if (submitRes.status === APICallStatus.SUCCESS) {\n setBackendValues(previousBackendValues =>\n previousBackendValues.filter(\n value =>\n (value.isCalculated !== null && value.isCalculated !== undefined) ||\n (value.isInherited !== null && value.isInherited !== undefined),\n ),\n );\n return submitRes;\n }\n }\n }\n }\n\n if (!submitRes) {\n return;\n }\n\n if (!submitRes.error && submitRes.errors) {\n const attributeError = submitRes.errors.filter(err => err.attribute === attribute.id)?.[0];\n\n if (attributeError) {\n submitRes.error =\n attributeError.type === ErrorTypes.VALIDATION_ERROR\n ? attributeError.message\n : t(`errors.${attributeError.type}`);\n }\n }\n\n if (submitRes.error && antdForm) {\n antdForm.setFields([\n {\n name,\n errors: [submitRes.error],\n },\n ]);\n }\n\n return submitRes;\n };\n\n const _handleDeleteValue = async (idValue: string | undefined, deletedFieldIndex: number) => {\n if (idValue) {\n await onValueDelete({id_value: idValue}, attribute.id);\n\n setBackendValues(previousBackendValues =>\n previousBackendValues.filter(backendValue => backendValue.id_value !== idValue),\n );\n }\n antdListFieldsRef.current.remove(deletedFieldIndex);\n if (backendWithoutCalculatedOrInheritedValues.length === 1) {\n antdListFieldsRef.current.add(defaultValueToAddInAntdForm);\n }\n };\n\n const _handleDeleteAllValues = async () => {\n const deleteRes = await onDeleteMultipleValues(\n attribute.id,\n backendValues.filter(b => b.id_value),\n null,\n );\n\n if (deleteRes.status === APICallStatus.SUCCESS) {\n antdListFieldsRef.current.remove(antdListFieldsRef.current.indexes);\n antdListFieldsRef.current.add(defaultValueToAddInAntdForm);\n setBackendValues(previousBackendValues =>\n previousBackendValues.filter(backendValue => !backendValue.id_value),\n );\n\n return;\n }\n };\n\n let isFieldInError = false;\n\n if (antdForm) {\n const hasErrorsInFormList = backendValues.some((_, index) => {\n const errors = antdForm.getFieldError([attribute.id, index]);\n return errors.length > 0;\n });\n\n const multipleFieldRequiredInError =\n attribute.multiple_values && attribute.required && antdForm.getFieldError([attribute.id, 0])?.length > 0;\n\n isFieldInError =\n antdForm.getFieldError(attribute.id).length > 0 || hasErrorsInFormList || multipleFieldRequiredInError;\n }\n\n const isMultipleValues = element.attribute.multiple_values;\n const hasValue = isMultipleValues && backendValues.length > 0;\n const canAddAnotherValue =\n !readonly &&\n isMultipleValues &&\n !isFieldInError &&\n attribute.format !== AttributeFormat.boolean &&\n attribute.format !== AttributeFormat.encrypted;\n\n const label = localizedTranslation(element.settings.label, lang);\n const isReadOnly = attribute.readonly || !attribute.permissions.edit_value || readonly;\n const canDeleteAllValues = !isReadOnly && !attribute.required && hasValue && backendValues.length > 1;\n const canDeleteSingleValue =\n !isReadOnly &&\n (!attribute.required || (attribute.required && backendWithoutCalculatedOrInheritedValues.length > 1));\n\n return (\n <Wrapper $metadataEdit={metadataEdit}>\n <KitInputWrapperStyled\n id={STANDARD_FIELD_ID_PREFIX + attribute.id}\n label={label}\n required={attribute.required}\n bordered={attribute.multiple_values}\n status={isFieldInError ? 'error' : undefined}\n extra={\n <>\n <KitInputExtraAlignLeft>\n <ComputeIndicator calculatedFlags={calculatedFlags} inheritedFlags={inheritedFlags} />\n </KitInputExtraAlignLeft>\n {canDeleteAllValues && (\n <DeleteAllValuesButton\n handleDelete={_handleDeleteAllValues}\n disabled={isReadOnly}\n danger={isFieldInError}\n />\n )}\n </>\n }\n htmlFor={attribute.id}\n $readonlyBackground={isReadOnly && attribute.multiple_values}\n >\n {attribute.multiple_values ? (\n <Form.List name={attribute.id}>\n {(fields, {add, remove}) => {\n antdListFieldsRef.current = {add, remove, indexes: fields.map((_, index) => index)};\n\n const shouldDisabledAddValueButton =\n fields.length > backendWithoutCalculatedOrInheritedValues.length;\n\n return (\n <>\n <KitFieldsWrapper>\n {fields.map((field, index) => (\n <RowValueWrapper key={field.key}>\n <StandardFieldValueWrapper>\n <StandardFieldValue\n listField={field}\n presentationValue={presentationValues[index] ?? ''}\n handleSubmit={_handleSubmit(\n backendWithoutCalculatedOrInheritedValues[index]?.id_value,\n field.name,\n index,\n )}\n attribute={attribute}\n label={label}\n readonly={isReadOnly}\n calculatedFlags={calculatedFlags}\n inheritedFlags={inheritedFlags}\n isLastValueOfMultivalues={\n index === fields.length - 1 && index !== 0\n }\n removeLastValueOfMultivalues={() => remove(index)}\n />\n </StandardFieldValueWrapper>\n {canDeleteSingleValue && (\n <KitDeleteValueButton\n type=\"tertiary\"\n title={t('record_edition.delete_value')}\n icon={<FaTrash />}\n disabled={isReadOnly}\n onClick={() =>\n _handleDeleteValue(\n backendWithoutCalculatedOrInheritedValues[index]\n ?.id_value,\n index,\n )\n }\n />\n )}\n </RowValueWrapper>\n ))}\n </KitFieldsWrapper>\n {canAddAnotherValue && (\n <KitTooltip\n title={\n shouldDisabledAddValueButton\n ? t('record_edition.please_select_value_before_adding')\n : undefined\n }\n >\n <KitAddValueButton\n type=\"secondary\"\n size=\"m\"\n icon={<FaPlus />}\n onClick={() => add(defaultValueToAddInAntdForm)}\n disabled={isReadOnly || shouldDisabledAddValueButton}\n >\n {t('record_edition.add_value')}\n </KitAddValueButton>\n </KitTooltip>\n )}\n </>\n );\n }}\n </Form.List>\n ) : (\n <StandardFieldValue\n presentationValue={presentationValues[0] ?? ''}\n handleSubmit={_handleSubmit(backendWithoutCalculatedOrInheritedValues[0]?.id_value)}\n attribute={attribute}\n readonly={isReadOnly}\n label={label}\n calculatedFlags={calculatedFlags}\n inheritedFlags={inheritedFlags}\n />\n )}\n </KitInputWrapperStyled>\n </Wrapper>\n );\n};\n\nexport default StandardField;\n"]}
1
+ {"version":3,"file":"StandardField.js","sourceRoot":"","sources":["../../../../../../src/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardField.tsx"],"names":[],"mappings":";AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAoB,UAAU,EAAgC,oBAAoB,EAAC,MAAM,aAAa,CAAC;AAC9G,OAAO,EAAyB,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAC1E,OAAO,MAAM,EAAE,EAAC,GAAG,EAAC,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAE5C,OAAO,EAAC,eAAe,EAA4B,MAAM,eAAe,CAAC;AACzE,OAAO,EAAC,aAAa,EAAqD,MAAM,cAAc,CAAC;AAC/F,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAC,IAAI,EAA4C,MAAM,MAAM,CAAC;AACrE,OAAO,EAAC,SAAS,EAAE,eAAe,EAAE,UAAU,EAAC,MAAM,YAAY,CAAC;AAClE,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAClC,OAAO,EAAC,MAAM,EAAE,OAAO,EAAC,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAC,qBAAqB,EAAC,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAC,sBAAsB,EAAE,qBAAqB,EAAC,MAAM,oCAAoC,CAAC;AACjG,OAAO,EAAC,wBAAwB,EAAC,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAC,qBAAqB,EAAE,oBAAoB,EAAC,MAAM,iBAAiB,CAAC;AAK5E,OAAO,EAAC,oBAAoB,EAAC,MAAM,qEAAqE,CAAC;AACzG,OAAO,EAAC,wBAAwB,EAAC,MAAM,eAAe,CAAC;AACvD,OAAO,EAAC,gBAAgB,EAAC,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAC,6BAA6B,EAAC,MAAM,yCAAyC,CAAC;AACtF,OAAO,EAAC,6BAA6B,EAAC,MAAM,kEAAkE,CAAC;AAC/G,OAAO,EAAC,gBAAgB,EAAC,MAAM,qBAAqB,CAAC;AAErD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAA0B;qBAC/B,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;CAChE,CAAC;AAEF,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAA;kBACjB,gBAAgB;;CAEjC,CAAC;AAEF,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAA;;;CAGjC,CAAC;AAEF,MAAM,yBAAyB,GAAG,MAAM,CAAC,GAAG,CAAA;;CAE3C,CAAC;AAEF,MAAM,qBAAqB,GAAG,MAAM,CAAC,eAAe,CAAC,CAAgC;;;;;;;;;MAS/E,KAAK,CAAC,EAAE,CACN,KAAK,CAAC,mBAAmB;IACzB,GAAG,CAAA;;;;SAIF;CACR,CAAC;AAEF,MAAM,sBAAsB,GAAG,MAAM,CAAC,GAAG,CAAA;;;CAGxC,CAAC;AAEF,MAAM,oBAAoB,GAAG,MAAM,CAAC,SAAS,CAAC,CAAA;;CAE7C,CAAC;AAEF,MAAM,iBAAiB,GAAG,MAAM,CAAC,SAAS,CAAC,CAAA;;;CAG1C,CAAC;AAEF,MAAM,aAAa,GAKf,CAAC,EACD,OAAO,EACP,cAAc,EACd,kBAAkB,EAClB,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,aAAa,EACb,sBAAsB,EACtB,YAAY,GAAG,KAAK,GACvB,EAAE,EAAE;IACD,MAAM,EAAC,CAAC,EAAC,GAAG,oBAAoB,EAAE,CAAC;IACnC,MAAM,EAAC,IAAI,EAAC,GAAG,OAAO,EAAE,CAAC;IAEzB,MAAM,iBAAiB,GAAG,MAAM,CAItB,IAAI,CAAC,CAAC;IAEhB,MAAM,EAAC,SAAS,EAAC,GAAG,OAAO,CAAC;IAE5B,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,cAAc,IAAI,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAChG,gBAAgB,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;YAC/C,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,qBAAqB,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;QACzG,CAAC;IACL,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IAErB,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,OAAO,KAAC,YAAY,IAAC,OAAO,EAAE,CAAC,CAAC,kCAAkC,CAAC,GAAI,CAAC;IAC5E,CAAC;IAED,MAAM,EAAC,KAAK,EAAE,QAAQ,EAAC,GAAG,oBAAoB,EAAE,CAAC;IAEjD,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAyC,OAAO,CAAC,MAAM,CAAC,CAAC;IAE3G,MAAM,eAAe,GAAG,sBAAsB,CAAC,aAAa,CAAC,CAAC;IAC9D,MAAM,cAAc,GAAG,qBAAqB,CAAC,aAAa,CAAC,CAAC;IAC5D,MAAM,2BAA2B,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAEpE,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,KAAK,CAAC,eAAe,EAAE,SAAS,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,EAAE,CAAC;YACvD,QAAQ,CAAC;gBACL,IAAI,EAAE,6BAA6B,CAAC,gBAAgB;gBACpD,MAAM,EAAE,aAAa;aACxB,CAAC,CAAC;QACP,CAAC;IACL,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpB,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,CAAC,kBAAkB,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;YAC1E,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAC,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;QAC9F,CAAC;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,6BAA6B,CAAC;QAC1B,SAAS;QACT,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,eAAe,EAAE,wBAAwB;QACzC,QAAQ;QACR,aAAa;QACb,gBAAgB,EAAE,CAAC,+BAA+B,EAAE,sBAAsB,EAAE,+BAA+B,CAAC;KAC/G,CAAC,CAAC;IAEH,MAAM,yCAAyC,GAAG,aAAa;SAC1D,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,YAAY,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;SAC/E,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE7D,MAAM,EAAC,kBAAkB,EAAC,GAAG,wBAAwB,CAAC;QAClD,eAAe;QACf,MAAM,EAAE,yCAA8E;QACtF,MAAM,EAAE,SAAS,CAAC,MAAM;QACxB,gBAAgB,EAAE,eAAe,CAAC,gBAAgB;QAClD,eAAe,EAAE,cAAc,CAAC,eAAe;KAClD,CAAC,CAAC;IAEH,MAAM,aAAa,GACf,CAAC,OAAgB,EAAE,SAAkB,EAAE,mBAA4B,EAAE,EAAE,CACvE,KAAK,EAAE,WAAyB,EAAkC,EAAE;QAChE,MAAM,sBAAsB,GAAG,SAAS,CAAC,eAAe,IAAI,SAAS,KAAK,SAAS,CAAC;QACpF,MAAM,IAAI,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/E,IAAI,QAAQ,EAAE,CAAC;YACX,QAAQ,CAAC,SAAS,CAAC;gBACf;oBACI,IAAI;oBACJ,MAAM,EAAE,IAAI;iBACf;aACJ,CAAC,CAAC;QACP,CAAC;QAED,IAAI,SAAS,CAAC;QACd,IAAI,SAAS,CAAC,eAAe,EAAE,CAAC;YAC5B,IAAI,WAAW,KAAK,EAAE,EAAE,CAAC;gBACrB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;gBACjD,OAAO;YACX,CAAC;YACD,SAAS,GAAG,MAAM,aAAa,CAAC,CAAC,EAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,SAAS,EAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YACnG,IAAI,SAAS,CAAC,MAAM,KAAK,aAAa,CAAC,OAAO,EAAE,CAAC;gBAC7C,gBAAgB,CAAC,qBAAqB,CAAC,EAAE;oBACrC,MAAM,gBAAgB,GAAG,CAAC,GAAG,qBAAqB,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,MAAM,CAC3E,CAAC,GAAG,EAAE,YAAY,EAAE,EAAE;wBAClB,MAAM,aAAa,GAAG,GAAG,CAAC,IAAI,CAC1B,CAAC,CAAC,EAAE,CACA,CAAC,CAAC,QAAQ,KAAK,YAAY,CAAC,QAAQ;4BACpC,CAAC,CAAC,YAAY,KAAK,YAAY,CAAC,YAAY;4BAC5C,CAAC,CAAC,WAAW,KAAK,YAAY,CAAC,WAAW,CACjD,CAAC;wBAEF,IAAI,aAAa,EAAE,CAAC;4BAChB,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;wBAC/C,CAAC;6BAAM,CAAC;4BACJ,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;wBAC3B,CAAC;wBAED,OAAO,GAAG,CAAC;oBACf,CAAC,EACD,EAAE,CACL,CAAC;oBAEF,OAAO,gBAAgB,CAAC;gBAC5B,CAAC,CAAC,CAAC;gBAEH,OAAO,SAAS,CAAC;YACrB,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,IAAI,WAAW,EAAE,CAAC;gBACd,SAAS,GAAG,MAAM,aAAa,CAAC,CAAC,EAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,SAAS,EAAC,CAAC,EAAE,IAAI,CAAC,CAAC;gBACnG,IAAI,SAAS,CAAC,MAAM,KAAK,aAAa,CAAC,OAAO,EAAE,CAAC;oBAC7C,gBAAgB,CAAE,SAAS,CAAC,MAA4D,IAAI,EAAE,CAAC,CAAC;oBAEhG,OAAO,SAAS,CAAC;gBACrB,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,IAAI,yCAAyC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACvD,SAAS,GAAG,MAAM,aAAa,CAAC,EAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;oBAElF,IAAI,SAAS,CAAC,MAAM,KAAK,aAAa,CAAC,OAAO,EAAE,CAAC;wBAC7C,gBAAgB,CAAC,qBAAqB,CAAC,EAAE,CACrC,qBAAqB,CAAC,MAAM,CACxB,KAAK,CAAC,EAAE,CACJ,CAAC,KAAK,CAAC,YAAY,KAAK,IAAI,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC;4BACjE,CAAC,KAAK,CAAC,WAAW,KAAK,IAAI,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,CACtE,CACJ,CAAC;wBACF,OAAO,SAAS,CAAC;oBACrB,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,OAAO;QACX,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;YACvC,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAE3F,IAAI,cAAc,EAAE,CAAC;gBACjB,SAAS,CAAC,KAAK;oBACX,cAAc,CAAC,IAAI,KAAK,UAAU,CAAC,gBAAgB;wBAC/C,CAAC,CAAC,cAAc,CAAC,OAAO;wBACxB,CAAC,CAAC,CAAC,CAAC,UAAU,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;YACjD,CAAC;QACL,CAAC;QAED,IAAI,SAAS,CAAC,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC9B,QAAQ,CAAC,SAAS,CAAC;gBACf;oBACI,IAAI;oBACJ,MAAM,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;iBAC5B;aACJ,CAAC,CAAC;QACP,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC,CAAC;IAEN,MAAM,kBAAkB,GAAG,KAAK,EAAE,OAA2B,EAAE,iBAAyB,EAAE,EAAE;QACxF,IAAI,OAAO,EAAE,CAAC;YACV,MAAM,aAAa,CAAC,EAAC,QAAQ,EAAE,OAAO,EAAC,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;YAEvD,gBAAgB,CAAC,qBAAqB,CAAC,EAAE,CACrC,qBAAqB,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,KAAK,OAAO,CAAC,CAClF,CAAC;QACN,CAAC;QACD,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACpD,IAAI,yCAAyC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzD,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QAC/D,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,sBAAsB,GAAG,KAAK,IAAI,EAAE;QACtC,MAAM,SAAS,GAAG,MAAM,sBAAsB,CAC1C,SAAS,CAAC,EAAE,EACZ,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EACrC,IAAI,CACP,CAAC;QAEF,IAAI,SAAS,CAAC,MAAM,KAAK,aAAa,CAAC,OAAO,EAAE,CAAC;YAC7C,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACpE,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;YAC3D,gBAAgB,CAAC,qBAAqB,CAAC,EAAE,CACrC,qBAAqB,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CACvE,CAAC;YAEF,OAAO;QACX,CAAC;IACL,CAAC,CAAC;IAEF,IAAI,cAAc,GAAG,KAAK,CAAC;IAE3B,IAAI,QAAQ,EAAE,CAAC;QACX,MAAM,mBAAmB,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;YACxD,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;YAC7D,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,MAAM,4BAA4B,GAC9B,SAAS,CAAC,eAAe,IAAI,SAAS,CAAC,QAAQ,IAAI,QAAQ,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC;QAE7G,cAAc;YACV,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,mBAAmB,IAAI,4BAA4B,CAAC;IAC/G,CAAC;IAED,MAAM,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC;IAC3D,MAAM,QAAQ,GAAG,gBAAgB,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9D,MAAM,kBAAkB,GACpB,CAAC,QAAQ;QACT,gBAAgB;QAChB,CAAC,cAAc;QACf,SAAS,CAAC,MAAM,KAAK,eAAe,CAAC,OAAO;QAC5C,SAAS,CAAC,MAAM,KAAK,eAAe,CAAC,SAAS,CAAC;IAEnD,gIAAgI;IAChI,MAAM,qBAAqB,GACvB,SAAS,CAAC,eAAe;QACzB,CAAC,eAAe,CAAC,gBAAgB,EAAE,MAAM,GAAG,CAAC,IAAI,cAAc,CAAC,eAAe,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;IAEjG,MAAM,KAAK,GAAG,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACjE,MAAM,UAAU,GAAG,SAAS,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,UAAU,IAAI,QAAQ,IAAI,qBAAqB,CAAC;IAChH,MAAM,kBAAkB,GAAG,CAAC,UAAU,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,QAAQ,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;IACtG,MAAM,oBAAoB,GACtB,CAAC,UAAU;QACX,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,yCAAyC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAE1G,OAAO,CACH,KAAC,OAAO,qBAAgB,YAAY,YAChC,KAAC,qBAAqB,IAClB,EAAE,EAAE,wBAAwB,GAAG,SAAS,CAAC,EAAE,EAC3C,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAC5B,QAAQ,EAAE,SAAS,CAAC,eAAe,EACnC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAC5C,KAAK,EACD,8BACI,KAAC,sBAAsB,cACnB,KAAC,gBAAgB,IAAC,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,GAAI,GACjE,EACxB,kBAAkB,IAAI,CACnB,KAAC,qBAAqB,IAClB,YAAY,EAAE,sBAAsB,EACpC,QAAQ,EAAE,UAAU,EACpB,MAAM,EAAE,cAAc,GACxB,CACL,IACF,EAEP,OAAO,EAAE,SAAS,CAAC,EAAE,yBACA,UAAU,IAAI,SAAS,CAAC,eAAe,YAE3D,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,CACzB,KAAC,IAAI,CAAC,IAAI,IAAC,IAAI,EAAE,SAAS,CAAC,EAAE,YACxB,CAAC,MAAM,EAAE,EAAC,GAAG,EAAE,MAAM,EAAC,EAAE,EAAE;oBACvB,iBAAiB,CAAC,OAAO,GAAG,EAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAC,CAAC;oBAEpF,MAAM,4BAA4B,GAC9B,MAAM,CAAC,MAAM,GAAG,yCAAyC,CAAC,MAAM,CAAC;oBAErE,OAAO,CACH,8BACI,KAAC,gBAAgB,cACZ,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAC1B,MAAC,eAAe,eACZ,KAAC,yBAAyB,cACtB,KAAC,kBAAkB,IACf,SAAS,EAAE,KAAK,EAChB,iBAAiB,EAAE,kBAAkB,CAAC,KAAK,CAAC,IAAI,EAAE,EAClD,YAAY,EAAE,aAAa,CACvB,yCAAyC,CAAC,KAAK,CAAC,EAAE,QAAQ,EAC1D,KAAK,CAAC,IAAI,EACV,KAAK,CACR,EACD,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,UAAU,EACpB,eAAe,EAAE,eAAe,EAChC,cAAc,EAAE,cAAc,EAC9B,wBAAwB,EACpB,KAAK,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC,EAE9C,4BAA4B,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GACnD,GACsB,EAC3B,oBAAoB,IAAI,CACrB,KAAC,oBAAoB,IACjB,IAAI,EAAC,UAAU,EACf,KAAK,EAAE,CAAC,CAAC,6BAA6B,CAAC,EACvC,IAAI,EAAE,KAAC,OAAO,KAAG,EACjB,QAAQ,EAAE,UAAU,EACpB,OAAO,EAAE,GAAG,EAAE,CACV,kBAAkB,CACd,yCAAyC,CAAC,KAAK,CAAC;gDAC5C,EAAE,QAAQ,EACd,KAAK,CACR,GAEP,CACL,KAnCiB,KAAK,CAAC,GAAG,CAoCb,CACrB,CAAC,GACa,EAClB,kBAAkB,IAAI,CACnB,KAAC,UAAU,IACP,KAAK,EACD,4BAA4B;oCACxB,CAAC,CAAC,CAAC,CAAC,kDAAkD,CAAC;oCACvD,CAAC,CAAC,SAAS,YAGnB,KAAC,iBAAiB,IACd,IAAI,EAAC,WAAW,EAChB,IAAI,EAAC,GAAG,EACR,IAAI,EAAE,KAAC,MAAM,KAAG,EAChB,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,2BAA2B,CAAC,EAC/C,QAAQ,EAAE,UAAU,IAAI,4BAA4B,YAEnD,CAAC,CAAC,0BAA0B,CAAC,GACd,GACX,CAChB,IACF,CACN,CAAC;gBACN,CAAC,GACO,CACf,CAAC,CAAC,CAAC,CACA,KAAC,kBAAkB,IACf,iBAAiB,EAAE,kBAAkB,CAAC,CAAC,CAAC,IAAI,EAAE,EAC9C,YAAY,EAAE,aAAa,CAAC,yCAAyC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EACnF,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,UAAU,EACpB,KAAK,EAAE,KAAK,EACZ,eAAe,EAAE,eAAe,EAChC,cAAc,EAAE,cAAc,GAChC,CACL,GACmB,GAClB,CACb,CAAC;AACN,CAAC,CAAC;AAEF,eAAe,aAAa,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 AnyPrimitive, ErrorTypes, type IRequiredFieldsSettings, localizedTranslation} from '@leav/utils';\nimport {type FunctionComponent, useEffect, useRef, useState} from 'react';\nimport styled, {css} from 'styled-components';\nimport {ErrorDisplay} from '_ui/components';\nimport {type RecordFormElementsValueStandardValue} from '_ui/hooks/useGetRecordForm/useGetRecordForm';\nimport {AttributeFormat, type ValueDetailsFragment} from '_ui/_gqlTypes';\nimport {APICallStatus, type IFormElementProps, type ISubmitMultipleResult} from '../../_types';\nimport StandardFieldValue from './StandardFieldValue';\nimport {Form, type FormInstance, type FormListOperation} from 'antd';\nimport {KitButton, KitInputWrapper, KitTooltip} from 'aristid-ds';\nimport {useLang} from '_ui/hooks';\nimport {FaPlus, FaTrash} from 'react-icons/fa';\nimport {DeleteAllValuesButton} from '../shared/DeleteAllValuesButton';\nimport {computeCalculatedFlags, computeInheritedFlags} from '../shared/calculatedInheritedFlags';\nimport {useGetPresentationValues} from './useGetPresentationValues';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {getAntdDisplayedValue, getEmptyInitialValue} from '../../antdUtils';\nimport {\n type GetRecordColumnsValuesRecord,\n type IRecordColumnValueStandard,\n} from '_ui/_queries/records/getRecordColumnsValues';\nimport {useEditRecordReducer} from '_ui/components/RecordEdition/editRecordReducer/useEditRecordReducer';\nimport {STANDARD_FIELD_ID_PREFIX} from '_ui/constants';\nimport {ComputeIndicator} from '../shared/ComputeIndicator';\nimport {useOutsideInteractionDetector} from '../shared/useOutsideInteractionDetector';\nimport {EditRecordReducerActionsTypes} from '_ui/components/RecordEdition/editRecordReducer/editRecordReducer';\nimport {INPUT_MAX_HEIGHT} from '../../formConstants';\n\nconst Wrapper = styled.div<{$metadataEdit: boolean}>`\n margin-bottom: ${props => (props.$metadataEdit ? 0 : '1.5em')};\n`;\n\nconst KitFieldsWrapper = styled.div`\n max-height: ${INPUT_MAX_HEIGHT};\n overflow-y: scroll;\n`;\n\nconst RowValueWrapper = styled.div`\n display: flex;\n flex-direction: row;\n`;\n\nconst StandardFieldValueWrapper = styled.div`\n flex: 1;\n`;\n\nconst KitInputWrapperStyled = styled(KitInputWrapper)<{$readonlyBackground: boolean}>`\n &.bordered > .kit-input-wrapper-content {\n padding: calc((var(--general-spacing-xs) - 3) * 1px);\n\n .kit-input-wrapper-content {\n margin: 3px;\n }\n }\n\n ${props =>\n props.$readonlyBackground &&\n css`\n .kit-input-wrapper-content {\n background-color: var(--general-utilities-neutral-light);\n }\n `}\n`;\n\nconst KitInputExtraAlignLeft = styled.div`\n margin-right: auto;\n line-height: 12px;\n`;\n\nconst KitDeleteValueButton = styled(KitButton)`\n margin: 3px;\n`;\n\nconst KitAddValueButton = styled(KitButton)`\n margin-top: calc((var(--general-spacing-xs) - 3) * 1px);\n margin-bottom: 3px;\n`;\n\nconst StandardField: FunctionComponent<\n IFormElementProps<IRequiredFieldsSettings, RecordFormElementsValueStandardValue> & {\n antdForm?: FormInstance;\n computedValues?: GetRecordColumnsValuesRecord<IRecordColumnValueStandard>;\n }\n> = ({\n element,\n computedValues,\n isFormCreationMode,\n antdForm,\n readonly,\n onValueSubmit,\n onValueDelete,\n onDeleteMultipleValues,\n metadataEdit = false,\n}) => {\n const {t} = useSharedTranslation();\n const {lang} = useLang();\n\n const antdListFieldsRef = useRef<{\n add: FormListOperation['add'];\n remove: FormListOperation['remove'];\n indexes: number[];\n } | null>(null);\n\n const {attribute} = element;\n\n useEffect(() => {\n if (computedValues && computedValues[attribute.id] && Array.isArray(computedValues[attribute.id])) {\n setBackendValues(computedValues[attribute.id]);\n antdForm.setFieldValue(attribute.id, getAntdDisplayedValue(computedValues[attribute.id], attribute));\n }\n }, [computedValues]);\n\n if (!attribute) {\n return <ErrorDisplay message={t('record_edition.missing_attribute')} />;\n }\n\n const {state, dispatch} = useEditRecordReducer();\n\n const [backendValues, setBackendValues] = useState<RecordFormElementsValueStandardValue[]>(element.values);\n\n const calculatedFlags = computeCalculatedFlags(backendValues);\n const inheritedFlags = computeInheritedFlags(backendValues);\n const defaultValueToAddInAntdForm = getEmptyInitialValue(attribute);\n\n useEffect(() => {\n if (state.activeAttribute?.attribute.id === attribute.id) {\n dispatch({\n type: EditRecordReducerActionsTypes.SET_ACTIVE_VALUE,\n values: backendValues,\n });\n }\n }, [backendValues]);\n\n useEffect(() => {\n if (!isFormCreationMode && backendValues.length === 0 && attribute.required) {\n antdForm.setFields([{name: attribute.id, errors: [t('errors.standard_field_required')]}]);\n }\n }, []);\n\n useOutsideInteractionDetector({\n attribute,\n activeAttribute: state.activeAttribute,\n attributePrefix: STANDARD_FIELD_ID_PREFIX,\n dispatch,\n backendValues,\n allowedSelectors: ['.ant-popover.ant-color-picker', '.ant-picker-dropdown', '.kit-modal-wrapper.link-modal'],\n });\n\n const backendWithoutCalculatedOrInheritedValues = backendValues\n .filter(backendValue => !backendValue.isCalculated && !backendValue.isInherited)\n .sort((a, b) => Number(a.id_value) - Number(b.id_value));\n\n const {presentationValues} = useGetPresentationValues({\n //TODO fix type\n values: backendWithoutCalculatedOrInheritedValues as unknown as ValueDetailsFragment[],\n format: attribute.format,\n calculatedValues: calculatedFlags.calculatedValues,\n inheritedValues: inheritedFlags.inheritedValues,\n });\n\n const _handleSubmit =\n (idValue?: string, fieldName?: number, submittedFieldIndex?: number) =>\n async (valueToSave: AnyPrimitive): Promise<ISubmitMultipleResult> => {\n const shouldSpecifyFieldName = attribute.multiple_values && fieldName !== undefined;\n const name = shouldSpecifyFieldName ? [attribute.id, fieldName] : attribute.id;\n if (antdForm) {\n antdForm.setFields([\n {\n name,\n errors: null,\n },\n ]);\n }\n\n let submitRes;\n if (attribute.multiple_values) {\n if (valueToSave === '') {\n _handleDeleteValue(idValue, submittedFieldIndex);\n return;\n }\n submitRes = await onValueSubmit([{value: valueToSave, idValue: idValue ?? null, attribute}], null);\n if (submitRes.status === APICallStatus.SUCCESS) {\n setBackendValues(previousBackendValues => {\n const newBackendValues = [...previousBackendValues, ...submitRes.values].reduce(\n (acc, backendValue) => {\n const existingValue = acc.find(\n o =>\n o.id_value === backendValue.id_value &&\n o.isCalculated === backendValue.isCalculated &&\n o.isInherited === backendValue.isInherited,\n );\n\n if (existingValue) {\n Object.assign(existingValue, backendValue);\n } else {\n acc.push(backendValue);\n }\n\n return acc;\n },\n [],\n );\n\n return newBackendValues;\n });\n\n return submitRes;\n }\n } else {\n if (valueToSave) {\n submitRes = await onValueSubmit([{value: valueToSave, idValue: idValue ?? null, attribute}], null);\n if (submitRes.status === APICallStatus.SUCCESS) {\n setBackendValues((submitRes.values as unknown as RecordFormElementsValueStandardValue[]) ?? []);\n\n return submitRes;\n }\n } else {\n if (backendWithoutCalculatedOrInheritedValues.length > 0) {\n submitRes = await onValueDelete({id_value: idValue, payload: null}, attribute.id);\n\n if (submitRes.status === APICallStatus.SUCCESS) {\n setBackendValues(previousBackendValues =>\n previousBackendValues.filter(\n value =>\n (value.isCalculated !== null && value.isCalculated !== undefined) ||\n (value.isInherited !== null && value.isInherited !== undefined),\n ),\n );\n return submitRes;\n }\n }\n }\n }\n\n if (!submitRes) {\n return;\n }\n\n if (!submitRes.error && submitRes.errors) {\n const attributeError = submitRes.errors.filter(err => err.attribute === attribute.id)?.[0];\n\n if (attributeError) {\n submitRes.error =\n attributeError.type === ErrorTypes.VALIDATION_ERROR\n ? attributeError.message\n : t(`errors.${attributeError.type}`);\n }\n }\n\n if (submitRes.error && antdForm) {\n antdForm.setFields([\n {\n name,\n errors: [submitRes.error],\n },\n ]);\n }\n\n return submitRes;\n };\n\n const _handleDeleteValue = async (idValue: string | undefined, deletedFieldIndex: number) => {\n if (idValue) {\n await onValueDelete({id_value: idValue}, attribute.id);\n\n setBackendValues(previousBackendValues =>\n previousBackendValues.filter(backendValue => backendValue.id_value !== idValue),\n );\n }\n antdListFieldsRef.current.remove(deletedFieldIndex);\n if (backendWithoutCalculatedOrInheritedValues.length === 1) {\n antdListFieldsRef.current.add(defaultValueToAddInAntdForm);\n }\n };\n\n const _handleDeleteAllValues = async () => {\n const deleteRes = await onDeleteMultipleValues(\n attribute.id,\n backendValues.filter(b => b.id_value),\n null,\n );\n\n if (deleteRes.status === APICallStatus.SUCCESS) {\n antdListFieldsRef.current.remove(antdListFieldsRef.current.indexes);\n antdListFieldsRef.current.add(defaultValueToAddInAntdForm);\n setBackendValues(previousBackendValues =>\n previousBackendValues.filter(backendValue => !backendValue.id_value),\n );\n\n return;\n }\n };\n\n let isFieldInError = false;\n\n if (antdForm) {\n const hasErrorsInFormList = backendValues.some((_, index) => {\n const errors = antdForm.getFieldError([attribute.id, index]);\n return errors.length > 0;\n });\n\n const multipleFieldRequiredInError =\n attribute.multiple_values && attribute.required && antdForm.getFieldError([attribute.id, 0])?.length > 0;\n\n isFieldInError =\n antdForm.getFieldError(attribute.id).length > 0 || hasErrorsInFormList || multipleFieldRequiredInError;\n }\n\n const isMultipleValues = element.attribute.multiple_values;\n const hasValue = isMultipleValues && backendValues.length > 0;\n const canAddAnotherValue =\n !readonly &&\n isMultipleValues &&\n !isFieldInError &&\n attribute.format !== AttributeFormat.boolean &&\n attribute.format !== AttributeFormat.encrypted;\n\n // TODO: Temporary const that should be removed (and all it's usages) when we will have a proper way to override multiple values\n const tmpCantOverrideValues =\n attribute.multiple_values &&\n (calculatedFlags.calculatedValues?.length > 1 || inheritedFlags.inheritedValues?.length > 1);\n\n const label = localizedTranslation(element.settings.label, lang);\n const isReadOnly = attribute.readonly || !attribute.permissions.edit_value || readonly || tmpCantOverrideValues;\n const canDeleteAllValues = !isReadOnly && !attribute.required && hasValue && backendValues.length > 1;\n const canDeleteSingleValue =\n !isReadOnly &&\n (!attribute.required || (attribute.required && backendWithoutCalculatedOrInheritedValues.length > 1));\n\n return (\n <Wrapper $metadataEdit={metadataEdit}>\n <KitInputWrapperStyled\n id={STANDARD_FIELD_ID_PREFIX + attribute.id}\n label={label}\n required={attribute.required}\n bordered={attribute.multiple_values}\n status={isFieldInError ? 'error' : undefined}\n extra={\n <>\n <KitInputExtraAlignLeft>\n <ComputeIndicator calculatedFlags={calculatedFlags} inheritedFlags={inheritedFlags} />\n </KitInputExtraAlignLeft>\n {canDeleteAllValues && (\n <DeleteAllValuesButton\n handleDelete={_handleDeleteAllValues}\n disabled={isReadOnly}\n danger={isFieldInError}\n />\n )}\n </>\n }\n htmlFor={attribute.id}\n $readonlyBackground={isReadOnly && attribute.multiple_values}\n >\n {attribute.multiple_values ? (\n <Form.List name={attribute.id}>\n {(fields, {add, remove}) => {\n antdListFieldsRef.current = {add, remove, indexes: fields.map((_, index) => index)};\n\n const shouldDisabledAddValueButton =\n fields.length > backendWithoutCalculatedOrInheritedValues.length;\n\n return (\n <>\n <KitFieldsWrapper>\n {fields.map((field, index) => (\n <RowValueWrapper key={field.key}>\n <StandardFieldValueWrapper>\n <StandardFieldValue\n listField={field}\n presentationValue={presentationValues[index] ?? ''}\n handleSubmit={_handleSubmit(\n backendWithoutCalculatedOrInheritedValues[index]?.id_value,\n field.name,\n index,\n )}\n attribute={attribute}\n label={label}\n readonly={isReadOnly}\n calculatedFlags={calculatedFlags}\n inheritedFlags={inheritedFlags}\n isLastValueOfMultivalues={\n index === fields.length - 1 && index !== 0\n }\n removeLastValueOfMultivalues={() => remove(index)}\n />\n </StandardFieldValueWrapper>\n {canDeleteSingleValue && (\n <KitDeleteValueButton\n type=\"tertiary\"\n title={t('record_edition.delete_value')}\n icon={<FaTrash />}\n disabled={isReadOnly}\n onClick={() =>\n _handleDeleteValue(\n backendWithoutCalculatedOrInheritedValues[index]\n ?.id_value,\n index,\n )\n }\n />\n )}\n </RowValueWrapper>\n ))}\n </KitFieldsWrapper>\n {canAddAnotherValue && (\n <KitTooltip\n title={\n shouldDisabledAddValueButton\n ? t('record_edition.please_select_value_before_adding')\n : undefined\n }\n >\n <KitAddValueButton\n type=\"secondary\"\n size=\"m\"\n icon={<FaPlus />}\n onClick={() => add(defaultValueToAddInAntdForm)}\n disabled={isReadOnly || shouldDisabledAddValueButton}\n >\n {t('record_edition.add_value')}\n </KitAddValueButton>\n </KitTooltip>\n )}\n </>\n );\n }}\n </Form.List>\n ) : (\n <StandardFieldValue\n presentationValue={presentationValues[0] ?? ''}\n handleSubmit={_handleSubmit(backendWithoutCalculatedOrInheritedValues[0]?.id_value)}\n attribute={attribute}\n readonly={isReadOnly}\n label={label}\n calculatedFlags={calculatedFlags}\n inheritedFlags={inheritedFlags}\n />\n )}\n </KitInputWrapperStyled>\n </Wrapper>\n );\n};\n\nexport default StandardField;\n"]}
@@ -23,12 +23,13 @@ export const DSBooleanWrapper = ({ value, onChange, handleSubmit, attribute, rea
23
23
  throw Error('DSBooleanWrapper should be used inside a antd Form.Item');
24
24
  }
25
25
  const { t } = useSharedTranslation();
26
+ // TODO: Remove inheritedValues[0] and calculatedValues[0] when we will have a proper way to override multiple values. For now, those attributes are set in readonly mode.
26
27
  const _resetToInheritedOrCalculatedValue = () => {
27
- if (inheritedFlags.isInheritedValue) {
28
- onChange(inheritedFlags.inheritedValue.raw_payload, undefined);
28
+ if (inheritedFlags.isInheritedValues) {
29
+ onChange(inheritedFlags.inheritedValues[0].raw_payload, undefined);
29
30
  }
30
- else if (calculatedFlags.isCalculatedValue) {
31
- onChange(calculatedFlags.calculatedValue.raw_payload, undefined);
31
+ else if (calculatedFlags.isCalculatedValues) {
32
+ onChange(calculatedFlags.calculatedValues[0].raw_payload, undefined);
32
33
  }
33
34
  handleSubmit(null, attribute.id);
34
35
  };
@@ -36,6 +37,6 @@ export const DSBooleanWrapper = ({ value, onChange, handleSubmit, attribute, rea
36
37
  onChange(checked, event);
37
38
  handleSubmit(String(checked), attribute.id);
38
39
  };
39
- return (_jsxs(_Fragment, { children: [_jsxs("label", { children: [_jsx(KitSwitch, { id: attribute.id, checked: value, disabled: readonly, onChange: _handleOnChange }), _jsx(KitTypographyTextStyled, { size: "fontSize5", weight: "medium", children: t(_getBooleanValueAsStringForTranslation(value)) })] }), (inheritedFlags.isInheritedOverrideValue || calculatedFlags.isCalculatedOverrideValue) && (_jsx("span", { role: "button", onClick: _resetToInheritedOrCalculatedValue, children: _jsx(FontAwesomeIconStyled, { "aria-label": "clear", icon: faCircleXmark }) }))] }));
40
+ return (_jsxs(_Fragment, { children: [_jsxs("label", { children: [_jsx(KitSwitch, { id: attribute.id, checked: value, disabled: readonly, onChange: _handleOnChange }), _jsx(KitTypographyTextStyled, { size: "fontSize5", weight: "medium", children: t(_getBooleanValueAsStringForTranslation(value)) })] }), (inheritedFlags.isInheritedOverrideValues || calculatedFlags.isCalculatedOverrideValues) && (_jsx("span", { role: "button", onClick: _resetToInheritedOrCalculatedValue, children: _jsx(FontAwesomeIconStyled, { "aria-label": "clear", icon: faCircleXmark }) }))] }));
40
41
  };
41
42
  //# sourceMappingURL=DSBooleanWrapper.js.map