@dnb/eufemia 10.17.0 → 10.18.0
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/CHANGELOG.md +18 -0
- package/cjs/components/flex/Container.js +4 -0
- package/cjs/components/flex/Container.js.map +1 -1
- package/cjs/components/flex/utils.d.ts +1 -1
- package/cjs/components/flex/utils.js +11 -1
- package/cjs/components/flex/utils.js.map +1 -1
- package/cjs/components/input-masked/MultiInputMask.d.ts +10 -2
- package/cjs/components/input-masked/MultiInputMask.js +41 -14
- package/cjs/components/input-masked/MultiInputMask.js.map +1 -1
- package/cjs/components/input-masked/hooks/useMultiInputValues.d.ts +2 -2
- package/cjs/components/input-masked/hooks/useMultiInputValues.js.map +1 -1
- package/cjs/components/number-format/NumberFormat.js +1 -1
- package/cjs/components/number-format/NumberFormat.js.map +1 -1
- package/cjs/components/toggle-button/style/themes/dnb-toggle-button-theme-sbanken.css +8 -1
- package/cjs/components/toggle-button/style/themes/dnb-toggle-button-theme-sbanken.min.css +1 -1
- package/cjs/components/toggle-button/style/themes/dnb-toggle-button-theme-sbanken.scss +6 -1
- package/cjs/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.css +4 -0
- package/cjs/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.min.css +1 -1
- package/cjs/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.scss +5 -0
- package/cjs/components/visually-hidden/VisuallyHidden.js +1 -1
- package/cjs/components/visually-hidden/VisuallyHidden.js.map +1 -1
- package/cjs/extensions/forms/DataContext/Provider/Provider.d.ts +8 -4
- package/cjs/extensions/forms/DataContext/Provider/Provider.js +22 -4
- package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
- package/cjs/extensions/forms/Field/ArraySelection/ArraySelection.js +14 -14
- package/cjs/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
- package/cjs/extensions/forms/Field/ArraySelection/style/dnb-array-selection.css +12 -2
- package/cjs/extensions/forms/Field/ArraySelection/style/dnb-array-selection.min.css +1 -1
- package/cjs/extensions/forms/Field/ArraySelection/style/dnb-array-selection.scss +12 -2
- package/cjs/extensions/forms/Field/Date/Date.js +1 -5
- package/cjs/extensions/forms/Field/Date/Date.js.map +1 -1
- package/cjs/extensions/forms/Field/Expiry/Expiry.d.ts +1 -1
- package/cjs/extensions/forms/Field/Expiry/Expiry.js +20 -10
- package/cjs/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
- package/cjs/extensions/forms/Field/Number/Number.js +0 -5
- package/cjs/extensions/forms/Field/Number/Number.js.map +1 -1
- package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.js +4 -5
- package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
- package/cjs/extensions/forms/Field/Selection/Selection.d.ts +7 -1
- package/cjs/extensions/forms/Field/Selection/Selection.js +4 -9
- package/cjs/extensions/forms/Field/Selection/Selection.js.map +1 -1
- package/cjs/extensions/forms/Field/String/String.d.ts +0 -1
- package/cjs/extensions/forms/Field/String/String.js +2 -8
- package/cjs/extensions/forms/Field/String/String.js.map +1 -1
- package/cjs/extensions/forms/Field/Toggle/Toggle.js +0 -4
- package/cjs/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
- package/cjs/extensions/forms/FieldBlock/FieldBlock.d.ts +1 -1
- package/cjs/extensions/forms/FieldBlock/FieldBlock.js +2 -10
- package/cjs/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
- package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.css +0 -9
- package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
- package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.scss +0 -11
- package/cjs/extensions/forms/Form/Handler/Handler.js +1 -0
- package/cjs/extensions/forms/Form/Handler/Handler.js.map +1 -1
- package/cjs/extensions/forms/Form/Visibility/Visibility.js +0 -1
- package/cjs/extensions/forms/Form/Visibility/Visibility.js.map +1 -1
- package/cjs/extensions/forms/Form/hooks/useData.d.ts +10 -0
- package/cjs/extensions/forms/Form/hooks/useData.js +36 -0
- package/cjs/extensions/forms/Form/hooks/useData.js.map +1 -0
- package/cjs/extensions/forms/Form/index.d.ts +1 -0
- package/cjs/extensions/forms/Form/index.js +7 -0
- package/cjs/extensions/forms/Form/index.js.map +1 -1
- package/cjs/extensions/forms/Iterate/Array/Array.js +0 -4
- package/cjs/extensions/forms/Iterate/Array/Array.js.map +1 -1
- package/cjs/extensions/forms/hooks/useDataValue.js +2 -2
- package/cjs/extensions/forms/hooks/useDataValue.js.map +1 -1
- package/cjs/extensions/forms/style/dnb-forms.css +12 -11
- package/cjs/extensions/forms/style/dnb-forms.min.css +1 -1
- package/cjs/extensions/forms/types.d.ts +4 -8
- package/cjs/extensions/forms/types.js.map +1 -1
- package/cjs/shared/Eufemia.d.ts +1 -1
- package/cjs/shared/Eufemia.js +2 -2
- package/cjs/shared/Eufemia.js.map +1 -1
- package/cjs/shared/helpers/EventEmitter.d.ts +5 -0
- package/cjs/shared/helpers/EventEmitter.js.map +1 -1
- package/cjs/shared/helpers/useEventEmitter.d.ts +2 -0
- package/cjs/shared/helpers/useEventEmitter.js.map +1 -1
- package/cjs/shared/helpers/useSharedState.d.ts +15 -0
- package/cjs/shared/helpers/useSharedState.js +71 -0
- package/cjs/shared/helpers/useSharedState.js.map +1 -0
- package/cjs/style/dnb-ui-components.css +12 -11
- package/cjs/style/dnb-ui-components.min.css +1 -1
- package/cjs/style/dnb-ui-extensions.css +12 -11
- package/cjs/style/dnb-ui-extensions.min.css +1 -1
- package/cjs/style/dnb-ui-forms.css +12 -11
- package/cjs/style/dnb-ui-forms.min.css +1 -1
- package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +28 -22
- package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +1 -1
- package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.css +12 -11
- package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
- package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.css +12 -11
- package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
- package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +32 -23
- package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
- package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.css +12 -11
- package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
- package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.css +12 -11
- package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
- package/cjs/style/themes/theme-ui/ui-theme-components.css +28 -22
- package/cjs/style/themes/theme-ui/ui-theme-components.min.css +1 -1
- package/cjs/style/themes/theme-ui/ui-theme-extensions.css +12 -11
- package/cjs/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
- package/cjs/style/themes/theme-ui/ui-theme-forms.css +12 -11
- package/cjs/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
- package/components/flex/Container.js +4 -0
- package/components/flex/Container.js.map +1 -1
- package/components/flex/utils.d.ts +1 -1
- package/components/flex/utils.js +11 -1
- package/components/flex/utils.js.map +1 -1
- package/components/input-masked/MultiInputMask.d.ts +10 -2
- package/components/input-masked/MultiInputMask.js +39 -14
- package/components/input-masked/MultiInputMask.js.map +1 -1
- package/components/input-masked/hooks/useMultiInputValues.d.ts +2 -2
- package/components/input-masked/hooks/useMultiInputValues.js.map +1 -1
- package/components/number-format/NumberFormat.js +1 -1
- package/components/number-format/NumberFormat.js.map +1 -1
- package/components/toggle-button/style/themes/dnb-toggle-button-theme-sbanken.css +8 -1
- package/components/toggle-button/style/themes/dnb-toggle-button-theme-sbanken.min.css +1 -1
- package/components/toggle-button/style/themes/dnb-toggle-button-theme-sbanken.scss +6 -1
- package/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.css +4 -0
- package/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.min.css +1 -1
- package/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.scss +5 -0
- package/components/visually-hidden/VisuallyHidden.js +1 -1
- package/components/visually-hidden/VisuallyHidden.js.map +1 -1
- package/es/components/flex/Container.js +4 -0
- package/es/components/flex/Container.js.map +1 -1
- package/es/components/flex/utils.d.ts +1 -1
- package/es/components/flex/utils.js +11 -1
- package/es/components/flex/utils.js.map +1 -1
- package/es/components/input-masked/MultiInputMask.d.ts +10 -2
- package/es/components/input-masked/MultiInputMask.js +39 -13
- package/es/components/input-masked/MultiInputMask.js.map +1 -1
- package/es/components/input-masked/hooks/useMultiInputValues.d.ts +2 -2
- package/es/components/input-masked/hooks/useMultiInputValues.js.map +1 -1
- package/es/components/number-format/NumberFormat.js +1 -1
- package/es/components/number-format/NumberFormat.js.map +1 -1
- package/es/components/toggle-button/style/themes/dnb-toggle-button-theme-sbanken.css +8 -1
- package/es/components/toggle-button/style/themes/dnb-toggle-button-theme-sbanken.min.css +1 -1
- package/es/components/toggle-button/style/themes/dnb-toggle-button-theme-sbanken.scss +6 -1
- package/es/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.css +4 -0
- package/es/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.min.css +1 -1
- package/es/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.scss +5 -0
- package/es/components/visually-hidden/VisuallyHidden.js +1 -1
- package/es/components/visually-hidden/VisuallyHidden.js.map +1 -1
- package/es/extensions/forms/DataContext/Provider/Provider.d.ts +8 -4
- package/es/extensions/forms/DataContext/Provider/Provider.js +22 -4
- package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
- package/es/extensions/forms/Field/ArraySelection/ArraySelection.js +15 -15
- package/es/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
- package/es/extensions/forms/Field/ArraySelection/style/dnb-array-selection.css +12 -2
- package/es/extensions/forms/Field/ArraySelection/style/dnb-array-selection.min.css +1 -1
- package/es/extensions/forms/Field/ArraySelection/style/dnb-array-selection.scss +12 -2
- package/es/extensions/forms/Field/Date/Date.js +1 -5
- package/es/extensions/forms/Field/Date/Date.js.map +1 -1
- package/es/extensions/forms/Field/Expiry/Expiry.d.ts +1 -1
- package/es/extensions/forms/Field/Expiry/Expiry.js +20 -11
- package/es/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
- package/es/extensions/forms/Field/Number/Number.js +0 -5
- package/es/extensions/forms/Field/Number/Number.js.map +1 -1
- package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.js +4 -5
- package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
- package/es/extensions/forms/Field/Selection/Selection.d.ts +7 -1
- package/es/extensions/forms/Field/Selection/Selection.js +4 -9
- package/es/extensions/forms/Field/Selection/Selection.js.map +1 -1
- package/es/extensions/forms/Field/String/String.d.ts +0 -1
- package/es/extensions/forms/Field/String/String.js +2 -8
- package/es/extensions/forms/Field/String/String.js.map +1 -1
- package/es/extensions/forms/Field/Toggle/Toggle.js +0 -4
- package/es/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
- package/es/extensions/forms/FieldBlock/FieldBlock.d.ts +1 -1
- package/es/extensions/forms/FieldBlock/FieldBlock.js +2 -10
- package/es/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
- package/es/extensions/forms/FieldBlock/style/dnb-field-block.css +0 -9
- package/es/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
- package/es/extensions/forms/FieldBlock/style/dnb-field-block.scss +0 -11
- package/es/extensions/forms/Form/Handler/Handler.js +1 -0
- package/es/extensions/forms/Form/Handler/Handler.js.map +1 -1
- package/es/extensions/forms/Form/Visibility/Visibility.js +0 -1
- package/es/extensions/forms/Form/Visibility/Visibility.js.map +1 -1
- package/es/extensions/forms/Form/hooks/useData.d.ts +10 -0
- package/es/extensions/forms/Form/hooks/useData.js +29 -0
- package/es/extensions/forms/Form/hooks/useData.js.map +1 -0
- package/es/extensions/forms/Form/index.d.ts +1 -0
- package/es/extensions/forms/Form/index.js +1 -0
- package/es/extensions/forms/Form/index.js.map +1 -1
- package/es/extensions/forms/Iterate/Array/Array.js +0 -4
- package/es/extensions/forms/Iterate/Array/Array.js.map +1 -1
- package/es/extensions/forms/hooks/useDataValue.js +2 -2
- package/es/extensions/forms/hooks/useDataValue.js.map +1 -1
- package/es/extensions/forms/style/dnb-forms.css +12 -11
- package/es/extensions/forms/style/dnb-forms.min.css +1 -1
- package/es/extensions/forms/types.d.ts +4 -8
- package/es/extensions/forms/types.js.map +1 -1
- package/es/shared/Eufemia.d.ts +1 -1
- package/es/shared/Eufemia.js +2 -2
- package/es/shared/Eufemia.js.map +1 -1
- package/es/shared/helpers/EventEmitter.d.ts +5 -0
- package/es/shared/helpers/EventEmitter.js.map +1 -1
- package/es/shared/helpers/useEventEmitter.d.ts +2 -0
- package/es/shared/helpers/useEventEmitter.js.map +1 -1
- package/es/shared/helpers/useSharedState.d.ts +15 -0
- package/es/shared/helpers/useSharedState.js +63 -0
- package/es/shared/helpers/useSharedState.js.map +1 -0
- package/es/style/dnb-ui-components.css +12 -11
- package/es/style/dnb-ui-components.min.css +1 -1
- package/es/style/dnb-ui-extensions.css +12 -11
- package/es/style/dnb-ui-extensions.min.css +1 -1
- package/es/style/dnb-ui-forms.css +12 -11
- package/es/style/dnb-ui-forms.min.css +1 -1
- package/es/style/themes/theme-eiendom/eiendom-theme-components.css +28 -22
- package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +1 -1
- package/es/style/themes/theme-eiendom/eiendom-theme-extensions.css +12 -11
- package/es/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
- package/es/style/themes/theme-eiendom/eiendom-theme-forms.css +12 -11
- package/es/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
- package/es/style/themes/theme-sbanken/sbanken-theme-components.css +32 -23
- package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
- package/es/style/themes/theme-sbanken/sbanken-theme-extensions.css +12 -11
- package/es/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
- package/es/style/themes/theme-sbanken/sbanken-theme-forms.css +12 -11
- package/es/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
- package/es/style/themes/theme-ui/ui-theme-components.css +28 -22
- package/es/style/themes/theme-ui/ui-theme-components.min.css +1 -1
- package/es/style/themes/theme-ui/ui-theme-extensions.css +12 -11
- package/es/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
- package/es/style/themes/theme-ui/ui-theme-forms.css +12 -11
- package/es/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
- package/esm/dnb-ui-basis.min.mjs +1 -1
- package/esm/dnb-ui-components.min.mjs +1 -1
- package/esm/dnb-ui-elements.min.mjs +1 -1
- package/esm/dnb-ui-extensions.min.mjs +3 -3
- package/esm/dnb-ui-lib.min.mjs +1 -1
- package/extensions/forms/DataContext/Provider/Provider.d.ts +8 -4
- package/extensions/forms/DataContext/Provider/Provider.js +22 -4
- package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
- package/extensions/forms/Field/ArraySelection/ArraySelection.js +15 -15
- package/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
- package/extensions/forms/Field/ArraySelection/style/dnb-array-selection.css +12 -2
- package/extensions/forms/Field/ArraySelection/style/dnb-array-selection.min.css +1 -1
- package/extensions/forms/Field/ArraySelection/style/dnb-array-selection.scss +12 -2
- package/extensions/forms/Field/Date/Date.js +1 -5
- package/extensions/forms/Field/Date/Date.js.map +1 -1
- package/extensions/forms/Field/Expiry/Expiry.d.ts +1 -1
- package/extensions/forms/Field/Expiry/Expiry.js +21 -11
- package/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
- package/extensions/forms/Field/Number/Number.js +0 -5
- package/extensions/forms/Field/Number/Number.js.map +1 -1
- package/extensions/forms/Field/PhoneNumber/PhoneNumber.js +4 -5
- package/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
- package/extensions/forms/Field/Selection/Selection.d.ts +7 -1
- package/extensions/forms/Field/Selection/Selection.js +4 -9
- package/extensions/forms/Field/Selection/Selection.js.map +1 -1
- package/extensions/forms/Field/String/String.d.ts +0 -1
- package/extensions/forms/Field/String/String.js +2 -8
- package/extensions/forms/Field/String/String.js.map +1 -1
- package/extensions/forms/Field/Toggle/Toggle.js +0 -4
- package/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
- package/extensions/forms/FieldBlock/FieldBlock.d.ts +1 -1
- package/extensions/forms/FieldBlock/FieldBlock.js +2 -10
- package/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
- package/extensions/forms/FieldBlock/style/dnb-field-block.css +0 -9
- package/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
- package/extensions/forms/FieldBlock/style/dnb-field-block.scss +0 -11
- package/extensions/forms/Form/Handler/Handler.js +1 -0
- package/extensions/forms/Form/Handler/Handler.js.map +1 -1
- package/extensions/forms/Form/Visibility/Visibility.js +0 -1
- package/extensions/forms/Form/Visibility/Visibility.js.map +1 -1
- package/extensions/forms/Form/hooks/useData.d.ts +10 -0
- package/extensions/forms/Form/hooks/useData.js +30 -0
- package/extensions/forms/Form/hooks/useData.js.map +1 -0
- package/extensions/forms/Form/index.d.ts +1 -0
- package/extensions/forms/Form/index.js +1 -0
- package/extensions/forms/Form/index.js.map +1 -1
- package/extensions/forms/Iterate/Array/Array.js +0 -4
- package/extensions/forms/Iterate/Array/Array.js.map +1 -1
- package/extensions/forms/hooks/useDataValue.js +2 -2
- package/extensions/forms/hooks/useDataValue.js.map +1 -1
- package/extensions/forms/style/dnb-forms.css +12 -11
- package/extensions/forms/style/dnb-forms.min.css +1 -1
- package/extensions/forms/types.d.ts +4 -8
- package/extensions/forms/types.js.map +1 -1
- package/package.json +1 -1
- package/shared/Eufemia.d.ts +1 -1
- package/shared/Eufemia.js +2 -2
- package/shared/Eufemia.js.map +1 -1
- package/shared/helpers/EventEmitter.d.ts +5 -0
- package/shared/helpers/EventEmitter.js.map +1 -1
- package/shared/helpers/useEventEmitter.d.ts +2 -0
- package/shared/helpers/useEventEmitter.js.map +1 -1
- package/shared/helpers/useSharedState.d.ts +15 -0
- package/shared/helpers/useSharedState.js +63 -0
- package/shared/helpers/useSharedState.js.map +1 -0
- package/style/dnb-ui-components.css +12 -11
- package/style/dnb-ui-components.min.css +1 -1
- package/style/dnb-ui-extensions.css +12 -11
- package/style/dnb-ui-extensions.min.css +1 -1
- package/style/dnb-ui-forms.css +12 -11
- package/style/dnb-ui-forms.min.css +1 -1
- package/style/themes/theme-eiendom/eiendom-theme-components.css +28 -22
- package/style/themes/theme-eiendom/eiendom-theme-components.min.css +1 -1
- package/style/themes/theme-eiendom/eiendom-theme-extensions.css +12 -11
- package/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
- package/style/themes/theme-eiendom/eiendom-theme-forms.css +12 -11
- package/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
- package/style/themes/theme-sbanken/sbanken-theme-components.css +32 -23
- package/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
- package/style/themes/theme-sbanken/sbanken-theme-extensions.css +12 -11
- package/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
- package/style/themes/theme-sbanken/sbanken-theme-forms.css +12 -11
- package/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
- package/style/themes/theme-ui/ui-theme-components.css +28 -22
- package/style/themes/theme-ui/ui-theme-components.min.css +1 -1
- package/style/themes/theme-ui/ui-theme-extensions.css +12 -11
- package/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
- package/style/themes/theme-ui/ui-theme-forms.css +12 -11
- package/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
- package/umd/dnb-ui-basis.min.js +1 -1
- package/umd/dnb-ui-components.min.js +1 -1
- package/umd/dnb-ui-elements.min.js +1 -1
- package/umd/dnb-ui-extensions.min.js +2 -2
- package/umd/dnb-ui-lib.min.js +1 -1
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
4
|
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
5
5
|
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
6
|
-
const _excluded = ["className", "forId", "layout", "label", "
|
|
6
|
+
const _excluded = ["className", "forId", "layout", "label", "asFieldset", "info", "warning", "error", "disabled", "width", "contentsWidth", "size", "contentClassName", "children"];
|
|
7
7
|
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
8
8
|
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
9
9
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
@@ -21,8 +21,6 @@ function FieldBlock(props) {
|
|
|
21
21
|
forId,
|
|
22
22
|
layout = 'vertical',
|
|
23
23
|
label,
|
|
24
|
-
labelDescription,
|
|
25
|
-
labelSecondary,
|
|
26
24
|
asFieldset,
|
|
27
25
|
info,
|
|
28
26
|
warning,
|
|
@@ -112,13 +110,7 @@ function FieldBlock(props) {
|
|
|
112
110
|
className: mainClasses
|
|
113
111
|
}, rest), React.createElement("div", {
|
|
114
112
|
className: gridClasses
|
|
115
|
-
},
|
|
116
|
-
className: "dnb-forms-field-block__label"
|
|
117
|
-
}, label || labelDescription ? React.createElement(FormLabel, labelProps, label, labelDescription && React.createElement("span", {
|
|
118
|
-
className: "dnb-forms-field-block__label-description"
|
|
119
|
-
}, labelDescription)) : React.createElement(React.Fragment, null, "\xA0"), labelSecondary && React.createElement("span", {
|
|
120
|
-
className: "dnb-forms-field-block__label-secondary"
|
|
121
|
-
}, labelSecondary)) : label && React.createElement(FormLabel, labelProps, label), React.createElement("div", {
|
|
113
|
+
}, label && React.createElement(FormLabel, labelProps, label), React.createElement("div", {
|
|
122
114
|
className: classnames('dnb-forms-field-block__contents', contentClassName, contentsWidth !== undefined && `dnb-forms-field-block__contents--width-${contentsWidth}`)
|
|
123
115
|
}, children), stateStatus && React.createElement("div", {
|
|
124
116
|
className: "dnb-forms-field-block__status"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FieldBlock.js","names":["React","useMemo","useContext","useState","useCallback","classnames","Space","FormLabel","FormStatus","FormError","FieldBlockContext","findElementInChildren","FieldBlock","props","nestedFieldBlockContext","className","forId","layout","label","labelDescription","labelSecondary","asFieldset","info","warning","error","errorProp","disabled","width","contentsWidth","size","contentClassName","children","rest","_objectWithoutProperties","_excluded","fieldErrorRecord","setFieldErrorRecord","showFieldErrorRecord","setShowFieldErrorRecord","setError","identifier","existing","_objectSpread","removed","newRecord","map","_toPropertyKey","setShowError","show","errors","Object","entries","filter","length","Error","message","join","undefined","mainClasses","gridClasses","enableFieldset","useEnableFieldset","state","stateStatus","labelProps","element","space","top","bottom","createElement","Provider","value","_extends","Fragment","id","text","toString","result","count","child","_child$props","_child$type","type","Boolean","_supportsSpacingProps"],"sources":["../../../../../src/extensions/forms/FieldBlock/FieldBlock.tsx"],"sourcesContent":["import React, { useMemo, useContext, useState, useCallback } from 'react'\nimport classnames from 'classnames'\nimport { Space, FormLabel, FormStatus } from '../../../components'\nimport { FormError, ComponentProps, FieldProps } from '../types'\nimport FieldBlockContext from './FieldBlockContext'\nimport { findElementInChildren } from '../../../shared/component-helper'\nimport type { FormLabelAllProps } from '../../../components/FormLabel'\n\nexport type Props = Pick<\n FieldProps,\n | keyof ComponentProps\n | 'layout'\n | 'label'\n | 'labelDescription'\n | 'labelSecondary'\n | 'info'\n | 'warning'\n | 'error'\n | 'disabled'\n> & {\n forId?: string\n contentClassName?: string\n children: React.ReactNode\n /** Use true if you have more than one form element */\n asFieldset?: boolean\n /** Width of outer block element */\n width?: false | 'small' | 'medium' | 'large' | 'stretch'\n /** Width of contents block, while label etc can be wider if space is available */\n contentsWidth?: 'small' | 'medium' | 'large' | 'stretch'\n /** Typography size */\n size?: 'medium' | 'large'\n} & React.HTMLAttributes<HTMLDivElement>\n\nfunction FieldBlock(props: Props) {\n const nestedFieldBlockContext = useContext(FieldBlockContext)\n\n const {\n className,\n forId,\n layout = 'vertical',\n label,\n labelDescription,\n labelSecondary,\n asFieldset,\n info,\n warning,\n error: errorProp,\n disabled,\n width,\n contentsWidth,\n size,\n contentClassName,\n children,\n ...rest\n } = props\n\n const [fieldErrorRecord, setFieldErrorRecord] = useState<\n Record<string, FormError>\n >({})\n const [showFieldErrorRecord, setShowFieldErrorRecord] = useState<\n Record<string, boolean>\n >({})\n\n const setError = useCallback(\n (identifier, error) => {\n if (nestedFieldBlockContext) {\n // If this FieldBlock is inside another one, forward the call to the outer one\n nestedFieldBlockContext.setError(identifier, error)\n return\n }\n\n setFieldErrorRecord((existing) => {\n if (error) {\n return {\n ...existing,\n [identifier]: error,\n }\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { [identifier]: removed, ...newRecord } = existing\n return newRecord\n }\n })\n },\n [nestedFieldBlockContext]\n )\n\n const setShowError = useCallback(\n (identifier, show) => {\n if (nestedFieldBlockContext) {\n // If this FieldBlock is inside another one, forward the call to the outer one\n nestedFieldBlockContext.setShowError(identifier, show)\n return\n }\n\n setShowFieldErrorRecord((existing) => {\n if (show) {\n return {\n ...existing,\n [identifier]: true,\n }\n } else {\n const { [identifier]: removed, ...newRecord } = existing\n return newRecord\n }\n })\n },\n [nestedFieldBlockContext]\n )\n\n const error = useMemo(() => {\n if (errorProp) {\n return errorProp\n }\n const errors = Object.entries(fieldErrorRecord)\n .filter(([identifier]) => showFieldErrorRecord[identifier] === true)\n .map(([, error]) => error)\n return errors.length > 0\n ? new Error(errors.map((error) => error.message).join(' | '))\n : undefined\n }, [errorProp, fieldErrorRecord, showFieldErrorRecord])\n\n const mainClasses = classnames(\n 'dnb-forms-field-block',\n width !== undefined && `dnb-forms-field-block--width-${width}`,\n className\n )\n const gridClasses = classnames(\n 'dnb-forms-field-block__grid',\n `dnb-forms-field-block--layout-${layout}`\n )\n\n // A child component with a label was found, use fieldset/legend instead of div/label\n const enableFieldset = useEnableFieldset({\n label,\n asFieldset,\n children,\n nestedFieldBlockContext,\n })\n\n const state = error || warning || info\n const stateStatus = error\n ? 'error'\n : warning\n ? 'warn'\n : info\n ? 'info'\n : null\n\n const labelProps: FormLabelAllProps = {\n element: enableFieldset ? 'legend' : 'label',\n forId: enableFieldset ? undefined : forId,\n space: { top: 0, bottom: 'x-small' },\n size,\n disabled,\n }\n\n return (\n <FieldBlockContext.Provider\n value={{\n setError,\n setShowError,\n }}\n >\n <Space\n element={enableFieldset ? 'fieldset' : 'div'} // use fieldset and legend to enhance a11y\n className={mainClasses}\n {...rest}\n >\n <div className={gridClasses}>\n {labelDescription || labelSecondary ? (\n <div className=\"dnb-forms-field-block__label\">\n {label || labelDescription ? (\n <FormLabel {...labelProps}>\n {label}\n {labelDescription && (\n <span className=\"dnb-forms-field-block__label-description\">\n {labelDescription}\n </span>\n )}\n </FormLabel>\n ) : (\n <> </>\n )}\n {labelSecondary && (\n <span className=\"dnb-forms-field-block__label-secondary\">\n {labelSecondary}\n </span>\n )}\n </div>\n ) : (\n label && <FormLabel {...labelProps}>{label}</FormLabel>\n )}\n\n <div\n className={classnames(\n 'dnb-forms-field-block__contents',\n contentsWidth !== undefined &&\n `dnb-forms-field-block__contents--width-${contentsWidth}`,\n contentClassName\n )}\n >\n {children}\n </div>\n\n {stateStatus && (\n <div className=\"dnb-forms-field-block__status\">\n <FormStatus\n state={stateStatus}\n id={forId ? `${forId}-form-status` : undefined}\n text={\n error?.message ||\n (state instanceof Error && state.message) ||\n (state instanceof FormError && state.message) ||\n state?.toString()\n }\n label={label as string}\n space={{ top: 'x-small' }}\n />\n </div>\n )}\n </div>\n </Space>\n </FieldBlockContext.Provider>\n )\n}\n\nfunction useEnableFieldset({\n label,\n asFieldset,\n children,\n nestedFieldBlockContext,\n}) {\n return useMemo(() => {\n if (asFieldset === false) {\n return false\n }\n\n let result = asFieldset\n\n if (label && !result && !nestedFieldBlockContext) {\n let count = 0\n\n findElementInChildren(children, (child: React.ReactElement) => {\n if (\n child?.props?.label ||\n child?.type?.['_formElement'] === true\n ) {\n count++\n }\n if (count > 1) {\n return (result = true)\n }\n })\n }\n\n return Boolean(result)\n }, [asFieldset, children, label, nestedFieldBlockContext])\n}\n\nFieldBlock._supportsSpacingProps = true\nexport default FieldBlock\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FieldBlock.js","names":["React","useMemo","useContext","useState","useCallback","classnames","Space","FormLabel","FormStatus","FormError","FieldBlockContext","findElementInChildren","FieldBlock","props","nestedFieldBlockContext","className","forId","layout","label","asFieldset","info","warning","error","errorProp","disabled","width","contentsWidth","size","contentClassName","children","rest","_objectWithoutProperties","_excluded","fieldErrorRecord","setFieldErrorRecord","showFieldErrorRecord","setShowFieldErrorRecord","setError","identifier","existing","_objectSpread","removed","newRecord","map","_toPropertyKey","setShowError","show","errors","Object","entries","filter","length","Error","message","join","undefined","mainClasses","gridClasses","enableFieldset","useEnableFieldset","state","stateStatus","labelProps","element","space","top","bottom","createElement","Provider","value","_extends","id","text","toString","result","count","child","_child$props","_child$type","type","Boolean","_supportsSpacingProps"],"sources":["../../../../../src/extensions/forms/FieldBlock/FieldBlock.tsx"],"sourcesContent":["import React, { useMemo, useContext, useState, useCallback } from 'react'\nimport classnames from 'classnames'\nimport { Space, FormLabel, FormStatus } from '../../../components'\nimport { FormError, ComponentProps, FieldProps } from '../types'\nimport FieldBlockContext from './FieldBlockContext'\nimport { findElementInChildren } from '../../../shared/component-helper'\nimport type { FormLabelAllProps } from '../../../components/FormLabel'\n\nexport type Props = Pick<\n FieldProps,\n | keyof ComponentProps\n | 'layout'\n | 'label'\n | 'info'\n | 'warning'\n | 'error'\n | 'disabled'\n> & {\n forId?: string\n contentClassName?: string\n children: React.ReactNode\n /** Use true if you have more than one form element */\n asFieldset?: boolean\n /** Width of outer block element */\n width?: false | 'small' | 'medium' | 'large' | 'stretch'\n /** Width of contents block, while label etc can be wider if space is available */\n contentsWidth?: 'small' | 'medium' | 'large' | 'stretch'\n /** Typography size */\n size?: 'medium' | 'large'\n} & React.HTMLAttributes<HTMLDivElement>\n\nfunction FieldBlock(props: Props) {\n const nestedFieldBlockContext = useContext(FieldBlockContext)\n\n const {\n className,\n forId,\n layout = 'vertical',\n label,\n asFieldset,\n info,\n warning,\n error: errorProp,\n disabled,\n width,\n contentsWidth,\n size,\n contentClassName,\n children,\n ...rest\n } = props\n\n const [fieldErrorRecord, setFieldErrorRecord] = useState<\n Record<string, FormError>\n >({})\n const [showFieldErrorRecord, setShowFieldErrorRecord] = useState<\n Record<string, boolean>\n >({})\n\n const setError = useCallback(\n (identifier, error) => {\n if (nestedFieldBlockContext) {\n // If this FieldBlock is inside another one, forward the call to the outer one\n nestedFieldBlockContext.setError(identifier, error)\n return\n }\n\n setFieldErrorRecord((existing) => {\n if (error) {\n return {\n ...existing,\n [identifier]: error,\n }\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { [identifier]: removed, ...newRecord } = existing\n return newRecord\n }\n })\n },\n [nestedFieldBlockContext]\n )\n\n const setShowError = useCallback(\n (identifier, show) => {\n if (nestedFieldBlockContext) {\n // If this FieldBlock is inside another one, forward the call to the outer one\n nestedFieldBlockContext.setShowError(identifier, show)\n return\n }\n\n setShowFieldErrorRecord((existing) => {\n if (show) {\n return {\n ...existing,\n [identifier]: true,\n }\n } else {\n const { [identifier]: removed, ...newRecord } = existing\n return newRecord\n }\n })\n },\n [nestedFieldBlockContext]\n )\n\n const error = useMemo(() => {\n if (errorProp) {\n return errorProp\n }\n const errors = Object.entries(fieldErrorRecord)\n .filter(([identifier]) => showFieldErrorRecord[identifier] === true)\n .map(([, error]) => error)\n return errors.length > 0\n ? new Error(errors.map((error) => error.message).join(' | '))\n : undefined\n }, [errorProp, fieldErrorRecord, showFieldErrorRecord])\n\n const mainClasses = classnames(\n 'dnb-forms-field-block',\n width !== undefined && `dnb-forms-field-block--width-${width}`,\n className\n )\n const gridClasses = classnames(\n 'dnb-forms-field-block__grid',\n `dnb-forms-field-block--layout-${layout}`\n )\n\n // A child component with a label was found, use fieldset/legend instead of div/label\n const enableFieldset = useEnableFieldset({\n label,\n asFieldset,\n children,\n nestedFieldBlockContext,\n })\n\n const state = error || warning || info\n const stateStatus = error\n ? 'error'\n : warning\n ? 'warn'\n : info\n ? 'info'\n : null\n\n const labelProps: FormLabelAllProps = {\n element: enableFieldset ? 'legend' : 'label',\n forId: enableFieldset ? undefined : forId,\n space: { top: 0, bottom: 'x-small' },\n size,\n disabled,\n }\n\n return (\n <FieldBlockContext.Provider\n value={{\n setError,\n setShowError,\n }}\n >\n <Space\n element={enableFieldset ? 'fieldset' : 'div'} // use fieldset and legend to enhance a11y\n className={mainClasses}\n {...rest}\n >\n <div className={gridClasses}>\n {label && <FormLabel {...labelProps}>{label}</FormLabel>}\n\n <div\n className={classnames(\n 'dnb-forms-field-block__contents',\n contentsWidth !== undefined &&\n `dnb-forms-field-block__contents--width-${contentsWidth}`,\n contentClassName\n )}\n >\n {children}\n </div>\n\n {stateStatus && (\n <div className=\"dnb-forms-field-block__status\">\n <FormStatus\n state={stateStatus}\n id={forId ? `${forId}-form-status` : undefined}\n text={\n error?.message ||\n (state instanceof Error && state.message) ||\n (state instanceof FormError && state.message) ||\n state?.toString()\n }\n label={label as string}\n space={{ top: 'x-small' }}\n />\n </div>\n )}\n </div>\n </Space>\n </FieldBlockContext.Provider>\n )\n}\n\nfunction useEnableFieldset({\n label,\n asFieldset,\n children,\n nestedFieldBlockContext,\n}) {\n return useMemo(() => {\n if (asFieldset === false) {\n return false\n }\n\n let result = asFieldset\n\n if (label && !result && !nestedFieldBlockContext) {\n let count = 0\n\n findElementInChildren(children, (child: React.ReactElement) => {\n if (\n child?.props?.label ||\n child?.type?.['_formElement'] === true\n ) {\n count++\n }\n if (count > 1) {\n return (result = true)\n }\n })\n }\n\n return Boolean(result)\n }, [asFieldset, children, label, nestedFieldBlockContext])\n}\n\nFieldBlock._supportsSpacingProps = true\nexport default FieldBlock\n"],"mappings":"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"}
|
|
@@ -65,15 +65,6 @@ fieldset.dnb-forms-field-block:not([class*=space__left]) {
|
|
|
65
65
|
justify-content: space-between;
|
|
66
66
|
align-items: center;
|
|
67
67
|
}
|
|
68
|
-
.dnb-forms-field-block__label-description {
|
|
69
|
-
margin-left: 0.3em;
|
|
70
|
-
color: var(--color-black-55);
|
|
71
|
-
font-size: var(--font-size-small);
|
|
72
|
-
}
|
|
73
|
-
.dnb-forms-field-block__label-secondary {
|
|
74
|
-
color: var(--color-black-55);
|
|
75
|
-
font-size: var(--font-size-small);
|
|
76
|
-
}
|
|
77
68
|
.dnb-forms-field-block__status {
|
|
78
69
|
grid-area: status;
|
|
79
70
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
:root{--forms-field-width--small:5rem;--forms-field-width--medium:11rem;--forms-field-width--large:21rem}fieldset.dnb-forms-field-block{border:none;padding:0}fieldset.dnb-forms-field-block:not([class*=space__top]){margin-top:0}fieldset.dnb-forms-field-block:not([class*=space__right]){margin-right:0}fieldset.dnb-forms-field-block:not([class*=space__bottom]){margin-bottom:0}fieldset.dnb-forms-field-block:not([class*=space__left]){margin-left:0}.dnb-forms-field-block__grid{display:grid}@media screen and (max-width:40em){.dnb-forms-field-block__grid{flex-wrap:wrap}.dnb-forms-field-block__grid>.dnb-form-label{margin-bottom:.5rem;margin-top:.5rem}}.dnb-forms-field-block--layout-vertical{grid-template-areas:"label" "contents" "status";grid-template-columns:auto}.dnb-forms-field-block--layout-horizontal{grid-template-areas:"label contents" "status status";grid-template-columns:fit-content(100%) auto}.dnb-forms-field-block--width-stretch{flex-grow:1}@media screen and (min-width:30em){.dnb-forms-field-block--width-small{width:var(--forms-field-width--small)}.dnb-forms-field-block--width-medium{width:var(--forms-field-width--medium)}.dnb-forms-field-block--width-large{width:var(--forms-field-width--large)}}.dnb-forms-field-block__label{align-items:center;display:flex;flex-flow:row;grid-area:label;justify-content:space-between}.dnb-forms-field-
|
|
1
|
+
:root{--forms-field-width--small:5rem;--forms-field-width--medium:11rem;--forms-field-width--large:21rem}fieldset.dnb-forms-field-block{border:none;padding:0}fieldset.dnb-forms-field-block:not([class*=space__top]){margin-top:0}fieldset.dnb-forms-field-block:not([class*=space__right]){margin-right:0}fieldset.dnb-forms-field-block:not([class*=space__bottom]){margin-bottom:0}fieldset.dnb-forms-field-block:not([class*=space__left]){margin-left:0}.dnb-forms-field-block__grid{display:grid}@media screen and (max-width:40em){.dnb-forms-field-block__grid{flex-wrap:wrap}.dnb-forms-field-block__grid>.dnb-form-label{margin-bottom:.5rem;margin-top:.5rem}}.dnb-forms-field-block--layout-vertical{grid-template-areas:"label" "contents" "status";grid-template-columns:auto}.dnb-forms-field-block--layout-horizontal{grid-template-areas:"label contents" "status status";grid-template-columns:fit-content(100%) auto}.dnb-forms-field-block--width-stretch{flex-grow:1}@media screen and (min-width:30em){.dnb-forms-field-block--width-small{width:var(--forms-field-width--small)}.dnb-forms-field-block--width-medium{width:var(--forms-field-width--medium)}.dnb-forms-field-block--width-large{width:var(--forms-field-width--large)}}.dnb-forms-field-block__label{align-items:center;display:flex;flex-flow:row;grid-area:label;justify-content:space-between}.dnb-forms-field-block__status{grid-area:status}.dnb-forms-field-block__contents{grid-area:contents}.dnb-forms-field-block__contents--width-stretch{width:100%}@media screen and (min-width:30em){.dnb-forms-field-block__contents--width-small{width:var(--forms-field-width--small)}.dnb-forms-field-block__contents--width-medium{width:var(--forms-field-width--medium)}.dnb-forms-field-block__contents--width-large{width:var(--forms-field-width--large)}}
|
|
@@ -54,17 +54,6 @@ fieldset.dnb-forms-field-block {
|
|
|
54
54
|
align-items: center;
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
&__label-description {
|
|
58
|
-
margin-left: 0.3em;
|
|
59
|
-
color: var(--color-black-55);
|
|
60
|
-
font-size: var(--font-size-small);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
&__label-secondary {
|
|
64
|
-
color: var(--color-black-55);
|
|
65
|
-
font-size: var(--font-size-small);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
57
|
&__status {
|
|
69
58
|
grid-area: status;
|
|
70
59
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Handler.js","names":["React","Provider","FormElement","FormHandler","_ref","children","defaultData","data","schema","onChange","onPathChange","onSubmit","onSubmitRequest","scrollTopOnSubmit","sessionStorageId","autoComplete","rest","_objectWithoutProperties","_excluded","providerProps","args","createElement"],"sources":["../../../../../../src/extensions/forms/Form/Handler/Handler.tsx"],"sourcesContent":["import React from 'react'\nimport { JsonObject } from 'json-pointer'\nimport Provider, {\n Props as ProviderProps,\n} from '../../DataContext/Provider'\nimport FormElement from '../Element'\nimport type { ElementAllProps } from '../../../../elements/Element'\n\nexport type Props = Omit<\n ElementAllProps,\n 'data' | 'as' | 'autoComplete'\n> & {\n /**\n * Will enable autoComplete for all nested Field.String fields\n */\n autoComplete?: boolean\n}\n\nexport default function FormHandler<Data extends JsonObject>({\n children,\n defaultData,\n data,\n schema,\n onChange,\n onPathChange,\n onSubmit,\n onSubmitRequest,\n scrollTopOnSubmit,\n sessionStorageId,\n autoComplete,\n ...rest\n}: ProviderProps<Data> & Omit<Props, keyof ProviderProps<Data>>) {\n const providerProps = {\n defaultData,\n data,\n schema,\n onChange,\n onPathChange,\n onSubmit: (...args) => {\n if (typeof onSubmit === 'function') {\n onSubmit(...args)\n }\n },\n onSubmitRequest,\n scrollTopOnSubmit,\n sessionStorageId,\n autoComplete,\n } as Omit<ProviderProps<Data>, 'children'>\n\n return (\n <Provider {...providerProps}>\n <FormElement {...rest}>{children}</FormElement>\n </Provider>\n )\n}\n"],"mappings":";;;;AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,OAAOC,QAAQ,MAER,4BAA4B;AACnC,OAAOC,WAAW,MAAM,YAAY;AAapC,eAAe,SAASC,WAAWA,CAAAC,IAAA,EAa8B;EAAA,IAbJ;MAC3DC,QAAQ;MACRC,WAAW;MACXC,IAAI;MACJC,MAAM;MACNC,QAAQ;MACRC,YAAY;MACZC,QAAQ;MACRC,eAAe;MACfC,iBAAiB;MACjBC,gBAAgB;MAChBC;IAE4D,CAAC,GAAAX,IAAA;IAD1DY,IAAI,GAAAC,wBAAA,CAAAb,IAAA,EAAAc,SAAA;EAEP,MAAMC,aAAa,GAAG;
|
|
1
|
+
{"version":3,"file":"Handler.js","names":["React","Provider","FormElement","FormHandler","_ref","children","defaultData","data","schema","onChange","onPathChange","onSubmit","onSubmitRequest","scrollTopOnSubmit","sessionStorageId","autoComplete","rest","_objectWithoutProperties","_excluded","providerProps","id","args","createElement"],"sources":["../../../../../../src/extensions/forms/Form/Handler/Handler.tsx"],"sourcesContent":["import React from 'react'\nimport { JsonObject } from 'json-pointer'\nimport Provider, {\n Props as ProviderProps,\n} from '../../DataContext/Provider'\nimport FormElement from '../Element'\nimport type { ElementAllProps } from '../../../../elements/Element'\n\nexport type Props = Omit<\n ElementAllProps,\n 'data' | 'as' | 'autoComplete'\n> & {\n /**\n * Will enable autoComplete for all nested Field.String fields\n */\n autoComplete?: boolean\n}\n\nexport default function FormHandler<Data extends JsonObject>({\n children,\n defaultData,\n data,\n schema,\n onChange,\n onPathChange,\n onSubmit,\n onSubmitRequest,\n scrollTopOnSubmit,\n sessionStorageId,\n autoComplete,\n ...rest\n}: ProviderProps<Data> & Omit<Props, keyof ProviderProps<Data>>) {\n const providerProps = {\n id: rest.id,\n defaultData,\n data,\n schema,\n onChange,\n onPathChange,\n onSubmit: (...args) => {\n if (typeof onSubmit === 'function') {\n onSubmit(...args)\n }\n },\n onSubmitRequest,\n scrollTopOnSubmit,\n sessionStorageId,\n autoComplete,\n } as Omit<ProviderProps<Data>, 'children'>\n\n return (\n <Provider {...providerProps}>\n <FormElement {...rest}>{children}</FormElement>\n </Provider>\n )\n}\n"],"mappings":";;;;AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,OAAOC,QAAQ,MAER,4BAA4B;AACnC,OAAOC,WAAW,MAAM,YAAY;AAapC,eAAe,SAASC,WAAWA,CAAAC,IAAA,EAa8B;EAAA,IAbJ;MAC3DC,QAAQ;MACRC,WAAW;MACXC,IAAI;MACJC,MAAM;MACNC,QAAQ;MACRC,YAAY;MACZC,QAAQ;MACRC,eAAe;MACfC,iBAAiB;MACjBC,gBAAgB;MAChBC;IAE4D,CAAC,GAAAX,IAAA;IAD1DY,IAAI,GAAAC,wBAAA,CAAAb,IAAA,EAAAc,SAAA;EAEP,MAAMC,aAAa,GAAG;IACpBC,EAAE,EAAEJ,IAAI,CAACI,EAAE;IACXd,WAAW;IACXC,IAAI;IACJC,MAAM;IACNC,QAAQ;IACRC,YAAY;IACZC,QAAQ,EAAEA,CAAC,GAAGU,IAAI,KAAK;MACrB,IAAI,OAAOV,QAAQ,KAAK,UAAU,EAAE;QAClCA,QAAQ,CAAC,GAAGU,IAAI,CAAC;MACnB;IACF,CAAC;IACDT,eAAe;IACfC,iBAAiB;IACjBC,gBAAgB;IAChBC;EACF,CAA0C;EAE1C,OACEf,KAAA,CAAAsB,aAAA,CAACrB,QAAQ,EAAKkB,aAAa,EACzBnB,KAAA,CAAAsB,aAAA,CAACpB,WAAW,EAAKc,IAAI,EAAGX,QAAsB,CACtC,CAAC;AAEf"}
|
|
@@ -17,7 +17,6 @@ function Visibility({
|
|
|
17
17
|
children
|
|
18
18
|
}) {
|
|
19
19
|
const dataContext = useContext(DataContext.Context);
|
|
20
|
-
console.log('val', pointer.has(dataContext.data, pathValue) && pointer.get(dataContext.data, pathValue), whenValue);
|
|
21
20
|
if (visible === false) {
|
|
22
21
|
return null;
|
|
23
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Visibility.js","names":["React","useContext","pointer","DataContext","Visibility","visible","pathDefined","pathUndefined","pathTruthy","pathFalsy","pathTrue","pathFalse","pathValue","whenValue","inferData","children","dataContext","Context","
|
|
1
|
+
{"version":3,"file":"Visibility.js","names":["React","useContext","pointer","DataContext","Visibility","visible","pathDefined","pathUndefined","pathTruthy","pathFalsy","pathTrue","pathFalse","pathValue","whenValue","inferData","children","dataContext","Context","has","data","get","Boolean","createElement","Fragment","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Form/Visibility/Visibility.tsx"],"sourcesContent":["import React, { useContext } from 'react'\nimport pointer from 'json-pointer'\nimport * as DataContext from '../../DataContext'\n\nexport type Props = {\n visible?: boolean\n /** Given data context path must be defined to show children */\n pathDefined?: string\n /** Given data context path must be undefined to show children */\n pathUndefined?: string\n /** Given data context path must be truthy to show children */\n pathTruthy?: string\n /** Given data context path must be falsy to show children */\n pathFalsy?: string\n /** Given data context path must be true to show children */\n pathTrue?: string\n /** Given data context path must be false to show children */\n pathFalse?: string\n /** Given data context path must match, as well as the \"whenValue\" value */\n pathValue?: string\n whenValue?: unknown\n /** Infer visibility calling given derivative function with the whole data set. Should return true/false for visibility. */\n inferData?: (data: unknown) => boolean\n children: React.ReactNode\n}\n\nfunction Visibility({\n visible,\n pathDefined,\n pathUndefined,\n pathTruthy,\n pathFalsy,\n pathTrue,\n pathFalse,\n pathValue,\n whenValue,\n inferData,\n children,\n}: Props) {\n const dataContext = useContext(DataContext.Context)\n\n if (visible === false) {\n return null\n }\n\n if (pathDefined && !pointer.has(dataContext.data, pathDefined)) {\n return null\n }\n if (pathUndefined && pointer.has(dataContext.data, pathUndefined)) {\n return null\n }\n\n if (\n pathTruthy &&\n (!pointer.has(dataContext.data, pathTruthy) ||\n !pointer.get(dataContext.data, pathTruthy))\n ) {\n return null\n }\n if (\n pathFalsy &&\n pointer.has(dataContext.data, pathFalsy) &&\n Boolean(pointer.get(dataContext.data, pathFalsy))\n ) {\n return null\n }\n\n if (\n pathTrue &&\n (!pointer.has(dataContext.data, pathTrue) ||\n pointer.get(dataContext.data, pathTrue) !== true)\n ) {\n return null\n }\n if (\n pathFalse &&\n (!pointer.has(dataContext.data, pathFalse) ||\n pointer.get(dataContext.data, pathFalse) !== false)\n ) {\n return null\n }\n\n if (\n pathValue &&\n !(\n pointer.has(dataContext.data, pathValue) &&\n pointer.get(dataContext.data, pathValue) === whenValue\n )\n ) {\n return null\n }\n\n if (inferData && !inferData(dataContext.data)) {\n return null\n }\n\n return <>{children}</>\n}\n\nVisibility._supportsSpacingProps = 'children'\nexport default Visibility\n"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,UAAU,QAAQ,OAAO;AACzC,OAAOC,OAAO,MAAM,cAAc;AAClC,OAAO,KAAKC,WAAW,MAAM,mBAAmB;AAwBhD,SAASC,UAAUA,CAAC;EAClBC,OAAO;EACPC,WAAW;EACXC,aAAa;EACbC,UAAU;EACVC,SAAS;EACTC,QAAQ;EACRC,SAAS;EACTC,SAAS;EACTC,SAAS;EACTC,SAAS;EACTC;AACK,CAAC,EAAE;EACR,MAAMC,WAAW,GAAGf,UAAU,CAACE,WAAW,CAACc,OAAO,CAAC;EAEnD,IAAIZ,OAAO,KAAK,KAAK,EAAE;IACrB,OAAO,IAAI;EACb;EAEA,IAAIC,WAAW,IAAI,CAACJ,OAAO,CAACgB,GAAG,CAACF,WAAW,CAACG,IAAI,EAAEb,WAAW,CAAC,EAAE;IAC9D,OAAO,IAAI;EACb;EACA,IAAIC,aAAa,IAAIL,OAAO,CAACgB,GAAG,CAACF,WAAW,CAACG,IAAI,EAAEZ,aAAa,CAAC,EAAE;IACjE,OAAO,IAAI;EACb;EAEA,IACEC,UAAU,KACT,CAACN,OAAO,CAACgB,GAAG,CAACF,WAAW,CAACG,IAAI,EAAEX,UAAU,CAAC,IACzC,CAACN,OAAO,CAACkB,GAAG,CAACJ,WAAW,CAACG,IAAI,EAAEX,UAAU,CAAC,CAAC,EAC7C;IACA,OAAO,IAAI;EACb;EACA,IACEC,SAAS,IACTP,OAAO,CAACgB,GAAG,CAACF,WAAW,CAACG,IAAI,EAAEV,SAAS,CAAC,IACxCY,OAAO,CAACnB,OAAO,CAACkB,GAAG,CAACJ,WAAW,CAACG,IAAI,EAAEV,SAAS,CAAC,CAAC,EACjD;IACA,OAAO,IAAI;EACb;EAEA,IACEC,QAAQ,KACP,CAACR,OAAO,CAACgB,GAAG,CAACF,WAAW,CAACG,IAAI,EAAET,QAAQ,CAAC,IACvCR,OAAO,CAACkB,GAAG,CAACJ,WAAW,CAACG,IAAI,EAAET,QAAQ,CAAC,KAAK,IAAI,CAAC,EACnD;IACA,OAAO,IAAI;EACb;EACA,IACEC,SAAS,KACR,CAACT,OAAO,CAACgB,GAAG,CAACF,WAAW,CAACG,IAAI,EAAER,SAAS,CAAC,IACxCT,OAAO,CAACkB,GAAG,CAACJ,WAAW,CAACG,IAAI,EAAER,SAAS,CAAC,KAAK,KAAK,CAAC,EACrD;IACA,OAAO,IAAI;EACb;EAEA,IACEC,SAAS,IACT,EACEV,OAAO,CAACgB,GAAG,CAACF,WAAW,CAACG,IAAI,EAAEP,SAAS,CAAC,IACxCV,OAAO,CAACkB,GAAG,CAACJ,WAAW,CAACG,IAAI,EAAEP,SAAS,CAAC,KAAKC,SAAS,CACvD,EACD;IACA,OAAO,IAAI;EACb;EAEA,IAAIC,SAAS,IAAI,CAACA,SAAS,CAACE,WAAW,CAACG,IAAI,CAAC,EAAE;IAC7C,OAAO,IAAI;EACb;EAEA,OAAOnB,KAAA,CAAAsB,aAAA,CAAAtB,KAAA,CAAAuB,QAAA,QAAGR,QAAW,CAAC;AACxB;AAEAX,UAAU,CAACoB,qBAAqB,GAAG,UAAU;AAC7C,eAAepB,UAAU"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Path } from '../../DataContext/Provider';
|
|
2
|
+
type PathImpl<T, P extends string> = P extends `${infer Key}/${infer Rest}` ? Key extends keyof T ? Rest extends '' ? T[Key] : PathImpl<T[Key], Rest> : never : T[P & keyof T];
|
|
3
|
+
type PathType<T, P extends string> = P extends `/${infer Rest}` ? PathImpl<T, Rest> : never;
|
|
4
|
+
type UseDataReturnUpdate<Data> = <P extends Path>(path: P, fn: (value: PathType<Data, P>) => unknown) => void;
|
|
5
|
+
type UseDataReturn<Data> = {
|
|
6
|
+
data: Data;
|
|
7
|
+
update: UseDataReturnUpdate<Data>;
|
|
8
|
+
};
|
|
9
|
+
export default function useData<Data>(id: string, data?: Data): UseDataReturn<Data>;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { useCallback, useEffect, useRef } from 'react';
|
|
4
|
+
import pointer from 'json-pointer';
|
|
5
|
+
import { useSharedState } from '../../../../shared/helpers/useSharedState';
|
|
6
|
+
export default function useData(id, data = undefined) {
|
|
7
|
+
const initialDataRef = useRef(data);
|
|
8
|
+
const sharedState = useSharedState(id, data);
|
|
9
|
+
const updatePath = useCallback((path, fn) => {
|
|
10
|
+
var _sharedState$update;
|
|
11
|
+
const existingData = sharedState.data || {};
|
|
12
|
+
const existingValue = pointer.has(existingData, path) ? pointer.get(existingData, path) : undefined;
|
|
13
|
+
const newValue = fn(existingValue);
|
|
14
|
+
pointer.set(existingData, path, newValue);
|
|
15
|
+
(_sharedState$update = sharedState.update) === null || _sharedState$update === void 0 ? void 0 : _sharedState$update.call(sharedState, existingData);
|
|
16
|
+
}, [sharedState]);
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
if (data && data !== initialDataRef.current) {
|
|
19
|
+
var _sharedState$update2;
|
|
20
|
+
initialDataRef.current = data;
|
|
21
|
+
(_sharedState$update2 = sharedState.update) === null || _sharedState$update2 === void 0 ? void 0 : _sharedState$update2.call(sharedState, data);
|
|
22
|
+
}
|
|
23
|
+
}, [data, sharedState]);
|
|
24
|
+
return {
|
|
25
|
+
data: sharedState.data,
|
|
26
|
+
update: updatePath
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=useData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useData.js","names":["useCallback","useEffect","useRef","pointer","useSharedState","useData","id","data","undefined","initialDataRef","sharedState","updatePath","path","fn","_sharedState$update","existingData","existingValue","has","get","newValue","set","update","call","current","_sharedState$update2"],"sources":["../../../../../../src/extensions/forms/Form/hooks/useData.tsx"],"sourcesContent":["import { useCallback, useEffect, useRef } from 'react'\nimport pointer from 'json-pointer'\nimport { useSharedState } from '../../../../shared/helpers/useSharedState'\nimport type { Path } from '../../DataContext/Provider'\n\ntype PathImpl<T, P extends string> = P extends `${infer Key}/${infer Rest}`\n ? Key extends keyof T\n ? Rest extends ''\n ? T[Key]\n : PathImpl<T[Key], Rest>\n : never\n : T[P & keyof T]\n\ntype PathType<T, P extends string> = P extends `/${infer Rest}`\n ? PathImpl<T, Rest>\n : never\n\ntype UseDataReturnUpdate<Data> = <P extends Path>(\n path: P,\n fn: (value: PathType<Data, P>) => unknown\n) => void\n\ntype UseDataReturn<Data> = {\n data: Data\n update: UseDataReturnUpdate<Data>\n}\n\nexport default function useData<Data>(\n id: string,\n data: Data = undefined\n): UseDataReturn<Data> {\n const initialDataRef = useRef(data)\n const sharedState = useSharedState<Data>(id, data)\n\n const updatePath = useCallback<UseDataReturnUpdate<Data>>(\n (path, fn) => {\n const existingData = sharedState.data || ({} as Data)\n const existingValue = pointer.has(existingData, path)\n ? pointer.get(existingData, path)\n : undefined\n\n // get new value\n const newValue = fn(existingValue)\n\n // update existing data\n pointer.set(existingData, path, newValue)\n\n // update provider\n sharedState.update?.(existingData)\n },\n [sharedState]\n )\n\n // when initial data changes, update the shared state\n useEffect(() => {\n if (data && data !== initialDataRef.current) {\n initialDataRef.current = data\n sharedState.update?.(data)\n }\n }, [data, sharedState])\n\n return { data: sharedState.data, update: updatePath }\n}\n"],"mappings":";;AAAA,SAASA,WAAW,EAAEC,SAAS,EAAEC,MAAM,QAAQ,OAAO;AACtD,OAAOC,OAAO,MAAM,cAAc;AAClC,SAASC,cAAc,QAAQ,2CAA2C;AAyB1E,eAAe,SAASC,OAAOA,CAC7BC,EAAU,EACVC,IAAU,GAAGC,SAAS,EACD;EACrB,MAAMC,cAAc,GAAGP,MAAM,CAACK,IAAI,CAAC;EACnC,MAAMG,WAAW,GAAGN,cAAc,CAAOE,EAAE,EAAEC,IAAI,CAAC;EAElD,MAAMI,UAAU,GAAGX,WAAW,CAC5B,CAACY,IAAI,EAAEC,EAAE,KAAK;IAAA,IAAAC,mBAAA;IACZ,MAAMC,YAAY,GAAGL,WAAW,CAACH,IAAI,IAAK,CAAC,CAAU;IACrD,MAAMS,aAAa,GAAGb,OAAO,CAACc,GAAG,CAACF,YAAY,EAAEH,IAAI,CAAC,GACjDT,OAAO,CAACe,GAAG,CAACH,YAAY,EAAEH,IAAI,CAAC,GAC/BJ,SAAS;IAGb,MAAMW,QAAQ,GAAGN,EAAE,CAACG,aAAa,CAAC;IAGlCb,OAAO,CAACiB,GAAG,CAACL,YAAY,EAAEH,IAAI,EAAEO,QAAQ,CAAC;IAGzC,CAAAL,mBAAA,GAAAJ,WAAW,CAACW,MAAM,cAAAP,mBAAA,uBAAlBA,mBAAA,CAAAQ,IAAA,CAAAZ,WAAW,EAAUK,YAAY,CAAC;EACpC,CAAC,EACD,CAACL,WAAW,CACd,CAAC;EAGDT,SAAS,CAAC,MAAM;IACd,IAAIM,IAAI,IAAIA,IAAI,KAAKE,cAAc,CAACc,OAAO,EAAE;MAAA,IAAAC,oBAAA;MAC3Cf,cAAc,CAACc,OAAO,GAAGhB,IAAI;MAC7B,CAAAiB,oBAAA,GAAAd,WAAW,CAACW,MAAM,cAAAG,oBAAA,uBAAlBA,oBAAA,CAAAF,IAAA,CAAAZ,WAAW,EAAUH,IAAI,CAAC;IAC5B;EACF,CAAC,EAAE,CAACA,IAAI,EAAEG,WAAW,CAAC,CAAC;EAEvB,OAAO;IAAEH,IAAI,EAAEG,WAAW,CAACH,IAAI;IAAEc,MAAM,EAAEV;EAAW,CAAC;AACvD"}
|
|
@@ -5,3 +5,4 @@ export { default as ButtonRow } from './ButtonRow';
|
|
|
5
5
|
export { default as MainHeading } from './MainHeading';
|
|
6
6
|
export { default as SubHeading } from './SubHeading';
|
|
7
7
|
export { default as Visibility } from './Visibility';
|
|
8
|
+
export { default as useData } from './hooks/useData';
|
|
@@ -5,4 +5,5 @@ export { default as ButtonRow } from './ButtonRow';
|
|
|
5
5
|
export { default as MainHeading } from './MainHeading';
|
|
6
6
|
export { default as SubHeading } from './SubHeading';
|
|
7
7
|
export { default as Visibility } from './Visibility';
|
|
8
|
+
export { default as useData } from './hooks/useData';
|
|
8
9
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["default","Handler","Element","SubmitButton","ButtonRow","MainHeading","SubHeading","Visibility"],"sources":["../../../../../src/extensions/forms/Form/index.ts"],"sourcesContent":["export { default as Handler } from './Handler'\nexport { default as Element } from './Element'\nexport { default as SubmitButton } from './SubmitButton'\nexport { default as ButtonRow } from './ButtonRow'\nexport { default as MainHeading } from './MainHeading'\nexport { default as SubHeading } from './SubHeading'\nexport { default as Visibility } from './Visibility'\n"],"mappings":"AAAA,SAASA,OAAO,IAAIC,OAAO,QAAQ,WAAW;AAC9C,SAASD,OAAO,IAAIE,OAAO,QAAQ,WAAW;AAC9C,SAASF,OAAO,IAAIG,YAAY,QAAQ,gBAAgB;AACxD,SAASH,OAAO,IAAII,SAAS,QAAQ,aAAa;AAClD,SAASJ,OAAO,IAAIK,WAAW,QAAQ,eAAe;AACtD,SAASL,OAAO,IAAIM,UAAU,QAAQ,cAAc;AACpD,SAASN,OAAO,IAAIO,UAAU,QAAQ,cAAc"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["default","Handler","Element","SubmitButton","ButtonRow","MainHeading","SubHeading","Visibility","useData"],"sources":["../../../../../src/extensions/forms/Form/index.ts"],"sourcesContent":["export { default as Handler } from './Handler'\nexport { default as Element } from './Element'\nexport { default as SubmitButton } from './SubmitButton'\nexport { default as ButtonRow } from './ButtonRow'\nexport { default as MainHeading } from './MainHeading'\nexport { default as SubHeading } from './SubHeading'\nexport { default as Visibility } from './Visibility'\nexport { default as useData } from './hooks/useData'\n"],"mappings":"AAAA,SAASA,OAAO,IAAIC,OAAO,QAAQ,WAAW;AAC9C,SAASD,OAAO,IAAIE,OAAO,QAAQ,WAAW;AAC9C,SAASF,OAAO,IAAIG,YAAY,QAAQ,gBAAgB;AACxD,SAASH,OAAO,IAAII,SAAS,QAAQ,aAAa;AAClD,SAASJ,OAAO,IAAIK,WAAW,QAAQ,eAAe;AACtD,SAASL,OAAO,IAAIM,UAAU,QAAQ,cAAc;AACpD,SAASN,OAAO,IAAIO,UAAU,QAAQ,cAAc;AACpD,SAASP,OAAO,IAAIQ,OAAO,QAAQ,iBAAiB"}
|
|
@@ -14,8 +14,6 @@ function ArrayComponent(props) {
|
|
|
14
14
|
layout = 'vertical',
|
|
15
15
|
placeholder,
|
|
16
16
|
label,
|
|
17
|
-
labelDescription,
|
|
18
|
-
labelSecondary,
|
|
19
17
|
path,
|
|
20
18
|
value: arrayValue,
|
|
21
19
|
info,
|
|
@@ -48,8 +46,6 @@ function ArrayComponent(props) {
|
|
|
48
46
|
className: classnames('dnb-forms-field-number', className),
|
|
49
47
|
layout: layout,
|
|
50
48
|
label: label,
|
|
51
|
-
labelDescription: labelDescription,
|
|
52
|
-
labelSecondary: labelSecondary,
|
|
53
49
|
info: info,
|
|
54
50
|
warning: warning,
|
|
55
51
|
error: error,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Array.js","names":["React","useMemo","useCallback","classnames","pointer","IterateElementContext","FieldBlock","useDataValue","pickSpacingProps","pickFlexContainerProps","Flex","ArrayComponent","props","className","layout","placeholder","label","
|
|
1
|
+
{"version":3,"file":"Array.js","names":["React","useMemo","useCallback","classnames","pointer","IterateElementContext","FieldBlock","useDataValue","pickSpacingProps","pickFlexContainerProps","Flex","ArrayComponent","props","className","layout","placeholder","label","path","value","arrayValue","info","warning","error","emptyValue","width","handleChange","children","elementData","map","elementValue","elementIndex","handleElementChange","newArrayValue","structuredClone","set","handleRemoveElement","splice","handlePush","element","createElement","_extends","contentsWidth","undefined","Container","spacing","Provider","key","index","handleRemove","Array","isArray","childElement","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Iterate/Array/Array.tsx"],"sourcesContent":["import React, { useMemo, useCallback } from 'react'\nimport classnames from 'classnames'\nimport pointer from 'json-pointer'\nimport IterateElementContext from '../IterateElementContext'\nimport FieldBlock, { Props as FieldBlockProps } from '../../FieldBlock'\nimport { useDataValue } from '../../hooks'\nimport { FieldProps, FieldHelpProps } from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport {\n BasicProps as FlexContainerProps,\n pickFlexContainerProps,\n} from '../../../../components/flex/Container'\nimport Flex from '../../../../components/flex/Flex'\n\ninterface ErrorMessages {\n required?: string\n schema?: string\n}\n\nexport type Props = FieldHelpProps &\n FieldProps<unknown[], undefined, ErrorMessages> &\n Omit<FieldBlockProps, 'children'> &\n Omit<FlexContainerProps, 'children' | 'width'> & {\n children:\n | React.ReactNode\n | ((value: any, index: number) => React.ReactNode)\n | Array<\n | React.ReactNode\n | ((value: any, index: number) => React.ReactNode)\n >\n }\n\nfunction ArrayComponent(props: Props) {\n const {\n className,\n layout = 'vertical',\n placeholder,\n label,\n path,\n value: arrayValue,\n info,\n warning,\n error,\n emptyValue,\n width,\n handleChange,\n children,\n } = useDataValue(props)\n\n const elementData: {\n elementValue: unknown\n handleElementChange: (path: string, value: unknown) => void\n handleRemoveElement: () => void\n }[] = useMemo(() => {\n return (arrayValue ?? []).map((elementValue, elementIndex) => ({\n elementValue,\n handleElementChange: (path, value) => {\n const newArrayValue = structuredClone(arrayValue)\n pointer.set(newArrayValue, path, value)\n handleChange?.(newArrayValue)\n },\n handleRemoveElement: () => {\n const newArrayValue = structuredClone(arrayValue)\n newArrayValue.splice(elementIndex, 1)\n handleChange?.(newArrayValue)\n },\n }))\n }, [arrayValue, handleChange])\n\n const handlePush = useCallback(\n (element: unknown) => {\n handleChange([...(arrayValue ?? []), element])\n },\n [arrayValue, handleChange]\n )\n\n return (\n <FieldBlock\n className={classnames('dnb-forms-field-number', className)}\n layout={layout}\n label={label}\n info={info}\n warning={warning}\n error={error}\n width={width}\n contentsWidth={width !== false ? width : undefined}\n {...pickSpacingProps(props)}\n >\n <Flex.Container\n {...pickFlexContainerProps(props as FlexContainerProps, {\n spacing: 'small',\n })}\n >\n {arrayValue === emptyValue ? (\n <em>{placeholder}</em>\n ) : (\n elementData.map(\n (\n { elementValue, handleElementChange, handleRemoveElement },\n elementIndex\n ) => {\n return (\n <IterateElementContext.Provider\n key={`element-${elementIndex}`}\n value={{\n index: elementIndex,\n value: elementValue,\n path,\n handleChange: handleElementChange,\n handleRemove: handleRemoveElement,\n handlePush,\n }}\n >\n {Array.isArray(children)\n ? children.map((childElement) =>\n typeof childElement === 'function'\n ? childElement(elementValue, elementIndex)\n : childElement\n )\n : typeof children === 'function'\n ? children(elementValue, elementIndex)\n : children}\n </IterateElementContext.Provider>\n )\n }\n )\n )}\n </Flex.Container>\n </FieldBlock>\n )\n}\n\nArrayComponent._supportsSpacingProps = true\nexport default ArrayComponent\n"],"mappings":"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"}
|
|
@@ -110,7 +110,7 @@ export default function useDataValue(props) {
|
|
|
110
110
|
return pointer.has(dataContext.data, path) ? pointer.get(dataContext.data, path) : undefined;
|
|
111
111
|
}
|
|
112
112
|
return undefined;
|
|
113
|
-
}, [props.value,
|
|
113
|
+
}, [props.value, inIterate, itemPath, dataContext.data, path, iterateElementValue]);
|
|
114
114
|
const valueRef = useRef(externalValue);
|
|
115
115
|
const changedRef = useRef(false);
|
|
116
116
|
const hasFocusRef = useRef(false);
|
|
@@ -221,7 +221,7 @@ export default function useDataValue(props) {
|
|
|
221
221
|
}
|
|
222
222
|
}, [dataContext.showAllErrors, showError]);
|
|
223
223
|
useEffect(() => {
|
|
224
|
-
if (path && props.value) {
|
|
224
|
+
if (path && typeof props.value !== 'undefined') {
|
|
225
225
|
const hasValue = pointer.has(dataContext.data, path);
|
|
226
226
|
const value = hasValue ? pointer.get(dataContext.data, path) : undefined;
|
|
227
227
|
if (!hasValue || props.value !== value && valueRef.current !== value) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDataValue.js","names":["useRef","useEffect","useContext","useCallback","useMemo","useReducer","pointer","errorChanged","ajv","ajvErrorsToOneFormError","FormError","Context","FieldBlockContext","IterateElementContext","useMountEffect","useUpdateEffect","useProcessManager","useId","useDataValue","props","_ref","_props$autoComplete","_props$path","path","itemPath","emptyValue","required","error","errorProp","errorMessages","onFocus","onBlur","onChange","onBlurValidator","validator","schema","validateInitially","validateUnchanged","continuousValidation","toInput","value","fromInput","toEvent","transformValue","fromExternal","validateRequired","res","undefined","forceUpdate","startProcess","id","dataContext","fieldBlockContext","iterateElementContext","transformers","handlePathChange","dataContextHandlePathChange","updateDataValue","dataContextUpdateDataValue","setValueWithError","dataContextSetValueWithError","errors","dataContextErrors","dataContextError","inFieldBlock","Boolean","setError","setFieldBlockError","setShowError","setShowFieldBlockError","inIterate","index","iterateElementIndex","iterateElementValue","handleChange","handleIterateElementChange","substring","Error","identifier","externalValue","current","has","get","data","capitalize","valueRef","changedRef","hasFocusRef","showErrorInitially","localErrorRef","contextErrorRef","showErrorRef","errorMessagesRef","validatorRef","schemaValidatorRef","compile","showError","hideError","prepareError","_errorMessagesRef$cur","_error$messageValues","message","validationRule","messageWithValues","Object","entries","messageValues","reduce","key","replace","persistErrorState","errorArg","clearErrorState","validateValue","isProcessActive","requiredError","isChanged","_validatorRef$current","call","showAllErrors","hasValue","handleError","setHasFocus","hasFocus","valueOverride","Promise","resolve","then","updateValue","newValue","argFromInput","additionalArgs","currentValue","apply","iterateValuePath","handleFocus","handleBlur","handleMountField","handleUnMountField","_objectSpread","autoComplete","name","hasError"],"sources":["../../../../../src/extensions/forms/hooks/useDataValue.ts"],"sourcesContent":["import {\n useRef,\n useEffect,\n useContext,\n useCallback,\n useMemo,\n useReducer,\n} from 'react'\nimport pointer from 'json-pointer'\nimport { ValidateFunction } from 'ajv'\nimport { errorChanged } from '../utils'\nimport ajv, { ajvErrorsToOneFormError } from '../utils/ajv'\nimport { FormError, FieldProps, AdditionalEventArgs } from '../types'\nimport { Context, ContextState } from '../DataContext'\nimport FieldBlockContext from '../FieldBlock/FieldBlockContext'\nimport IterateElementContext from '../Iterate/IterateElementContext'\nimport useMountEffect from './useMountEffect'\nimport useUpdateEffect from './useUpdateEffect'\nimport useProcessManager from './useProcessManager'\nimport useId from './useId'\n\ninterface ReturnAdditional<Value> {\n id: string\n value: Value\n error: Error | FormError | undefined\n hasError: boolean\n dataContext: ContextState\n setHasFocus: (hasFocus: boolean, valueOverride?: unknown) => void\n handleFocus: () => void\n handleBlur: () => void\n handleChange: FieldProps<unknown>['onChange']\n updateValue: (value: Value) => void\n forceUpdate: () => void\n}\n\nexport default function useDataValue<\n Value = unknown,\n Props extends FieldProps<Value> = FieldProps<Value>,\n>(props: Props): Props & ReturnAdditional<Value> {\n const {\n path,\n itemPath,\n emptyValue,\n required,\n error: errorProp,\n errorMessages,\n onFocus,\n onBlur,\n onChange,\n onBlurValidator,\n validator,\n schema,\n validateInitially,\n validateUnchanged,\n continuousValidation,\n toInput = (value: Value) => value,\n fromInput = (value: Value) => value,\n toEvent = (value: Value) => value,\n transformValue = (value: Value) => value,\n fromExternal = (value: Value) => value,\n validateRequired = (value: Value, { emptyValue, required, error }) => {\n const res =\n required &&\n (value === emptyValue ||\n (typeof emptyValue === 'undefined' && value === ''))\n ? error\n : undefined\n return res\n },\n } = props\n\n const [, forceUpdate] = useReducer(() => ({}), {})\n const { startProcess } = useProcessManager()\n const id = useId(props.id)\n const dataContext = useContext(Context)\n const fieldBlockContext = useContext(FieldBlockContext)\n const iterateElementContext = useContext(IterateElementContext)\n\n const transformers = useRef({\n toInput,\n fromInput,\n toEvent,\n fromExternal,\n transformValue,\n validateRequired,\n })\n\n const {\n handlePathChange: dataContextHandlePathChange,\n updateDataValue: dataContextUpdateDataValue,\n setValueWithError: dataContextSetValueWithError,\n errors: dataContextErrors,\n } = dataContext ?? {}\n const dataContextError = path ? dataContextErrors?.[path] : undefined\n const inFieldBlock = Boolean(fieldBlockContext)\n const {\n setError: setFieldBlockError,\n setShowError: setShowFieldBlockError,\n } = fieldBlockContext ?? {}\n const inIterate = Boolean(iterateElementContext)\n const {\n index: iterateElementIndex,\n value: iterateElementValue,\n handleChange: handleIterateElementChange,\n } = iterateElementContext ?? {}\n\n if (path && path.substring(0, 1) !== '/') {\n throw new Error(\n 'Invalid path. Data value path JSON Pointers must be from root (starting with a /).'\n )\n }\n if (itemPath && itemPath.substring(0, 1) !== '/') {\n throw new Error(\n 'Invalid itemPath. Item pathJSON Pointers must be from root of iterate element (starting with a /).'\n )\n }\n if (itemPath && !iterateElementContext) {\n throw new Error(\n 'itemPath cannot be used when not inside an iterate element context. Wrap the component in an Iterate.Loop.'\n )\n }\n\n const identifier = useMemo(() => {\n // Identifier is used is registries of multiple fields, like in the DataContext keeping track of errors\n return path ?? id\n }, [path, id])\n\n const externalValue = useMemo(() => {\n if (props.value !== undefined) {\n // Value-prop sent directly to the field has highest priority, overriding any surrounding source\n return transformers.current.fromExternal(props.value)\n }\n\n if (inIterate && itemPath) {\n // This field is inside an iterate, and has a pointer from the base of the element being iterated\n if (itemPath === '/') {\n return iterateElementValue\n }\n\n return pointer.has(iterateElementValue, itemPath)\n ? pointer.get(iterateElementValue, itemPath)\n : undefined\n }\n\n if (dataContext.data && path) {\n // There is a surrounding data context and a path for where in the source to find the data\n if (path === '/') {\n return dataContext.data\n }\n\n return pointer.has(dataContext.data, path)\n ? pointer.get(dataContext.data, path)\n : undefined\n }\n return undefined\n }, [\n props.value,\n props.capitalize,\n inIterate,\n itemPath,\n dataContext.data,\n path,\n iterateElementValue,\n ])\n\n // Many variables are kept in refs to avoid triggering unnecessary update loops because updates using\n // useEffect depend on them (like the external `value`)\n\n // Hold an internal copy of the input value in case the input component is used uncontrolled,\n // and to handle errors in Eufemia on components that does not take updated callback functions into account.\n const valueRef = useRef<Value>(externalValue)\n const changedRef = useRef<boolean>(false)\n const hasFocusRef = useRef<boolean>(false)\n\n // Error handling\n // - Should errors received through validation be shown initially. Assume that providing a direct prop to\n // the component means it is supposed to be shown initially.\n const showErrorInitially = validateInitially || errorProp\n // - Local errors are errors based on validation instructions received by\n const localErrorRef = useRef<Error | FormError | undefined>()\n // - Context errors are from outer contexts, like validation for this field as part of the whole data set\n const contextErrorRef = useRef<Error | FormError | undefined>(\n dataContextError\n )\n\n const showErrorRef = useRef<boolean>(Boolean(showErrorInitially))\n const errorMessagesRef = useRef(errorMessages)\n useEffect(() => {\n errorMessagesRef.current = errorMessages\n }, [errorMessages])\n const validatorRef = useRef(validator)\n useEffect(() => {\n validatorRef.current = validator\n }, [validator])\n\n const schemaValidatorRef = useRef<ValidateFunction>(\n schema ? ajv.compile(schema) : undefined\n )\n\n const showError = useCallback(() => {\n showErrorRef.current = true\n setShowFieldBlockError?.(path ?? id, true)\n }, [path, id, setShowFieldBlockError])\n\n const hideError = useCallback(() => {\n showErrorRef.current = false\n setShowFieldBlockError?.(path ?? id, false)\n }, [path, id, setShowFieldBlockError])\n\n /**\n * Prepare error from validation logic with correct error messages based on props\n */\n const prepareError = useCallback(\n (error: Error | FormError | undefined): FormError | undefined => {\n if (error === undefined) {\n return\n }\n\n if (error instanceof FormError) {\n const message =\n (typeof error.validationRule === 'string' &&\n errorMessagesRef.current?.[error.validationRule]) ||\n error.message\n\n const messageWithValues = Object.entries(\n error.messageValues ?? {}\n ).reduce((message, [key, value]) => {\n return message.replace(`{${key}}`, value)\n }, message)\n\n return new FormError(messageWithValues)\n }\n\n return error\n },\n []\n )\n\n /**\n * Based on validation, update error state, locally and relevant surrounding contexts\n */\n const persistErrorState = useCallback(\n (errorArg: FormError | undefined) => {\n const error = prepareError(errorArg)\n\n if (!errorChanged(error, localErrorRef.current)) {\n // In case different triggers lead to validation with no changes in the result (like still no error, or the same error),\n // avoid unnecessary re-renders by letting the old error object stay in the state and skip re-rendering.\n return\n }\n\n localErrorRef.current = error\n\n // Tell the data context about the error, so it can stop the user from submitting the form until the error has been fixed\n dataContextSetValueWithError?.(identifier, Boolean(error))\n\n setFieldBlockError?.(path ?? id, error)\n forceUpdate()\n },\n [\n path,\n identifier,\n id,\n prepareError,\n dataContextSetValueWithError,\n setFieldBlockError,\n forceUpdate,\n ]\n )\n\n const clearErrorState = useCallback(\n () => persistErrorState(undefined),\n [persistErrorState]\n )\n\n /**\n * Validate the current state value by provided validator instructions\n */\n const validateValue = useCallback(async () => {\n const isProcessActive = startProcess()\n\n try {\n // Validate required\n const requiredError = transformers.current.validateRequired(\n valueRef.current,\n {\n emptyValue,\n required,\n isChanged: changedRef.current,\n error: new FormError('The value is required', {\n validationRule: 'required',\n }),\n }\n )\n if (requiredError instanceof Error) {\n throw requiredError\n }\n\n // Validate by provided JSON Schema for this value\n if (\n schemaValidatorRef.current &&\n valueRef.current !== undefined &&\n !schemaValidatorRef.current(valueRef.current)\n ) {\n const error = ajvErrorsToOneFormError(\n schemaValidatorRef.current.errors\n )\n throw error\n }\n\n // Validate by provided derivative validator\n if (validatorRef.current) {\n const res = await validatorRef.current?.(\n valueRef.current,\n errorMessagesRef.current\n )\n if (res instanceof Error) {\n throw res\n }\n }\n\n if (isProcessActive()) {\n clearErrorState()\n }\n } catch (error: unknown) {\n if (isProcessActive()) {\n persistErrorState(error as Error)\n }\n }\n }, [\n startProcess,\n emptyValue,\n required,\n clearErrorState,\n persistErrorState,\n ])\n\n useUpdateEffect(() => {\n if (!schema) {\n schemaValidatorRef.current = undefined\n return\n }\n schemaValidatorRef.current = ajv.compile(schema)\n validateValue()\n }, [schema, validateValue])\n\n useUpdateEffect(() => {\n // Error or removed error for this field from the surrounding data context (by path)\n valueRef.current = externalValue\n validateValue()\n forceUpdate()\n }, [externalValue, validateValue])\n\n useEffect(() => {\n const error = prepareError(dataContextError)\n if (errorChanged(error, contextErrorRef.current)) {\n contextErrorRef.current = error\n forceUpdate()\n }\n }, [dataContextError, prepareError])\n\n useEffect(() => {\n if (dataContext.showAllErrors) {\n // If showError on a surrounding data context was changed and set to true, it is because the user clicked next, submit or\n // something else that should lead to showing the user all errors.\n showError()\n forceUpdate()\n }\n }, [dataContext.showAllErrors, showError])\n\n useEffect(() => {\n if (path && props.value) {\n const hasValue = pointer.has(dataContext.data, path)\n const value = hasValue\n ? pointer.get(dataContext.data, path)\n : undefined\n if (\n !hasValue ||\n (props.value !== value && valueRef.current !== value)\n ) {\n // Update the data context when a pointer not exists,\n // but was given initially.\n dataContextUpdateDataValue?.(path, props.value)\n }\n }\n }, [dataContext.data, dataContextUpdateDataValue, path, props.value])\n\n const handleError = useCallback(() => {\n if (\n continuousValidation ||\n (continuousValidation !== false && !hasFocusRef.current)\n ) {\n // When there is a change to the value without there having been any focus callback beforehand, it is likely\n // to believe that the blur callback will not be called either, which would trigger the display of the error.\n // The error is therefore displayed immediately (unless instructed not to with continuousValidation set to false).\n showError()\n } else {\n // When changing the value, hide errors to avoid annoying the user before they are finished filling in that value\n hideError()\n }\n }, [continuousValidation, hideError, showError])\n\n const setHasFocus = useCallback(\n (hasFocus: boolean, valueOverride?: Value) => {\n if (hasFocus) {\n // Field was put in focus (like when clicking in a text field or opening a dropdown menu)\n hasFocusRef.current = true\n const value = transformers.current.toEvent(\n valueOverride ?? valueRef.current,\n 'onFocus'\n )\n onFocus?.(value)\n } else {\n // Field was removed from focus (like when tabbing out of a text field or closing a dropdown menu)\n hasFocusRef.current = false\n const value = transformers.current.toEvent(\n valueOverride ?? valueRef.current,\n 'onBlur'\n )\n onBlur?.(value)\n\n if (!changedRef.current && !validateUnchanged) {\n // Avoid showing errors when blurring without having changed the value, so tabbing through several\n // fields does not make errors pop up all over the place\n return\n }\n\n // External blur validators makes it possible to validate values but not on every character change in case of\n // expensive validation calling external services etc.\n if (typeof onBlurValidator === 'function') {\n // Since the validator can return either a synchronous result or an asynchronous\n const value = transformers.current.toEvent(\n valueOverride ?? valueRef.current,\n 'onBlurValidator'\n )\n Promise.resolve(onBlurValidator(value)).then(persistErrorState)\n }\n\n // Since the user left the field, show error (if any)\n showError()\n forceUpdate()\n }\n },\n [\n onBlur,\n onBlurValidator,\n onFocus,\n persistErrorState,\n showError,\n validateUnchanged,\n ]\n )\n\n const updateValue = useCallback(\n (newValue: Value) => {\n if (newValue === valueRef.current) {\n // Avoid triggering a change if the value was not actually changed. This may be caused by rendering components\n // calling onChange even if the actual value did not change.\n return\n }\n\n valueRef.current = newValue\n\n // Always validate the value immediately when it is changed\n validateValue()\n\n handleError()\n\n if (path) {\n dataContextHandlePathChange?.(path, newValue)\n }\n\n forceUpdate()\n },\n [dataContextHandlePathChange, handleError, path, validateValue]\n )\n\n const handleChange = useCallback(\n (\n argFromInput: Value,\n additionalArgs: AdditionalEventArgs = undefined\n ) => {\n const currentValue = valueRef.current\n let newValue = transformers.current.fromInput(argFromInput)\n\n if (newValue === currentValue) {\n // Avoid triggering a change if the value was not actually changed. This may be caused by rendering components\n // calling onChange even if the actual value did not change.\n return\n }\n\n newValue = transformers.current.transformValue(\n newValue,\n currentValue\n )\n\n updateValue(newValue)\n\n changedRef.current = true\n\n const value = transformers.current.toEvent(newValue, 'onChange')\n onChange?.apply(\n this,\n typeof additionalArgs !== 'undefined'\n ? [value, additionalArgs]\n : [value]\n )\n\n if (itemPath) {\n const iterateValuePath = `/${iterateElementIndex}${\n itemPath && itemPath !== '/' ? itemPath : ''\n }`\n handleIterateElementChange?.(iterateValuePath, newValue)\n }\n },\n [\n updateValue,\n onChange,\n itemPath,\n iterateElementIndex,\n handleIterateElementChange,\n ]\n )\n\n const handleFocus = useCallback(() => setHasFocus(true), [setHasFocus])\n\n const handleBlur = useCallback(() => setHasFocus(false), [setHasFocus])\n\n useMountEffect(() => {\n dataContext?.handleMountField(identifier)\n\n validateValue()\n\n if (showErrorInitially) {\n showError()\n }\n\n return () => {\n // Unmount procedure\n dataContext?.handleUnMountField(identifier)\n }\n })\n\n const error = showErrorRef.current\n ? errorProp ?? localErrorRef.current ?? contextErrorRef.current\n : undefined\n\n return {\n ...props,\n autoComplete:\n props.autoComplete ??\n (dataContext.autoComplete === true ? 'on' : 'off'),\n id,\n name: props.name || props.path?.replace('/', '') || id,\n value: transformers.current.toInput(valueRef.current),\n error: !inFieldBlock ? error : undefined,\n hasError: Boolean(error),\n isChanged: changedRef.current,\n dataContext,\n setHasFocus,\n handleFocus,\n handleBlur,\n handleChange,\n updateValue,\n forceUpdate,\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useDataValue.js","names":["useRef","useEffect","useContext","useCallback","useMemo","useReducer","pointer","errorChanged","ajv","ajvErrorsToOneFormError","FormError","Context","FieldBlockContext","IterateElementContext","useMountEffect","useUpdateEffect","useProcessManager","useId","useDataValue","props","_ref","_props$autoComplete","_props$path","path","itemPath","emptyValue","required","error","errorProp","errorMessages","onFocus","onBlur","onChange","onBlurValidator","validator","schema","validateInitially","validateUnchanged","continuousValidation","toInput","value","fromInput","toEvent","transformValue","fromExternal","validateRequired","res","undefined","forceUpdate","startProcess","id","dataContext","fieldBlockContext","iterateElementContext","transformers","handlePathChange","dataContextHandlePathChange","updateDataValue","dataContextUpdateDataValue","setValueWithError","dataContextSetValueWithError","errors","dataContextErrors","dataContextError","inFieldBlock","Boolean","setError","setFieldBlockError","setShowError","setShowFieldBlockError","inIterate","index","iterateElementIndex","iterateElementValue","handleChange","handleIterateElementChange","substring","Error","identifier","externalValue","current","has","get","data","valueRef","changedRef","hasFocusRef","showErrorInitially","localErrorRef","contextErrorRef","showErrorRef","errorMessagesRef","validatorRef","schemaValidatorRef","compile","showError","hideError","prepareError","_errorMessagesRef$cur","_error$messageValues","message","validationRule","messageWithValues","Object","entries","messageValues","reduce","key","replace","persistErrorState","errorArg","clearErrorState","validateValue","isProcessActive","requiredError","isChanged","_validatorRef$current","call","showAllErrors","hasValue","handleError","setHasFocus","hasFocus","valueOverride","Promise","resolve","then","updateValue","newValue","argFromInput","additionalArgs","currentValue","apply","iterateValuePath","handleFocus","handleBlur","handleMountField","handleUnMountField","_objectSpread","autoComplete","name","hasError"],"sources":["../../../../../src/extensions/forms/hooks/useDataValue.ts"],"sourcesContent":["import {\n useRef,\n useEffect,\n useContext,\n useCallback,\n useMemo,\n useReducer,\n} from 'react'\nimport pointer from 'json-pointer'\nimport { ValidateFunction } from 'ajv'\nimport { errorChanged } from '../utils'\nimport ajv, { ajvErrorsToOneFormError } from '../utils/ajv'\nimport { FormError, FieldProps, AdditionalEventArgs } from '../types'\nimport { Context, ContextState } from '../DataContext'\nimport FieldBlockContext from '../FieldBlock/FieldBlockContext'\nimport IterateElementContext from '../Iterate/IterateElementContext'\nimport useMountEffect from './useMountEffect'\nimport useUpdateEffect from './useUpdateEffect'\nimport useProcessManager from './useProcessManager'\nimport useId from './useId'\n\ninterface ReturnAdditional<Value> {\n id: string\n value: Value\n error: Error | FormError | undefined\n hasError: boolean\n dataContext: ContextState\n setHasFocus: (hasFocus: boolean, valueOverride?: unknown) => void\n handleFocus: () => void\n handleBlur: () => void\n handleChange: FieldProps<unknown>['onChange']\n updateValue: (value: Value) => void\n forceUpdate: () => void\n}\n\nexport default function useDataValue<\n Value = unknown,\n Props extends FieldProps<Value> = FieldProps<Value>,\n>(props: Props): Props & ReturnAdditional<Value> {\n const {\n path,\n itemPath,\n emptyValue,\n required,\n error: errorProp,\n errorMessages,\n onFocus,\n onBlur,\n onChange,\n onBlurValidator,\n validator,\n schema,\n validateInitially,\n validateUnchanged,\n continuousValidation,\n toInput = (value: Value) => value,\n fromInput = (value: Value) => value,\n toEvent = (value: Value) => value,\n transformValue = (value: Value) => value,\n fromExternal = (value: Value) => value,\n validateRequired = (value: Value, { emptyValue, required, error }) => {\n const res =\n required &&\n (value === emptyValue ||\n (typeof emptyValue === 'undefined' && value === ''))\n ? error\n : undefined\n return res\n },\n } = props\n\n const [, forceUpdate] = useReducer(() => ({}), {})\n const { startProcess } = useProcessManager()\n const id = useId(props.id)\n const dataContext = useContext(Context)\n const fieldBlockContext = useContext(FieldBlockContext)\n const iterateElementContext = useContext(IterateElementContext)\n\n const transformers = useRef({\n toInput,\n fromInput,\n toEvent,\n fromExternal,\n transformValue,\n validateRequired,\n })\n\n const {\n handlePathChange: dataContextHandlePathChange,\n updateDataValue: dataContextUpdateDataValue,\n setValueWithError: dataContextSetValueWithError,\n errors: dataContextErrors,\n } = dataContext ?? {}\n const dataContextError = path ? dataContextErrors?.[path] : undefined\n const inFieldBlock = Boolean(fieldBlockContext)\n const {\n setError: setFieldBlockError,\n setShowError: setShowFieldBlockError,\n } = fieldBlockContext ?? {}\n const inIterate = Boolean(iterateElementContext)\n const {\n index: iterateElementIndex,\n value: iterateElementValue,\n handleChange: handleIterateElementChange,\n } = iterateElementContext ?? {}\n\n if (path && path.substring(0, 1) !== '/') {\n throw new Error(\n 'Invalid path. Data value path JSON Pointers must be from root (starting with a /).'\n )\n }\n if (itemPath && itemPath.substring(0, 1) !== '/') {\n throw new Error(\n 'Invalid itemPath. Item pathJSON Pointers must be from root of iterate element (starting with a /).'\n )\n }\n if (itemPath && !iterateElementContext) {\n throw new Error(\n 'itemPath cannot be used when not inside an iterate element context. Wrap the component in an Iterate.Loop.'\n )\n }\n\n const identifier = useMemo(() => {\n // Identifier is used is registries of multiple fields, like in the DataContext keeping track of errors\n return path ?? id\n }, [path, id])\n\n const externalValue = useMemo(() => {\n if (props.value !== undefined) {\n // Value-prop sent directly to the field has highest priority, overriding any surrounding source\n return transformers.current.fromExternal(props.value)\n }\n\n if (inIterate && itemPath) {\n // This field is inside an iterate, and has a pointer from the base of the element being iterated\n if (itemPath === '/') {\n return iterateElementValue\n }\n\n return pointer.has(iterateElementValue, itemPath)\n ? pointer.get(iterateElementValue, itemPath)\n : undefined\n }\n\n if (dataContext.data && path) {\n // There is a surrounding data context and a path for where in the source to find the data\n if (path === '/') {\n return dataContext.data\n }\n\n return pointer.has(dataContext.data, path)\n ? pointer.get(dataContext.data, path)\n : undefined\n }\n return undefined\n }, [\n props.value,\n inIterate,\n itemPath,\n dataContext.data,\n path,\n iterateElementValue,\n ])\n\n // Many variables are kept in refs to avoid triggering unnecessary update loops because updates using\n // useEffect depend on them (like the external `value`)\n\n // Hold an internal copy of the input value in case the input component is used uncontrolled,\n // and to handle errors in Eufemia on components that does not take updated callback functions into account.\n const valueRef = useRef<Value>(externalValue)\n const changedRef = useRef<boolean>(false)\n const hasFocusRef = useRef<boolean>(false)\n\n // Error handling\n // - Should errors received through validation be shown initially. Assume that providing a direct prop to\n // the component means it is supposed to be shown initially.\n const showErrorInitially = validateInitially || errorProp\n // - Local errors are errors based on validation instructions received by\n const localErrorRef = useRef<Error | FormError | undefined>()\n // - Context errors are from outer contexts, like validation for this field as part of the whole data set\n const contextErrorRef = useRef<Error | FormError | undefined>(\n dataContextError\n )\n\n const showErrorRef = useRef<boolean>(Boolean(showErrorInitially))\n const errorMessagesRef = useRef(errorMessages)\n useEffect(() => {\n errorMessagesRef.current = errorMessages\n }, [errorMessages])\n const validatorRef = useRef(validator)\n useEffect(() => {\n validatorRef.current = validator\n }, [validator])\n\n const schemaValidatorRef = useRef<ValidateFunction>(\n schema ? ajv.compile(schema) : undefined\n )\n\n const showError = useCallback(() => {\n showErrorRef.current = true\n setShowFieldBlockError?.(path ?? id, true)\n }, [path, id, setShowFieldBlockError])\n\n const hideError = useCallback(() => {\n showErrorRef.current = false\n setShowFieldBlockError?.(path ?? id, false)\n }, [path, id, setShowFieldBlockError])\n\n /**\n * Prepare error from validation logic with correct error messages based on props\n */\n const prepareError = useCallback(\n (error: Error | FormError | undefined): FormError | undefined => {\n if (error === undefined) {\n return\n }\n\n if (error instanceof FormError) {\n const message =\n (typeof error.validationRule === 'string' &&\n errorMessagesRef.current?.[error.validationRule]) ||\n error.message\n\n const messageWithValues = Object.entries(\n error.messageValues ?? {}\n ).reduce((message, [key, value]) => {\n return message.replace(`{${key}}`, value)\n }, message)\n\n return new FormError(messageWithValues)\n }\n\n return error\n },\n []\n )\n\n /**\n * Based on validation, update error state, locally and relevant surrounding contexts\n */\n const persistErrorState = useCallback(\n (errorArg: FormError | undefined) => {\n const error = prepareError(errorArg)\n\n if (!errorChanged(error, localErrorRef.current)) {\n // In case different triggers lead to validation with no changes in the result (like still no error, or the same error),\n // avoid unnecessary re-renders by letting the old error object stay in the state and skip re-rendering.\n return\n }\n\n localErrorRef.current = error\n\n // Tell the data context about the error, so it can stop the user from submitting the form until the error has been fixed\n dataContextSetValueWithError?.(identifier, Boolean(error))\n\n setFieldBlockError?.(path ?? id, error)\n forceUpdate()\n },\n [\n path,\n identifier,\n id,\n prepareError,\n dataContextSetValueWithError,\n setFieldBlockError,\n forceUpdate,\n ]\n )\n\n const clearErrorState = useCallback(\n () => persistErrorState(undefined),\n [persistErrorState]\n )\n\n /**\n * Validate the current state value by provided validator instructions\n */\n const validateValue = useCallback(async () => {\n const isProcessActive = startProcess()\n\n try {\n // Validate required\n const requiredError = transformers.current.validateRequired(\n valueRef.current,\n {\n emptyValue,\n required,\n isChanged: changedRef.current,\n error: new FormError('The value is required', {\n validationRule: 'required',\n }),\n }\n )\n if (requiredError instanceof Error) {\n throw requiredError\n }\n\n // Validate by provided JSON Schema for this value\n if (\n schemaValidatorRef.current &&\n valueRef.current !== undefined &&\n !schemaValidatorRef.current(valueRef.current)\n ) {\n const error = ajvErrorsToOneFormError(\n schemaValidatorRef.current.errors\n )\n throw error\n }\n\n // Validate by provided derivative validator\n if (validatorRef.current) {\n const res = await validatorRef.current?.(\n valueRef.current,\n errorMessagesRef.current\n )\n if (res instanceof Error) {\n throw res\n }\n }\n\n if (isProcessActive()) {\n clearErrorState()\n }\n } catch (error: unknown) {\n if (isProcessActive()) {\n persistErrorState(error as Error)\n }\n }\n }, [\n startProcess,\n emptyValue,\n required,\n clearErrorState,\n persistErrorState,\n ])\n\n useUpdateEffect(() => {\n if (!schema) {\n schemaValidatorRef.current = undefined\n return\n }\n schemaValidatorRef.current = ajv.compile(schema)\n validateValue()\n }, [schema, validateValue])\n\n useUpdateEffect(() => {\n // Error or removed error for this field from the surrounding data context (by path)\n valueRef.current = externalValue\n validateValue()\n forceUpdate()\n }, [externalValue, validateValue])\n\n useEffect(() => {\n const error = prepareError(dataContextError)\n if (errorChanged(error, contextErrorRef.current)) {\n contextErrorRef.current = error\n forceUpdate()\n }\n }, [dataContextError, prepareError])\n\n useEffect(() => {\n if (dataContext.showAllErrors) {\n // If showError on a surrounding data context was changed and set to true, it is because the user clicked next, submit or\n // something else that should lead to showing the user all errors.\n showError()\n forceUpdate()\n }\n }, [dataContext.showAllErrors, showError])\n\n useEffect(() => {\n if (path && typeof props.value !== 'undefined') {\n const hasValue = pointer.has(dataContext.data, path)\n const value = hasValue\n ? pointer.get(dataContext.data, path)\n : undefined\n if (\n !hasValue ||\n (props.value !== value && valueRef.current !== value)\n ) {\n // Update the data context when a pointer not exists,\n // but was given initially.\n dataContextUpdateDataValue?.(path, props.value)\n }\n }\n }, [dataContext.data, dataContextUpdateDataValue, path, props.value])\n\n const handleError = useCallback(() => {\n if (\n continuousValidation ||\n (continuousValidation !== false && !hasFocusRef.current)\n ) {\n // When there is a change to the value without there having been any focus callback beforehand, it is likely\n // to believe that the blur callback will not be called either, which would trigger the display of the error.\n // The error is therefore displayed immediately (unless instructed not to with continuousValidation set to false).\n showError()\n } else {\n // When changing the value, hide errors to avoid annoying the user before they are finished filling in that value\n hideError()\n }\n }, [continuousValidation, hideError, showError])\n\n const setHasFocus = useCallback(\n (hasFocus: boolean, valueOverride?: Value) => {\n if (hasFocus) {\n // Field was put in focus (like when clicking in a text field or opening a dropdown menu)\n hasFocusRef.current = true\n const value = transformers.current.toEvent(\n valueOverride ?? valueRef.current,\n 'onFocus'\n )\n onFocus?.(value)\n } else {\n // Field was removed from focus (like when tabbing out of a text field or closing a dropdown menu)\n hasFocusRef.current = false\n const value = transformers.current.toEvent(\n valueOverride ?? valueRef.current,\n 'onBlur'\n )\n onBlur?.(value)\n\n if (!changedRef.current && !validateUnchanged) {\n // Avoid showing errors when blurring without having changed the value, so tabbing through several\n // fields does not make errors pop up all over the place\n return\n }\n\n // External blur validators makes it possible to validate values but not on every character change in case of\n // expensive validation calling external services etc.\n if (typeof onBlurValidator === 'function') {\n // Since the validator can return either a synchronous result or an asynchronous\n const value = transformers.current.toEvent(\n valueOverride ?? valueRef.current,\n 'onBlurValidator'\n )\n Promise.resolve(onBlurValidator(value)).then(persistErrorState)\n }\n\n // Since the user left the field, show error (if any)\n showError()\n forceUpdate()\n }\n },\n [\n onBlur,\n onBlurValidator,\n onFocus,\n persistErrorState,\n showError,\n validateUnchanged,\n ]\n )\n\n const updateValue = useCallback(\n (newValue: Value) => {\n if (newValue === valueRef.current) {\n // Avoid triggering a change if the value was not actually changed. This may be caused by rendering components\n // calling onChange even if the actual value did not change.\n return\n }\n\n valueRef.current = newValue\n\n // Always validate the value immediately when it is changed\n validateValue()\n\n handleError()\n\n if (path) {\n dataContextHandlePathChange?.(path, newValue)\n }\n\n forceUpdate()\n },\n [dataContextHandlePathChange, handleError, path, validateValue]\n )\n\n const handleChange = useCallback(\n (\n argFromInput: Value,\n additionalArgs: AdditionalEventArgs = undefined\n ) => {\n const currentValue = valueRef.current\n let newValue = transformers.current.fromInput(argFromInput)\n\n if (newValue === currentValue) {\n // Avoid triggering a change if the value was not actually changed. This may be caused by rendering components\n // calling onChange even if the actual value did not change.\n return\n }\n\n newValue = transformers.current.transformValue(\n newValue,\n currentValue\n )\n\n updateValue(newValue)\n\n changedRef.current = true\n\n const value = transformers.current.toEvent(newValue, 'onChange')\n onChange?.apply(\n this,\n typeof additionalArgs !== 'undefined'\n ? [value, additionalArgs]\n : [value]\n )\n\n if (itemPath) {\n const iterateValuePath = `/${iterateElementIndex}${\n itemPath && itemPath !== '/' ? itemPath : ''\n }`\n handleIterateElementChange?.(iterateValuePath, newValue)\n }\n },\n [\n updateValue,\n onChange,\n itemPath,\n iterateElementIndex,\n handleIterateElementChange,\n ]\n )\n\n const handleFocus = useCallback(() => setHasFocus(true), [setHasFocus])\n\n const handleBlur = useCallback(() => setHasFocus(false), [setHasFocus])\n\n useMountEffect(() => {\n dataContext?.handleMountField(identifier)\n\n validateValue()\n\n if (showErrorInitially) {\n showError()\n }\n\n return () => {\n // Unmount procedure\n dataContext?.handleUnMountField(identifier)\n }\n })\n\n const error = showErrorRef.current\n ? errorProp ?? localErrorRef.current ?? contextErrorRef.current\n : undefined\n\n return {\n ...props,\n autoComplete:\n props.autoComplete ??\n (dataContext.autoComplete === true ? 'on' : 'off'),\n id,\n name: props.name || props.path?.replace('/', '') || id,\n value: transformers.current.toInput(valueRef.current),\n error: !inFieldBlock ? error : undefined,\n hasError: Boolean(error),\n isChanged: changedRef.current,\n dataContext,\n setHasFocus,\n handleFocus,\n handleBlur,\n handleChange,\n updateValue,\n forceUpdate,\n }\n}\n"],"mappings":"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"}
|
|
@@ -6,16 +6,26 @@
|
|
|
6
6
|
/*
|
|
7
7
|
* Utilities
|
|
8
8
|
*/
|
|
9
|
-
|
|
9
|
+
/*
|
|
10
|
+
* Utilities
|
|
11
|
+
*/
|
|
12
|
+
.dnb-forms-field-array-selection--layout-vertical .dnb-forms-field-array-selection__options {
|
|
10
13
|
display: flex;
|
|
11
14
|
flex-flow: column;
|
|
12
15
|
row-gap: var(--spacing-x-small);
|
|
13
16
|
}
|
|
14
|
-
.dnb-forms-field-array-selection--
|
|
17
|
+
.dnb-forms-field-array-selection--layout-horizontal .dnb-forms-field-array-selection__options {
|
|
15
18
|
display: flex;
|
|
16
19
|
flex-flow: row wrap;
|
|
17
20
|
-moz-column-gap: var(--spacing-small);
|
|
18
21
|
column-gap: var(--spacing-small);
|
|
22
|
+
row-gap: var(--spacing-x-small);
|
|
23
|
+
}
|
|
24
|
+
@media screen and (min-width: 40em) {
|
|
25
|
+
.dnb-forms-field-array-selection .dnb-forms-field-block--layout-horizontal .dnb-form-label {
|
|
26
|
+
line-height: 2.5rem;
|
|
27
|
+
margin-bottom: 0;
|
|
28
|
+
}
|
|
19
29
|
}
|
|
20
30
|
|
|
21
31
|
.dnb-forms-field-expiry .dnb-multi-input-mask {
|
|
@@ -321,15 +331,6 @@ fieldset.dnb-forms-field-block:not([class*=space__left]) {
|
|
|
321
331
|
justify-content: space-between;
|
|
322
332
|
align-items: center;
|
|
323
333
|
}
|
|
324
|
-
.dnb-forms-field-block__label-description {
|
|
325
|
-
margin-left: 0.3em;
|
|
326
|
-
color: var(--color-black-55);
|
|
327
|
-
font-size: var(--font-size-small);
|
|
328
|
-
}
|
|
329
|
-
.dnb-forms-field-block__label-secondary {
|
|
330
|
-
color: var(--color-black-55);
|
|
331
|
-
font-size: var(--font-size-small);
|
|
332
|
-
}
|
|
333
334
|
.dnb-forms-field-block__status {
|
|
334
335
|
grid-area: status;
|
|
335
336
|
}
|