@leav/ui 1.5.1 → 1.5.2-861351df
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__mocks__/common/attribute.js +1 -0
- package/dist/__mocks__/common/attribute.js.map +1 -1
- package/dist/_gqlTypes/index.d.ts +117 -18
- package/dist/_gqlTypes/index.js +88 -0
- package/dist/_gqlTypes/index.js.map +1 -1
- package/dist/_queries/attributes/attributeDetailsFragment.js +1 -0
- package/dist/_queries/attributes/attributeDetailsFragment.js.map +1 -1
- package/dist/components/Explorer/Explorer.d.ts +1 -1
- package/dist/components/Explorer/Explorer.js +15 -3
- package/dist/components/Explorer/Explorer.js.map +1 -1
- package/dist/components/Explorer/_queries/useExplorerData.js +13 -2
- package/dist/components/Explorer/_queries/useExplorerData.js.map +1 -1
- package/dist/components/Explorer/actions-mass/edit-attribute/EditAttributeMassActionModal.d.ts +13 -0
- package/dist/components/Explorer/actions-mass/edit-attribute/EditAttributeMassActionModal.js +20 -0
- package/dist/components/Explorer/actions-mass/edit-attribute/EditAttributeMassActionModal.js.map +1 -0
- package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValueLine.d.ts +10 -0
- package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValueLine.js +38 -0
- package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValueLine.js.map +1 -0
- package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValuesMapping.d.ts +8 -0
- package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValuesMapping.js +16 -0
- package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValuesMapping.js.map +1 -0
- package/dist/components/Explorer/actions-mass/edit-attribute/useCountValuesOccurrencesHook.d.ts +10 -0
- package/dist/components/Explorer/actions-mass/edit-attribute/useCountValuesOccurrencesHook.js +28 -0
- package/dist/components/Explorer/actions-mass/edit-attribute/useCountValuesOccurrencesHook.js.map +1 -0
- package/dist/components/Explorer/actions-mass/edit-attribute/useListEditableAttributeHook.d.ts +5 -0
- package/dist/components/Explorer/actions-mass/edit-attribute/useListEditableAttributeHook.js +12 -0
- package/dist/components/Explorer/actions-mass/edit-attribute/useListEditableAttributeHook.js.map +1 -0
- package/dist/components/Explorer/actions-mass/edit-attribute/useListTreeAttributeValuesHook.d.ts +5 -0
- package/dist/components/Explorer/actions-mass/edit-attribute/useListTreeAttributeValuesHook.js +20 -0
- package/dist/components/Explorer/actions-mass/edit-attribute/useListTreeAttributeValuesHook.js.map +1 -0
- package/dist/components/Explorer/actions-mass/useEditAttributeMassAction.d.ts +11 -0
- package/dist/components/Explorer/actions-mass/useEditAttributeMassAction.js +106 -0
- package/dist/components/Explorer/actions-mass/useEditAttributeMassAction.js.map +1 -0
- package/dist/components/Explorer/actions-mass/useExportMassAction.js +11 -13
- package/dist/components/Explorer/actions-mass/useExportMassAction.js.map +1 -1
- package/dist/components/Filters/context/filtersReducer.js +0 -1
- package/dist/components/Filters/context/filtersReducer.js.map +1 -1
- package/dist/components/Filters/filter-items/filter-type/TextAttributeDropDown.js +24 -7
- package/dist/components/Filters/filter-items/filter-type/TextAttributeDropDown.js.map +1 -1
- package/dist/components/Filters/filter-items/filter-type/TreeAttributeDropDown.js +15 -17
- package/dist/components/Filters/filter-items/filter-type/TreeAttributeDropDown.js.map +1 -1
- package/dist/components/Filters/prepareFiltersForRequest.js +1 -1
- package/dist/components/Filters/prepareFiltersForRequest.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/antdUtils.js +12 -3
- package/dist/components/RecordEdition/EditRecordContent/antdUtils.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/LinkField.js +4 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/LinkField.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardField.js +6 -3
- package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardField.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSBooleanWrapper.js +6 -5
- package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSBooleanWrapper.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSColorPickerWrapper.js +9 -8
- package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSColorPickerWrapper.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSDatePickerWrapper.js +8 -7
- package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSDatePickerWrapper.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSInputNumberWrapper.js +6 -5
- package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSInputNumberWrapper.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSInputWrapper.js +6 -5
- package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSInputWrapper.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSRangePickerWrapper.js +12 -11
- package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSRangePickerWrapper.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSRichTextWrapper.js +16 -7
- package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSRichTextWrapper.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/ValuesList/DSListSelect.js +6 -5
- package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/ValuesList/DSListSelect.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/useGetPresentationValues.d.ts +3 -3
- package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/useGetPresentationValues.js +10 -4
- package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/useGetPresentationValues.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/TreeField.js +4 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/TreeField.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/ComputeIndicator.js +2 -2
- package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/ComputeIndicator.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/calculatedInheritedFlags.d.ts +24 -24
- package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/calculatedInheritedFlags.js +34 -35
- package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/calculatedInheritedFlags.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordSidebar/EditRecordSidebar.js +1 -1
- package/dist/components/RecordEdition/EditRecordSidebar/EditRecordSidebar.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordSidebar/ValuesSummary/ValuesSummary.d.ts +1 -1
- package/dist/components/RecordEdition/EditRecordSidebar/ValuesSummary/ValuesSummary.js +15 -10
- package/dist/components/RecordEdition/EditRecordSidebar/ValuesSummary/ValuesSummary.js.map +1 -1
- package/dist/components/RecordEdition/editRecordReducer/editRecordReducer.d.ts +1 -1
- package/dist/components/RecordEdition/editRecordReducer/editRecordReducer.js +4 -3
- package/dist/components/RecordEdition/editRecordReducer/editRecordReducer.js.map +1 -1
- package/dist/components/SelectTreeNode/SelectTreeNodeContent.js +3 -0
- package/dist/components/SelectTreeNode/SelectTreeNodeContent.js.map +1 -1
- package/dist/constants.d.ts +1 -0
- package/dist/constants.js +1 -0
- package/dist/constants.js.map +1 -1
- package/dist/hooks/useIFrameMessenger/schema.d.ts +43 -4
- package/dist/hooks/useIFrameMessenger/schema.js +11 -5
- package/dist/hooks/useIFrameMessenger/schema.js.map +1 -1
- package/dist/hooks/useIFrameMessenger/types.d.ts +2 -1
- package/dist/hooks/useIFrameMessenger/types.js.map +1 -1
- package/dist/locales/en/shared.json +20 -7
- package/dist/locales/fr/shared.json +20 -7
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DSDatePickerWrapper.js","sourceRoot":"","sources":["../../../../../../../src/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSDatePickerWrapper.tsx"],"names":[],"mappings":";AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAC,aAAa,EAAC,MAAM,YAAY,CAAC;AACzC,OAAO,EAAyB,MAAM,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAC/D,OAAO,EAAC,IAAI,EAAC,MAAM,MAAM,CAAC;AAC1B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAC,gBAAgB,EAAC,MAAM,YAAY,CAAC;AAG5C,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAC,0BAA0B,EAAC,MAAM,oBAAoB,CAAC;AAE9D,MAAM,mBAAmB,GAAG,MAAM,CAAC,aAAa,CAAC,CAAA;;CAEhD,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAoE,CAAC,EACjG,KAAK,EACL,iBAAiB,EACjB,wBAAwB,EACxB,4BAA4B,EAC5B,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,eAAe,EACf,cAAc,GACjB,EAAE,EAAE;IACD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,MAAM,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,uBAAuB,GACzB,wBAAwB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,0BAA0B,CAAC;IAClG,MAAM,mBAAmB,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,KAAK,CAAC;IAExF,MAAM,EAAC,MAAM,EAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IACvC,MAAM,EAAC,CAAC,EAAC,GAAG,oBAAoB,EAAE,CAAC;IAEnC,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IAChE,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAEnC,MAAM,kCAAkC,GAAG,KAAK,IAAI,EAAE;QAClD,aAAa,CAAC,OAAO,GAAG,KAAK,CAAC;QAE9B,IAAI,cAAc,CAAC,
|
|
1
|
+
{"version":3,"file":"DSDatePickerWrapper.js","sourceRoot":"","sources":["../../../../../../../src/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSDatePickerWrapper.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, useRef, useState} from 'react';\nimport {Form} from 'antd';\nimport dayjs from 'dayjs';\nimport styled from 'styled-components';\nimport {setDateToUTCNoon} from '_ui/_utils';\nimport {type IStandFieldValueContentProps} from './_types';\nimport {type IKitDatePicker} from 'aristid-ds/dist/Kit/DataEntry/DatePicker/types';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {EMPTY_INITIAL_VALUE_STRING} from '../../../antdUtils';\n\nconst KitDatePickerStyled = styled(KitDatePicker)`\n width: 100%;\n`;\n\nexport const DSDatePickerWrapper: FunctionComponent<IStandFieldValueContentProps<IKitDatePicker>> = ({\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('DSDatePickerWrapper should be used inside a antd Form.Item');\n }\n\n const isNewValueOfMultivalues =\n isLastValueOfMultivalues && typeof value === 'string' && value === EMPTY_INITIAL_VALUE_STRING;\n const focusedDefaultValue = attribute.multiple_values ? isNewValueOfMultivalues : false;\n\n const {errors} = Form.Item.useStatus();\n const {t} = useSharedTranslation();\n\n const hasChangedRef = useRef(false);\n const [isFocused, setIsFocused] = useState(focusedDefaultValue);\n const isErrors = errors.length > 0;\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 dayjs.unix(Number(inheritedFlags.inheritedValues[0].raw_payload)),\n inheritedFlags.inheritedValues[0].raw_payload,\n );\n } else if (calculatedFlags.isCalculatedValues) {\n onChange(\n dayjs.unix(Number(calculatedFlags.calculatedValues[0].raw_payload)),\n calculatedFlags.calculatedValues[0].raw_payload,\n );\n }\n\n await handleSubmit(null, attribute.id);\n };\n\n const _handleDateChange: (\n datePickerDate: dayjs.Dayjs | null,\n antOnChangeParams: string | string[],\n ) => void = async (datePickerDate, ...antOnChangeParams) => {\n hasChangedRef.current = true;\n\n if ((inheritedFlags.isInheritedValues || calculatedFlags.isCalculatedValues) && datePickerDate === null) {\n _resetToInheritedOrCalculatedValue();\n return;\n }\n\n if (!!datePickerDate) {\n datePickerDate = setDateToUTCNoon(datePickerDate);\n }\n\n onChange(datePickerDate, ...antOnChangeParams);\n\n let dateToSave = '';\n if (!!datePickerDate) {\n dateToSave = String(datePickerDate.unix());\n }\n\n await handleSubmit(dateToSave, 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 return (\n <KitDatePickerStyled\n id={attribute.id}\n autoFocus={isFocused}\n open={attribute.multiple_values ? isFocused : undefined}\n value={value}\n format={isFocused || isErrors || !presentationValue ? undefined : () => presentationValue}\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 onChange={_handleDateChange}\n onFocus={_handleOnFocus}\n onOpenChange={_handleOpenChange}\n placeholder={t('record_edition.placeholder.enter_a_date')}\n />\n );\n};\n"]}
|
|
@@ -23,13 +23,14 @@ export const DSInputNumberWrapper = ({ value, presentationValue, isLastValueOfMu
|
|
|
23
23
|
const { errors } = Form.Item.useStatus();
|
|
24
24
|
const { t } = useSharedTranslation();
|
|
25
25
|
const isErrors = errors.length > 0;
|
|
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 = async () => {
|
|
27
28
|
setHasChanged(false);
|
|
28
|
-
if (inheritedFlags.
|
|
29
|
-
onChange(inheritedFlags.
|
|
29
|
+
if (inheritedFlags.isInheritedValues) {
|
|
30
|
+
onChange(inheritedFlags.inheritedValues[0].raw_payload);
|
|
30
31
|
}
|
|
31
|
-
else if (calculatedFlags.
|
|
32
|
-
onChange(calculatedFlags.
|
|
32
|
+
else if (calculatedFlags.isCalculatedValues) {
|
|
33
|
+
onChange(calculatedFlags.calculatedValues[0].raw_payload);
|
|
33
34
|
}
|
|
34
35
|
await handleSubmit(null, attribute.id);
|
|
35
36
|
};
|
|
@@ -47,7 +48,7 @@ export const DSInputNumberWrapper = ({ value, presentationValue, isLastValueOfMu
|
|
|
47
48
|
}
|
|
48
49
|
return;
|
|
49
50
|
}
|
|
50
|
-
if (valueToSubmit === '' && (inheritedFlags.
|
|
51
|
+
if (valueToSubmit === '' && (inheritedFlags.isInheritedValues || calculatedFlags.isCalculatedValues)) {
|
|
51
52
|
_resetToInheritedOrCalculatedValue();
|
|
52
53
|
return;
|
|
53
54
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DSInputNumberWrapper.js","sourceRoot":"","sources":["../../../../../../../src/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSInputNumberWrapper.tsx"],"names":[],"mappings":";AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAC,cAAc,EAAC,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAsE,MAAM,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAC5G,OAAO,EAAC,IAAI,EAAc,MAAM,MAAM,CAAC;AACvC,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAGvC,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAC,0BAA0B,EAAC,MAAM,oBAAoB,CAAC;AAE9D,MAAM,oBAAoB,GAAG,MAAM,CAAC,cAAc,CAAC,CAAA;;CAElD,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAyE,CAAC,EACvG,KAAK,EACL,iBAAiB,EACjB,wBAAwB,EACxB,4BAA4B,EAC5B,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,eAAe,EACf,cAAc,GACjB,EAAE,EAAE;IACD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,MAAM,KAAK,CAAC,6DAA6D,CAAC,CAAC;IAC/E,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,QAAQ,GAAG,MAAM,CAAsC,IAAI,CAAC,CAAC;IACnE,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;IAEnC,MAAM,kCAAkC,GAAG,KAAK,IAAI,EAAE;QAClD,aAAa,CAAC,KAAK,CAAC,CAAC;QACrB,IAAI,cAAc,CAAC,
|
|
1
|
+
{"version":3,"file":"DSInputNumberWrapper.js","sourceRoot":"","sources":["../../../../../../../src/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSInputNumberWrapper.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 {KitInputNumber} from 'aristid-ds';\nimport {type ComponentPropsWithRef, type FocusEvent, type FunctionComponent, useRef, useState} from 'react';\nimport {Form, type GetRef} from 'antd';\nimport styled from 'styled-components';\nimport {type IStandFieldValueContentProps} from './_types';\nimport {type KitInputNumberProps} from 'aristid-ds/dist/Kit/DataEntry/InputNumber/types';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {EMPTY_INITIAL_VALUE_STRING} from '../../../antdUtils';\n\nconst KitInputNumberStyled = styled(KitInputNumber)`\n width: 100%;\n`;\n\nexport const DSInputNumberWrapper: FunctionComponent<IStandFieldValueContentProps<KitInputNumberProps>> = ({\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('DSInputNumberWrapper 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 inputRef = useRef<GetRef<typeof KitInputNumberStyled>>(null);\n const {errors} = Form.Item.useStatus();\n const {t} = useSharedTranslation();\n\n const isErrors = errors.length > 0;\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 (event: FocusEvent<HTMLInputElement>) => {\n setHasChanged(false);\n const valueToSubmit = event.target.value;\n if (!hasChanged) {\n onChange(valueToSubmit);\n setIsFocused(false);\n\n if (isNewValueOfMultivalues) {\n removeLastValueOfMultivalues();\n }\n return;\n }\n\n if (valueToSubmit === '' && (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: ComponentPropsWithRef<typeof KitInputNumberStyled>['onChange'] = inputValue => {\n setHasChanged(true);\n onChange(inputValue);\n };\n\n return (\n <KitInputNumberStyled\n ref={inputRef}\n id={attribute.id}\n autoFocus={isFocused}\n helper={isErrors ? String(errors[0]) : undefined}\n status={isErrors ? 'error' : undefined}\n value={value}\n formatter={v => (isFocused || isErrors || !presentationValue ? `${v}` : `${presentationValue}`)}\n readonly={readonly}\n onChange={_handleOnChange}\n onFocus={_handleFocus}\n onBlur={_handleOnBlur}\n placeholder={t('record_edition.placeholder.enter_a_number')}\n />\n );\n};\n"]}
|
|
@@ -19,12 +19,13 @@ export const DSInputWrapper = ({ value, presentationValue, isLastValueOfMultival
|
|
|
19
19
|
const { t } = useSharedTranslation();
|
|
20
20
|
const isErrors = errors.length > 0;
|
|
21
21
|
const valueToDisplay = isFocused || isErrors || !presentationValue ? value : presentationValue;
|
|
22
|
+
// 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.
|
|
22
23
|
const _resetToInheritedOrCalculatedValue = async () => {
|
|
23
|
-
if (inheritedFlags.
|
|
24
|
-
onChange(inheritedFlags.
|
|
24
|
+
if (inheritedFlags.isInheritedValues) {
|
|
25
|
+
onChange(inheritedFlags.inheritedValues[0].raw_payload);
|
|
25
26
|
}
|
|
26
|
-
else if (calculatedFlags.
|
|
27
|
-
onChange(calculatedFlags.
|
|
27
|
+
else if (calculatedFlags.isCalculatedValues) {
|
|
28
|
+
onChange(calculatedFlags.calculatedValues[0].raw_payload);
|
|
28
29
|
}
|
|
29
30
|
await handleSubmit(null, attribute.id);
|
|
30
31
|
};
|
|
@@ -42,7 +43,7 @@ export const DSInputWrapper = ({ value, presentationValue, isLastValueOfMultival
|
|
|
42
43
|
return;
|
|
43
44
|
}
|
|
44
45
|
const inputValue = event.target.value;
|
|
45
|
-
if (inputValue === '' && (inheritedFlags.
|
|
46
|
+
if (inputValue === '' && (inheritedFlags.isInheritedValues || calculatedFlags.isCalculatedValues)) {
|
|
46
47
|
_resetToInheritedOrCalculatedValue();
|
|
47
48
|
return;
|
|
48
49
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DSInputWrapper.js","sourceRoot":"","sources":["../../../../../../../src/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSInputWrapper.tsx"],"names":[],"mappings":";AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AACpC,OAAO,EAA4D,QAAQ,EAAC,MAAM,OAAO,CAAC;AAC1F,OAAO,EAAC,IAAI,EAAC,MAAM,MAAM,CAAC;AAG1B,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAC,0BAA0B,EAAC,MAAM,oBAAoB,CAAC;AAE9D,MAAM,CAAC,MAAM,cAAc,GAA+D,CAAC,EACvF,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,uDAAuD,CAAC,CAAC;IACzE,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,MAAM,kCAAkC,GAAG,KAAK,IAAI,EAAE;QAClD,IAAI,cAAc,CAAC,
|
|
1
|
+
{"version":3,"file":"DSInputWrapper.js","sourceRoot":"","sources":["../../../../../../../src/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSInputWrapper.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 {KitInput} from 'aristid-ds';\nimport {type ChangeEvent, type FocusEvent, type FunctionComponent, useState} from 'react';\nimport {Form} from 'antd';\nimport {type IStandFieldValueContentProps} from './_types';\nimport {type IKitInput} from 'aristid-ds/dist/Kit/DataEntry/Input/types';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {EMPTY_INITIAL_VALUE_STRING} from '../../../antdUtils';\n\nexport const DSInputWrapper: FunctionComponent<IStandFieldValueContentProps<IKitInput>> = ({\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('DSInputWrapper 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 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 _handleOnFocus = () => {\n setIsFocused(true);\n };\n\n const _handleOnBlur = async (event: FocusEvent<HTMLInputElement>) => {\n setHasChanged(false);\n if (!hasChanged) {\n onChange(event);\n setIsFocused(false);\n\n if (isNewValueOfMultivalues) {\n removeLastValueOfMultivalues();\n }\n return;\n }\n\n const inputValue = event.target.value;\n if (inputValue === '' && (inheritedFlags.isInheritedValues || calculatedFlags.isCalculatedValues)) {\n _resetToInheritedOrCalculatedValue();\n return;\n }\n\n onChange(event);\n await handleSubmit(inputValue, attribute.id);\n setIsFocused(false);\n };\n\n const _handleOnChange = async (event: ChangeEvent<HTMLInputElement>) => {\n setHasChanged(true);\n onChange(event);\n };\n\n return (\n <KitInput\n id={attribute.id}\n autoFocus={isFocused}\n readonly={readonly}\n helper={isErrors ? String(errors[0]) : undefined}\n status={isErrors ? 'error' : undefined}\n value={valueToDisplay}\n allowClear={!!value && !attribute.multiple_values}\n onChange={_handleOnChange}\n onFocus={_handleOnFocus}\n onBlur={_handleOnBlur}\n placeholder={t('record_edition.placeholder.enter_a_text')}\n maxLength={attribute.character_limit ?? undefined}\n showCount\n />\n );\n};\n"]}
|
|
@@ -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.
|
|
39
|
+
if (inheritedFlags.isInheritedValues) {
|
|
39
40
|
onChange([
|
|
40
|
-
dayjs.unix(Number(inheritedFlags.
|
|
41
|
-
dayjs.unix(Number(inheritedFlags.
|
|
42
|
-
], inheritedFlags.
|
|
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.
|
|
45
|
+
else if (calculatedFlags.isCalculatedValues) {
|
|
45
46
|
onChange([
|
|
46
|
-
dayjs.unix(Number(calculatedFlags.
|
|
47
|
-
dayjs.unix(Number(calculatedFlags.
|
|
48
|
-
], calculatedFlags.
|
|
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.
|
|
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.
|
|
86
|
-
!calculatedFlags.
|
|
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
|
|
10
|
+
const LEADING_EMPTY_P_TAG = /^<p>(\s| )*<\/p>/;
|
|
11
|
+
const TRAILING_EMPTY_P_TAG = /(<p>(\s| )*<\/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.
|
|
26
|
-
onChange(inheritedFlags.
|
|
34
|
+
if (inheritedFlags.isInheritedValues) {
|
|
35
|
+
onChange(inheritedFlags.inheritedValues[0].raw_payload);
|
|
27
36
|
}
|
|
28
|
-
else if (calculatedFlags.
|
|
29
|
-
onChange(calculatedFlags.
|
|
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 =
|
|
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.
|
|
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":";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,YAAY,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,
|
|
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| )*<\\/p>/;\nconst TRAILING_EMPTY_P_TAG = /(<p>(\\s| )*<\\/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.
|
|
86
|
-
setTimeout(() => onChange(inheritedFlags.
|
|
86
|
+
if (inheritedFlags.isInheritedValues) {
|
|
87
|
+
setTimeout(() => onChange(inheritedFlags.inheritedValues[0].raw_value, options), 0);
|
|
87
88
|
}
|
|
88
|
-
else if (calculatedFlags.
|
|
89
|
-
setTimeout(() => onChange(calculatedFlags.
|
|
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.
|
|
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,
|
|
6
|
+
export declare const useGetPresentationValues: ({ values, format, calculatedValues, inheritedValues, }: {
|
|
7
7
|
values: ValueDetailsValueFragment[];
|
|
8
8
|
format: AttributeFormat;
|
|
9
|
-
|
|
10
|
-
|
|
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,
|
|
7
|
+
export const useGetPresentationValues = ({ values, format, calculatedValues, inheritedValues, }) => {
|
|
8
8
|
const { t } = useSharedTranslation();
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
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,
|
|
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
|
|
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) {
|