@leav/ui 1.5.1-1929c505 → 1.5.1-36ba391b

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/dist/__mocks__/common/attribute.js +1 -0
  2. package/dist/__mocks__/common/attribute.js.map +1 -1
  3. package/dist/_gqlTypes/index.d.ts +115 -1
  4. package/dist/_gqlTypes/index.js +86 -0
  5. package/dist/_gqlTypes/index.js.map +1 -1
  6. package/dist/_queries/attributes/attributeDetailsFragment.js +1 -0
  7. package/dist/_queries/attributes/attributeDetailsFragment.js.map +1 -1
  8. package/dist/components/Explorer/Explorer.d.ts +1 -1
  9. package/dist/components/Explorer/Explorer.js +15 -3
  10. package/dist/components/Explorer/Explorer.js.map +1 -1
  11. package/dist/components/Explorer/_queries/useExplorerData.js +13 -2
  12. package/dist/components/Explorer/_queries/useExplorerData.js.map +1 -1
  13. package/dist/components/Explorer/actions-mass/edit-attribute/EditAttributeMassActionModal.d.ts +13 -0
  14. package/dist/components/Explorer/actions-mass/edit-attribute/EditAttributeMassActionModal.js +20 -0
  15. package/dist/components/Explorer/actions-mass/edit-attribute/EditAttributeMassActionModal.js.map +1 -0
  16. package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValueLine.d.ts +10 -0
  17. package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValueLine.js +38 -0
  18. package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValueLine.js.map +1 -0
  19. package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValuesMapping.d.ts +8 -0
  20. package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValuesMapping.js +16 -0
  21. package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValuesMapping.js.map +1 -0
  22. package/dist/components/Explorer/actions-mass/edit-attribute/useCountValuesOccurrencesHook.d.ts +10 -0
  23. package/dist/components/Explorer/actions-mass/edit-attribute/useCountValuesOccurrencesHook.js +28 -0
  24. package/dist/components/Explorer/actions-mass/edit-attribute/useCountValuesOccurrencesHook.js.map +1 -0
  25. package/dist/components/Explorer/actions-mass/edit-attribute/useListEditableAttributeHook.d.ts +5 -0
  26. package/dist/components/Explorer/actions-mass/edit-attribute/useListEditableAttributeHook.js +12 -0
  27. package/dist/components/Explorer/actions-mass/edit-attribute/useListEditableAttributeHook.js.map +1 -0
  28. package/dist/components/Explorer/actions-mass/edit-attribute/useListTreeAttributeValuesHook.d.ts +5 -0
  29. package/dist/components/Explorer/actions-mass/edit-attribute/useListTreeAttributeValuesHook.js +20 -0
  30. package/dist/components/Explorer/actions-mass/edit-attribute/useListTreeAttributeValuesHook.js.map +1 -0
  31. package/dist/components/Explorer/actions-mass/useEditAttributeMassAction.d.ts +11 -0
  32. package/dist/components/Explorer/actions-mass/useEditAttributeMassAction.js +106 -0
  33. package/dist/components/Explorer/actions-mass/useEditAttributeMassAction.js.map +1 -0
  34. package/dist/components/Explorer/actions-mass/useExportMassAction.js +4 -6
  35. package/dist/components/Explorer/actions-mass/useExportMassAction.js.map +1 -1
  36. package/dist/components/Filters/context/filtersReducer.js +0 -1
  37. package/dist/components/Filters/context/filtersReducer.js.map +1 -1
  38. package/dist/components/Filters/filter-items/filter-type/TreeAttributeDropDown.js +15 -17
  39. package/dist/components/Filters/filter-items/filter-type/TreeAttributeDropDown.js.map +1 -1
  40. package/dist/components/Filters/prepareFiltersForRequest.js +1 -1
  41. package/dist/components/Filters/prepareFiltersForRequest.js.map +1 -1
  42. package/dist/components/RecordEdition/EditRecordContent/antdUtils.js +12 -3
  43. package/dist/components/RecordEdition/EditRecordContent/antdUtils.js.map +1 -1
  44. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/LinkField.js +4 -1
  45. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/LinkField.js.map +1 -1
  46. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardField.js +6 -3
  47. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardField.js.map +1 -1
  48. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSBooleanWrapper.js +6 -5
  49. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSBooleanWrapper.js.map +1 -1
  50. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSColorPickerWrapper.js +9 -8
  51. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSColorPickerWrapper.js.map +1 -1
  52. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSDatePickerWrapper.js +8 -7
  53. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSDatePickerWrapper.js.map +1 -1
  54. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSInputNumberWrapper.js +6 -5
  55. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSInputNumberWrapper.js.map +1 -1
  56. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSInputWrapper.js +6 -5
  57. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSInputWrapper.js.map +1 -1
  58. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSRangePickerWrapper.js +12 -11
  59. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSRangePickerWrapper.js.map +1 -1
  60. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSRichTextWrapper.js +16 -7
  61. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSRichTextWrapper.js.map +1 -1
  62. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/ValuesList/DSListSelect.js +6 -5
  63. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/ValuesList/DSListSelect.js.map +1 -1
  64. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/useGetPresentationValues.d.ts +3 -3
  65. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/useGetPresentationValues.js +10 -4
  66. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/useGetPresentationValues.js.map +1 -1
  67. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/TreeField.js +4 -1
  68. package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/TreeField.js.map +1 -1
  69. package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/ComputeIndicator.js +2 -2
  70. package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/ComputeIndicator.js.map +1 -1
  71. package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/calculatedInheritedFlags.d.ts +24 -24
  72. package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/calculatedInheritedFlags.js +34 -35
  73. package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/calculatedInheritedFlags.js.map +1 -1
  74. package/dist/components/RecordEdition/EditRecordSidebar/EditRecordSidebar.js +1 -1
  75. package/dist/components/RecordEdition/EditRecordSidebar/EditRecordSidebar.js.map +1 -1
  76. package/dist/components/RecordEdition/EditRecordSidebar/ValuesSummary/ValuesSummary.d.ts +1 -1
  77. package/dist/components/RecordEdition/EditRecordSidebar/ValuesSummary/ValuesSummary.js +15 -10
  78. package/dist/components/RecordEdition/EditRecordSidebar/ValuesSummary/ValuesSummary.js.map +1 -1
  79. package/dist/components/RecordEdition/editRecordReducer/editRecordReducer.d.ts +1 -1
  80. package/dist/components/RecordEdition/editRecordReducer/editRecordReducer.js +4 -3
  81. package/dist/components/RecordEdition/editRecordReducer/editRecordReducer.js.map +1 -1
  82. package/dist/components/SelectTreeNode/SelectTreeNodeContent.js +3 -0
  83. package/dist/components/SelectTreeNode/SelectTreeNodeContent.js.map +1 -1
  84. package/dist/hooks/useIFrameMessenger/schema.d.ts +43 -4
  85. package/dist/hooks/useIFrameMessenger/schema.js +11 -5
  86. package/dist/hooks/useIFrameMessenger/schema.js.map +1 -1
  87. package/dist/hooks/useIFrameMessenger/types.d.ts +2 -1
  88. package/dist/hooks/useIFrameMessenger/types.js.map +1 -1
  89. package/dist/locales/en/shared.json +20 -7
  90. package/dist/locales/fr/shared.json +20 -7
  91. package/package.json +3 -3
@@ -33,25 +33,26 @@ export const DSRangePickerWrapper = ({ value, presentationValue, isLastValueOfMu
33
33
  // we slow down the css so that presentationValue does not flash before being hidden
34
34
  const [usePresentationLayout, setUsePresentationLayout] = useState(false);
35
35
  useEffect(() => setUsePresentationLayout(!isFocused && !isErrors), [isFocused, isErrors]);
36
+ // 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.
36
37
  const _resetToInheritedOrCalculatedValue = async () => {
37
38
  hasChangedRef.current = false;
38
- if (inheritedFlags.isInheritedValue) {
39
+ if (inheritedFlags.isInheritedValues) {
39
40
  onChange([
40
- dayjs.unix(Number(inheritedFlags.inheritedValue.raw_payload.from)),
41
- dayjs.unix(Number(inheritedFlags.inheritedValue.raw_payload.to)),
42
- ], inheritedFlags.inheritedValue.raw_payload);
41
+ dayjs.unix(Number(inheritedFlags.inheritedValues[0].raw_payload.from)),
42
+ dayjs.unix(Number(inheritedFlags.inheritedValues[0].raw_payload.to)),
43
+ ], inheritedFlags.inheritedValues[0].raw_payload);
43
44
  }
44
- else if (calculatedFlags.isCalculatedValue) {
45
+ else if (calculatedFlags.isCalculatedValues) {
45
46
  onChange([
46
- dayjs.unix(Number(calculatedFlags.calculatedValue.raw_payload.from)),
47
- dayjs.unix(Number(calculatedFlags.calculatedValue.raw_payload.to)),
48
- ], calculatedFlags.calculatedValue.raw_payload);
47
+ dayjs.unix(Number(calculatedFlags.calculatedValues[0].raw_payload.from)),
48
+ dayjs.unix(Number(calculatedFlags.calculatedValues[0].raw_payload.to)),
49
+ ], calculatedFlags.calculatedValues[0].raw_payload);
49
50
  }
50
51
  await handleSubmit(null, attribute.id);
51
52
  };
52
53
  const _handleDateChange = async (rangePickerDates, ...antOnChangeParams) => {
53
54
  hasChangedRef.current = true;
54
- if ((inheritedFlags.isInheritedValue || calculatedFlags.isCalculatedValue) && rangePickerDates === null) {
55
+ if ((inheritedFlags.isInheritedValues || calculatedFlags.isCalculatedValues) && rangePickerDates === null) {
55
56
  _resetToInheritedOrCalculatedValue();
56
57
  return;
57
58
  }
@@ -82,7 +83,7 @@ export const DSRangePickerWrapper = ({ value, presentationValue, isLastValueOfMu
82
83
  : [t('record_edition.placeholder.enter_a_period'), ''];
83
84
  return (_jsx(KitDatePickerRangePickerStyled, { id: attribute.id, autoFocus: isFocused, open: attribute.multiple_values ? isFocused : undefined, value: value, format: !isFocused && !isErrors && !!presentationValue ? () => presentationValue : undefined, readonly: readonly, allowClear: !!value &&
84
85
  !attribute.multiple_values &&
85
- !inheritedFlags.isInheritedNotOverrideValue &&
86
- !calculatedFlags.isCalculatedNotOverrideValue, helper: isErrors ? String(errors[0]) : undefined, status: isErrors ? 'error' : undefined, onFocus: _handleOnFocus, onChange: _handleDateChange, onOpenChange: _handleOpenChange, placeholder: placeholderToDisplay, "$shouldUsePresentationLayout": usePresentationLayout }));
86
+ !inheritedFlags.isInheritedNotOverrideValues &&
87
+ !calculatedFlags.isCalculatedNotOverrideValues, helper: isErrors ? String(errors[0]) : undefined, status: isErrors ? 'error' : undefined, onFocus: _handleOnFocus, onChange: _handleDateChange, onOpenChange: _handleOpenChange, placeholder: placeholderToDisplay, "$shouldUsePresentationLayout": usePresentationLayout }));
87
88
  };
88
89
  //# sourceMappingURL=DSRangePickerWrapper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DSRangePickerWrapper.js","sourceRoot":"","sources":["../../../../../../../src/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSRangePickerWrapper.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 {KitDatePicker} from 'aristid-ds';\nimport {type FunctionComponent, useEffect, useRef, useState} from 'react';\nimport {Form} from 'antd';\nimport dayjs from 'dayjs';\nimport styled from 'styled-components';\nimport {type StandardValueTypes} from '../../../_types';\nimport {setDateToUTCNoon} from '_ui/_utils';\nimport {type IStandFieldValueContentProps} from './_types';\nimport {type IKitRangePicker} from 'aristid-ds/dist/Kit/DataEntry/DatePicker/types';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {EMPTY_INITIAL_VALUE_UNDEFINED} from '../../../antdUtils';\n\nconst KitDatePickerRangePickerStyled = styled(KitDatePicker.RangePicker)<{\n $shouldUsePresentationLayout: boolean;\n}>`\n ${({$shouldUsePresentationLayout}) =>\n $shouldUsePresentationLayout &&\n ` &.ant-picker.ant-picker-range {\n div:nth-child(n+3) {\n display: none;\n }\n }\n `}\n`;\n\nexport const DSRangePickerWrapper: FunctionComponent<IStandFieldValueContentProps<IKitRangePicker>> = ({\n value,\n presentationValue,\n isLastValueOfMultivalues,\n removeLastValueOfMultivalues,\n onChange,\n attribute,\n handleSubmit,\n readonly,\n calculatedFlags,\n inheritedFlags,\n}) => {\n if (!onChange) {\n throw Error('DSRangePickerWrapper should be used inside a antd Form.Item');\n }\n\n const isNewValueOfMultivalues = isLastValueOfMultivalues && value === EMPTY_INITIAL_VALUE_UNDEFINED;\n const focusedDefaultValue = attribute.multiple_values ? isNewValueOfMultivalues : false;\n\n const hasChangedRef = useRef(false);\n const [isFocused, setIsFocused] = useState(focusedDefaultValue);\n const {errors} = Form.Item.useStatus();\n const {t} = useSharedTranslation();\n\n const isErrors = errors.length > 0;\n\n // we slow down the css so that presentationValue does not flash before being hidden\n const [usePresentationLayout, setUsePresentationLayout] = useState(false);\n useEffect(() => setUsePresentationLayout(!isFocused && !isErrors), [isFocused, isErrors]);\n\n const _resetToInheritedOrCalculatedValue = async () => {\n hasChangedRef.current = false;\n\n if (inheritedFlags.isInheritedValue) {\n onChange(\n [\n dayjs.unix(Number(inheritedFlags.inheritedValue.raw_payload.from)),\n dayjs.unix(Number(inheritedFlags.inheritedValue.raw_payload.to)),\n ],\n inheritedFlags.inheritedValue.raw_payload,\n );\n } else if (calculatedFlags.isCalculatedValue) {\n onChange(\n [\n dayjs.unix(Number(calculatedFlags.calculatedValue.raw_payload.from)),\n dayjs.unix(Number(calculatedFlags.calculatedValue.raw_payload.to)),\n ],\n calculatedFlags.calculatedValue.raw_payload,\n );\n }\n await handleSubmit(null, attribute.id);\n };\n\n const _handleDateChange: (\n rangePickerDates: [from: dayjs.Dayjs, to: dayjs.Dayjs] | null,\n antOnChangeParams: [from: string, to: string] | null,\n ) => void = async (rangePickerDates, ...antOnChangeParams) => {\n hasChangedRef.current = true;\n\n if ((inheritedFlags.isInheritedValue || calculatedFlags.isCalculatedValue) && rangePickerDates === null) {\n _resetToInheritedOrCalculatedValue();\n return;\n }\n\n if (rangePickerDates) {\n rangePickerDates = [setDateToUTCNoon(rangePickerDates[0]), setDateToUTCNoon(rangePickerDates[1])];\n }\n\n onChange(rangePickerDates, ...antOnChangeParams);\n\n let datesToSave: StandardValueTypes = null;\n\n if (rangePickerDates !== null) {\n const [dateFrom, dateTo] = rangePickerDates;\n datesToSave = JSON.stringify({from: dateFrom.unix(), to: dateTo.unix()});\n }\n\n await handleSubmit(datesToSave, attribute.id);\n };\n\n const _handleOpenChange = (open: boolean) => {\n if (!open) {\n setIsFocused(false);\n\n if (!hasChangedRef.current && isNewValueOfMultivalues) {\n removeLastValueOfMultivalues();\n }\n }\n };\n\n const _handleOnFocus = () => {\n setIsFocused(true);\n };\n\n const placeholderToDisplay: IKitRangePicker['placeholder'] = isFocused\n ? [t('record_edition.placeholder.start_date'), t('record_edition.placeholder.end_date')]\n : [t('record_edition.placeholder.enter_a_period'), ''];\n\n return (\n <KitDatePickerRangePickerStyled\n id={attribute.id}\n autoFocus={isFocused}\n open={attribute.multiple_values ? isFocused : undefined}\n value={value}\n format={!isFocused && !isErrors && !!presentationValue ? () => presentationValue : undefined}\n readonly={readonly}\n allowClear={\n !!value &&\n !attribute.multiple_values &&\n !inheritedFlags.isInheritedNotOverrideValue &&\n !calculatedFlags.isCalculatedNotOverrideValue\n }\n helper={isErrors ? String(errors[0]) : undefined}\n status={isErrors ? 'error' : undefined}\n onFocus={_handleOnFocus}\n onChange={_handleDateChange}\n onOpenChange={_handleOpenChange}\n placeholder={placeholderToDisplay}\n $shouldUsePresentationLayout={usePresentationLayout}\n />\n );\n};\n"]}
1
+ {"version":3,"file":"DSRangePickerWrapper.js","sourceRoot":"","sources":["../../../../../../../src/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSRangePickerWrapper.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 {KitDatePicker} from 'aristid-ds';\nimport {type FunctionComponent, useEffect, useRef, useState} from 'react';\nimport {Form} from 'antd';\nimport dayjs from 'dayjs';\nimport styled from 'styled-components';\nimport {type StandardValueTypes} from '../../../_types';\nimport {setDateToUTCNoon} from '_ui/_utils';\nimport {type IStandFieldValueContentProps} from './_types';\nimport {type IKitRangePicker} from 'aristid-ds/dist/Kit/DataEntry/DatePicker/types';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {EMPTY_INITIAL_VALUE_UNDEFINED} from '../../../antdUtils';\n\nconst KitDatePickerRangePickerStyled = styled(KitDatePicker.RangePicker)<{\n $shouldUsePresentationLayout: boolean;\n}>`\n ${({$shouldUsePresentationLayout}) =>\n $shouldUsePresentationLayout &&\n ` &.ant-picker.ant-picker-range {\n div:nth-child(n+3) {\n display: none;\n }\n }\n `}\n`;\n\nexport const DSRangePickerWrapper: FunctionComponent<IStandFieldValueContentProps<IKitRangePicker>> = ({\n value,\n presentationValue,\n isLastValueOfMultivalues,\n removeLastValueOfMultivalues,\n onChange,\n attribute,\n handleSubmit,\n readonly,\n calculatedFlags,\n inheritedFlags,\n}) => {\n if (!onChange) {\n throw Error('DSRangePickerWrapper should be used inside a antd Form.Item');\n }\n\n const isNewValueOfMultivalues = isLastValueOfMultivalues && value === EMPTY_INITIAL_VALUE_UNDEFINED;\n const focusedDefaultValue = attribute.multiple_values ? isNewValueOfMultivalues : false;\n\n const hasChangedRef = useRef(false);\n const [isFocused, setIsFocused] = useState(focusedDefaultValue);\n const {errors} = Form.Item.useStatus();\n const {t} = useSharedTranslation();\n\n const isErrors = errors.length > 0;\n\n // we slow down the css so that presentationValue does not flash before being hidden\n const [usePresentationLayout, setUsePresentationLayout] = useState(false);\n useEffect(() => setUsePresentationLayout(!isFocused && !isErrors), [isFocused, isErrors]);\n\n // 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.\n const _resetToInheritedOrCalculatedValue = async () => {\n hasChangedRef.current = false;\n\n if (inheritedFlags.isInheritedValues) {\n onChange(\n [\n dayjs.unix(Number(inheritedFlags.inheritedValues[0].raw_payload.from)),\n dayjs.unix(Number(inheritedFlags.inheritedValues[0].raw_payload.to)),\n ],\n inheritedFlags.inheritedValues[0].raw_payload,\n );\n } else if (calculatedFlags.isCalculatedValues) {\n onChange(\n [\n dayjs.unix(Number(calculatedFlags.calculatedValues[0].raw_payload.from)),\n dayjs.unix(Number(calculatedFlags.calculatedValues[0].raw_payload.to)),\n ],\n calculatedFlags.calculatedValues[0].raw_payload,\n );\n }\n await handleSubmit(null, attribute.id);\n };\n\n const _handleDateChange: (\n rangePickerDates: [from: dayjs.Dayjs, to: dayjs.Dayjs] | null,\n antOnChangeParams: [from: string, to: string] | null,\n ) => void = async (rangePickerDates, ...antOnChangeParams) => {\n hasChangedRef.current = true;\n\n if ((inheritedFlags.isInheritedValues || calculatedFlags.isCalculatedValues) && rangePickerDates === null) {\n _resetToInheritedOrCalculatedValue();\n return;\n }\n\n if (rangePickerDates) {\n rangePickerDates = [setDateToUTCNoon(rangePickerDates[0]), setDateToUTCNoon(rangePickerDates[1])];\n }\n\n onChange(rangePickerDates, ...antOnChangeParams);\n\n let datesToSave: StandardValueTypes = null;\n\n if (rangePickerDates !== null) {\n const [dateFrom, dateTo] = rangePickerDates;\n datesToSave = JSON.stringify({from: dateFrom.unix(), to: dateTo.unix()});\n }\n\n await handleSubmit(datesToSave, attribute.id);\n };\n\n const _handleOpenChange = (open: boolean) => {\n if (!open) {\n setIsFocused(false);\n\n if (!hasChangedRef.current && isNewValueOfMultivalues) {\n removeLastValueOfMultivalues();\n }\n }\n };\n\n const _handleOnFocus = () => {\n setIsFocused(true);\n };\n\n const placeholderToDisplay: IKitRangePicker['placeholder'] = isFocused\n ? [t('record_edition.placeholder.start_date'), t('record_edition.placeholder.end_date')]\n : [t('record_edition.placeholder.enter_a_period'), ''];\n\n return (\n <KitDatePickerRangePickerStyled\n id={attribute.id}\n autoFocus={isFocused}\n open={attribute.multiple_values ? isFocused : undefined}\n value={value}\n format={!isFocused && !isErrors && !!presentationValue ? () => presentationValue : undefined}\n readonly={readonly}\n allowClear={\n !!value &&\n !attribute.multiple_values &&\n !inheritedFlags.isInheritedNotOverrideValues &&\n !calculatedFlags.isCalculatedNotOverrideValues\n }\n helper={isErrors ? String(errors[0]) : undefined}\n status={isErrors ? 'error' : undefined}\n onFocus={_handleOnFocus}\n onChange={_handleDateChange}\n onOpenChange={_handleOpenChange}\n placeholder={placeholderToDisplay}\n $shouldUsePresentationLayout={usePresentationLayout}\n />\n );\n};\n"]}
@@ -7,7 +7,15 @@ import { Form } from 'antd';
7
7
  import { KitRichText } from 'aristid-ds';
8
8
  import { useSharedTranslation } from '../../../../../../hooks/useSharedTranslation';
9
9
  import { EMPTY_INITIAL_VALUE_STRING } from '../../../antdUtils';
10
- const isEmptyValue = value => !value || value === '<p></p>';
10
+ const LEADING_EMPTY_P_TAG = /^<p>(\s|&nbsp;)*<\/p>/;
11
+ const TRAILING_EMPTY_P_TAG = /(<p>(\s|&nbsp;)*<\/p>)+$/;
12
+ const cleanRichTextValue = (value) => {
13
+ if (!value) {
14
+ return null;
15
+ }
16
+ const cleanedValue = value.replace(LEADING_EMPTY_P_TAG, '').replace(TRAILING_EMPTY_P_TAG, '').trim();
17
+ return cleanedValue === '' ? null : cleanedValue;
18
+ };
11
19
  export const DSRichTextWrapper = ({ value, presentationValue, isLastValueOfMultivalues, removeLastValueOfMultivalues, onChange, attribute, readonly, handleSubmit, calculatedFlags, inheritedFlags, }) => {
12
20
  if (!onChange) {
13
21
  throw Error('DSRichTextWrapper should be used inside a antd Form.Item');
@@ -20,13 +28,14 @@ export const DSRichTextWrapper = ({ value, presentationValue, isLastValueOfMulti
20
28
  const { t } = useSharedTranslation();
21
29
  const isErrors = errors.length > 0;
22
30
  const valueToDisplay = isFocused || isErrors || !presentationValue ? value : presentationValue;
31
+ // 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.
23
32
  const _resetToInheritedOrCalculatedValue = async () => {
24
33
  setHasChanged(false);
25
- if (inheritedFlags.isInheritedValue) {
26
- onChange(inheritedFlags.inheritedValue.raw_payload);
34
+ if (inheritedFlags.isInheritedValues) {
35
+ onChange(inheritedFlags.inheritedValues[0].raw_payload);
27
36
  }
28
- else if (calculatedFlags.isCalculatedValue) {
29
- onChange(calculatedFlags.calculatedValue.raw_payload);
37
+ else if (calculatedFlags.isCalculatedValues) {
38
+ onChange(calculatedFlags.calculatedValues[0].raw_payload);
30
39
  }
31
40
  await handleSubmit(null, attribute.id);
32
41
  };
@@ -35,7 +44,7 @@ export const DSRichTextWrapper = ({ value, presentationValue, isLastValueOfMulti
35
44
  };
36
45
  const _handleOnBlur = async (inputValue) => {
37
46
  setHasChanged(false);
38
- const valueToSubmit = isEmptyValue(inputValue) ? null : inputValue;
47
+ const valueToSubmit = cleanRichTextValue(inputValue);
39
48
  if (!hasChanged) {
40
49
  onChange(valueToSubmit);
41
50
  setIsFocused(false);
@@ -44,7 +53,7 @@ export const DSRichTextWrapper = ({ value, presentationValue, isLastValueOfMulti
44
53
  }
45
54
  return;
46
55
  }
47
- if (valueToSubmit === null && (inheritedFlags.isInheritedValue || calculatedFlags.isCalculatedValue)) {
56
+ if (valueToSubmit === null && (inheritedFlags.isInheritedValues || calculatedFlags.isCalculatedValues)) {
48
57
  _resetToInheritedOrCalculatedValue();
49
58
  return;
50
59
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DSRichTextWrapper.js","sourceRoot":"","sources":["../../../../../../../src/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSRichTextWrapper.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {type FunctionComponent, useState} from 'react';\nimport {Form} from 'antd';\nimport {KitRichText} from 'aristid-ds';\nimport {type IStandFieldValueContentProps} from './_types';\nimport {type KitRichTextProps} from 'aristid-ds/dist/Kit/DataEntry/RichText/types';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {EMPTY_INITIAL_VALUE_STRING} from '../../../antdUtils';\n\nconst isEmptyValue = value => !value || value === '<p></p>';\n\nexport const DSRichTextWrapper: FunctionComponent<IStandFieldValueContentProps<KitRichTextProps>> = ({\n value,\n presentationValue,\n isLastValueOfMultivalues,\n removeLastValueOfMultivalues,\n onChange,\n attribute,\n readonly,\n handleSubmit,\n calculatedFlags,\n inheritedFlags,\n}) => {\n if (!onChange) {\n throw Error('DSRichTextWrapper should be used inside a antd Form.Item');\n }\n\n const isNewValueOfMultivalues = isLastValueOfMultivalues && value === EMPTY_INITIAL_VALUE_STRING;\n const focusedDefaultValue = attribute.multiple_values ? isNewValueOfMultivalues : false;\n\n const [hasChanged, setHasChanged] = useState(false);\n const [isFocused, setIsFocused] = useState(focusedDefaultValue);\n const {errors} = Form.Item.useStatus();\n const {t} = useSharedTranslation();\n\n const isErrors = errors.length > 0;\n const valueToDisplay = isFocused || isErrors || !presentationValue ? value : presentationValue;\n\n const _resetToInheritedOrCalculatedValue = async () => {\n setHasChanged(false);\n if (inheritedFlags.isInheritedValue) {\n onChange(inheritedFlags.inheritedValue.raw_payload);\n } else if (calculatedFlags.isCalculatedValue) {\n onChange(calculatedFlags.calculatedValue.raw_payload);\n }\n await handleSubmit(null, attribute.id);\n };\n\n const _handleFocus = () => {\n setIsFocused(true);\n };\n\n const _handleOnBlur = async inputValue => {\n setHasChanged(false);\n const valueToSubmit = isEmptyValue(inputValue) ? null : inputValue;\n if (!hasChanged) {\n onChange(valueToSubmit);\n setIsFocused(false);\n\n if (isNewValueOfMultivalues) {\n removeLastValueOfMultivalues();\n }\n return;\n }\n\n if (valueToSubmit === null && (inheritedFlags.isInheritedValue || calculatedFlags.isCalculatedValue)) {\n _resetToInheritedOrCalculatedValue();\n return;\n }\n\n onChange(valueToSubmit);\n await handleSubmit(valueToSubmit, attribute.id);\n setIsFocused(false);\n };\n\n const _handleOnChange = inputValue => {\n setHasChanged(true);\n onChange(inputValue);\n };\n\n return (\n <KitRichText\n id={attribute.id}\n autoFocus={isFocused}\n helper={isErrors ? String(errors[0]) : undefined}\n status={isErrors ? 'error' : undefined}\n value={valueToDisplay}\n readonly={readonly}\n onChange={_handleOnChange}\n onFocus={_handleFocus}\n onBlur={_handleOnBlur}\n placeholder={t('record_edition.placeholder.enter_a_text')}\n maxLength={attribute.character_limit ?? undefined}\n showCount\n />\n );\n};\n"]}
1
+ {"version":3,"file":"DSRichTextWrapper.js","sourceRoot":"","sources":["../../../../../../../src/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSRichTextWrapper.tsx"],"names":[],"mappings":";AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAyB,QAAQ,EAAC,MAAM,OAAO,CAAC;AACvD,OAAO,EAAC,IAAI,EAAC,MAAM,MAAM,CAAC;AAC1B,OAAO,EAAC,WAAW,EAAC,MAAM,YAAY,CAAC;AAGvC,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAC,0BAA0B,EAAC,MAAM,oBAAoB,CAAC;AAE9D,MAAM,mBAAmB,GAAG,uBAAuB,CAAC;AACpD,MAAM,oBAAoB,GAAG,0BAA0B,CAAC;AAExD,MAAM,kBAAkB,GAAG,CAAC,KAAa,EAAE,EAAE;IACzC,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAErG,OAAO,YAAY,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC;AACrD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAsE,CAAC,EACjG,KAAK,EACL,iBAAiB,EACjB,wBAAwB,EACxB,4BAA4B,EAC5B,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,cAAc,GACjB,EAAE,EAAE;IACD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,MAAM,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC5E,CAAC;IAED,MAAM,uBAAuB,GAAG,wBAAwB,IAAI,KAAK,KAAK,0BAA0B,CAAC;IACjG,MAAM,mBAAmB,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,KAAK,CAAC;IAExF,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IAChE,MAAM,EAAC,MAAM,EAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IACvC,MAAM,EAAC,CAAC,EAAC,GAAG,oBAAoB,EAAE,CAAC;IAEnC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IACnC,MAAM,cAAc,GAAG,SAAS,IAAI,QAAQ,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC;IAE/F,0KAA0K;IAC1K,MAAM,kCAAkC,GAAG,KAAK,IAAI,EAAE;QAClD,aAAa,CAAC,KAAK,CAAC,CAAC;QACrB,IAAI,cAAc,CAAC,iBAAiB,EAAE,CAAC;YACnC,QAAQ,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QAC5D,CAAC;aAAM,IAAI,eAAe,CAAC,kBAAkB,EAAE,CAAC;YAC5C,QAAQ,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QAC9D,CAAC;QACD,MAAM,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;IAC3C,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,GAAG,EAAE;QACtB,YAAY,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,KAAK,EAAE,UAAkB,EAAE,EAAE;QAC/C,aAAa,CAAC,KAAK,CAAC,CAAC;QACrB,MAAM,aAAa,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;QACrD,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,QAAQ,CAAC,aAAa,CAAC,CAAC;YACxB,YAAY,CAAC,KAAK,CAAC,CAAC;YAEpB,IAAI,uBAAuB,EAAE,CAAC;gBAC1B,4BAA4B,EAAE,CAAC;YACnC,CAAC;YACD,OAAO;QACX,CAAC;QAED,IAAI,aAAa,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC,iBAAiB,IAAI,eAAe,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACrG,kCAAkC,EAAE,CAAC;YACrC,OAAO;QACX,CAAC;QAED,QAAQ,CAAC,aAAa,CAAC,CAAC;QACxB,MAAM,YAAY,CAAC,aAAa,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;QAChD,YAAY,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,UAAU,CAAC,EAAE;QACjC,aAAa,CAAC,IAAI,CAAC,CAAC;QACpB,QAAQ,CAAC,UAAU,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF,OAAO,CACH,KAAC,WAAW,IACR,EAAE,EAAE,SAAS,CAAC,EAAE,EAChB,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAChD,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EACtC,KAAK,EAAE,cAAc,EACrB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,CAAC,CAAC,yCAAyC,CAAC,EACzD,SAAS,EAAE,SAAS,CAAC,eAAe,IAAI,SAAS,EACjD,SAAS,SACX,CACL,CAAC;AACN,CAAC,CAAC","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {type FunctionComponent, useState} from 'react';\nimport {Form} from 'antd';\nimport {KitRichText} from 'aristid-ds';\nimport {type IStandFieldValueContentProps} from './_types';\nimport {type KitRichTextProps} from 'aristid-ds/dist/Kit/DataEntry/RichText/types';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {EMPTY_INITIAL_VALUE_STRING} from '../../../antdUtils';\n\nconst LEADING_EMPTY_P_TAG = /^<p>(\\s|&nbsp;)*<\\/p>/;\nconst TRAILING_EMPTY_P_TAG = /(<p>(\\s|&nbsp;)*<\\/p>)+$/;\n\nconst cleanRichTextValue = (value: string) => {\n if (!value) {\n return null;\n }\n const cleanedValue = value.replace(LEADING_EMPTY_P_TAG, '').replace(TRAILING_EMPTY_P_TAG, '').trim();\n\n return cleanedValue === '' ? null : cleanedValue;\n};\n\nexport const DSRichTextWrapper: FunctionComponent<IStandFieldValueContentProps<KitRichTextProps>> = ({\n value,\n presentationValue,\n isLastValueOfMultivalues,\n removeLastValueOfMultivalues,\n onChange,\n attribute,\n readonly,\n handleSubmit,\n calculatedFlags,\n inheritedFlags,\n}) => {\n if (!onChange) {\n throw Error('DSRichTextWrapper should be used inside a antd Form.Item');\n }\n\n const isNewValueOfMultivalues = isLastValueOfMultivalues && value === EMPTY_INITIAL_VALUE_STRING;\n const focusedDefaultValue = attribute.multiple_values ? isNewValueOfMultivalues : false;\n\n const [hasChanged, setHasChanged] = useState(false);\n const [isFocused, setIsFocused] = useState(focusedDefaultValue);\n const {errors} = Form.Item.useStatus();\n const {t} = useSharedTranslation();\n\n const isErrors = errors.length > 0;\n const valueToDisplay = isFocused || isErrors || !presentationValue ? value : presentationValue;\n\n // 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.\n const _resetToInheritedOrCalculatedValue = async () => {\n setHasChanged(false);\n if (inheritedFlags.isInheritedValues) {\n onChange(inheritedFlags.inheritedValues[0].raw_payload);\n } else if (calculatedFlags.isCalculatedValues) {\n onChange(calculatedFlags.calculatedValues[0].raw_payload);\n }\n await handleSubmit(null, attribute.id);\n };\n\n const _handleFocus = () => {\n setIsFocused(true);\n };\n\n const _handleOnBlur = async (inputValue: string) => {\n setHasChanged(false);\n const valueToSubmit = cleanRichTextValue(inputValue);\n if (!hasChanged) {\n onChange(valueToSubmit);\n setIsFocused(false);\n\n if (isNewValueOfMultivalues) {\n removeLastValueOfMultivalues();\n }\n return;\n }\n\n if (valueToSubmit === null && (inheritedFlags.isInheritedValues || calculatedFlags.isCalculatedValues)) {\n _resetToInheritedOrCalculatedValue();\n return;\n }\n\n onChange(valueToSubmit);\n await handleSubmit(valueToSubmit, attribute.id);\n setIsFocused(false);\n };\n\n const _handleOnChange = inputValue => {\n setHasChanged(true);\n onChange(inputValue);\n };\n\n return (\n <KitRichText\n id={attribute.id}\n autoFocus={isFocused}\n helper={isErrors ? String(errors[0]) : undefined}\n status={isErrors ? 'error' : undefined}\n value={valueToDisplay}\n readonly={readonly}\n onChange={_handleOnChange}\n onFocus={_handleFocus}\n onBlur={_handleOnBlur}\n placeholder={t('record_edition.placeholder.enter_a_text')}\n maxLength={attribute.character_limit ?? undefined}\n showCount\n />\n );\n};\n"]}
@@ -80,20 +80,21 @@ export const DSListSelect = ({ value, presentationValue, isLastValueOfMultivalue
80
80
  });
81
81
  }
82
82
  const searchResultsCount = useMemo(() => options.filter(option => option.label.toLowerCase().includes(searchedString.toLowerCase())).length, [searchedString]);
83
+ // 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.
83
84
  const _resetToInheritedOrCalculatedValue = async () => {
84
85
  setHasChanged(false);
85
- if (inheritedFlags.isInheritedValue) {
86
- setTimeout(() => onChange(inheritedFlags.inheritedValue.raw_value, options), 0);
86
+ if (inheritedFlags.isInheritedValues) {
87
+ setTimeout(() => onChange(inheritedFlags.inheritedValues[0].raw_value, options), 0);
87
88
  }
88
- else if (calculatedFlags.isCalculatedValue) {
89
- setTimeout(() => onChange(calculatedFlags.calculatedValue.raw_value, options), 0);
89
+ else if (calculatedFlags.isCalculatedValues) {
90
+ setTimeout(() => onChange(calculatedFlags.calculatedValues[0].raw_value, options), 0);
90
91
  }
91
92
  await handleSubmit(null, attribute.id);
92
93
  };
93
94
  const _handleOnChange = async (selectedValue) => {
94
95
  setHasChanged(true);
95
96
  setSearchedString('');
96
- if ((inheritedFlags.isInheritedValue || calculatedFlags.isCalculatedValue) && selectedValue === '') {
97
+ if ((inheritedFlags.isInheritedValues || calculatedFlags.isCalculatedValues) && selectedValue === '') {
97
98
  _resetToInheritedOrCalculatedValue();
98
99
  return;
99
100
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DSListSelect.js","sourceRoot":"","sources":["../../../../../../../../src/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/ValuesList/DSListSelect.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {type FunctionComponent, useMemo, useState} from 'react';\nimport {KitSelect, KitTypography} from 'aristid-ds';\nimport useSharedTranslation from '_ui/hooks/useSharedTranslation/useSharedTranslation';\nimport {AttributeFormat, useSaveAttributeMutation} from '_ui/_gqlTypes';\nimport {Form} from 'antd';\nimport {stringifyDateRangeValue} from '_ui/_utils';\nimport {type IDateRangeValuesListConf, type IStringValuesListConf} from './_types';\nimport {EditRecordReducerActionsTypes} from '_ui/components/RecordEdition/editRecordReducer/editRecordReducer';\nimport {useEditRecordReducer} from '_ui/components/RecordEdition/editRecordReducer/useEditRecordReducer';\nimport {type IStandFieldValueContentProps} from '../_types';\nimport {type IKitSelect} from 'aristid-ds/dist/Kit/DataEntry/Select/types';\nimport {EMPTY_INITIAL_VALUE_STRING} from '_ui/components/RecordEdition/EditRecordContent/antdUtils';\nimport dayjs from 'dayjs';\n\ninterface IOption {\n label: string;\n value: string;\n}\n\nconst isNewOption = (value: string, options: IOption[]): boolean =>\n value !== '' && !options.find(option => option.value === value);\n\nconst addOption = (options: IOption[], optionToAdd: IOption) => {\n const newOptions = options;\n if (optionToAdd.value && isNewOption(optionToAdd.value, options)) {\n newOptions.unshift({\n value: optionToAdd.value,\n label: optionToAdd.label,\n });\n }\n return newOptions;\n};\n\nexport const DSListSelect: FunctionComponent<IStandFieldValueContentProps<IKitSelect>> = ({\n value,\n presentationValue,\n isLastValueOfMultivalues,\n removeLastValueOfMultivalues,\n onChange,\n attribute,\n readonly,\n handleSubmit,\n inheritedFlags,\n calculatedFlags,\n}) => {\n if (!onChange) {\n throw Error('DSListSelect should be used inside a antd Form.Item');\n }\n\n if (!attribute.values_list || attribute.values_list.enable === false) {\n throw Error('DSListSelect should have a values list');\n }\n\n const isNewValueOfMultivalues = isLastValueOfMultivalues && value === EMPTY_INITIAL_VALUE_STRING;\n const focusedDefaultValue = attribute.multiple_values ? isNewValueOfMultivalues : false;\n\n const {t} = useSharedTranslation();\n const form = Form.useFormInstance();\n const {errors} = Form.Item.useStatus();\n const [hasChanged, setHasChanged] = useState(false);\n const [isFocused, setIsFocused] = useState(focusedDefaultValue);\n const [searchedString, setSearchedString] = useState('');\n const [saveAttribute] = useSaveAttributeMutation();\n const {dispatch: editRecordDispatch} = useEditRecordReducer();\n\n const allowFreeEntry = attribute.values_list.allowFreeEntry;\n const allowListUpdate = attribute.values_list.allowListUpdate;\n\n const _getFilteredValuesList = () => {\n let values = [];\n\n if (attribute.format === AttributeFormat.date_range) {\n const valuesList = (attribute.values_list as IDateRangeValuesListConf).dateRangeValues ?? [];\n\n values = valuesList.map(v => {\n const rangeValue = {\n from: dayjs.unix(Number(v.from)).format('DD-MM-YYYY'),\n to: dayjs.unix(Number(v.to)).format('DD-MM-YYYY'),\n };\n return {\n value: stringifyDateRangeValue(rangeValue, t),\n label: {from: v.from, to: v.to},\n };\n });\n } else {\n const valuesList = (attribute.values_list as IStringValuesListConf)?.values ?? [];\n\n values = valuesList.map(v => ({value: v, label: v}));\n }\n\n return values;\n };\n\n const initialOptions = _getFilteredValuesList();\n let options = [...initialOptions];\n if (attribute.multiple_values) {\n const currentValues = form.getFieldValue(attribute.id);\n options = options.filter(option => !currentValues.includes(option.value));\n }\n\n if (allowFreeEntry) {\n if (!attribute.multiple_values) {\n options = addOption(options, {value, label: value});\n }\n options = addOption(options, {\n value: searchedString,\n label:\n (allowListUpdate ? t('record_edition.create_and_select_option') : t('record_edition.select_option')) +\n searchedString,\n });\n }\n\n const searchResultsCount = useMemo(\n () => options.filter(option => option.label.toLowerCase().includes(searchedString.toLowerCase())).length,\n [searchedString],\n );\n\n const _resetToInheritedOrCalculatedValue = async () => {\n setHasChanged(false);\n if (inheritedFlags.isInheritedValue) {\n setTimeout(() => onChange(inheritedFlags.inheritedValue.raw_value, options), 0);\n } else if (calculatedFlags.isCalculatedValue) {\n setTimeout(() => onChange(calculatedFlags.calculatedValue.raw_value, options), 0);\n }\n await handleSubmit(null, attribute.id);\n };\n\n const _handleOnChange = async (selectedValue: string) => {\n setHasChanged(true);\n setSearchedString('');\n if ((inheritedFlags.isInheritedValue || calculatedFlags.isCalculatedValue) && selectedValue === '') {\n _resetToInheritedOrCalculatedValue();\n return;\n }\n\n if (allowListUpdate && isNewOption(selectedValue, initialOptions) && 'values' in attribute.values_list) {\n await saveAttribute({\n variables: {\n attribute: {\n id: attribute.id,\n values_list: {\n enable: true,\n allowFreeEntry: true,\n allowListUpdate: true,\n values: [...attribute.values_list.values, selectedValue],\n },\n },\n },\n });\n editRecordDispatch({type: EditRecordReducerActionsTypes.REQUEST_REFRESH});\n }\n\n await handleSubmit(selectedValue, attribute.id);\n onChange(selectedValue, options);\n };\n\n const _handleOnClear = async () => {\n await _handleOnChange('');\n };\n\n const _handleOnSearch = async (search: string) => {\n setSearchedString(search);\n if (search) {\n setIsFocused(true);\n }\n };\n\n const _handleDropdownVisibleChange = (visible: boolean) => {\n setIsFocused(visible);\n\n if (!hasChanged && isNewValueOfMultivalues) {\n removeLastValueOfMultivalues();\n }\n };\n\n const valueToDisplay = isFocused ? value : presentationValue;\n const isValueEmpty = value === '';\n\n return (\n <KitSelect\n id={attribute.id}\n data-testid={attribute.id}\n autoFocus={isFocused}\n open={isFocused}\n value={isValueEmpty ? undefined : valueToDisplay}\n allowClear={!!value && !attribute.multiple_values}\n disabled={readonly}\n options={options}\n status={errors.length > 0 && 'error'}\n showSearch\n onDropdownVisibleChange={_handleDropdownVisibleChange}\n onSelect={_handleOnChange}\n onChange={onChange}\n onClear={_handleOnClear}\n onSearch={_handleOnSearch}\n placeholder={t('record_edition.placeholder.select_an_option')}\n dropdownRender={menu => (\n <>\n {searchedString !== '' && searchResultsCount > 0 && (\n <div style={{paddingBottom: 'calc(var(--general-spacing-xs) * 1px)'}}>\n <KitTypography.Text size=\"fontSize7\">\n {t('record_edition.press_enter_to')}\n </KitTypography.Text>\n <KitTypography.Text size=\"fontSize7\" weight=\"medium\">\n {t('record_edition.select_this_value')}\n </KitTypography.Text>\n </div>\n )}\n {menu}\n </>\n )}\n notFoundContent={\n <div style={{textAlign: 'center'}}>\n <KitTypography.Text size=\"fontSize5\" weight=\"medium\">\n {t('record_edition.search_not_found')}\n </KitTypography.Text>\n </div>\n }\n />\n );\n};\n"]}
1
+ {"version":3,"file":"DSListSelect.js","sourceRoot":"","sources":["../../../../../../../../src/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/ValuesList/DSListSelect.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {type FunctionComponent, useMemo, useState} from 'react';\nimport {KitSelect, KitTypography} from 'aristid-ds';\nimport useSharedTranslation from '_ui/hooks/useSharedTranslation/useSharedTranslation';\nimport {AttributeFormat, useSaveAttributeMutation} from '_ui/_gqlTypes';\nimport {Form} from 'antd';\nimport {stringifyDateRangeValue} from '_ui/_utils';\nimport {type IDateRangeValuesListConf, type IStringValuesListConf} from './_types';\nimport {EditRecordReducerActionsTypes} from '_ui/components/RecordEdition/editRecordReducer/editRecordReducer';\nimport {useEditRecordReducer} from '_ui/components/RecordEdition/editRecordReducer/useEditRecordReducer';\nimport {type IStandFieldValueContentProps} from '../_types';\nimport {type IKitSelect} from 'aristid-ds/dist/Kit/DataEntry/Select/types';\nimport {EMPTY_INITIAL_VALUE_STRING} from '_ui/components/RecordEdition/EditRecordContent/antdUtils';\nimport dayjs from 'dayjs';\n\ninterface IOption {\n label: string;\n value: string;\n}\n\nconst isNewOption = (value: string, options: IOption[]): boolean =>\n value !== '' && !options.find(option => option.value === value);\n\nconst addOption = (options: IOption[], optionToAdd: IOption) => {\n const newOptions = options;\n if (optionToAdd.value && isNewOption(optionToAdd.value, options)) {\n newOptions.unshift({\n value: optionToAdd.value,\n label: optionToAdd.label,\n });\n }\n return newOptions;\n};\n\nexport const DSListSelect: FunctionComponent<IStandFieldValueContentProps<IKitSelect>> = ({\n value,\n presentationValue,\n isLastValueOfMultivalues,\n removeLastValueOfMultivalues,\n onChange,\n attribute,\n readonly,\n handleSubmit,\n inheritedFlags,\n calculatedFlags,\n}) => {\n if (!onChange) {\n throw Error('DSListSelect should be used inside a antd Form.Item');\n }\n\n if (!attribute.values_list || attribute.values_list.enable === false) {\n throw Error('DSListSelect should have a values list');\n }\n\n const isNewValueOfMultivalues = isLastValueOfMultivalues && value === EMPTY_INITIAL_VALUE_STRING;\n const focusedDefaultValue = attribute.multiple_values ? isNewValueOfMultivalues : false;\n\n const {t} = useSharedTranslation();\n const form = Form.useFormInstance();\n const {errors} = Form.Item.useStatus();\n const [hasChanged, setHasChanged] = useState(false);\n const [isFocused, setIsFocused] = useState(focusedDefaultValue);\n const [searchedString, setSearchedString] = useState('');\n const [saveAttribute] = useSaveAttributeMutation();\n const {dispatch: editRecordDispatch} = useEditRecordReducer();\n\n const allowFreeEntry = attribute.values_list.allowFreeEntry;\n const allowListUpdate = attribute.values_list.allowListUpdate;\n\n const _getFilteredValuesList = () => {\n let values = [];\n\n if (attribute.format === AttributeFormat.date_range) {\n const valuesList = (attribute.values_list as IDateRangeValuesListConf).dateRangeValues ?? [];\n\n values = valuesList.map(v => {\n const rangeValue = {\n from: dayjs.unix(Number(v.from)).format('DD-MM-YYYY'),\n to: dayjs.unix(Number(v.to)).format('DD-MM-YYYY'),\n };\n return {\n value: stringifyDateRangeValue(rangeValue, t),\n label: {from: v.from, to: v.to},\n };\n });\n } else {\n const valuesList = (attribute.values_list as IStringValuesListConf)?.values ?? [];\n\n values = valuesList.map(v => ({value: v, label: v}));\n }\n\n return values;\n };\n\n const initialOptions = _getFilteredValuesList();\n let options = [...initialOptions];\n if (attribute.multiple_values) {\n const currentValues = form.getFieldValue(attribute.id);\n options = options.filter(option => !currentValues.includes(option.value));\n }\n\n if (allowFreeEntry) {\n if (!attribute.multiple_values) {\n options = addOption(options, {value, label: value});\n }\n options = addOption(options, {\n value: searchedString,\n label:\n (allowListUpdate ? t('record_edition.create_and_select_option') : t('record_edition.select_option')) +\n searchedString,\n });\n }\n\n const searchResultsCount = useMemo(\n () => options.filter(option => option.label.toLowerCase().includes(searchedString.toLowerCase())).length,\n [searchedString],\n );\n\n // 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.\n const _resetToInheritedOrCalculatedValue = async () => {\n setHasChanged(false);\n if (inheritedFlags.isInheritedValues) {\n setTimeout(() => onChange(inheritedFlags.inheritedValues[0].raw_value, options), 0);\n } else if (calculatedFlags.isCalculatedValues) {\n setTimeout(() => onChange(calculatedFlags.calculatedValues[0].raw_value, options), 0);\n }\n await handleSubmit(null, attribute.id);\n };\n\n const _handleOnChange = async (selectedValue: string) => {\n setHasChanged(true);\n setSearchedString('');\n if ((inheritedFlags.isInheritedValues || calculatedFlags.isCalculatedValues) && selectedValue === '') {\n _resetToInheritedOrCalculatedValue();\n return;\n }\n\n if (allowListUpdate && isNewOption(selectedValue, initialOptions) && 'values' in attribute.values_list) {\n await saveAttribute({\n variables: {\n attribute: {\n id: attribute.id,\n values_list: {\n enable: true,\n allowFreeEntry: true,\n allowListUpdate: true,\n values: [...attribute.values_list.values, selectedValue],\n },\n },\n },\n });\n editRecordDispatch({type: EditRecordReducerActionsTypes.REQUEST_REFRESH});\n }\n\n await handleSubmit(selectedValue, attribute.id);\n onChange(selectedValue, options);\n };\n\n const _handleOnClear = async () => {\n await _handleOnChange('');\n };\n\n const _handleOnSearch = async (search: string) => {\n setSearchedString(search);\n if (search) {\n setIsFocused(true);\n }\n };\n\n const _handleDropdownVisibleChange = (visible: boolean) => {\n setIsFocused(visible);\n\n if (!hasChanged && isNewValueOfMultivalues) {\n removeLastValueOfMultivalues();\n }\n };\n\n const valueToDisplay = isFocused ? value : presentationValue;\n const isValueEmpty = value === '';\n\n return (\n <KitSelect\n id={attribute.id}\n data-testid={attribute.id}\n autoFocus={isFocused}\n open={isFocused}\n value={isValueEmpty ? undefined : valueToDisplay}\n allowClear={!!value && !attribute.multiple_values}\n disabled={readonly}\n options={options}\n status={errors.length > 0 && 'error'}\n showSearch\n onDropdownVisibleChange={_handleDropdownVisibleChange}\n onSelect={_handleOnChange}\n onChange={onChange}\n onClear={_handleOnClear}\n onSearch={_handleOnSearch}\n placeholder={t('record_edition.placeholder.select_an_option')}\n dropdownRender={menu => (\n <>\n {searchedString !== '' && searchResultsCount > 0 && (\n <div style={{paddingBottom: 'calc(var(--general-spacing-xs) * 1px)'}}>\n <KitTypography.Text size=\"fontSize7\">\n {t('record_edition.press_enter_to')}\n </KitTypography.Text>\n <KitTypography.Text size=\"fontSize7\" weight=\"medium\">\n {t('record_edition.select_this_value')}\n </KitTypography.Text>\n </div>\n )}\n {menu}\n </>\n )}\n notFoundContent={\n <div style={{textAlign: 'center'}}>\n <KitTypography.Text size=\"fontSize5\" weight=\"medium\">\n {t('record_edition.search_not_found')}\n </KitTypography.Text>\n </div>\n }\n />\n );\n};\n"]}
@@ -3,10 +3,10 @@ import { type RecordFormElementsValueStandardValue } from '../../../../../hooks/
3
3
  interface IUseGetPresentationValues {
4
4
  presentationValues: string[];
5
5
  }
6
- export declare const useGetPresentationValues: ({ values, format, calculatedValue, inheritedValue, }: {
6
+ export declare const useGetPresentationValues: ({ values, format, calculatedValues, inheritedValues, }: {
7
7
  values: ValueDetailsValueFragment[];
8
8
  format: AttributeFormat;
9
- calculatedValue: RecordFormElementsValueStandardValue;
10
- inheritedValue: RecordFormElementsValueStandardValue;
9
+ calculatedValues: RecordFormElementsValueStandardValue[];
10
+ inheritedValues: RecordFormElementsValueStandardValue[];
11
11
  }) => IUseGetPresentationValues;
12
12
  export {};
@@ -4,11 +4,17 @@
4
4
  import { AttributeFormat } from '../../../../../_gqlTypes';
5
5
  import { useSharedTranslation } from '../../../../../hooks/useSharedTranslation';
6
6
  const _isDateRangeValue = (value) => !!value && typeof value === 'object' && 'from' in value && 'to' in value;
7
- export const useGetPresentationValues = ({ values, format, calculatedValue, inheritedValue, }) => {
7
+ export const useGetPresentationValues = ({ values, format, calculatedValues, inheritedValues, }) => {
8
8
  const { t } = useSharedTranslation();
9
- const mappedValues = values.length > 0 ? values : [{}];
10
- const presentationValues = mappedValues.map(value => {
11
- let presentationValue = value.payload || calculatedValue?.payload || inheritedValue?.payload || '';
9
+ const effectiveValues = values?.length > 0
10
+ ? values
11
+ : calculatedValues?.length > 0
12
+ ? calculatedValues
13
+ : inheritedValues?.length > 0
14
+ ? inheritedValues
15
+ : [];
16
+ const presentationValues = effectiveValues.map(value => {
17
+ let presentationValue = value.payload || '';
12
18
  switch (format) {
13
19
  case AttributeFormat.date_range:
14
20
  if (_isDateRangeValue(presentationValue)) {
@@ -1 +1 @@
1
- {"version":3,"file":"useGetPresentationValues.js","sourceRoot":"","sources":["../../../../../../src/components/RecordEdition/EditRecordContent/uiElements/StandardField/useGetPresentationValues.tsx"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAC,eAAe,EAAiC,MAAM,eAAe,CAAC;AAE9E,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AAEpE,MAAM,iBAAiB,GAAG,CAAC,KAAU,EAAuC,EAAE,CAC1E,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC;AAM7E,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,EACrC,MAAM,EACN,MAAM,EACN,eAAe,EACf,cAAc,GAMjB,EAA6B,EAAE;IAC5B,MAAM,EAAC,CAAC,EAAC,GAAG,oBAAoB,EAAE,CAAC;IAEnC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAEvD,MAAM,kBAAkB,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;QAChD,IAAI,iBAAiB,GAAG,KAAK,CAAC,OAAO,IAAI,eAAe,EAAE,OAAO,IAAI,cAAc,EAAE,OAAO,IAAI,EAAE,CAAC;QAEnG,QAAQ,MAAM,EAAE,CAAC;YACb,KAAK,eAAe,CAAC,UAAU;gBAC3B,IAAI,iBAAiB,CAAC,iBAAiB,CAAC,EAAE,CAAC;oBACvC,MAAM,EAAC,IAAI,EAAE,EAAE,EAAC,GAAG,iBAAiB,CAAC;oBACrC,iBAAiB,GAAG,CAAC,CAAC,iCAAiC,EAAE;wBACrD,IAAI;wBACJ,EAAE;wBACF,aAAa,EAAE;4BACX,WAAW,EAAE,KAAK;yBACrB;qBACJ,CAAC,CAAC;gBACP,CAAC;qBAAM,CAAC;oBACJ,iBAAiB,GAAG,EAAE,CAAC;gBAC3B,CAAC;gBACD,MAAM;QACd,CAAC;QAED,OAAO,iBAAiB,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,OAAO,EAAC,kBAAkB,EAAC,CAAC;AAChC,CAAC,CAAC","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {AttributeFormat, type ValueDetailsValueFragment} from '_ui/_gqlTypes';\nimport {type RecordFormElementsValueStandardValue} from '_ui/hooks/useGetRecordForm';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\n\nconst _isDateRangeValue = (value: any): value is {from: string; to: string} =>\n !!value && typeof value === 'object' && 'from' in value && 'to' in value;\n\ninterface IUseGetPresentationValues {\n presentationValues: string[];\n}\n\nexport const useGetPresentationValues = ({\n values,\n format,\n calculatedValue,\n inheritedValue,\n}: {\n values: ValueDetailsValueFragment[];\n format: AttributeFormat;\n calculatedValue: RecordFormElementsValueStandardValue;\n inheritedValue: RecordFormElementsValueStandardValue;\n}): IUseGetPresentationValues => {\n const {t} = useSharedTranslation();\n\n const mappedValues = values.length > 0 ? values : [{}];\n\n const presentationValues = mappedValues.map(value => {\n let presentationValue = value.payload || calculatedValue?.payload || inheritedValue?.payload || '';\n\n switch (format) {\n case AttributeFormat.date_range:\n if (_isDateRangeValue(presentationValue)) {\n const {from, to} = presentationValue;\n presentationValue = t('record_edition.date_range_value', {\n from,\n to,\n interpolation: {\n escapeValue: false,\n },\n });\n } else {\n presentationValue = '';\n }\n break;\n }\n\n return presentationValue;\n });\n\n return {presentationValues};\n};\n"]}
1
+ {"version":3,"file":"useGetPresentationValues.js","sourceRoot":"","sources":["../../../../../../src/components/RecordEdition/EditRecordContent/uiElements/StandardField/useGetPresentationValues.tsx"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAC,eAAe,EAAiC,MAAM,eAAe,CAAC;AAE9E,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AAEpE,MAAM,iBAAiB,GAAG,CAAC,KAAU,EAAuC,EAAE,CAC1E,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC;AAM7E,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,EACrC,MAAM,EACN,MAAM,EACN,gBAAgB,EAChB,eAAe,GAMlB,EAA6B,EAAE;IAC5B,MAAM,EAAC,CAAC,EAAC,GAAG,oBAAoB,EAAE,CAAC;IAEnC,MAAM,eAAe,GACjB,MAAM,EAAE,MAAM,GAAG,CAAC;QACd,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,gBAAgB,EAAE,MAAM,GAAG,CAAC;YAC5B,CAAC,CAAC,gBAAgB;YAClB,CAAC,CAAC,eAAe,EAAE,MAAM,GAAG,CAAC;gBAC3B,CAAC,CAAC,eAAe;gBACjB,CAAC,CAAC,EAAE,CAAC;IAEjB,MAAM,kBAAkB,GAAG,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;QACnD,IAAI,iBAAiB,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;QAE5C,QAAQ,MAAM,EAAE,CAAC;YACb,KAAK,eAAe,CAAC,UAAU;gBAC3B,IAAI,iBAAiB,CAAC,iBAAiB,CAAC,EAAE,CAAC;oBACvC,MAAM,EAAC,IAAI,EAAE,EAAE,EAAC,GAAG,iBAAiB,CAAC;oBACrC,iBAAiB,GAAG,CAAC,CAAC,iCAAiC,EAAE;wBACrD,IAAI;wBACJ,EAAE;wBACF,aAAa,EAAE;4BACX,WAAW,EAAE,KAAK;yBACrB;qBACJ,CAAC,CAAC;gBACP,CAAC;qBAAM,CAAC;oBACJ,iBAAiB,GAAG,EAAE,CAAC;gBAC3B,CAAC;gBACD,MAAM;QACd,CAAC;QAED,OAAO,iBAAiB,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,OAAO,EAAC,kBAAkB,EAAC,CAAC;AAChC,CAAC,CAAC","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {AttributeFormat, type ValueDetailsValueFragment} from '_ui/_gqlTypes';\nimport {type RecordFormElementsValueStandardValue} from '_ui/hooks/useGetRecordForm';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\n\nconst _isDateRangeValue = (value: any): value is {from: string; to: string} =>\n !!value && typeof value === 'object' && 'from' in value && 'to' in value;\n\ninterface IUseGetPresentationValues {\n presentationValues: string[];\n}\n\nexport const useGetPresentationValues = ({\n values,\n format,\n calculatedValues,\n inheritedValues,\n}: {\n values: ValueDetailsValueFragment[];\n format: AttributeFormat;\n calculatedValues: RecordFormElementsValueStandardValue[];\n inheritedValues: RecordFormElementsValueStandardValue[];\n}): IUseGetPresentationValues => {\n const {t} = useSharedTranslation();\n\n const effectiveValues =\n values?.length > 0\n ? values\n : calculatedValues?.length > 0\n ? calculatedValues\n : inheritedValues?.length > 0\n ? inheritedValues\n : [];\n\n const presentationValues = effectiveValues.map(value => {\n let presentationValue = value.payload || '';\n\n switch (format) {\n case AttributeFormat.date_range:\n if (_isDateRangeValue(presentationValue)) {\n const {from, to} = presentationValue;\n presentationValue = t('record_edition.date_range_value', {\n from,\n to,\n interpolation: {\n escapeValue: false,\n },\n });\n } else {\n presentationValue = '';\n }\n break;\n }\n\n return presentationValue;\n });\n\n return {presentationValues};\n};\n"]}
@@ -49,7 +49,10 @@ const TreeField = ({ element, readonly, isFormCreationMode, onDeleteMultipleValu
49
49
  const label = localizedTranslation(settings.label, lang);
50
50
  const form = AntForm.useFormInstance();
51
51
  const fieldErrors = form.getFieldError(attribute.id);
52
- const isReadOnly = attribute.readonly || !attribute.permissions.edit_value || readonly;
52
+ // TODO: Temporary const that should be removed (and all it's usages) when we will have a proper way to override multiple values
53
+ const tmpCantOverrideValues = attribute.multiple_values &&
54
+ (calculatedFlags.calculatedValues?.length > 1 || inheritedFlags.inheritedValues?.length > 1);
55
+ const isReadOnly = attribute.readonly || !attribute.permissions.edit_value || readonly || tmpCantOverrideValues;
53
56
  const isFieldInError = fieldErrors.length > 0;
54
57
  useEffect(() => {
55
58
  if (state.activeAttribute?.attribute.id === attribute.id) {
@@ -1 +1 @@
1
- {"version":3,"file":"TreeField.js","sourceRoot":"","sources":["../../../../../../src/components/RecordEdition/EditRecordContent/uiElements/TreeField/TreeField.tsx"],"names":[],"mappings":";AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAyB,SAAS,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAClE,OAAO,MAAM,EAAE,EAAC,GAAG,EAAC,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAA6B,oBAAoB,EAAC,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAC,OAAO,EAAE,SAAS,EAAE,eAAe,EAAC,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAC,MAAM,EAAC,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAElC,OAAO,EAGH,wBAAwB,GAC3B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAC,oBAAoB,EAAC,MAAM,eAAe,CAAC;AAEnD,OAAO,EAAC,YAAY,EAAC,MAAM,kCAAkC,CAAC;AAC9D,OAAO,EAAC,0BAA0B,EAAC,MAAM,yDAAyD,CAAC;AACnG,OAAO,EAAC,6BAA6B,EAAC,MAAM,yCAAyC,CAAC;AACtF,OAAO,EAAC,oBAAoB,EAAC,MAAM,qEAAqE,CAAC;AACzG,OAAO,EAAC,6BAA6B,EAAC,MAAM,kEAAkE,CAAC;AAC/G,OAAO,EAAC,sBAAsB,EAAE,qBAAqB,EAAC,MAAM,oCAAoC,CAAC;AACjG,OAAO,EAAC,gBAAgB,EAAC,MAAM,4BAA4B,CAAC;AAE5D,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAA0B;qBACxC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;CAChE,CAAC;AAEF,MAAM,yBAAyB,GAAG,MAAM,CAAC,GAAG,CAAA;;;CAG3C,CAAC;AAEF,MAAM,0BAA0B,GAAG,MAAM,CAAC,SAAS,CAAC,CAAwB;kBAC1D,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,yCAAyC,CAAC;CAC7F,CAAC;AAEF,MAAM,qBAAqB,GAAG,MAAM,CAAC,eAAe,CAAC,CAAgC;;;;;MAK/E,KAAK,CAAC,EAAE,CACN,KAAK,CAAC,mBAAmB;IACzB,GAAG,CAAA;;;;SAIF;CACR,CAAC;AAIF,MAAM,SAAS,GAAsC,CAAC,EAClD,OAAO,EACP,QAAQ,EACR,kBAAkB,EAClB,sBAAsB,EACtB,aAAa,EACb,aAAa,EACb,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,MAAM,GACT,GAIG,OAAO,CAAC;IAEZ,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAqC,MAAM,CAAC,CAAC;IAE/F,MAAM,eAAe,GAAG,sBAAsB,CAAC,aAAa,CAAC,CAAC;IAC9D,MAAM,cAAc,GAAG,qBAAqB,CAAC,aAAa,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,oBAAoB,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACzD,MAAM,IAAI,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IACvC,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAErD,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,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,6BAA6B,CAAC;QAC1B,SAAS;QACT,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,eAAe,EAAE,oBAAoB;QACrC,QAAQ;QACR,aAAa;QACb,gBAAgB,EAAE,CAAC,oBAAoB,CAAC;KAC3C,CAAC,CAAC;IAEH,MAAM,qCAAqC,GAA+C;QACtF,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,WAAW,EAAE,KAAK,CAAC,eAAe,EAAE,SAAS,EAAE,EAAE;QACjD,MAAM,EAAE,wBAAwB,CAAC,aAAa;KACjD,CAAC;IAEF,MAAM,EAAC,SAAS,EAAE,cAAc,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,kBAAkB,EAAC,GACzF,0BAA0B,CAAC;QACvB,WAAW,EAAE,KAAK;QAClB,SAAS;QACT,kBAAkB;QAClB,aAAa;QACb,gBAAgB;QAChB,aAAa;QACb,aAAa;QACb,sBAAsB;QACtB,UAAU;QACV,cAAc;QACd,qCAAqC;KACxC,CAAC,CAAC;IAEP,OAAO,CACH,KAAC,gBAAgB,qBAAgB,YAAY,YACzC,KAAC,OAAO,CAAC,IAAI,IAAC,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,OAAO,kBACrC,MAAC,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,yBACtC,UAAU,EAC/B,KAAK,EACD,8BACI,KAAC,yBAAyB,cACtB,KAAC,gBAAgB,IAAC,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,GAAI,GAC9D,EAC3B,kBAAkB,IACpB,aAGP,KAAC,YAAY,IACT,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,UAAU,GACxB,EACD,CAAC,UAAU,IAAI,CACZ,KAAC,0BAA0B,IACvB,IAAI,EAAE,KAAC,MAAM,KAAG,EAChB,OAAO,EAAE,SAAS,EAClB,IAAI,EAAC,GAAG,iBACK,CAAC,aAAa,EAAE,MAAM,YAElC,iBAAiB,GACO,CAChC,EACA,mBAAmB,IACA,GACb,GACA,CACtB,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 {type FunctionComponent, useEffect, useState} from 'react';\nimport styled, {css} from 'styled-components';\nimport {type ICommonFieldsSettings, localizedTranslation} from '@leav/utils';\nimport {AntForm, KitButton, KitInputWrapper} from 'aristid-ds';\nimport {FaList} from 'react-icons/fa';\nimport {useLang} from '_ui/hooks';\nimport {type IFormElementProps} from '../../_types';\nimport {\n type ChildrenAsRecordValuePermissionFilterInput,\n type RecordFormAttributeTreeAttributeFragment,\n RecordPermissionsActions,\n} from '_ui/_gqlTypes';\nimport {TREE_FIELD_ID_PREFIX} from '_ui/constants';\nimport {type RecordFormElementsValueTreeValue} from '_ui/hooks/useGetRecordForm';\nimport {TreeNodeList} from './display-tree-node/TreeNodeList';\nimport {useManageTreeNodeSelection} from './manage-tree-node-selection/useManageTreeNodeSelection';\nimport {useOutsideInteractionDetector} from '../shared/useOutsideInteractionDetector';\nimport {useEditRecordReducer} from '_ui/components/RecordEdition/editRecordReducer/useEditRecordReducer';\nimport {EditRecordReducerActionsTypes} from '_ui/components/RecordEdition/editRecordReducer/editRecordReducer';\nimport {computeCalculatedFlags, computeInheritedFlags} from '../shared/calculatedInheritedFlags';\nimport {ComputeIndicator} from '../shared/ComputeIndicator';\n\nconst StyledWrapperDiv = styled.div<{$metadataEdit: boolean}>`\n margin-bottom: ${props => (props.$metadataEdit ? 0 : '1.5em')};\n`;\n\nconst KitInputExtraAlignLeftDiv = styled.div`\n margin-right: auto;\n line-height: 12px;\n`;\n\nconst StyledFieldFooterKitButton = styled(KitButton)<{$hasNoValue: boolean}>`\n margin-top: ${props => (props.$hasNoValue ? 0 : 'calc((var(--general-spacing-xs)) * 1px)')};\n`;\n\nconst KitInputWrapperStyled = styled(KitInputWrapper)<{$readonlyBackground: boolean}>`\n .kit-input-wrapper-content {\n min-height: 48px;\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\ntype TreeFieldProps = IFormElementProps<ICommonFieldsSettings>;\n\nconst TreeField: FunctionComponent<TreeFieldProps> = ({\n element,\n readonly,\n isFormCreationMode,\n onDeleteMultipleValues,\n onValueSubmit,\n onValueDelete,\n metadataEdit = false,\n}) => {\n const {state, dispatch} = useEditRecordReducer();\n const {lang} = useLang();\n const {\n settings,\n attribute,\n values,\n }: {\n settings: typeof element.settings;\n attribute?: RecordFormAttributeTreeAttributeFragment;\n values?: RecordFormElementsValueTreeValue[];\n } = element;\n\n const [backendValues, setBackendValues] = useState<RecordFormElementsValueTreeValue[]>(values);\n\n const calculatedFlags = computeCalculatedFlags(backendValues);\n const inheritedFlags = computeInheritedFlags(backendValues);\n const label = localizedTranslation(settings.label, lang);\n const form = AntForm.useFormInstance();\n const fieldErrors = form.getFieldError(attribute.id);\n\n const isReadOnly = attribute.readonly || !attribute.permissions.edit_value || readonly;\n const isFieldInError = fieldErrors.length > 0;\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 useOutsideInteractionDetector({\n attribute,\n activeAttribute: state.activeAttribute,\n attributePrefix: TREE_FIELD_ID_PREFIX,\n dispatch,\n backendValues,\n allowedSelectors: ['.kit-modal-wrapper'],\n });\n\n const childrenAsRecordValuePermissionFilter: ChildrenAsRecordValuePermissionFilterInput = {\n libraryId: state.libraryId,\n attributeId: state.activeAttribute?.attribute?.id,\n action: RecordPermissionsActions.create_record,\n };\n\n const {openModal, removeTreeNode, actionButtonLabel, SelectTreeNodeModal, RemoveAllTreeNodes} =\n useManageTreeNodeSelection({\n modaleTitle: label,\n attribute,\n isFormCreationMode,\n backendValues,\n setBackendValues,\n onValueSubmit,\n onValueDelete,\n onDeleteMultipleValues,\n isReadOnly,\n isFieldInError,\n childrenAsRecordValuePermissionFilter,\n });\n\n return (\n <StyledWrapperDiv $metadataEdit={metadataEdit}>\n <AntForm.Item name={attribute.id} noStyle>\n <KitInputWrapperStyled\n id={TREE_FIELD_ID_PREFIX + attribute.id}\n data-testid=\"tree-field\"\n label={label}\n required={attribute.required}\n bordered\n status={isFieldInError ? 'error' : undefined}\n helper={isFieldInError ? String(fieldErrors[0]) : undefined}\n $readonlyBackground={isReadOnly}\n extra={\n <>\n <KitInputExtraAlignLeftDiv>\n <ComputeIndicator calculatedFlags={calculatedFlags} inheritedFlags={inheritedFlags} />\n </KitInputExtraAlignLeftDiv>\n {RemoveAllTreeNodes}\n </>\n }\n >\n <TreeNodeList\n attribute={attribute}\n backendValues={backendValues}\n removeTreeNode={removeTreeNode}\n isReadOnly={isReadOnly}\n />\n {!isReadOnly && (\n <StyledFieldFooterKitButton\n icon={<FaList />}\n onClick={openModal}\n size=\"m\"\n $hasNoValue={!backendValues?.length}\n >\n {actionButtonLabel}\n </StyledFieldFooterKitButton>\n )}\n {SelectTreeNodeModal}\n </KitInputWrapperStyled>\n </AntForm.Item>\n </StyledWrapperDiv>\n );\n};\n\nexport default TreeField;\n"]}
1
+ {"version":3,"file":"TreeField.js","sourceRoot":"","sources":["../../../../../../src/components/RecordEdition/EditRecordContent/uiElements/TreeField/TreeField.tsx"],"names":[],"mappings":";AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAyB,SAAS,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAClE,OAAO,MAAM,EAAE,EAAC,GAAG,EAAC,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAA6B,oBAAoB,EAAC,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAC,OAAO,EAAE,SAAS,EAAE,eAAe,EAAC,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAC,MAAM,EAAC,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAElC,OAAO,EAGH,wBAAwB,GAC3B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAC,oBAAoB,EAAC,MAAM,eAAe,CAAC;AAEnD,OAAO,EAAC,YAAY,EAAC,MAAM,kCAAkC,CAAC;AAC9D,OAAO,EAAC,0BAA0B,EAAC,MAAM,yDAAyD,CAAC;AACnG,OAAO,EAAC,6BAA6B,EAAC,MAAM,yCAAyC,CAAC;AACtF,OAAO,EAAC,oBAAoB,EAAC,MAAM,qEAAqE,CAAC;AACzG,OAAO,EAAC,6BAA6B,EAAC,MAAM,kEAAkE,CAAC;AAC/G,OAAO,EAAC,sBAAsB,EAAE,qBAAqB,EAAC,MAAM,oCAAoC,CAAC;AACjG,OAAO,EAAC,gBAAgB,EAAC,MAAM,4BAA4B,CAAC;AAE5D,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAA0B;qBACxC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;CAChE,CAAC;AAEF,MAAM,yBAAyB,GAAG,MAAM,CAAC,GAAG,CAAA;;;CAG3C,CAAC;AAEF,MAAM,0BAA0B,GAAG,MAAM,CAAC,SAAS,CAAC,CAAwB;kBAC1D,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,yCAAyC,CAAC;CAC7F,CAAC;AAEF,MAAM,qBAAqB,GAAG,MAAM,CAAC,eAAe,CAAC,CAAgC;;;;;MAK/E,KAAK,CAAC,EAAE,CACN,KAAK,CAAC,mBAAmB;IACzB,GAAG,CAAA;;;;SAIF;CACR,CAAC;AAIF,MAAM,SAAS,GAAsC,CAAC,EAClD,OAAO,EACP,QAAQ,EACR,kBAAkB,EAClB,sBAAsB,EACtB,aAAa,EACb,aAAa,EACb,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,MAAM,GACT,GAIG,OAAO,CAAC;IAEZ,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAqC,MAAM,CAAC,CAAC;IAE/F,MAAM,eAAe,GAAG,sBAAsB,CAAC,aAAa,CAAC,CAAC;IAC9D,MAAM,cAAc,GAAG,qBAAqB,CAAC,aAAa,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,oBAAoB,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACzD,MAAM,IAAI,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IACvC,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAErD,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,UAAU,GAAG,SAAS,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,UAAU,IAAI,QAAQ,IAAI,qBAAqB,CAAC;IAChH,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;IAE9C,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,6BAA6B,CAAC;QAC1B,SAAS;QACT,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,eAAe,EAAE,oBAAoB;QACrC,QAAQ;QACR,aAAa;QACb,gBAAgB,EAAE,CAAC,oBAAoB,CAAC;KAC3C,CAAC,CAAC;IAEH,MAAM,qCAAqC,GAA+C;QACtF,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,WAAW,EAAE,KAAK,CAAC,eAAe,EAAE,SAAS,EAAE,EAAE;QACjD,MAAM,EAAE,wBAAwB,CAAC,aAAa;KACjD,CAAC;IAEF,MAAM,EAAC,SAAS,EAAE,cAAc,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,kBAAkB,EAAC,GACzF,0BAA0B,CAAC;QACvB,WAAW,EAAE,KAAK;QAClB,SAAS;QACT,kBAAkB;QAClB,aAAa;QACb,gBAAgB;QAChB,aAAa;QACb,aAAa;QACb,sBAAsB;QACtB,UAAU;QACV,cAAc;QACd,qCAAqC;KACxC,CAAC,CAAC;IAEP,OAAO,CACH,KAAC,gBAAgB,qBAAgB,YAAY,YACzC,KAAC,OAAO,CAAC,IAAI,IAAC,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,OAAO,kBACrC,MAAC,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,yBACtC,UAAU,EAC/B,KAAK,EACD,8BACI,KAAC,yBAAyB,cACtB,KAAC,gBAAgB,IAAC,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,GAAI,GAC9D,EAC3B,kBAAkB,IACpB,aAGP,KAAC,YAAY,IACT,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,UAAU,GACxB,EACD,CAAC,UAAU,IAAI,CACZ,KAAC,0BAA0B,IACvB,IAAI,EAAE,KAAC,MAAM,KAAG,EAChB,OAAO,EAAE,SAAS,EAClB,IAAI,EAAC,GAAG,iBACK,CAAC,aAAa,EAAE,MAAM,YAElC,iBAAiB,GACO,CAChC,EACA,mBAAmB,IACA,GACb,GACA,CACtB,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 {type FunctionComponent, useEffect, useState} from 'react';\nimport styled, {css} from 'styled-components';\nimport {type ICommonFieldsSettings, localizedTranslation} from '@leav/utils';\nimport {AntForm, KitButton, KitInputWrapper} from 'aristid-ds';\nimport {FaList} from 'react-icons/fa';\nimport {useLang} from '_ui/hooks';\nimport {type IFormElementProps} from '../../_types';\nimport {\n type ChildrenAsRecordValuePermissionFilterInput,\n type RecordFormAttributeTreeAttributeFragment,\n RecordPermissionsActions,\n} from '_ui/_gqlTypes';\nimport {TREE_FIELD_ID_PREFIX} from '_ui/constants';\nimport {type RecordFormElementsValueTreeValue} from '_ui/hooks/useGetRecordForm';\nimport {TreeNodeList} from './display-tree-node/TreeNodeList';\nimport {useManageTreeNodeSelection} from './manage-tree-node-selection/useManageTreeNodeSelection';\nimport {useOutsideInteractionDetector} from '../shared/useOutsideInteractionDetector';\nimport {useEditRecordReducer} from '_ui/components/RecordEdition/editRecordReducer/useEditRecordReducer';\nimport {EditRecordReducerActionsTypes} from '_ui/components/RecordEdition/editRecordReducer/editRecordReducer';\nimport {computeCalculatedFlags, computeInheritedFlags} from '../shared/calculatedInheritedFlags';\nimport {ComputeIndicator} from '../shared/ComputeIndicator';\n\nconst StyledWrapperDiv = styled.div<{$metadataEdit: boolean}>`\n margin-bottom: ${props => (props.$metadataEdit ? 0 : '1.5em')};\n`;\n\nconst KitInputExtraAlignLeftDiv = styled.div`\n margin-right: auto;\n line-height: 12px;\n`;\n\nconst StyledFieldFooterKitButton = styled(KitButton)<{$hasNoValue: boolean}>`\n margin-top: ${props => (props.$hasNoValue ? 0 : 'calc((var(--general-spacing-xs)) * 1px)')};\n`;\n\nconst KitInputWrapperStyled = styled(KitInputWrapper)<{$readonlyBackground: boolean}>`\n .kit-input-wrapper-content {\n min-height: 48px;\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\ntype TreeFieldProps = IFormElementProps<ICommonFieldsSettings>;\n\nconst TreeField: FunctionComponent<TreeFieldProps> = ({\n element,\n readonly,\n isFormCreationMode,\n onDeleteMultipleValues,\n onValueSubmit,\n onValueDelete,\n metadataEdit = false,\n}) => {\n const {state, dispatch} = useEditRecordReducer();\n const {lang} = useLang();\n const {\n settings,\n attribute,\n values,\n }: {\n settings: typeof element.settings;\n attribute?: RecordFormAttributeTreeAttributeFragment;\n values?: RecordFormElementsValueTreeValue[];\n } = element;\n\n const [backendValues, setBackendValues] = useState<RecordFormElementsValueTreeValue[]>(values);\n\n const calculatedFlags = computeCalculatedFlags(backendValues);\n const inheritedFlags = computeInheritedFlags(backendValues);\n const label = localizedTranslation(settings.label, lang);\n const form = AntForm.useFormInstance();\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 isReadOnly = attribute.readonly || !attribute.permissions.edit_value || readonly || tmpCantOverrideValues;\n const isFieldInError = fieldErrors.length > 0;\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 useOutsideInteractionDetector({\n attribute,\n activeAttribute: state.activeAttribute,\n attributePrefix: TREE_FIELD_ID_PREFIX,\n dispatch,\n backendValues,\n allowedSelectors: ['.kit-modal-wrapper'],\n });\n\n const childrenAsRecordValuePermissionFilter: ChildrenAsRecordValuePermissionFilterInput = {\n libraryId: state.libraryId,\n attributeId: state.activeAttribute?.attribute?.id,\n action: RecordPermissionsActions.create_record,\n };\n\n const {openModal, removeTreeNode, actionButtonLabel, SelectTreeNodeModal, RemoveAllTreeNodes} =\n useManageTreeNodeSelection({\n modaleTitle: label,\n attribute,\n isFormCreationMode,\n backendValues,\n setBackendValues,\n onValueSubmit,\n onValueDelete,\n onDeleteMultipleValues,\n isReadOnly,\n isFieldInError,\n childrenAsRecordValuePermissionFilter,\n });\n\n return (\n <StyledWrapperDiv $metadataEdit={metadataEdit}>\n <AntForm.Item name={attribute.id} noStyle>\n <KitInputWrapperStyled\n id={TREE_FIELD_ID_PREFIX + attribute.id}\n data-testid=\"tree-field\"\n label={label}\n required={attribute.required}\n bordered\n status={isFieldInError ? 'error' : undefined}\n helper={isFieldInError ? String(fieldErrors[0]) : undefined}\n $readonlyBackground={isReadOnly}\n extra={\n <>\n <KitInputExtraAlignLeftDiv>\n <ComputeIndicator calculatedFlags={calculatedFlags} inheritedFlags={inheritedFlags} />\n </KitInputExtraAlignLeftDiv>\n {RemoveAllTreeNodes}\n </>\n }\n >\n <TreeNodeList\n attribute={attribute}\n backendValues={backendValues}\n removeTreeNode={removeTreeNode}\n isReadOnly={isReadOnly}\n />\n {!isReadOnly && (\n <StyledFieldFooterKitButton\n icon={<FaList />}\n onClick={openModal}\n size=\"m\"\n $hasNoValue={!backendValues?.length}\n >\n {actionButtonLabel}\n </StyledFieldFooterKitButton>\n )}\n {SelectTreeNodeModal}\n </KitInputWrapperStyled>\n </AntForm.Item>\n </StyledWrapperDiv>\n );\n};\n\nexport default TreeField;\n"]}
@@ -9,8 +9,8 @@ const ComputeIndicatorWrapper = styled.div `
9
9
  `;
10
10
  export const ComputeIndicator = ({ calculatedFlags, inheritedFlags }) => {
11
11
  const { t } = useSharedTranslation();
12
- const shouldDisplayComputedIcon = calculatedFlags.isCalculatedNotOverrideValue || inheritedFlags.isInheritedNotOverrideValue;
13
- const shouldDisplayOverridedIcon = calculatedFlags.isCalculatedOverrideValue || inheritedFlags.isInheritedOverrideValue;
12
+ const shouldDisplayComputedIcon = calculatedFlags.isCalculatedNotOverrideValues || inheritedFlags.isInheritedNotOverrideValues;
13
+ const shouldDisplayOverridedIcon = calculatedFlags.isCalculatedOverrideValues || inheritedFlags.isInheritedOverrideValues;
14
14
  return (_jsxs(ComputeIndicatorWrapper, { children: [shouldDisplayComputedIcon && (_jsx(KitTooltip, { title: t('record_edition.calculated_value'), mouseEnterDelay: TOOLTIP_DEFAULT_DELAY_IN_SECONDS, children: _jsx(FaSquareRootAlt, {}) })), shouldDisplayOverridedIcon && (_jsx(KitTooltip, { title: t('record_edition.overrided_value'), mouseEnterDelay: TOOLTIP_DEFAULT_DELAY_IN_SECONDS, children: _jsx(FaLayerGroup, {}) }))] }));
15
15
  };
16
16
  //# sourceMappingURL=ComputeIndicator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ComputeIndicator.js","sourceRoot":"","sources":["../../../../../../src/components/RecordEdition/EditRecordContent/uiElements/shared/ComputeIndicator.tsx"],"names":[],"mappings":";AAKA,OAAO,EAAC,UAAU,EAAC,MAAM,YAAY,CAAC;AACtC,OAAO,EAAC,YAAY,EAAE,eAAe,EAAC,MAAM,gBAAgB,CAAC;AAC7D,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAC,gCAAgC,EAAC,MAAM,eAAe,CAAC;AAE/D,MAAM,uBAAuB,GAAG,MAAM,CAAC,GAAG,CAAA;;CAEzC,CAAC;AAOF,MAAM,CAAC,MAAM,gBAAgB,GAA8C,CAAC,EAAC,eAAe,EAAE,cAAc,EAAC,EAAE,EAAE;IAC7G,MAAM,EAAC,CAAC,EAAC,GAAG,oBAAoB,EAAE,CAAC;IAEnC,MAAM,yBAAyB,GAC3B,eAAe,CAAC,4BAA4B,IAAI,cAAc,CAAC,2BAA2B,CAAC;IAC/F,MAAM,0BAA0B,GAC5B,eAAe,CAAC,yBAAyB,IAAI,cAAc,CAAC,wBAAwB,CAAC;IAEzF,OAAO,CACH,MAAC,uBAAuB,eACnB,yBAAyB,IAAI,CAC1B,KAAC,UAAU,IACP,KAAK,EAAE,CAAC,CAAC,iCAAiC,CAAC,EAC3C,eAAe,EAAE,gCAAgC,YAEjD,KAAC,eAAe,KAAG,GACV,CAChB,EACA,0BAA0B,IAAI,CAC3B,KAAC,UAAU,IACP,KAAK,EAAE,CAAC,CAAC,gCAAgC,CAAC,EAC1C,eAAe,EAAE,gCAAgC,YAEjD,KAAC,YAAY,KAAG,GACP,CAChB,IACqB,CAC7B,CAAC;AACN,CAAC,CAAC","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {type FunctionComponent} from 'react';\nimport {type CalculatedFlags, type InheritedFlags} from './calculatedInheritedFlags';\nimport {KitTooltip} from 'aristid-ds';\nimport {FaLayerGroup, FaSquareRootAlt} from 'react-icons/fa';\nimport styled from 'styled-components';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {TOOLTIP_DEFAULT_DELAY_IN_SECONDS} from '_ui/constants';\n\nconst ComputeIndicatorWrapper = styled.div`\n font-size: calc(var(--general-typography-fontSize7) * 1px);\n`;\n\ninterface IComputeIndicatorProps {\n calculatedFlags: CalculatedFlags;\n inheritedFlags: InheritedFlags;\n}\n\nexport const ComputeIndicator: FunctionComponent<IComputeIndicatorProps> = ({calculatedFlags, inheritedFlags}) => {\n const {t} = useSharedTranslation();\n\n const shouldDisplayComputedIcon =\n calculatedFlags.isCalculatedNotOverrideValue || inheritedFlags.isInheritedNotOverrideValue;\n const shouldDisplayOverridedIcon =\n calculatedFlags.isCalculatedOverrideValue || inheritedFlags.isInheritedOverrideValue;\n\n return (\n <ComputeIndicatorWrapper>\n {shouldDisplayComputedIcon && (\n <KitTooltip\n title={t('record_edition.calculated_value')}\n mouseEnterDelay={TOOLTIP_DEFAULT_DELAY_IN_SECONDS}\n >\n <FaSquareRootAlt />\n </KitTooltip>\n )}\n {shouldDisplayOverridedIcon && (\n <KitTooltip\n title={t('record_edition.overrided_value')}\n mouseEnterDelay={TOOLTIP_DEFAULT_DELAY_IN_SECONDS}\n >\n <FaLayerGroup />\n </KitTooltip>\n )}\n </ComputeIndicatorWrapper>\n );\n};\n"]}
1
+ {"version":3,"file":"ComputeIndicator.js","sourceRoot":"","sources":["../../../../../../src/components/RecordEdition/EditRecordContent/uiElements/shared/ComputeIndicator.tsx"],"names":[],"mappings":";AAKA,OAAO,EAAC,UAAU,EAAC,MAAM,YAAY,CAAC;AACtC,OAAO,EAAC,YAAY,EAAE,eAAe,EAAC,MAAM,gBAAgB,CAAC;AAC7D,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAC,gCAAgC,EAAC,MAAM,eAAe,CAAC;AAE/D,MAAM,uBAAuB,GAAG,MAAM,CAAC,GAAG,CAAA;;CAEzC,CAAC;AAOF,MAAM,CAAC,MAAM,gBAAgB,GAA8C,CAAC,EAAC,eAAe,EAAE,cAAc,EAAC,EAAE,EAAE;IAC7G,MAAM,EAAC,CAAC,EAAC,GAAG,oBAAoB,EAAE,CAAC;IAEnC,MAAM,yBAAyB,GAC3B,eAAe,CAAC,6BAA6B,IAAI,cAAc,CAAC,4BAA4B,CAAC;IACjG,MAAM,0BAA0B,GAC5B,eAAe,CAAC,0BAA0B,IAAI,cAAc,CAAC,yBAAyB,CAAC;IAE3F,OAAO,CACH,MAAC,uBAAuB,eACnB,yBAAyB,IAAI,CAC1B,KAAC,UAAU,IACP,KAAK,EAAE,CAAC,CAAC,iCAAiC,CAAC,EAC3C,eAAe,EAAE,gCAAgC,YAEjD,KAAC,eAAe,KAAG,GACV,CAChB,EACA,0BAA0B,IAAI,CAC3B,KAAC,UAAU,IACP,KAAK,EAAE,CAAC,CAAC,gCAAgC,CAAC,EAC1C,eAAe,EAAE,gCAAgC,YAEjD,KAAC,YAAY,KAAG,GACP,CAChB,IACqB,CAC7B,CAAC;AACN,CAAC,CAAC","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {type FunctionComponent} from 'react';\nimport {type CalculatedFlags, type InheritedFlags} from './calculatedInheritedFlags';\nimport {KitTooltip} from 'aristid-ds';\nimport {FaLayerGroup, FaSquareRootAlt} from 'react-icons/fa';\nimport styled from 'styled-components';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {TOOLTIP_DEFAULT_DELAY_IN_SECONDS} from '_ui/constants';\n\nconst ComputeIndicatorWrapper = styled.div`\n font-size: calc(var(--general-typography-fontSize7) * 1px);\n`;\n\ninterface IComputeIndicatorProps {\n calculatedFlags: CalculatedFlags;\n inheritedFlags: InheritedFlags;\n}\n\nexport const ComputeIndicator: FunctionComponent<IComputeIndicatorProps> = ({calculatedFlags, inheritedFlags}) => {\n const {t} = useSharedTranslation();\n\n const shouldDisplayComputedIcon =\n calculatedFlags.isCalculatedNotOverrideValues || inheritedFlags.isInheritedNotOverrideValues;\n const shouldDisplayOverridedIcon =\n calculatedFlags.isCalculatedOverrideValues || inheritedFlags.isInheritedOverrideValues;\n\n return (\n <ComputeIndicatorWrapper>\n {shouldDisplayComputedIcon && (\n <KitTooltip\n title={t('record_edition.calculated_value')}\n mouseEnterDelay={TOOLTIP_DEFAULT_DELAY_IN_SECONDS}\n >\n <FaSquareRootAlt />\n </KitTooltip>\n )}\n {shouldDisplayOverridedIcon && (\n <KitTooltip\n title={t('record_edition.overrided_value')}\n mouseEnterDelay={TOOLTIP_DEFAULT_DELAY_IN_SECONDS}\n >\n <FaLayerGroup />\n </KitTooltip>\n )}\n </ComputeIndicatorWrapper>\n );\n};\n"]}
@@ -1,41 +1,41 @@
1
1
  import { type RecordFormElementsValueStandardValue } from '../../../../../hooks/useGetRecordForm';
2
2
  interface IInheritedNotOverride {
3
- isInheritedValue: true;
4
- isInheritedOverrideValue: false;
5
- isInheritedNotOverrideValue: true;
6
- inheritedValue: RecordFormElementsValueStandardValue;
3
+ isInheritedValues: true;
4
+ isInheritedOverrideValues: false;
5
+ isInheritedNotOverrideValues: true;
6
+ inheritedValues: RecordFormElementsValueStandardValue[];
7
7
  }
8
8
  interface IInheritedOverride {
9
- isInheritedValue: true;
10
- isInheritedOverrideValue: true;
11
- isInheritedNotOverrideValue: false;
12
- inheritedValue: RecordFormElementsValueStandardValue;
9
+ isInheritedValues: true;
10
+ isInheritedOverrideValues: true;
11
+ isInheritedNotOverrideValues: false;
12
+ inheritedValues: RecordFormElementsValueStandardValue[];
13
13
  }
14
14
  interface INotInherited {
15
- isInheritedValue: false;
16
- isInheritedOverrideValue: false;
17
- isInheritedNotOverrideValue: false;
18
- inheritedValue: null;
15
+ isInheritedValues: false;
16
+ isInheritedOverrideValues: false;
17
+ isInheritedNotOverrideValues: false;
18
+ inheritedValues: null;
19
19
  }
20
20
  export type InheritedFlags = INotInherited | IInheritedOverride | IInheritedNotOverride;
21
21
  export declare const computeInheritedFlags: (fieldValues: RecordFormElementsValueStandardValue[]) => InheritedFlags;
22
22
  interface ICalculatedNotOverride {
23
- isCalculatedValue: true;
24
- isCalculatedOverrideValue: false;
25
- isCalculatedNotOverrideValue: true;
26
- calculatedValue: RecordFormElementsValueStandardValue;
23
+ isCalculatedValues: true;
24
+ isCalculatedOverrideValues: false;
25
+ isCalculatedNotOverrideValues: true;
26
+ calculatedValues: RecordFormElementsValueStandardValue[];
27
27
  }
28
28
  interface ICalculatedOverride {
29
- isCalculatedValue: true;
30
- isCalculatedOverrideValue: true;
31
- isCalculatedNotOverrideValue: false;
32
- calculatedValue: RecordFormElementsValueStandardValue;
29
+ isCalculatedValues: true;
30
+ isCalculatedOverrideValues: true;
31
+ isCalculatedNotOverrideValues: false;
32
+ calculatedValues: RecordFormElementsValueStandardValue[];
33
33
  }
34
34
  interface INotCalculated {
35
- isCalculatedValue: false;
36
- isCalculatedOverrideValue: false;
37
- isCalculatedNotOverrideValue: false;
38
- calculatedValue: null;
35
+ isCalculatedValues: false;
36
+ isCalculatedOverrideValues: false;
37
+ isCalculatedNotOverrideValues: false;
38
+ calculatedValues: null;
39
39
  }
40
40
  export type CalculatedFlags = INotCalculated | ICalculatedOverride | ICalculatedNotOverride;
41
41
  export declare const computeCalculatedFlags: (fieldValues: RecordFormElementsValueStandardValue[]) => CalculatedFlags;