@dnb/eufemia 10.65.0 → 10.66.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 +39 -0
- package/cjs/components/card/Card.js +1 -1
- package/cjs/components/card/Card.js.map +1 -1
- package/cjs/components/date-picker/DatePicker.d.ts +3 -1
- package/cjs/components/date-picker/DatePicker.js +3 -1
- package/cjs/components/date-picker/DatePicker.js.map +1 -1
- package/cjs/components/date-picker/DatePickerAddon.js +8 -1
- package/cjs/components/date-picker/DatePickerAddon.js.map +1 -1
- package/cjs/components/date-picker/DatePickerInput.d.ts +5 -0
- package/cjs/components/date-picker/DatePickerInput.js +54 -36
- package/cjs/components/date-picker/DatePickerInput.js.map +1 -1
- package/cjs/components/date-picker/DatePickerProvider.d.ts +4 -3
- package/cjs/components/date-picker/DatePickerProvider.js +7 -2
- package/cjs/components/date-picker/DatePickerProvider.js.map +1 -1
- package/cjs/components/date-picker/hooks/useDates.js.map +1 -1
- package/cjs/components/flex/Container.d.ts +2 -1
- package/cjs/components/flex/Container.js +31 -24
- package/cjs/components/flex/Container.js.map +1 -1
- package/cjs/components/flex/ContainerDocs.d.ts +2 -0
- package/cjs/components/flex/ContainerDocs.js +81 -0
- package/cjs/components/flex/ContainerDocs.js.map +1 -0
- package/cjs/components/flex/style/dnb-flex.css +36 -4
- package/cjs/components/flex/style/dnb-flex.min.css +1 -1
- package/cjs/components/flex/style/flex-container.scss +39 -4
- package/cjs/components/help-button/HelpButtonInline.d.ts +6 -0
- package/cjs/components/help-button/HelpButtonInline.js +51 -19
- package/cjs/components/help-button/HelpButtonInline.js.map +1 -1
- package/cjs/components/help-button/HelpButtonInstance.js +1 -1
- package/cjs/components/help-button/HelpButtonInstance.js.map +1 -1
- package/cjs/components/slider/SliderDocs.js +2 -2
- package/cjs/components/slider/SliderDocs.js.map +1 -1
- package/cjs/components/slider/SliderProvider.js +0 -2
- package/cjs/components/slider/SliderProvider.js.map +1 -1
- package/cjs/components/slider/types.d.ts +2 -2
- package/cjs/components/slider/types.js.map +1 -1
- package/cjs/components/step-indicator/StepIndicator.d.ts +6 -0
- package/cjs/components/step-indicator/StepIndicator.js.map +1 -1
- package/cjs/components/step-indicator/StepIndicatorContext.d.ts +2 -0
- package/cjs/components/step-indicator/StepIndicatorContext.js.map +1 -1
- package/cjs/components/step-indicator/StepIndicatorTriggerButton.js +4 -3
- package/cjs/components/step-indicator/StepIndicatorTriggerButton.js.map +1 -1
- package/cjs/components/toggle-button/ToggleButton.d.ts +9 -1
- package/cjs/components/toggle-button/ToggleButtonDocs.js +1 -0
- package/cjs/components/toggle-button/ToggleButtonDocs.js.map +1 -1
- package/cjs/extensions/forms/DataContext/Context.d.ts +11 -5
- package/cjs/extensions/forms/DataContext/Context.js.map +1 -1
- package/cjs/extensions/forms/DataContext/FieldBoundary/FieldBoundaryContext.d.ts +1 -1
- package/cjs/extensions/forms/DataContext/FieldBoundary/FieldBoundaryContext.js.map +1 -1
- package/cjs/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js +2 -2
- package/cjs/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js.map +1 -1
- package/cjs/extensions/forms/DataContext/Provider/Provider.d.ts +2 -2
- package/cjs/extensions/forms/DataContext/Provider/Provider.js +46 -42
- package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
- package/cjs/extensions/forms/DataContext/Provider/ProviderDocs.js +1 -1
- package/cjs/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
- package/cjs/extensions/forms/Field/Slider/Slider.js +13 -4
- package/cjs/extensions/forms/Field/Slider/Slider.js.map +1 -1
- package/cjs/extensions/forms/FieldBlock/FieldBlock.js +17 -13
- package/cjs/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
- package/cjs/extensions/forms/Iterate/PushContainer/PushContainer.js +7 -2
- package/cjs/extensions/forms/Iterate/PushContainer/PushContainer.js.map +1 -1
- package/cjs/extensions/forms/Value/Provider/useValueProvider.d.ts +1 -0
- package/cjs/extensions/forms/Value/ValueDocs.js +5 -0
- package/cjs/extensions/forms/Value/ValueDocs.js.map +1 -1
- package/cjs/extensions/forms/ValueBlock/ValueBlock.d.ts +14 -1
- package/cjs/extensions/forms/ValueBlock/ValueBlock.js +40 -10
- package/cjs/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
- package/cjs/extensions/forms/ValueBlock/style/dnb-value-block.css +17 -0
- package/cjs/extensions/forms/ValueBlock/style/dnb-value-block.min.css +1 -1
- package/cjs/extensions/forms/ValueBlock/style/dnb-value-block.scss +24 -0
- package/cjs/extensions/forms/Wizard/Container/DisplaySteps.d.ts +7 -0
- package/cjs/extensions/forms/Wizard/Container/DisplaySteps.js +78 -0
- package/cjs/extensions/forms/Wizard/Container/DisplaySteps.js.map +1 -0
- package/cjs/extensions/forms/Wizard/Container/IterateOverSteps.d.ts +3 -0
- package/cjs/extensions/forms/Wizard/Container/IterateOverSteps.js +94 -0
- package/cjs/extensions/forms/Wizard/Container/IterateOverSteps.js.map +1 -0
- package/cjs/extensions/forms/Wizard/Container/PrerenderFieldPropsOfOtherSteps.d.ts +4 -0
- package/cjs/extensions/forms/Wizard/Container/PrerenderFieldPropsOfOtherSteps.js +67 -0
- package/cjs/extensions/forms/Wizard/Container/PrerenderFieldPropsOfOtherSteps.js.map +1 -0
- package/cjs/extensions/forms/Wizard/Container/WizardContainer.d.ts +9 -1
- package/cjs/extensions/forms/Wizard/Container/WizardContainer.js +102 -206
- package/cjs/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
- package/cjs/extensions/forms/Wizard/Container/WizardContainerDocs.js +10 -0
- package/cjs/extensions/forms/Wizard/Container/WizardContainerDocs.js.map +1 -1
- package/cjs/extensions/forms/Wizard/Context/WizardContext.d.ts +7 -23
- package/cjs/extensions/forms/Wizard/Context/WizardContext.js.map +1 -1
- package/cjs/extensions/forms/Wizard/Context/types.d.ts +35 -0
- package/cjs/extensions/forms/Wizard/Context/types.js +1 -0
- package/cjs/extensions/forms/Wizard/Context/types.js.map +1 -0
- package/cjs/extensions/forms/Wizard/EditButton/EditButton.d.ts +1 -1
- package/cjs/extensions/forms/Wizard/EditButton/EditButton.js.map +1 -1
- package/cjs/extensions/forms/Wizard/Step/Step.d.ts +4 -0
- package/cjs/extensions/forms/Wizard/Step/Step.js +28 -9
- package/cjs/extensions/forms/Wizard/Step/Step.js.map +1 -1
- package/cjs/extensions/forms/Wizard/Step/StepContext.d.ts +7 -0
- package/cjs/extensions/forms/Wizard/Step/StepContext.js +12 -0
- package/cjs/extensions/forms/Wizard/Step/StepContext.js.map +1 -0
- package/cjs/extensions/forms/Wizard/Step/StepDocs.js +5 -0
- package/cjs/extensions/forms/Wizard/Step/StepDocs.js.map +1 -1
- package/cjs/extensions/forms/Wizard/hooks/useStep.d.ts +2 -1
- package/cjs/extensions/forms/Wizard/hooks/useStep.js.map +1 -1
- package/cjs/extensions/forms/constants/locales/en-GB.d.ts +1 -0
- package/cjs/extensions/forms/constants/locales/en-GB.js +2 -1
- package/cjs/extensions/forms/constants/locales/en-GB.js.map +1 -1
- package/cjs/extensions/forms/constants/locales/en-US.d.ts +1 -0
- package/cjs/extensions/forms/constants/locales/index.d.ts +2 -0
- package/cjs/extensions/forms/constants/locales/nb-NO.d.ts +1 -0
- package/cjs/extensions/forms/constants/locales/nb-NO.js +2 -1
- package/cjs/extensions/forms/constants/locales/nb-NO.js.map +1 -1
- package/cjs/extensions/forms/hooks/useFieldProps.js +41 -23
- package/cjs/extensions/forms/hooks/useFieldProps.js.map +1 -1
- package/cjs/extensions/forms/style/dnb-forms.css +17 -0
- package/cjs/extensions/forms/style/dnb-forms.min.css +1 -1
- package/cjs/extensions/forms/types.d.ts +9 -1
- package/cjs/extensions/forms/types.js.map +1 -1
- package/cjs/fragments/drawer-list/DrawerList.d.ts +6 -1
- package/cjs/fragments/drawer-list/DrawerList.js +1 -0
- package/cjs/fragments/drawer-list/DrawerList.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/style/core/scopes.scss +1 -1
- package/cjs/style/dnb-ui-basis.css +1 -1
- package/cjs/style/dnb-ui-basis.min.css +1 -1
- package/cjs/style/dnb-ui-body.css +1 -1
- package/cjs/style/dnb-ui-body.min.css +1 -1
- package/cjs/style/dnb-ui-components.css +53 -4
- package/cjs/style/dnb-ui-components.min.css +2 -2
- package/cjs/style/dnb-ui-core.css +1 -1
- package/cjs/style/dnb-ui-core.min.css +1 -1
- package/cjs/style/dnb-ui-extensions.css +17 -0
- package/cjs/style/dnb-ui-extensions.min.css +1 -1
- package/cjs/style/dnb-ui-forms.css +17 -0
- package/cjs/style/dnb-ui-forms.min.css +1 -1
- package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +70 -4
- package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
- package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.css +17 -0
- package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
- package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.css +17 -0
- package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
- package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +70 -4
- package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
- package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.css +17 -0
- package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
- package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.css +17 -0
- package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
- package/cjs/style/themes/theme-ui/ui-theme-components.css +70 -4
- package/cjs/style/themes/theme-ui/ui-theme-components.min.css +2 -2
- package/cjs/style/themes/theme-ui/ui-theme-extensions.css +17 -0
- package/cjs/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
- package/cjs/style/themes/theme-ui/ui-theme-forms.css +17 -0
- package/cjs/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
- package/components/card/Card.js +1 -1
- package/components/card/Card.js.map +1 -1
- package/components/date-picker/DatePicker.d.ts +3 -1
- package/components/date-picker/DatePicker.js +3 -1
- package/components/date-picker/DatePicker.js.map +1 -1
- package/components/date-picker/DatePickerAddon.js +6 -1
- package/components/date-picker/DatePickerAddon.js.map +1 -1
- package/components/date-picker/DatePickerInput.d.ts +5 -0
- package/components/date-picker/DatePickerInput.js +54 -36
- package/components/date-picker/DatePickerInput.js.map +1 -1
- package/components/date-picker/DatePickerProvider.d.ts +4 -3
- package/components/date-picker/DatePickerProvider.js +7 -2
- package/components/date-picker/DatePickerProvider.js.map +1 -1
- package/components/date-picker/hooks/useDates.js.map +1 -1
- package/components/flex/Container.d.ts +2 -1
- package/components/flex/Container.js +32 -25
- package/components/flex/Container.js.map +1 -1
- package/components/flex/ContainerDocs.d.ts +2 -0
- package/components/flex/ContainerDocs.js +74 -0
- package/components/flex/ContainerDocs.js.map +1 -0
- package/components/flex/style/dnb-flex.css +36 -4
- package/components/flex/style/dnb-flex.min.css +1 -1
- package/components/flex/style/flex-container.scss +39 -4
- package/components/help-button/HelpButtonInline.d.ts +6 -0
- package/components/help-button/HelpButtonInline.js +51 -19
- package/components/help-button/HelpButtonInline.js.map +1 -1
- package/components/help-button/HelpButtonInstance.js +1 -1
- package/components/help-button/HelpButtonInstance.js.map +1 -1
- package/components/slider/SliderDocs.js +2 -2
- package/components/slider/SliderDocs.js.map +1 -1
- package/components/slider/SliderProvider.js +0 -2
- package/components/slider/SliderProvider.js.map +1 -1
- package/components/slider/types.d.ts +2 -2
- package/components/slider/types.js.map +1 -1
- package/components/step-indicator/StepIndicator.d.ts +6 -0
- package/components/step-indicator/StepIndicator.js.map +1 -1
- package/components/step-indicator/StepIndicatorContext.d.ts +2 -0
- package/components/step-indicator/StepIndicatorContext.js.map +1 -1
- package/components/step-indicator/StepIndicatorTriggerButton.js +4 -3
- package/components/step-indicator/StepIndicatorTriggerButton.js.map +1 -1
- package/components/toggle-button/ToggleButton.d.ts +9 -1
- package/components/toggle-button/ToggleButtonDocs.js +1 -0
- package/components/toggle-button/ToggleButtonDocs.js.map +1 -1
- package/es/components/card/Card.js +1 -1
- package/es/components/card/Card.js.map +1 -1
- package/es/components/date-picker/DatePicker.d.ts +3 -1
- package/es/components/date-picker/DatePicker.js +3 -1
- package/es/components/date-picker/DatePicker.js.map +1 -1
- package/es/components/date-picker/DatePickerAddon.js +6 -1
- package/es/components/date-picker/DatePickerAddon.js.map +1 -1
- package/es/components/date-picker/DatePickerInput.d.ts +5 -0
- package/es/components/date-picker/DatePickerInput.js +54 -36
- package/es/components/date-picker/DatePickerInput.js.map +1 -1
- package/es/components/date-picker/DatePickerProvider.d.ts +4 -3
- package/es/components/date-picker/DatePickerProvider.js +7 -2
- package/es/components/date-picker/DatePickerProvider.js.map +1 -1
- package/es/components/date-picker/hooks/useDates.js.map +1 -1
- package/es/components/flex/Container.d.ts +2 -1
- package/es/components/flex/Container.js +32 -25
- package/es/components/flex/Container.js.map +1 -1
- package/es/components/flex/ContainerDocs.d.ts +2 -0
- package/es/components/flex/ContainerDocs.js +74 -0
- package/es/components/flex/ContainerDocs.js.map +1 -0
- package/es/components/flex/style/dnb-flex.css +36 -4
- package/es/components/flex/style/dnb-flex.min.css +1 -1
- package/es/components/flex/style/flex-container.scss +39 -4
- package/es/components/help-button/HelpButtonInline.d.ts +6 -0
- package/es/components/help-button/HelpButtonInline.js +50 -18
- package/es/components/help-button/HelpButtonInline.js.map +1 -1
- package/es/components/help-button/HelpButtonInstance.js +1 -1
- package/es/components/help-button/HelpButtonInstance.js.map +1 -1
- package/es/components/slider/SliderDocs.js +2 -2
- package/es/components/slider/SliderDocs.js.map +1 -1
- package/es/components/slider/SliderProvider.js +0 -2
- package/es/components/slider/SliderProvider.js.map +1 -1
- package/es/components/slider/types.d.ts +2 -2
- package/es/components/slider/types.js.map +1 -1
- package/es/components/step-indicator/StepIndicator.d.ts +6 -0
- package/es/components/step-indicator/StepIndicator.js.map +1 -1
- package/es/components/step-indicator/StepIndicatorContext.d.ts +2 -0
- package/es/components/step-indicator/StepIndicatorContext.js.map +1 -1
- package/es/components/step-indicator/StepIndicatorTriggerButton.js +4 -3
- package/es/components/step-indicator/StepIndicatorTriggerButton.js.map +1 -1
- package/es/components/toggle-button/ToggleButton.d.ts +9 -1
- package/es/components/toggle-button/ToggleButtonDocs.js +1 -0
- package/es/components/toggle-button/ToggleButtonDocs.js.map +1 -1
- package/es/extensions/forms/DataContext/Context.d.ts +11 -5
- package/es/extensions/forms/DataContext/Context.js.map +1 -1
- package/es/extensions/forms/DataContext/FieldBoundary/FieldBoundaryContext.d.ts +1 -1
- package/es/extensions/forms/DataContext/FieldBoundary/FieldBoundaryContext.js.map +1 -1
- package/es/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js +2 -2
- package/es/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js.map +1 -1
- package/es/extensions/forms/DataContext/Provider/Provider.d.ts +2 -2
- package/es/extensions/forms/DataContext/Provider/Provider.js +36 -35
- package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
- package/es/extensions/forms/DataContext/Provider/ProviderDocs.js +1 -1
- package/es/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
- package/es/extensions/forms/Field/Slider/Slider.js +13 -4
- package/es/extensions/forms/Field/Slider/Slider.js.map +1 -1
- package/es/extensions/forms/FieldBlock/FieldBlock.js +17 -13
- package/es/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
- package/es/extensions/forms/Iterate/PushContainer/PushContainer.js +7 -2
- package/es/extensions/forms/Iterate/PushContainer/PushContainer.js.map +1 -1
- package/es/extensions/forms/Value/Provider/useValueProvider.d.ts +1 -0
- package/es/extensions/forms/Value/ValueDocs.js +5 -0
- package/es/extensions/forms/Value/ValueDocs.js.map +1 -1
- package/es/extensions/forms/ValueBlock/ValueBlock.d.ts +14 -1
- package/es/extensions/forms/ValueBlock/ValueBlock.js +40 -10
- package/es/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
- package/es/extensions/forms/ValueBlock/style/dnb-value-block.css +17 -0
- package/es/extensions/forms/ValueBlock/style/dnb-value-block.min.css +1 -1
- package/es/extensions/forms/ValueBlock/style/dnb-value-block.scss +24 -0
- package/es/extensions/forms/Wizard/Container/DisplaySteps.d.ts +7 -0
- package/es/extensions/forms/Wizard/Container/DisplaySteps.js +66 -0
- package/es/extensions/forms/Wizard/Container/DisplaySteps.js.map +1 -0
- package/es/extensions/forms/Wizard/Container/IterateOverSteps.d.ts +3 -0
- package/es/extensions/forms/Wizard/Container/IterateOverSteps.js +85 -0
- package/es/extensions/forms/Wizard/Container/IterateOverSteps.js.map +1 -0
- package/es/extensions/forms/Wizard/Container/PrerenderFieldPropsOfOtherSteps.d.ts +4 -0
- package/es/extensions/forms/Wizard/Container/PrerenderFieldPropsOfOtherSteps.js +54 -0
- package/es/extensions/forms/Wizard/Container/PrerenderFieldPropsOfOtherSteps.js.map +1 -0
- package/es/extensions/forms/Wizard/Container/WizardContainer.d.ts +9 -1
- package/es/extensions/forms/Wizard/Container/WizardContainer.js +97 -194
- package/es/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
- package/es/extensions/forms/Wizard/Container/WizardContainerDocs.js +10 -0
- package/es/extensions/forms/Wizard/Container/WizardContainerDocs.js.map +1 -1
- package/es/extensions/forms/Wizard/Context/WizardContext.d.ts +7 -23
- package/es/extensions/forms/Wizard/Context/WizardContext.js.map +1 -1
- package/es/extensions/forms/Wizard/Context/types.d.ts +35 -0
- package/es/extensions/forms/Wizard/Context/types.js +1 -0
- package/es/extensions/forms/Wizard/Context/types.js.map +1 -0
- package/es/extensions/forms/Wizard/EditButton/EditButton.d.ts +1 -1
- package/es/extensions/forms/Wizard/EditButton/EditButton.js.map +1 -1
- package/es/extensions/forms/Wizard/Step/Step.d.ts +4 -0
- package/es/extensions/forms/Wizard/Step/Step.js +29 -10
- package/es/extensions/forms/Wizard/Step/Step.js.map +1 -1
- package/es/extensions/forms/Wizard/Step/StepContext.d.ts +7 -0
- package/es/extensions/forms/Wizard/Step/StepContext.js +4 -0
- package/es/extensions/forms/Wizard/Step/StepContext.js.map +1 -0
- package/es/extensions/forms/Wizard/Step/StepDocs.js +5 -0
- package/es/extensions/forms/Wizard/Step/StepDocs.js.map +1 -1
- package/es/extensions/forms/Wizard/hooks/useStep.d.ts +2 -1
- package/es/extensions/forms/Wizard/hooks/useStep.js.map +1 -1
- package/es/extensions/forms/constants/locales/en-GB.d.ts +1 -0
- package/es/extensions/forms/constants/locales/en-GB.js +2 -1
- package/es/extensions/forms/constants/locales/en-GB.js.map +1 -1
- package/es/extensions/forms/constants/locales/en-US.d.ts +1 -0
- package/es/extensions/forms/constants/locales/index.d.ts +2 -0
- package/es/extensions/forms/constants/locales/nb-NO.d.ts +1 -0
- package/es/extensions/forms/constants/locales/nb-NO.js +2 -1
- package/es/extensions/forms/constants/locales/nb-NO.js.map +1 -1
- package/es/extensions/forms/hooks/useFieldProps.js +42 -22
- package/es/extensions/forms/hooks/useFieldProps.js.map +1 -1
- package/es/extensions/forms/style/dnb-forms.css +17 -0
- package/es/extensions/forms/style/dnb-forms.min.css +1 -1
- package/es/extensions/forms/types.d.ts +9 -1
- package/es/extensions/forms/types.js.map +1 -1
- package/es/fragments/drawer-list/DrawerList.d.ts +6 -1
- package/es/fragments/drawer-list/DrawerList.js +1 -0
- package/es/fragments/drawer-list/DrawerList.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/style/core/scopes.scss +1 -1
- package/es/style/dnb-ui-basis.css +1 -1
- package/es/style/dnb-ui-basis.min.css +1 -1
- package/es/style/dnb-ui-body.css +1 -1
- package/es/style/dnb-ui-body.min.css +1 -1
- package/es/style/dnb-ui-components.css +53 -4
- package/es/style/dnb-ui-components.min.css +2 -2
- package/es/style/dnb-ui-core.css +1 -1
- package/es/style/dnb-ui-core.min.css +1 -1
- package/es/style/dnb-ui-extensions.css +17 -0
- package/es/style/dnb-ui-extensions.min.css +1 -1
- package/es/style/dnb-ui-forms.css +17 -0
- package/es/style/dnb-ui-forms.min.css +1 -1
- package/es/style/themes/theme-eiendom/eiendom-theme-components.css +70 -4
- package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
- package/es/style/themes/theme-eiendom/eiendom-theme-extensions.css +17 -0
- package/es/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
- package/es/style/themes/theme-eiendom/eiendom-theme-forms.css +17 -0
- package/es/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
- package/es/style/themes/theme-sbanken/sbanken-theme-components.css +70 -4
- package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
- package/es/style/themes/theme-sbanken/sbanken-theme-extensions.css +17 -0
- package/es/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
- package/es/style/themes/theme-sbanken/sbanken-theme-forms.css +17 -0
- package/es/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
- package/es/style/themes/theme-ui/ui-theme-components.css +70 -4
- package/es/style/themes/theme-ui/ui-theme-components.min.css +2 -2
- package/es/style/themes/theme-ui/ui-theme-extensions.css +17 -0
- package/es/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
- package/es/style/themes/theme-ui/ui-theme-forms.css +17 -0
- 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/Context.d.ts +11 -5
- package/extensions/forms/DataContext/Context.js.map +1 -1
- package/extensions/forms/DataContext/FieldBoundary/FieldBoundaryContext.d.ts +1 -1
- package/extensions/forms/DataContext/FieldBoundary/FieldBoundaryContext.js.map +1 -1
- package/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js +2 -2
- package/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js.map +1 -1
- package/extensions/forms/DataContext/Provider/Provider.d.ts +2 -2
- package/extensions/forms/DataContext/Provider/Provider.js +46 -42
- package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
- package/extensions/forms/DataContext/Provider/ProviderDocs.js +1 -1
- package/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
- package/extensions/forms/Field/Slider/Slider.js +13 -4
- package/extensions/forms/Field/Slider/Slider.js.map +1 -1
- package/extensions/forms/FieldBlock/FieldBlock.js +17 -13
- package/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
- package/extensions/forms/Iterate/PushContainer/PushContainer.js +7 -2
- package/extensions/forms/Iterate/PushContainer/PushContainer.js.map +1 -1
- package/extensions/forms/Value/Provider/useValueProvider.d.ts +1 -0
- package/extensions/forms/Value/ValueDocs.js +5 -0
- package/extensions/forms/Value/ValueDocs.js.map +1 -1
- package/extensions/forms/ValueBlock/ValueBlock.d.ts +14 -1
- package/extensions/forms/ValueBlock/ValueBlock.js +40 -10
- package/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
- package/extensions/forms/ValueBlock/style/dnb-value-block.css +17 -0
- package/extensions/forms/ValueBlock/style/dnb-value-block.min.css +1 -1
- package/extensions/forms/ValueBlock/style/dnb-value-block.scss +24 -0
- package/extensions/forms/Wizard/Container/DisplaySteps.d.ts +7 -0
- package/extensions/forms/Wizard/Container/DisplaySteps.js +70 -0
- package/extensions/forms/Wizard/Container/DisplaySteps.js.map +1 -0
- package/extensions/forms/Wizard/Container/IterateOverSteps.d.ts +3 -0
- package/extensions/forms/Wizard/Container/IterateOverSteps.js +86 -0
- package/extensions/forms/Wizard/Container/IterateOverSteps.js.map +1 -0
- package/extensions/forms/Wizard/Container/PrerenderFieldPropsOfOtherSteps.d.ts +4 -0
- package/extensions/forms/Wizard/Container/PrerenderFieldPropsOfOtherSteps.js +57 -0
- package/extensions/forms/Wizard/Container/PrerenderFieldPropsOfOtherSteps.js.map +1 -0
- package/extensions/forms/Wizard/Container/WizardContainer.d.ts +9 -1
- package/extensions/forms/Wizard/Container/WizardContainer.js +103 -207
- package/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
- package/extensions/forms/Wizard/Container/WizardContainerDocs.js +10 -0
- package/extensions/forms/Wizard/Container/WizardContainerDocs.js.map +1 -1
- package/extensions/forms/Wizard/Context/WizardContext.d.ts +7 -23
- package/extensions/forms/Wizard/Context/WizardContext.js.map +1 -1
- package/extensions/forms/Wizard/Context/types.d.ts +35 -0
- package/extensions/forms/Wizard/Context/types.js +1 -0
- package/extensions/forms/Wizard/Context/types.js.map +1 -0
- package/extensions/forms/Wizard/EditButton/EditButton.d.ts +1 -1
- package/extensions/forms/Wizard/EditButton/EditButton.js.map +1 -1
- package/extensions/forms/Wizard/Step/Step.d.ts +4 -0
- package/extensions/forms/Wizard/Step/Step.js +29 -10
- package/extensions/forms/Wizard/Step/Step.js.map +1 -1
- package/extensions/forms/Wizard/Step/StepContext.d.ts +7 -0
- package/extensions/forms/Wizard/Step/StepContext.js +4 -0
- package/extensions/forms/Wizard/Step/StepContext.js.map +1 -0
- package/extensions/forms/Wizard/Step/StepDocs.js +5 -0
- package/extensions/forms/Wizard/Step/StepDocs.js.map +1 -1
- package/extensions/forms/Wizard/hooks/useStep.d.ts +2 -1
- package/extensions/forms/Wizard/hooks/useStep.js.map +1 -1
- package/extensions/forms/constants/locales/en-GB.d.ts +1 -0
- package/extensions/forms/constants/locales/en-GB.js +2 -1
- package/extensions/forms/constants/locales/en-GB.js.map +1 -1
- package/extensions/forms/constants/locales/en-US.d.ts +1 -0
- package/extensions/forms/constants/locales/index.d.ts +2 -0
- package/extensions/forms/constants/locales/nb-NO.d.ts +1 -0
- package/extensions/forms/constants/locales/nb-NO.js +2 -1
- package/extensions/forms/constants/locales/nb-NO.js.map +1 -1
- package/extensions/forms/hooks/useFieldProps.js +41 -23
- package/extensions/forms/hooks/useFieldProps.js.map +1 -1
- package/extensions/forms/style/dnb-forms.css +17 -0
- package/extensions/forms/style/dnb-forms.min.css +1 -1
- package/extensions/forms/types.d.ts +9 -1
- package/extensions/forms/types.js.map +1 -1
- package/fragments/drawer-list/DrawerList.d.ts +6 -1
- package/fragments/drawer-list/DrawerList.js +1 -0
- package/fragments/drawer-list/DrawerList.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/style/core/scopes.scss +1 -1
- package/style/dnb-ui-basis.css +1 -1
- package/style/dnb-ui-basis.min.css +1 -1
- package/style/dnb-ui-body.css +1 -1
- package/style/dnb-ui-body.min.css +1 -1
- package/style/dnb-ui-components.css +53 -4
- package/style/dnb-ui-components.min.css +2 -2
- package/style/dnb-ui-core.css +1 -1
- package/style/dnb-ui-core.min.css +1 -1
- package/style/dnb-ui-extensions.css +17 -0
- package/style/dnb-ui-extensions.min.css +1 -1
- package/style/dnb-ui-forms.css +17 -0
- package/style/dnb-ui-forms.min.css +1 -1
- package/style/themes/theme-eiendom/eiendom-theme-components.css +70 -4
- package/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
- package/style/themes/theme-eiendom/eiendom-theme-extensions.css +17 -0
- package/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
- package/style/themes/theme-eiendom/eiendom-theme-forms.css +17 -0
- package/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
- package/style/themes/theme-sbanken/sbanken-theme-components.css +70 -4
- package/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
- package/style/themes/theme-sbanken/sbanken-theme-extensions.css +17 -0
- package/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
- package/style/themes/theme-sbanken/sbanken-theme-forms.css +17 -0
- package/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
- package/style/themes/theme-ui/ui-theme-components.css +70 -4
- package/style/themes/theme-ui/ui-theme-components.min.css +2 -2
- package/style/themes/theme-ui/ui-theme-extensions.css +17 -0
- package/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
- package/style/themes/theme-ui/ui-theme-forms.css +17 -0
- 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 +1 -1
- package/umd/dnb-ui-lib.min.js +1 -1
|
@@ -44,7 +44,7 @@ function FieldBlock(props) {
|
|
|
44
44
|
required,
|
|
45
45
|
info,
|
|
46
46
|
warning,
|
|
47
|
-
error
|
|
47
|
+
error,
|
|
48
48
|
disableStatusSummary,
|
|
49
49
|
fieldState,
|
|
50
50
|
disabled,
|
|
@@ -59,6 +59,9 @@ function FieldBlock(props) {
|
|
|
59
59
|
rest = _objectWithoutProperties(_Object$assign, _excluded);
|
|
60
60
|
const hasCustomWidth = /\d(rem)$/.test(String(width));
|
|
61
61
|
const hasCustomContentWidth = /\d(rem)$/.test(String(contentWidth));
|
|
62
|
+
const infoRef = useRef();
|
|
63
|
+
const warningRef = useRef();
|
|
64
|
+
const errorRef = useRef();
|
|
62
65
|
const blockId = useId(props.id);
|
|
63
66
|
const [salt, forceUpdate] = useReducer(() => ({}), {});
|
|
64
67
|
const mountedFieldsRef = useRef({});
|
|
@@ -66,9 +69,7 @@ function FieldBlock(props) {
|
|
|
66
69
|
const stateRecordRef = useRef({});
|
|
67
70
|
const fieldStateIdsRef = useRef(null);
|
|
68
71
|
const contentsRef = useRef(null);
|
|
69
|
-
const
|
|
70
|
-
return Boolean(errorProp);
|
|
71
|
-
}, []);
|
|
72
|
+
const hasInitiallyErrorPropRef = useRef(Boolean(error));
|
|
72
73
|
const label = useIterateItemNo({
|
|
73
74
|
label: labelProp,
|
|
74
75
|
labelSuffix,
|
|
@@ -130,15 +131,17 @@ function FieldBlock(props) {
|
|
|
130
131
|
}
|
|
131
132
|
}, [nestedFieldBlockContext]);
|
|
132
133
|
const statusContent = useMemo(() => {
|
|
133
|
-
if (typeof
|
|
134
|
+
if (typeof error !== 'undefined' || errorRef.current && !error) {
|
|
135
|
+
errorRef.current = error;
|
|
134
136
|
setInternalRecord({
|
|
135
137
|
identifier: blockId,
|
|
136
|
-
showInitially:
|
|
138
|
+
showInitially: hasInitiallyErrorPropRef.current,
|
|
137
139
|
type: 'error',
|
|
138
|
-
content:
|
|
140
|
+
content: error
|
|
139
141
|
});
|
|
140
142
|
}
|
|
141
|
-
if (typeof warning !== 'undefined') {
|
|
143
|
+
if (typeof warning !== 'undefined' || warningRef.current !== warning) {
|
|
144
|
+
warningRef.current = warning;
|
|
142
145
|
setInternalRecord({
|
|
143
146
|
identifier: blockId,
|
|
144
147
|
showInitially: true,
|
|
@@ -146,7 +149,8 @@ function FieldBlock(props) {
|
|
|
146
149
|
content: warning
|
|
147
150
|
});
|
|
148
151
|
}
|
|
149
|
-
if (typeof info !== 'undefined') {
|
|
152
|
+
if (typeof info !== 'undefined' || infoRef.current !== info) {
|
|
153
|
+
infoRef.current = info;
|
|
150
154
|
setInternalRecord({
|
|
151
155
|
identifier: blockId,
|
|
152
156
|
showInitially: true,
|
|
@@ -228,12 +232,12 @@ function FieldBlock(props) {
|
|
|
228
232
|
}
|
|
229
233
|
return acc;
|
|
230
234
|
}, salt);
|
|
231
|
-
}, [
|
|
235
|
+
}, [error, warning, info, salt, setInternalRecord, blockId, props.id, forId, label]);
|
|
232
236
|
useEffect(() => {
|
|
233
237
|
if (!nestedFieldBlockContext) {
|
|
234
|
-
showFieldError(blockId, Boolean(
|
|
238
|
+
showFieldError(blockId, Boolean(error));
|
|
235
239
|
}
|
|
236
|
-
}, [
|
|
240
|
+
}, [error, blockId, showFieldError, nestedFieldBlockContext]);
|
|
237
241
|
useEffect(() => () => {
|
|
238
242
|
mountedFieldsRef.current = {};
|
|
239
243
|
stateRecordRef.current = {};
|
|
@@ -286,7 +290,7 @@ function FieldBlock(props) {
|
|
|
286
290
|
setBlockRecord,
|
|
287
291
|
setFieldState,
|
|
288
292
|
showFieldError,
|
|
289
|
-
hasErrorProp: Boolean(
|
|
293
|
+
hasErrorProp: Boolean(error),
|
|
290
294
|
fieldStateIdsRef,
|
|
291
295
|
mountedFieldsRef,
|
|
292
296
|
composition,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FieldBlock.js","names":["React","useMemo","useContext","useCallback","useRef","useReducer","useEffect","classnames","FieldBlockContext","DataContext","Space","FormLabel","FormStatus","Ul","Li","convertJsxToString","findElementInChildren","useId","HelpButtonInline","HelpButtonInlineContent","SubmitIndicator","createSharedState","useTranslation","FormError","useIterateItemNo","states","FieldBlock","props","_props$id","dataContext","fieldBlockContext","nestedFieldBlockContext","disableStatusSummary","id","forId","sharedData","_Object$assign","Object","assign","data","className","layout","layoutOptions","composition","label","labelProp","labelDescription","labelSuffix","labelSrOnly","help","asFieldset","required","info","warning","error","errorProp","fieldState","disabled","width","contentWidth","labelHeight","align","labelSize","contentClassName","children","rest","_objectWithoutProperties","_excluded","hasCustomWidth","test","String","hasCustomContentWidth","blockId","salt","forceUpdate","mountedFieldsRef","fieldStateRef","stateRecordRef","fieldStateIdsRef","contentsRef","hasInitiallyErrorProp","Boolean","setInternalRecord","stateId","identifier","type","current","existingIndex","findIndex","item","_objectSpread","push","setBlockRecordNested","setBlockRecord","setFieldState","showFieldError","show","map","showInitially","statusContent","content","statesWithMessages","entries","flatMap","_ref","reduce","acc","cur","existing","find","messages","getMessagesFromError","message","undefined","state","width_element","no_animation","process","env","NODE_ENV","globalThis","IS_TEST","found","msg","filter","_ref2","i","arr","length","createElement","CombineMessages","mainClasses","gridClasses","enableFieldset","useEnableFieldset","labelProps","element","srOnly","space","size","mainStyle","_lO$minWidth","_lO$maxWidth","style","lO","min","getFieldWidth","minWidth","max","maxWidth","prerenderFieldProps","hasLabelDescription","isFragment","fragmentHasChildren","fragmentHasOnlyUndefinedChildren","hasHelp","title","Provider","value","hasErrorProp","_extends","contentId","breakout","outset","parseFloat","ref","_ref3","result","count","child","_child$props","_child$type","_ref4","translations","Field","Fragment","errorSummary","stateSummary","_ref5","key","Array","isArray","errors","Error","isValidElement","toString","fragment","Children","isUndefined","toArray","every","_supportsSpacingProps"],"sources":["../../../../../src/extensions/forms/FieldBlock/FieldBlock.tsx"],"sourcesContent":["import React, {\n useMemo,\n useContext,\n useCallback,\n useRef,\n useReducer,\n useEffect,\n} from 'react'\nimport classnames from 'classnames'\nimport FieldBlockContext, {\n StateWithMessage,\n StatesWithMessages,\n FieldErrorIdsRef,\n MountedFieldsRef,\n StateRecord,\n StateMessage,\n StateTypes,\n StatusContent,\n FieldBlockContextProps,\n StateBasis,\n} from './FieldBlockContext'\nimport DataContext from '../DataContext/Context'\nimport { Space, FormLabel, FormStatus } from '../../../components'\nimport { Ul, Li } from '../../../elements'\nimport {\n convertJsxToString,\n findElementInChildren,\n} from '../../../shared/component-helper'\nimport useId from '../../../shared/helpers/useId'\nimport {\n ComponentProps,\n FieldProps,\n SubmitState,\n Identifier,\n} from '../types'\nimport type { FormLabelAllProps } from '../../../components/FormLabel'\nimport HelpButtonInline, {\n HelpButtonInlineContent,\n HelpProps,\n} from '../../../components/help-button/HelpButtonInline'\nimport SubmitIndicator from '../Form/SubmitIndicator/SubmitIndicator'\nimport { createSharedState } from '../../../shared/helpers/useSharedState'\nimport useTranslation from '../hooks/useTranslation'\nimport { FormError } from '../utils'\nimport { useIterateItemNo } from '../Iterate/ItemNo/useIItemNo'\n\nexport const states: Array<StateTypes> = ['error', 'info', 'warning']\n\n/**\n * The width of a field block\n */\nexport type CustomWidth = `${number}rem`\nexport type FieldBlockWidth =\n | false\n | 'small'\n | 'medium'\n | 'large'\n | 'stretch'\n | CustomWidth\nexport type FieldBlockHorizontalLabelWidth =\n | 'small'\n | 'medium'\n | 'large'\n | CustomWidth\nexport type FieldBlockHorizontalLabelHeight =\n | 'default'\n | 'small'\n | 'medium'\n | 'large'\n\nexport type SharedFieldBlockProps = {\n /**\n * The layout of the field block\n */\n layout?: 'vertical' | 'horizontal'\n /** Use this to set additional options for the layout */\n layoutOptions?: {\n width?: FieldBlockHorizontalLabelWidth\n minWidth?: FieldBlockHorizontalLabelWidth\n maxWidth?: FieldBlockHorizontalLabelWidth\n }\n /**\n * Main label text for the field\n */\n label?: React.ReactNode\n /**\n * Will append an additional text to the label, like \"(optional)\" or \"(recommended)\"\n */\n labelSuffix?: React.ReactNode\n /**\n * A more discreet text displayed beside the label\n */\n labelDescription?: React.ReactNode\n /**\n * Width of outer block element\n */\n width?: FieldBlockWidth\n /**\n * Width of contents block, while label etc can be wider if space is available\n */\n contentWidth?: FieldBlockWidth\n /**\n * Provide help content for the field.\n */\n help?: HelpProps\n}\n\nexport type Props = SharedFieldBlockProps &\n Pick<\n FieldProps,\n keyof ComponentProps | 'info' | 'warning' | 'error' | 'disabled'\n > & {\n /** The id to link a element with */\n forId?: string\n /** Use true if you have more than one form element */\n asFieldset?: boolean\n /** use `true` to make the label only readable by screen readers. */\n labelSrOnly?: boolean\n /** Defines the layout of nested fields */\n composition?: FieldBlockContextProps['composition']\n /** For composition only: Align the contents vertically */\n align?: 'center' | 'bottom'\n /** Class name for the contents block */\n contentClassName?: string\n /** To show the SubmitIndicator during async validation */\n fieldState?: SubmitState\n /** Typography size */\n labelSize?: 'medium' | 'large'\n /** Defines the height of an component (size prop), so the label can be aligned correctly */\n labelHeight?: FieldBlockHorizontalLabelHeight\n /** Disable the error summary for this field block */\n disableStatusSummary?: boolean\n /** For internal use only */\n required?: boolean\n children?: React.ReactNode\n } & React.HTMLAttributes<HTMLDivElement>\n\nfunction FieldBlock(props: Props) {\n const dataContext = useContext(DataContext)\n const fieldBlockContext = useContext(FieldBlockContext)\n const nestedFieldBlockContext = !fieldBlockContext?.disableStatusSummary\n ? fieldBlockContext\n : null\n\n const id = useId(props.id ?? props.forId)\n const sharedData = createSharedState<Props>('field-block-props-' + id)\n const {\n className,\n forId,\n layout = 'vertical',\n layoutOptions,\n composition,\n label: labelProp,\n labelDescription,\n labelSuffix,\n labelSrOnly,\n help,\n asFieldset,\n required,\n info,\n warning,\n error: errorProp,\n disableStatusSummary,\n fieldState,\n disabled,\n width,\n contentWidth,\n labelHeight,\n align,\n labelSize,\n contentClassName,\n children,\n ...rest\n } = Object.assign({}, sharedData.data, props)\n const hasCustomWidth = /\\d(rem)$/.test(String(width))\n const hasCustomContentWidth = /\\d(rem)$/.test(String(contentWidth))\n\n const blockId = useId(props.id)\n const [salt, forceUpdate] = useReducer(() => ({}), {})\n const mountedFieldsRef = useRef<MountedFieldsRef>({})\n const fieldStateRef = useRef<SubmitState>(null)\n const stateRecordRef = useRef<StateRecord>({})\n const fieldStateIdsRef = useRef<FieldErrorIdsRef>(null)\n const contentsRef = useRef<HTMLDivElement>(null)\n const hasInitiallyErrorProp = useMemo(() => {\n return Boolean(errorProp)\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n const label = useIterateItemNo({\n label: labelProp,\n labelSuffix,\n required,\n })\n\n const setInternalRecord = useCallback((props: StateBasis) => {\n const { stateId, identifier, type } = props\n\n if (!stateRecordRef.current[identifier]) {\n stateRecordRef.current[identifier] = []\n }\n\n fieldStateIdsRef.current = { error: null, warning: null, info: null }\n\n const existingIndex = stateRecordRef.current[identifier].findIndex(\n (item) => {\n return item.stateId === stateId && item.type === type\n }\n )\n\n if (existingIndex > -1) {\n stateRecordRef.current[identifier][existingIndex] = {\n ...stateRecordRef.current[identifier][existingIndex],\n ...props,\n }\n } else {\n stateRecordRef.current[identifier].push(props)\n }\n }, [])\n\n const setBlockRecordNested = nestedFieldBlockContext?.setBlockRecord\n const setBlockRecord = useCallback(\n (props: StateBasis) => {\n if (setBlockRecordNested) {\n // If this FieldBlock is inside another one, forward the call to the outer one\n setBlockRecordNested(props)\n return\n }\n\n setInternalRecord(props)\n\n forceUpdate()\n },\n [setBlockRecordNested, setInternalRecord]\n )\n\n const setFieldState = useCallback(\n (identifier: Identifier, fieldState: SubmitState) => {\n if (fieldState !== fieldStateRef.current) {\n fieldStateRef.current = fieldState\n\n forceUpdate()\n }\n },\n []\n )\n\n const showFieldError = useCallback(\n (identifier: Identifier, show: boolean) => {\n if (nestedFieldBlockContext) {\n // If this FieldBlock is inside another one, forward the call to the outer one\n nestedFieldBlockContext.showFieldError(identifier, show)\n return\n }\n\n if (stateRecordRef.current[identifier]) {\n stateRecordRef.current[identifier] = stateRecordRef.current[\n identifier\n ].map((item) => {\n if (item.showInitially) {\n return item\n }\n\n return {\n ...item,\n show,\n }\n })\n\n forceUpdate()\n }\n },\n [nestedFieldBlockContext]\n )\n\n const statusContent = useMemo(() => {\n if (typeof errorProp !== 'undefined') {\n setInternalRecord({\n identifier: blockId,\n showInitially: hasInitiallyErrorProp,\n type: 'error',\n content: errorProp,\n })\n }\n\n if (typeof warning !== 'undefined') {\n setInternalRecord({\n identifier: blockId,\n showInitially: true,\n type: 'warning',\n content: warning,\n })\n }\n\n if (typeof info !== 'undefined') {\n setInternalRecord({\n identifier: blockId,\n showInitially: true,\n type: 'info',\n content: info,\n })\n }\n\n const statesWithMessages: Array<StatesWithMessages> =\n // 1. Prepare the states for later use\n Object.entries(stateRecordRef.current)\n .flatMap(([identifier, states]) =>\n states.map((props) => {\n return {\n identifier,\n ...props,\n }\n })\n )\n\n // 2. Take states and group the same type together\n .reduce((acc, cur) => {\n const existing = acc.find((item) => {\n return item.type === cur.type\n })\n\n const messages = getMessagesFromError(cur).map((message) => {\n return {\n ...cur,\n message,\n }\n })\n\n if (existing) {\n existing.messages.push(...messages)\n } else {\n acc.push({\n ...cur,\n content: undefined,\n messages,\n })\n }\n\n return acc\n }, [] as Array<StatesWithMessages>)\n\n // 3. Return the grouped states/messages\n return states.reduce((acc, type) => {\n const id = `${props.id || forId || blockId}-form-status--${type}`\n acc[type] = {\n id,\n label,\n state: type === 'warning' ? 'warn' : type,\n width_element: contentsRef,\n\n // Enable animation only in the browser and not in tests\n no_animation:\n process.env.NODE_ENV === 'test'\n ? true\n : typeof globalThis !== 'undefined'\n ? globalThis.IS_TEST === true\n : false,\n }\n\n const found = statesWithMessages.find((item) => {\n return item.type === type\n })\n\n if (found?.messages) {\n // Hide/remove messages that should be hidden and are not marked as to be shown initially\n const messages = found.messages\n .map((msg) => {\n if (msg.type === 'error') {\n if (!msg.showInitially && !msg.show) {\n msg.message = null\n }\n }\n\n return msg\n })\n .filter(({ message }) => message)\n .reduce((acc, msg, i, arr) => {\n const existingIndex = arr.findIndex((item) => {\n return (\n convertJsxToString(item.message) ===\n convertJsxToString(msg.message)\n )\n })\n\n // Remove duplicates, use the first found message\n if (existingIndex === i) {\n acc.push(msg)\n }\n\n return acc\n }, [])\n\n // Combine the messages and put them in an ul/li list\n if (messages.length > 0) {\n acc[type] = {\n ...acc[type],\n children: <CombineMessages type={type} messages={messages} />,\n }\n\n fieldStateIdsRef.current[type] = id\n } else {\n fieldStateIdsRef.current[type] = undefined\n }\n }\n\n return acc\n }, salt) as StatusContent\n }, [\n errorProp,\n warning,\n info,\n salt,\n setInternalRecord,\n blockId,\n hasInitiallyErrorProp,\n props.id,\n forId,\n label,\n ])\n\n // Handle the error prop from outside\n useEffect(() => {\n if (!nestedFieldBlockContext) {\n showFieldError(blockId, Boolean(errorProp))\n }\n }, [errorProp, blockId, showFieldError, nestedFieldBlockContext])\n\n useEffect(\n () => () => {\n mountedFieldsRef.current = {}\n stateRecordRef.current = {}\n },\n []\n )\n\n const mainClasses = classnames(\n 'dnb-forms-field-block',\n width &&\n `dnb-forms-field-block--width-${hasCustomWidth ? 'custom' : width}`,\n contentWidth &&\n `dnb-forms-field-block--content-width-${\n hasCustomContentWidth ? 'custom' : contentWidth\n }`,\n labelHeight && `dnb-forms-field-block--label-height-${labelHeight}`,\n composition && 'dnb-forms-field-block__composition',\n composition &&\n `dnb-forms-field-block__composition--${\n composition === true ? 'horizontal' : composition\n }`,\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 labelProps: FormLabelAllProps = {\n id: `${id}-label`,\n className: 'dnb-forms-field-block__label',\n element: enableFieldset ? 'legend' : 'label',\n forId: enableFieldset ? undefined : forId,\n srOnly: labelSrOnly,\n space: 0, // Use CSS for spacing, but we need to reset space for doing so\n size: labelSize,\n disabled,\n }\n\n const mainStyle = useMemo(() => {\n const style: React.CSSProperties = {}\n\n if (hasCustomWidth) {\n style['--dnb-forms-field-block-width'] = width\n }\n\n if (hasCustomContentWidth) {\n style['--dnb-forms-field-block-content-width'] = contentWidth\n }\n\n const lO = layoutOptions || {}\n const min = getFieldWidth(lO.minWidth ?? lO.width)\n const max = getFieldWidth(lO.maxWidth ?? lO.width)\n\n if (typeof min === 'string') {\n style['--dnb-forms-field-block-layout-width-min'] = min\n }\n if (typeof max === 'string') {\n style['--dnb-forms-field-block-layout-width-max'] = max\n }\n\n return style\n }, [\n contentWidth,\n hasCustomContentWidth,\n hasCustomWidth,\n layoutOptions,\n width,\n ])\n\n if (dataContext?.prerenderFieldProps) {\n return null\n }\n\n const hasLabelDescription = isFragment(labelDescription)\n ? fragmentHasChildren(labelDescription) &&\n !fragmentHasOnlyUndefinedChildren(labelDescription)\n : labelDescription\n const hasHelp = help?.title || help?.content\n\n return (\n <FieldBlockContext.Provider\n value={{\n setBlockRecord,\n setFieldState,\n showFieldError,\n hasErrorProp: Boolean(errorProp),\n fieldStateIdsRef,\n mountedFieldsRef,\n composition,\n disableStatusSummary,\n }}\n >\n <Space\n element={enableFieldset ? 'fieldset' : 'div'} // use fieldset and legend to enhance a11y\n style={mainStyle}\n className={mainClasses}\n {...rest}\n >\n <div className={gridClasses}>\n {(label || labelDescription || hasHelp) && (\n <FormLabel {...labelProps}>\n <span>\n {label && (\n <span className=\"dnb-forms-field-block__label__content\">\n {label}\n </span>\n )}\n\n {hasLabelDescription && (\n <span className=\"dnb-forms-field-block__label__description\">\n {labelDescription}\n </span>\n )}\n\n {hasHelp && (\n <HelpButtonInline contentId={`${id}-help`} help={help} />\n )}\n </span>\n </FormLabel>\n )}\n\n {hasHelp && (\n <HelpButtonInlineContent\n contentId={`${id}-help`}\n className=\"dnb-forms-field-block__help\"\n help={help}\n breakout={\n layout === 'vertical' &&\n !nestedFieldBlockContext?.composition\n }\n outset={layout !== 'horizontal'}\n />\n )}\n\n <div\n className={classnames(\n 'dnb-forms-field-block__status',\n\n // Handle the width of the status messages\n contentWidth &&\n contentWidth !== 'small' &&\n contentWidth !== 'medium' &&\n !(parseFloat(contentWidth) <= 11) &&\n `dnb-forms-field-block__contents--width-${\n hasCustomContentWidth ? 'custom' : contentWidth\n }`\n )}\n >\n <FormStatus {...statusContent?.error} />\n <FormStatus {...statusContent?.warning} />\n <FormStatus {...statusContent?.info} />\n </div>\n\n <div\n className={classnames(\n 'dnb-forms-field-block__contents',\n contentWidth &&\n `dnb-forms-field-block__contents--width-${\n hasCustomContentWidth ? 'custom' : contentWidth\n }`,\n align && `dnb-forms-field-block__contents--align-${align}`,\n contentClassName\n )}\n ref={contentsRef}\n >\n {children}\n </div>\n\n <SubmitIndicator\n state={fieldState ?? fieldStateRef.current}\n className=\"dnb-forms-field-block__indicator dnb-forms-submit-indicator--inline-wrap\"\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\nfunction CombineMessages({\n type,\n messages,\n}: {\n type: StateTypes\n messages: Array<StateWithMessage>\n}) {\n const translations = useTranslation().Field\n\n if (messages.length === 1) {\n return <>{messages[0].message}</>\n }\n\n return (\n <>\n {type === 'error'\n ? translations.errorSummary\n : translations.stateSummary}\n <Ul>\n {messages.map(({ message }, i) => {\n return <Li key={i}>{message}</Li>\n })}\n </Ul>\n </>\n )\n}\n\nexport function getMessagesFromError(\n item: Partial<StateWithMessage>\n): Array<StateMessage> {\n const { content } = item\n\n if (content instanceof FormError && Array.isArray(content.errors)) {\n return content.errors.map((error) => {\n return error.message\n })\n }\n\n if (Array.isArray(content)) {\n return content.map((content) => {\n return content instanceof FormError || content instanceof Error\n ? content.message\n : content\n })\n }\n\n if (content instanceof FormError || content instanceof Error) {\n return [content.message as StateMessage]\n }\n\n return [\n ((React.isValidElement(content) ? content : content?.toString()) ||\n content) as StateMessage,\n ]\n}\n\nfunction isFragment(fragment: React.ReactNode) {\n return React.isValidElement(fragment) && fragment.type === React.Fragment\n}\n\nfunction fragmentHasChildren(fragment: React.ReactNode) {\n return (\n React.isValidElement(fragment) &&\n React.Children.count(fragment.props.children) > 0\n )\n}\n\nfunction fragmentHasOnlyUndefinedChildren(fragment: React.ReactNode) {\n const isUndefined = (child) => child === undefined\n\n return (\n React.isValidElement(fragment) &&\n React.Children.toArray(fragment.props.children).every(isUndefined)\n )\n}\n\nFieldBlock._supportsSpacingProps = true\n\nexport default FieldBlock\n\nfunction getFieldWidth(width: FieldBlockHorizontalLabelWidth) {\n switch (width) {\n case 'small':\n return 'var(--forms-field-width--small)'\n case 'medium':\n return 'var(--forms-field-width--medium)'\n case 'large':\n return 'var(--forms-field-width--large)'\n }\n\n return width\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FieldBlock.js","names":["React","useMemo","useContext","useCallback","useRef","useReducer","useEffect","classnames","FieldBlockContext","DataContext","Space","FormLabel","FormStatus","Ul","Li","convertJsxToString","findElementInChildren","useId","HelpButtonInline","HelpButtonInlineContent","SubmitIndicator","createSharedState","useTranslation","FormError","useIterateItemNo","states","FieldBlock","props","_props$id","dataContext","fieldBlockContext","nestedFieldBlockContext","disableStatusSummary","id","forId","sharedData","_Object$assign","Object","assign","data","className","layout","layoutOptions","composition","label","labelProp","labelDescription","labelSuffix","labelSrOnly","help","asFieldset","required","info","warning","error","fieldState","disabled","width","contentWidth","labelHeight","align","labelSize","contentClassName","children","rest","_objectWithoutProperties","_excluded","hasCustomWidth","test","String","hasCustomContentWidth","infoRef","warningRef","errorRef","blockId","salt","forceUpdate","mountedFieldsRef","fieldStateRef","stateRecordRef","fieldStateIdsRef","contentsRef","hasInitiallyErrorPropRef","Boolean","setInternalRecord","stateId","identifier","type","current","existingIndex","findIndex","item","_objectSpread","push","setBlockRecordNested","setBlockRecord","setFieldState","showFieldError","show","map","showInitially","statusContent","content","statesWithMessages","entries","flatMap","_ref","reduce","acc","cur","existing","find","messages","getMessagesFromError","message","undefined","state","width_element","no_animation","process","env","NODE_ENV","globalThis","IS_TEST","found","msg","filter","_ref2","i","arr","length","createElement","CombineMessages","mainClasses","gridClasses","enableFieldset","useEnableFieldset","labelProps","element","srOnly","space","size","mainStyle","_lO$minWidth","_lO$maxWidth","style","lO","min","getFieldWidth","minWidth","max","maxWidth","prerenderFieldProps","hasLabelDescription","isFragment","fragmentHasChildren","fragmentHasOnlyUndefinedChildren","hasHelp","title","Provider","value","hasErrorProp","_extends","contentId","breakout","outset","parseFloat","ref","_ref3","result","count","child","_child$props","_child$type","_ref4","translations","Field","Fragment","errorSummary","stateSummary","_ref5","key","Array","isArray","errors","Error","isValidElement","toString","fragment","Children","isUndefined","toArray","every","_supportsSpacingProps"],"sources":["../../../../../src/extensions/forms/FieldBlock/FieldBlock.tsx"],"sourcesContent":["import React, {\n useMemo,\n useContext,\n useCallback,\n useRef,\n useReducer,\n useEffect,\n} from 'react'\nimport classnames from 'classnames'\nimport FieldBlockContext, {\n StateWithMessage,\n StatesWithMessages,\n FieldErrorIdsRef,\n MountedFieldsRef,\n StateRecord,\n StateMessage,\n StateTypes,\n StatusContent,\n FieldBlockContextProps,\n StateBasis,\n} from './FieldBlockContext'\nimport DataContext from '../DataContext/Context'\nimport { Space, FormLabel, FormStatus } from '../../../components'\nimport { Ul, Li } from '../../../elements'\nimport {\n convertJsxToString,\n findElementInChildren,\n} from '../../../shared/component-helper'\nimport useId from '../../../shared/helpers/useId'\nimport {\n ComponentProps,\n FieldProps,\n SubmitState,\n Identifier,\n UseFieldProps,\n} from '../types'\nimport type { FormLabelAllProps } from '../../../components/FormLabel'\nimport HelpButtonInline, {\n HelpButtonInlineContent,\n HelpProps,\n} from '../../../components/help-button/HelpButtonInline'\nimport SubmitIndicator from '../Form/SubmitIndicator/SubmitIndicator'\nimport { createSharedState } from '../../../shared/helpers/useSharedState'\nimport useTranslation from '../hooks/useTranslation'\nimport { FormError } from '../utils'\nimport { useIterateItemNo } from '../Iterate/ItemNo/useIItemNo'\n\nexport const states: Array<StateTypes> = ['error', 'info', 'warning']\n\n/**\n * The width of a field block\n */\nexport type CustomWidth = `${number}rem`\nexport type FieldBlockWidth =\n | false\n | 'small'\n | 'medium'\n | 'large'\n | 'stretch'\n | CustomWidth\nexport type FieldBlockHorizontalLabelWidth =\n | 'small'\n | 'medium'\n | 'large'\n | CustomWidth\nexport type FieldBlockHorizontalLabelHeight =\n | 'default'\n | 'small'\n | 'medium'\n | 'large'\n\nexport type SharedFieldBlockProps = {\n /**\n * The layout of the field block\n */\n layout?: 'vertical' | 'horizontal'\n /** Use this to set additional options for the layout */\n layoutOptions?: {\n width?: FieldBlockHorizontalLabelWidth\n minWidth?: FieldBlockHorizontalLabelWidth\n maxWidth?: FieldBlockHorizontalLabelWidth\n }\n /**\n * Main label text for the field\n */\n label?: React.ReactNode\n /**\n * Will append an additional text to the label, like \"(optional)\" or \"(recommended)\"\n */\n labelSuffix?: React.ReactNode\n /**\n * A more discreet text displayed beside the label\n */\n labelDescription?: React.ReactNode\n /**\n * Width of outer block element\n */\n width?: FieldBlockWidth\n /**\n * Width of contents block, while label etc can be wider if space is available\n */\n contentWidth?: FieldBlockWidth\n /**\n * Provide help content for the field.\n */\n help?: HelpProps\n}\n\nexport type Props = SharedFieldBlockProps &\n Pick<\n FieldProps,\n keyof ComponentProps | 'info' | 'warning' | 'error' | 'disabled'\n > & {\n /** The id to link a element with */\n forId?: string\n /** Use true if you have more than one form element */\n asFieldset?: boolean\n /** use `true` to make the label only readable by screen readers. */\n labelSrOnly?: boolean\n /** Defines the layout of nested fields */\n composition?: FieldBlockContextProps['composition']\n /** For composition only: Align the contents vertically */\n align?: 'center' | 'bottom'\n /** Class name for the contents block */\n contentClassName?: string\n /** To show the SubmitIndicator during async validation */\n fieldState?: SubmitState\n /** Typography size */\n labelSize?: 'medium' | 'large'\n /** Defines the height of an component (size prop), so the label can be aligned correctly */\n labelHeight?: FieldBlockHorizontalLabelHeight\n /** Disable the error summary for this field block */\n disableStatusSummary?: boolean\n /** For internal use only */\n required?: boolean\n children?: React.ReactNode\n } & React.HTMLAttributes<HTMLDivElement>\n\nfunction FieldBlock(props: Props) {\n const dataContext = useContext(DataContext)\n const fieldBlockContext = useContext(FieldBlockContext)\n const nestedFieldBlockContext = !fieldBlockContext?.disableStatusSummary\n ? fieldBlockContext\n : null\n\n const id = useId(props.id ?? props.forId)\n const sharedData = createSharedState<Props>('field-block-props-' + id)\n const {\n className,\n forId,\n layout = 'vertical',\n layoutOptions,\n composition,\n label: labelProp,\n labelDescription,\n labelSuffix,\n labelSrOnly,\n help,\n asFieldset,\n required,\n info,\n warning,\n error,\n disableStatusSummary,\n fieldState,\n disabled,\n width,\n contentWidth,\n labelHeight,\n align,\n labelSize,\n contentClassName,\n children,\n ...rest\n } = Object.assign({}, sharedData.data, props)\n const hasCustomWidth = /\\d(rem)$/.test(String(width))\n const hasCustomContentWidth = /\\d(rem)$/.test(String(contentWidth))\n\n const infoRef = useRef<UseFieldProps['info']>()\n const warningRef = useRef<UseFieldProps['warning']>()\n const errorRef = useRef<UseFieldProps['error']>()\n\n const blockId = useId(props.id)\n const [salt, forceUpdate] = useReducer(() => ({}), {})\n const mountedFieldsRef = useRef<MountedFieldsRef>({})\n const fieldStateRef = useRef<SubmitState>(null)\n const stateRecordRef = useRef<StateRecord>({})\n const fieldStateIdsRef = useRef<FieldErrorIdsRef>(null)\n const contentsRef = useRef<HTMLDivElement>(null)\n const hasInitiallyErrorPropRef = useRef(Boolean(error))\n\n const label = useIterateItemNo({\n label: labelProp,\n labelSuffix,\n required,\n })\n\n const setInternalRecord = useCallback((props: StateBasis) => {\n const { stateId, identifier, type } = props\n\n if (!stateRecordRef.current[identifier]) {\n stateRecordRef.current[identifier] = []\n }\n\n fieldStateIdsRef.current = { error: null, warning: null, info: null }\n\n const existingIndex = stateRecordRef.current[identifier].findIndex(\n (item) => {\n return item.stateId === stateId && item.type === type\n }\n )\n\n if (existingIndex > -1) {\n stateRecordRef.current[identifier][existingIndex] = {\n ...stateRecordRef.current[identifier][existingIndex],\n ...props,\n }\n } else {\n stateRecordRef.current[identifier].push(props)\n }\n }, [])\n\n const setBlockRecordNested = nestedFieldBlockContext?.setBlockRecord\n const setBlockRecord = useCallback(\n (props: StateBasis) => {\n if (setBlockRecordNested) {\n // If this FieldBlock is inside another one, forward the call to the outer one\n setBlockRecordNested(props)\n return\n }\n\n setInternalRecord(props)\n\n forceUpdate()\n },\n [setBlockRecordNested, setInternalRecord]\n )\n\n const setFieldState = useCallback(\n (identifier: Identifier, fieldState: SubmitState) => {\n if (fieldState !== fieldStateRef.current) {\n fieldStateRef.current = fieldState\n\n forceUpdate()\n }\n },\n []\n )\n\n const showFieldError = useCallback(\n (identifier: Identifier, show: boolean) => {\n if (nestedFieldBlockContext) {\n // If this FieldBlock is inside another one, forward the call to the outer one\n nestedFieldBlockContext.showFieldError(identifier, show)\n return\n }\n\n if (stateRecordRef.current[identifier]) {\n stateRecordRef.current[identifier] = stateRecordRef.current[\n identifier\n ].map((item) => {\n if (item.showInitially) {\n return item\n }\n\n return {\n ...item,\n show,\n }\n })\n\n forceUpdate()\n }\n },\n [nestedFieldBlockContext]\n )\n\n const statusContent = useMemo(() => {\n if (typeof error !== 'undefined' || (errorRef.current && !error)) {\n errorRef.current = error\n setInternalRecord({\n identifier: blockId,\n showInitially: hasInitiallyErrorPropRef.current,\n type: 'error',\n content: error,\n })\n }\n\n if (typeof warning !== 'undefined' || warningRef.current !== warning) {\n warningRef.current = warning\n setInternalRecord({\n identifier: blockId,\n showInitially: true,\n type: 'warning',\n content: warning,\n })\n }\n\n if (typeof info !== 'undefined' || infoRef.current !== info) {\n infoRef.current = info\n setInternalRecord({\n identifier: blockId,\n showInitially: true,\n type: 'info',\n content: info,\n })\n }\n\n const statesWithMessages: Array<StatesWithMessages> =\n // 1. Prepare the states for later use\n Object.entries(stateRecordRef.current)\n .flatMap(([identifier, states]) =>\n states.map((props) => {\n return {\n identifier,\n ...props,\n }\n })\n )\n\n // 2. Take states and group the same type together\n .reduce((acc, cur) => {\n const existing = acc.find((item) => {\n return item.type === cur.type\n })\n\n const messages = getMessagesFromError(cur).map((message) => {\n return {\n ...cur,\n message,\n }\n })\n\n if (existing) {\n existing.messages.push(...messages)\n } else {\n acc.push({\n ...cur,\n content: undefined,\n messages,\n })\n }\n\n return acc\n }, [] as Array<StatesWithMessages>)\n\n // 3. Return the grouped states/messages\n return states.reduce((acc, type) => {\n const id = `${props.id || forId || blockId}-form-status--${type}`\n acc[type] = {\n id,\n label,\n state: type === 'warning' ? 'warn' : type,\n width_element: contentsRef,\n\n // Enable animation only in the browser and not in tests\n no_animation:\n process.env.NODE_ENV === 'test'\n ? true\n : typeof globalThis !== 'undefined'\n ? globalThis.IS_TEST === true\n : false,\n }\n\n const found = statesWithMessages.find((item) => {\n return item.type === type\n })\n\n if (found?.messages) {\n // Hide/remove messages that should be hidden and are not marked as to be shown initially\n const messages = found.messages\n .map((msg) => {\n if (msg.type === 'error') {\n if (!msg.showInitially && !msg.show) {\n msg.message = null\n }\n }\n\n return msg\n })\n .filter(({ message }) => message)\n .reduce((acc, msg, i, arr) => {\n const existingIndex = arr.findIndex((item) => {\n return (\n convertJsxToString(item.message) ===\n convertJsxToString(msg.message)\n )\n })\n\n // Remove duplicates, use the first found message\n if (existingIndex === i) {\n acc.push(msg)\n }\n\n return acc\n }, [])\n\n // Combine the messages and put them in an ul/li list\n if (messages.length > 0) {\n acc[type] = {\n ...acc[type],\n children: <CombineMessages type={type} messages={messages} />,\n }\n\n fieldStateIdsRef.current[type] = id\n } else {\n fieldStateIdsRef.current[type] = undefined\n }\n }\n\n return acc\n }, salt) as StatusContent\n }, [\n error,\n warning,\n info,\n salt,\n setInternalRecord,\n blockId,\n props.id,\n forId,\n label,\n ])\n\n // Handle the error prop from outside\n useEffect(() => {\n if (!nestedFieldBlockContext) {\n showFieldError(blockId, Boolean(error))\n }\n }, [error, blockId, showFieldError, nestedFieldBlockContext])\n\n useEffect(\n () => () => {\n mountedFieldsRef.current = {}\n stateRecordRef.current = {}\n },\n []\n )\n\n const mainClasses = classnames(\n 'dnb-forms-field-block',\n width &&\n `dnb-forms-field-block--width-${hasCustomWidth ? 'custom' : width}`,\n contentWidth &&\n `dnb-forms-field-block--content-width-${\n hasCustomContentWidth ? 'custom' : contentWidth\n }`,\n labelHeight && `dnb-forms-field-block--label-height-${labelHeight}`,\n composition && 'dnb-forms-field-block__composition',\n composition &&\n `dnb-forms-field-block__composition--${\n composition === true ? 'horizontal' : composition\n }`,\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 labelProps: FormLabelAllProps = {\n id: `${id}-label`,\n className: 'dnb-forms-field-block__label',\n element: enableFieldset ? 'legend' : 'label',\n forId: enableFieldset ? undefined : forId,\n srOnly: labelSrOnly,\n space: 0, // Use CSS for spacing, but we need to reset space for doing so\n size: labelSize,\n disabled,\n }\n\n const mainStyle = useMemo(() => {\n const style: React.CSSProperties = {}\n\n if (hasCustomWidth) {\n style['--dnb-forms-field-block-width'] = width\n }\n\n if (hasCustomContentWidth) {\n style['--dnb-forms-field-block-content-width'] = contentWidth\n }\n\n const lO = layoutOptions || {}\n const min = getFieldWidth(lO.minWidth ?? lO.width)\n const max = getFieldWidth(lO.maxWidth ?? lO.width)\n\n if (typeof min === 'string') {\n style['--dnb-forms-field-block-layout-width-min'] = min\n }\n if (typeof max === 'string') {\n style['--dnb-forms-field-block-layout-width-max'] = max\n }\n\n return style\n }, [\n contentWidth,\n hasCustomContentWidth,\n hasCustomWidth,\n layoutOptions,\n width,\n ])\n\n if (dataContext?.prerenderFieldProps) {\n return null\n }\n\n const hasLabelDescription = isFragment(labelDescription)\n ? fragmentHasChildren(labelDescription) &&\n !fragmentHasOnlyUndefinedChildren(labelDescription)\n : labelDescription\n const hasHelp = help?.title || help?.content\n\n return (\n <FieldBlockContext.Provider\n value={{\n setBlockRecord,\n setFieldState,\n showFieldError,\n hasErrorProp: Boolean(error),\n fieldStateIdsRef,\n mountedFieldsRef,\n composition,\n disableStatusSummary,\n }}\n >\n <Space\n element={enableFieldset ? 'fieldset' : 'div'} // use fieldset and legend to enhance a11y\n style={mainStyle}\n className={mainClasses}\n {...rest}\n >\n <div className={gridClasses}>\n {(label || labelDescription || hasHelp) && (\n <FormLabel {...labelProps}>\n <span>\n {label && (\n <span className=\"dnb-forms-field-block__label__content\">\n {label}\n </span>\n )}\n\n {hasLabelDescription && (\n <span className=\"dnb-forms-field-block__label__description\">\n {labelDescription}\n </span>\n )}\n\n {hasHelp && (\n <HelpButtonInline contentId={`${id}-help`} help={help} />\n )}\n </span>\n </FormLabel>\n )}\n\n {hasHelp && (\n <HelpButtonInlineContent\n contentId={`${id}-help`}\n className=\"dnb-forms-field-block__help\"\n help={help}\n breakout={\n layout === 'vertical' &&\n !nestedFieldBlockContext?.composition\n }\n outset={layout !== 'horizontal'}\n />\n )}\n\n <div\n className={classnames(\n 'dnb-forms-field-block__status',\n\n // Handle the width of the status messages\n contentWidth &&\n contentWidth !== 'small' &&\n contentWidth !== 'medium' &&\n !(parseFloat(contentWidth) <= 11) &&\n `dnb-forms-field-block__contents--width-${\n hasCustomContentWidth ? 'custom' : contentWidth\n }`\n )}\n >\n <FormStatus {...statusContent?.error} />\n <FormStatus {...statusContent?.warning} />\n <FormStatus {...statusContent?.info} />\n </div>\n\n <div\n className={classnames(\n 'dnb-forms-field-block__contents',\n contentWidth &&\n `dnb-forms-field-block__contents--width-${\n hasCustomContentWidth ? 'custom' : contentWidth\n }`,\n align && `dnb-forms-field-block__contents--align-${align}`,\n contentClassName\n )}\n ref={contentsRef}\n >\n {children}\n </div>\n\n <SubmitIndicator\n state={fieldState ?? fieldStateRef.current}\n className=\"dnb-forms-field-block__indicator dnb-forms-submit-indicator--inline-wrap\"\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\nfunction CombineMessages({\n type,\n messages,\n}: {\n type: StateTypes\n messages: Array<StateWithMessage>\n}) {\n const translations = useTranslation().Field\n\n if (messages.length === 1) {\n return <>{messages[0].message}</>\n }\n\n return (\n <>\n {type === 'error'\n ? translations.errorSummary\n : translations.stateSummary}\n <Ul>\n {messages.map(({ message }, i) => {\n return <Li key={i}>{message}</Li>\n })}\n </Ul>\n </>\n )\n}\n\nexport function getMessagesFromError(\n item: Partial<StateWithMessage>\n): Array<StateMessage> {\n const { content } = item\n\n if (content instanceof FormError && Array.isArray(content.errors)) {\n return content.errors.map((error) => {\n return error.message\n })\n }\n\n if (Array.isArray(content)) {\n return content.map((content) => {\n return content instanceof FormError || content instanceof Error\n ? content.message\n : content\n })\n }\n\n if (content instanceof FormError || content instanceof Error) {\n return [content.message as StateMessage]\n }\n\n return [\n ((React.isValidElement(content) ? content : content?.toString()) ||\n content) as StateMessage,\n ]\n}\n\nfunction isFragment(fragment: React.ReactNode) {\n return React.isValidElement(fragment) && fragment.type === React.Fragment\n}\n\nfunction fragmentHasChildren(fragment: React.ReactNode) {\n return (\n React.isValidElement(fragment) &&\n React.Children.count(fragment.props.children) > 0\n )\n}\n\nfunction fragmentHasOnlyUndefinedChildren(fragment: React.ReactNode) {\n const isUndefined = (child) => child === undefined\n\n return (\n React.isValidElement(fragment) &&\n React.Children.toArray(fragment.props.children).every(isUndefined)\n )\n}\n\nFieldBlock._supportsSpacingProps = true\n\nexport default FieldBlock\n\nfunction getFieldWidth(width: FieldBlockHorizontalLabelWidth) {\n switch (width) {\n case 'small':\n return 'var(--forms-field-width--small)'\n case 'medium':\n return 'var(--forms-field-width--medium)'\n case 'large':\n return 'var(--forms-field-width--large)'\n }\n\n return width\n}\n"],"mappings":"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"}
|
|
@@ -23,9 +23,11 @@ import { useTranslation } from '../../hooks';
|
|
|
23
23
|
import { clearedData } from '../../DataContext/Provider';
|
|
24
24
|
import structuredClone from '@ungap/structured-clone';
|
|
25
25
|
function PushContainer(props) {
|
|
26
|
-
var _useContext;
|
|
27
26
|
const [, forceUpdate] = useReducer(() => ({}), {});
|
|
28
|
-
const
|
|
27
|
+
const {
|
|
28
|
+
data: outerData,
|
|
29
|
+
required: requiredInherited
|
|
30
|
+
} = useContext(DataContext) || {};
|
|
29
31
|
const {
|
|
30
32
|
data: dataProp,
|
|
31
33
|
defaultData: defaultDataProp,
|
|
@@ -81,6 +83,9 @@ function PushContainer(props) {
|
|
|
81
83
|
pushContainerItems: [dataProp !== null && dataProp !== void 0 ? dataProp : clearedData]
|
|
82
84
|
});
|
|
83
85
|
}, [dataProp, defaultDataProp, isolatedData]);
|
|
86
|
+
if (outerData) {
|
|
87
|
+
Object.assign(data, outerData);
|
|
88
|
+
}
|
|
84
89
|
const defaultData = useMemo(() => {
|
|
85
90
|
return _objectSpread(_objectSpread({}, !dataProp ? isolatedData : null), {}, {
|
|
86
91
|
pushContainerItems: [defaultDataProp !== null && defaultDataProp !== void 0 ? defaultDataProp : clearedData]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PushContainer.js","names":["React","useCallback","useContext","useEffect","useMemo","useReducer","useRef","Isolation","PushContainerContext","IterateItemContext","DataContext","useDataValue","EditContainer","CancelButton","DoneButton","IterateArray","OpenButton","Flex","HeightAnimation","useArrayLimit","useItemPath","useSwitchContainerMode","Toolbar","useTranslation","clearedData","structuredClone","PushContainer","props","_useContext","forceUpdate","requiredInherited","required","data","dataProp","defaultData","defaultDataProp","isolatedData","bubbleValidation","path","itemPath","insertAt","title","children","openButton","showOpenButtonWhen","onCommit","rest","_objectWithoutProperties","_excluded","absolutePath","commitHandleRef","switchContainerModeRef","containerModeRef","value","entries","moveValueToPath","getValueByPath","setNextContainerMode","hasReachedLimit","setShowStatus","cancelHandler","showOpenButton","newItemContextProps","switchContainerMode","current","_objectSpread","pushContainerItems","emptyData","_data$pushContainerIt","firstItem","createElement","transformOnCommit","_ref","slice","options","clearData","preventCommit","_switchContainerModeR","call","Provider","containerMode","withoutFlex","NewContainer","_extends","rerenderPushContainer","_ref2","_DoneButton","_CancelButton","_excluded2","createButton","IteratePushContainer","restoreOriginalValue","toolbar","Consumer","context","Horizontal","gap","text","onClick","Fragment","open","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Iterate/PushContainer/PushContainer.tsx"],"sourcesContent":["import React, {\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useReducer,\n useRef,\n} from 'react'\nimport Isolation from '../../Form/Isolation'\nimport PushContainerContext from './PushContainerContext'\nimport IterateItemContext from '../IterateItemContext'\nimport DataContext from '../../DataContext/Context'\nimport useDataValue from '../../hooks/useDataValue'\nimport EditContainer, { CancelButton, DoneButton } from '../EditContainer'\nimport IterateArray, { ContainerMode } from '../Array'\nimport OpenButton from './OpenButton'\nimport { Flex, HeightAnimation } from '../../../../components'\nimport { OnCommit, Path } from '../../types'\nimport { SpacingProps } from '../../../../shared/types'\nimport {\n useArrayLimit,\n useItemPath,\n useSwitchContainerMode,\n} from '../hooks'\nimport Toolbar from '../Toolbar'\nimport { useTranslation } from '../../hooks'\nimport { ArrayItemAreaProps } from '../Array/ArrayItemArea'\nimport { clearedData } from '../../DataContext/Provider'\n\n/**\n * Deprecated, as it is supported by all major browsers and Node.js >=v18\n * So it's a question of time, when we will remove this polyfill\n */\nimport structuredClone from '@ungap/structured-clone'\n\ntype OnlyPathRequired = {\n /**\n * The path to the array to add the new item to.\n */\n path: Path\n\n /** The sub path to the array to add the new item to. */\n itemPath?: Path\n}\n\ntype OnlyItemPathRequired = {\n /**\n * The path to the array to add the new item to.\n */\n path?: Path\n\n /** The sub path to the array to add the new item to. */\n itemPath: Path\n}\n\nexport type Props = (OnlyPathRequired | OnlyItemPathRequired) & {\n /**\n * The title of the container.\n */\n title?: React.ReactNode\n\n /**\n * If the fields inside the container are required.\n */\n required?: boolean\n\n /**\n * The index to insert the new item at.\n */\n insertAt?: number\n\n /**\n * The button to open container.\n */\n openButton?: React.ReactNode\n\n /**\n * Define when the \"open button\" should be shown.\n * Should be a function that returns a boolean.\n */\n showOpenButtonWhen?: (list: unknown[]) => boolean\n\n /**\n * Prefilled data to add to the fields. The data will be put into this path: \"/pushContainerItems/0\".\n */\n data?: unknown | Record<string, unknown>\n\n /**\n * Prefilled data to add to the fields. The data will be put into this path: \"/pushContainerItems/0\".\n */\n defaultData?: unknown | Record<string, unknown>\n\n /**\n * Provide additional data that will be put into the root of the isolated data context (parallel to \"/pushContainerItems/0\").\n */\n isolatedData?: Record<string, unknown>\n\n /**\n * Prevent the form from being submitted when there are fields with errors inside the PushContainer.\n */\n bubbleValidation?: boolean\n\n /**\n * A custom toolbar to be shown below the container.\n */\n toolbar?: React.ReactNode\n\n /**\n * Will be called when the user clicks on the \"Done\" button.\n */\n onCommit?: OnCommit\n\n /**\n * The container contents.\n */\n children: React.ReactNode\n}\n\nexport type AllProps = Props & SpacingProps & ArrayItemAreaProps\n\nfunction PushContainer(props: AllProps) {\n const [, forceUpdate] = useReducer(() => ({}), {})\n const requiredInherited = useContext(DataContext)?.required\n\n const {\n data: dataProp,\n defaultData: defaultDataProp,\n isolatedData,\n bubbleValidation,\n path,\n itemPath,\n insertAt,\n title,\n required = requiredInherited,\n children,\n openButton,\n showOpenButtonWhen,\n onCommit,\n ...rest\n } = props\n\n const { absolutePath } = useItemPath(itemPath)\n const commitHandleRef = useRef<() => void>()\n const switchContainerModeRef = useRef<(mode: ContainerMode) => void>()\n const containerModeRef = useRef<ContainerMode>()\n const {\n value: entries = [],\n moveValueToPath,\n getValueByPath,\n } = useDataValue<Array<unknown>>(path || itemPath)\n\n const { setNextContainerMode } = useSwitchContainerMode(\n path || absolutePath\n )\n const { hasReachedLimit, setShowStatus } = useArrayLimit(\n path || absolutePath\n )\n const cancelHandler = useCallback(() => {\n if (hasReachedLimit) {\n setShowStatus(false)\n }\n }, [hasReachedLimit, setShowStatus])\n\n const showOpenButton = showOpenButtonWhen?.(entries)\n const newItemContextProps: PushContainerContext = {\n path,\n itemPath,\n entries,\n commitHandleRef,\n switchContainerMode: switchContainerModeRef.current,\n }\n\n const data = useMemo(() => {\n if (defaultDataProp) {\n return // don't return a fallback, because we want to use the defaultData\n }\n return {\n ...isolatedData,\n pushContainerItems: [dataProp ?? clearedData],\n }\n }, [dataProp, defaultDataProp, isolatedData])\n\n const defaultData = useMemo(() => {\n return {\n ...(!dataProp ? isolatedData : null),\n pushContainerItems: [defaultDataProp ?? clearedData],\n }\n }, [dataProp, defaultDataProp, isolatedData])\n\n const emptyData = useCallback(\n (data: { pushContainerItems: unknown[] }) => {\n const firstItem = data.pushContainerItems?.[0]\n if (firstItem === null || typeof firstItem !== 'object') {\n return {\n ...isolatedData,\n pushContainerItems: [null],\n }\n }\n return defaultData\n },\n [defaultData, isolatedData]\n )\n\n return (\n <Isolation\n data={data}\n defaultData={defaultData}\n required={required}\n emptyData={emptyData}\n bubbleValidation={\n containerModeRef.current === 'view' ? false : bubbleValidation\n }\n commitHandleRef={commitHandleRef}\n transformOnCommit={({ pushContainerItems }) => {\n return moveValueToPath(\n path || absolutePath,\n typeof insertAt === 'number'\n ? [\n ...entries.slice(0, insertAt),\n ...pushContainerItems,\n ...entries.slice(insertAt),\n ]\n : [...entries, ...pushContainerItems],\n absolutePath ? structuredClone(getValueByPath('/')) : {}\n )\n }}\n onCommit={(data, options) => {\n const { clearData, preventCommit } = options\n if (hasReachedLimit) {\n preventCommit()\n setShowStatus(true)\n } else {\n setNextContainerMode('view')\n switchContainerModeRef.current?.('view')\n clearData()\n }\n onCommit?.(data, options)\n }}\n >\n <PushContainerContext.Provider value={newItemContextProps}>\n <IterateArray\n path=\"/pushContainerItems\"\n containerMode={showOpenButton ? 'view' : 'edit'}\n withoutFlex\n >\n <NewContainer\n title={title}\n openButton={openButton}\n switchContainerModeRef={switchContainerModeRef}\n showOpenButton={showOpenButton}\n cancelHandler={cancelHandler}\n containerModeRef={containerModeRef}\n rerenderPushContainer={forceUpdate}\n {...rest}\n >\n {children}\n </NewContainer>\n </IterateArray>\n </PushContainerContext.Provider>\n </Isolation>\n )\n}\n\nfunction NewContainer({\n title,\n openButton,\n showOpenButton,\n switchContainerModeRef,\n cancelHandler,\n containerModeRef,\n rerenderPushContainer,\n children,\n ...rest\n}) {\n const { containerMode, switchContainerMode } =\n useContext(IterateItemContext) || {}\n containerModeRef.current = containerMode\n\n useEffect(() => {\n rerenderPushContainer()\n }, [containerMode, rerenderPushContainer])\n\n switchContainerModeRef.current = switchContainerMode\n const { createButton } = useTranslation().IteratePushContainer\n const { clearData } = useContext(DataContext) || {}\n const restoreOriginalValue = useCallback(() => {\n clearData?.()\n }, [clearData])\n\n const toolbar = (\n <Toolbar>\n <IterateItemContext.Consumer>\n {(context) => {\n const newItemContextProps = {\n ...context,\n restoreOriginalValue,\n }\n return (\n <IterateItemContext.Provider value={newItemContextProps}>\n <Flex.Horizontal gap=\"large\">\n <DoneButton text={createButton} />\n {showOpenButton && (\n <CancelButton onClick={cancelHandler} />\n )}\n </Flex.Horizontal>\n </IterateItemContext.Provider>\n )\n }}\n </IterateItemContext.Consumer>\n </Toolbar>\n )\n\n return (\n <>\n <EditContainer\n open={!showOpenButton || containerMode === 'edit'}\n title={title}\n toolbar={toolbar}\n {...rest}\n >\n {children}\n </EditContainer>\n\n {openButton && typeof showOpenButton === 'boolean' && (\n <HeightAnimation open={showOpenButton && containerMode === 'view'}>\n {openButton}\n </HeightAnimation>\n )}\n </>\n )\n}\n\nPushContainer.OpenButton = OpenButton\nPushContainer._supportsSpacingProps = true\n\nexport default PushContainer\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PushContainer.js","names":["React","useCallback","useContext","useEffect","useMemo","useReducer","useRef","Isolation","PushContainerContext","IterateItemContext","DataContext","useDataValue","EditContainer","CancelButton","DoneButton","IterateArray","OpenButton","Flex","HeightAnimation","useArrayLimit","useItemPath","useSwitchContainerMode","Toolbar","useTranslation","clearedData","structuredClone","PushContainer","props","forceUpdate","data","outerData","required","requiredInherited","dataProp","defaultData","defaultDataProp","isolatedData","bubbleValidation","path","itemPath","insertAt","title","children","openButton","showOpenButtonWhen","onCommit","rest","_objectWithoutProperties","_excluded","absolutePath","commitHandleRef","switchContainerModeRef","containerModeRef","value","entries","moveValueToPath","getValueByPath","setNextContainerMode","hasReachedLimit","setShowStatus","cancelHandler","showOpenButton","newItemContextProps","switchContainerMode","current","_objectSpread","pushContainerItems","Object","assign","emptyData","_data$pushContainerIt","firstItem","createElement","transformOnCommit","_ref","slice","options","clearData","preventCommit","_switchContainerModeR","call","Provider","containerMode","withoutFlex","NewContainer","_extends","rerenderPushContainer","_ref2","_DoneButton","_CancelButton","_excluded2","createButton","IteratePushContainer","restoreOriginalValue","toolbar","Consumer","context","Horizontal","gap","text","onClick","Fragment","open","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Iterate/PushContainer/PushContainer.tsx"],"sourcesContent":["import React, {\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useReducer,\n useRef,\n} from 'react'\nimport Isolation from '../../Form/Isolation'\nimport PushContainerContext from './PushContainerContext'\nimport IterateItemContext from '../IterateItemContext'\nimport DataContext from '../../DataContext/Context'\nimport useDataValue from '../../hooks/useDataValue'\nimport EditContainer, { CancelButton, DoneButton } from '../EditContainer'\nimport IterateArray, { ContainerMode } from '../Array'\nimport OpenButton from './OpenButton'\nimport { Flex, HeightAnimation } from '../../../../components'\nimport { OnCommit, Path } from '../../types'\nimport { SpacingProps } from '../../../../shared/types'\nimport {\n useArrayLimit,\n useItemPath,\n useSwitchContainerMode,\n} from '../hooks'\nimport Toolbar from '../Toolbar'\nimport { useTranslation } from '../../hooks'\nimport { ArrayItemAreaProps } from '../Array/ArrayItemArea'\nimport { clearedData } from '../../DataContext/Provider'\n\n/**\n * Deprecated, as it is supported by all major browsers and Node.js >=v18\n * So it's a question of time, when we will remove this polyfill\n */\nimport structuredClone from '@ungap/structured-clone'\n\ntype OnlyPathRequired = {\n /**\n * The path to the array to add the new item to.\n */\n path: Path\n\n /** The sub path to the array to add the new item to. */\n itemPath?: Path\n}\n\ntype OnlyItemPathRequired = {\n /**\n * The path to the array to add the new item to.\n */\n path?: Path\n\n /** The sub path to the array to add the new item to. */\n itemPath: Path\n}\n\nexport type Props = (OnlyPathRequired | OnlyItemPathRequired) & {\n /**\n * The title of the container.\n */\n title?: React.ReactNode\n\n /**\n * If the fields inside the container are required.\n */\n required?: boolean\n\n /**\n * The index to insert the new item at.\n */\n insertAt?: number\n\n /**\n * The button to open container.\n */\n openButton?: React.ReactNode\n\n /**\n * Define when the \"open button\" should be shown.\n * Should be a function that returns a boolean.\n */\n showOpenButtonWhen?: (list: unknown[]) => boolean\n\n /**\n * Prefilled data to add to the fields. The data will be put into this path: \"/pushContainerItems/0\".\n */\n data?: unknown | Record<string, unknown>\n\n /**\n * Prefilled data to add to the fields. The data will be put into this path: \"/pushContainerItems/0\".\n */\n defaultData?: unknown | Record<string, unknown>\n\n /**\n * Provide additional data that will be put into the root of the isolated data context (parallel to \"/pushContainerItems/0\").\n */\n isolatedData?: Record<string, unknown>\n\n /**\n * Prevent the form from being submitted when there are fields with errors inside the PushContainer.\n */\n bubbleValidation?: boolean\n\n /**\n * A custom toolbar to be shown below the container.\n */\n toolbar?: React.ReactNode\n\n /**\n * Will be called when the user clicks on the \"Done\" button.\n */\n onCommit?: OnCommit\n\n /**\n * The container contents.\n */\n children: React.ReactNode\n}\n\nexport type AllProps = Props & SpacingProps & ArrayItemAreaProps\n\nfunction PushContainer(props: AllProps) {\n const [, forceUpdate] = useReducer(() => ({}), {})\n const { data: outerData, required: requiredInherited } =\n useContext(DataContext) || {}\n\n const {\n data: dataProp,\n defaultData: defaultDataProp,\n isolatedData,\n bubbleValidation,\n path,\n itemPath,\n insertAt,\n title,\n required = requiredInherited,\n children,\n openButton,\n showOpenButtonWhen,\n onCommit,\n ...rest\n } = props\n\n const { absolutePath } = useItemPath(itemPath)\n const commitHandleRef = useRef<() => void>()\n const switchContainerModeRef = useRef<(mode: ContainerMode) => void>()\n const containerModeRef = useRef<ContainerMode>()\n const {\n value: entries = [],\n moveValueToPath,\n getValueByPath,\n } = useDataValue<Array<unknown>>(path || itemPath)\n\n const { setNextContainerMode } = useSwitchContainerMode(\n path || absolutePath\n )\n const { hasReachedLimit, setShowStatus } = useArrayLimit(\n path || absolutePath\n )\n const cancelHandler = useCallback(() => {\n if (hasReachedLimit) {\n setShowStatus(false)\n }\n }, [hasReachedLimit, setShowStatus])\n\n const showOpenButton = showOpenButtonWhen?.(entries)\n const newItemContextProps: PushContainerContext = {\n path,\n itemPath,\n entries,\n commitHandleRef,\n switchContainerMode: switchContainerModeRef.current,\n }\n\n const data = useMemo(() => {\n if (defaultDataProp) {\n return // don't return a fallback, because we want to use the defaultData\n }\n return {\n ...isolatedData,\n pushContainerItems: [dataProp ?? clearedData],\n }\n }, [dataProp, defaultDataProp, isolatedData])\n\n if (outerData) {\n // Use assign to avoid mutating the original data object.\n // Because changes from outside should only silently be applied to the\n // data object, without triggering a rerender.\n // This way \"pushContainerItems\" will not clear/unset changed data.\n Object.assign(data, outerData)\n }\n\n const defaultData = useMemo(() => {\n return {\n ...(!dataProp ? isolatedData : null),\n pushContainerItems: [defaultDataProp ?? clearedData],\n }\n }, [dataProp, defaultDataProp, isolatedData])\n\n const emptyData = useCallback(\n (data: { pushContainerItems: unknown[] }) => {\n const firstItem = data.pushContainerItems?.[0]\n if (firstItem === null || typeof firstItem !== 'object') {\n return {\n ...isolatedData,\n pushContainerItems: [null],\n }\n }\n return defaultData\n },\n [defaultData, isolatedData]\n )\n\n return (\n <Isolation\n data={data}\n defaultData={defaultData}\n required={required}\n emptyData={emptyData}\n bubbleValidation={\n containerModeRef.current === 'view' ? false : bubbleValidation\n }\n commitHandleRef={commitHandleRef}\n transformOnCommit={({ pushContainerItems }) => {\n return moveValueToPath(\n path || absolutePath,\n typeof insertAt === 'number'\n ? [\n ...entries.slice(0, insertAt),\n ...pushContainerItems,\n ...entries.slice(insertAt),\n ]\n : [...entries, ...pushContainerItems],\n absolutePath ? structuredClone(getValueByPath('/')) : {}\n )\n }}\n onCommit={(data, options) => {\n const { clearData, preventCommit } = options\n if (hasReachedLimit) {\n preventCommit()\n setShowStatus(true)\n } else {\n setNextContainerMode('view')\n switchContainerModeRef.current?.('view')\n clearData()\n }\n onCommit?.(data, options)\n }}\n >\n <PushContainerContext.Provider value={newItemContextProps}>\n <IterateArray\n path=\"/pushContainerItems\"\n containerMode={showOpenButton ? 'view' : 'edit'}\n withoutFlex\n >\n <NewContainer\n title={title}\n openButton={openButton}\n switchContainerModeRef={switchContainerModeRef}\n showOpenButton={showOpenButton}\n cancelHandler={cancelHandler}\n containerModeRef={containerModeRef}\n rerenderPushContainer={forceUpdate}\n {...rest}\n >\n {children}\n </NewContainer>\n </IterateArray>\n </PushContainerContext.Provider>\n </Isolation>\n )\n}\n\nfunction NewContainer({\n title,\n openButton,\n showOpenButton,\n switchContainerModeRef,\n cancelHandler,\n containerModeRef,\n rerenderPushContainer,\n children,\n ...rest\n}) {\n const { containerMode, switchContainerMode } =\n useContext(IterateItemContext) || {}\n containerModeRef.current = containerMode\n\n useEffect(() => {\n rerenderPushContainer()\n }, [containerMode, rerenderPushContainer])\n\n switchContainerModeRef.current = switchContainerMode\n const { createButton } = useTranslation().IteratePushContainer\n const { clearData } = useContext(DataContext) || {}\n const restoreOriginalValue = useCallback(() => {\n clearData?.()\n }, [clearData])\n\n const toolbar = (\n <Toolbar>\n <IterateItemContext.Consumer>\n {(context) => {\n const newItemContextProps = {\n ...context,\n restoreOriginalValue,\n }\n return (\n <IterateItemContext.Provider value={newItemContextProps}>\n <Flex.Horizontal gap=\"large\">\n <DoneButton text={createButton} />\n {showOpenButton && (\n <CancelButton onClick={cancelHandler} />\n )}\n </Flex.Horizontal>\n </IterateItemContext.Provider>\n )\n }}\n </IterateItemContext.Consumer>\n </Toolbar>\n )\n\n return (\n <>\n <EditContainer\n open={!showOpenButton || containerMode === 'edit'}\n title={title}\n toolbar={toolbar}\n {...rest}\n >\n {children}\n </EditContainer>\n\n {openButton && typeof showOpenButton === 'boolean' && (\n <HeightAnimation open={showOpenButton && containerMode === 'view'}>\n {openButton}\n </HeightAnimation>\n )}\n </>\n )\n}\n\nPushContainer.OpenButton = OpenButton\nPushContainer._supportsSpacingProps = true\n\nexport default PushContainer\n"],"mappings":";;;;;;;;;AAAA,OAAOA,KAAK,IACVC,WAAW,EACXC,UAAU,EACVC,SAAS,EACTC,OAAO,EACPC,UAAU,EACVC,MAAM,QACD,OAAO;AACd,OAAOC,SAAS,MAAM,sBAAsB;AAC5C,OAAOC,oBAAoB,MAAM,wBAAwB;AACzD,OAAOC,kBAAkB,MAAM,uBAAuB;AACtD,OAAOC,WAAW,MAAM,2BAA2B;AACnD,OAAOC,YAAY,MAAM,0BAA0B;AACnD,OAAOC,aAAa,IAAIC,YAAY,EAAEC,UAAU,QAAQ,kBAAkB;AAC1E,OAAOC,YAAY,MAAyB,UAAU;AACtD,OAAOC,UAAU,MAAM,cAAc;AACrC,SAASC,IAAI,EAAEC,eAAe,QAAQ,wBAAwB;AAG9D,SACEC,aAAa,EACbC,WAAW,EACXC,sBAAsB,QACjB,UAAU;AACjB,OAAOC,OAAO,MAAM,YAAY;AAChC,SAASC,cAAc,QAAQ,aAAa;AAE5C,SAASC,WAAW,QAAQ,4BAA4B;AAMxD,OAAOC,eAAe,MAAM,yBAAyB;AAuFrD,SAASC,aAAaA,CAACC,KAAe,EAAE;EACtC,MAAM,GAAGC,WAAW,CAAC,GAAGvB,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAClD,MAAM;IAAEwB,IAAI,EAAEC,SAAS;IAAEC,QAAQ,EAAEC;EAAkB,CAAC,GACpD9B,UAAU,CAACQ,WAAW,CAAC,IAAI,CAAC,CAAC;EAE/B,MAAM;MACJmB,IAAI,EAAEI,QAAQ;MACdC,WAAW,EAAEC,eAAe;MAC5BC,YAAY;MACZC,gBAAgB;MAChBC,IAAI;MACJC,QAAQ;MACRC,QAAQ;MACRC,KAAK;MACLV,QAAQ,GAAGC,iBAAiB;MAC5BU,QAAQ;MACRC,UAAU;MACVC,kBAAkB;MAClBC;IAEF,CAAC,GAAGlB,KAAK;IADJmB,IAAI,GAAAC,wBAAA,CACLpB,KAAK,EAAAqB,SAAA;EAET,MAAM;IAAEC;EAAa,CAAC,GAAG7B,WAAW,CAACmB,QAAQ,CAAC;EAC9C,MAAMW,eAAe,GAAG5C,MAAM,CAAa,CAAC;EAC5C,MAAM6C,sBAAsB,GAAG7C,MAAM,CAAgC,CAAC;EACtE,MAAM8C,gBAAgB,GAAG9C,MAAM,CAAgB,CAAC;EAChD,MAAM;IACJ+C,KAAK,EAAEC,OAAO,GAAG,EAAE;IACnBC,eAAe;IACfC;EACF,CAAC,GAAG7C,YAAY,CAAiB2B,IAAI,IAAIC,QAAQ,CAAC;EAElD,MAAM;IAAEkB;EAAqB,CAAC,GAAGpC,sBAAsB,CACrDiB,IAAI,IAAIW,YACV,CAAC;EACD,MAAM;IAAES,eAAe;IAAEC;EAAc,CAAC,GAAGxC,aAAa,CACtDmB,IAAI,IAAIW,YACV,CAAC;EACD,MAAMW,aAAa,GAAG3D,WAAW,CAAC,MAAM;IACtC,IAAIyD,eAAe,EAAE;MACnBC,aAAa,CAAC,KAAK,CAAC;IACtB;EACF,CAAC,EAAE,CAACD,eAAe,EAAEC,aAAa,CAAC,CAAC;EAEpC,MAAME,cAAc,GAAGjB,kBAAkB,aAAlBA,kBAAkB,uBAAlBA,kBAAkB,CAAGU,OAAO,CAAC;EACpD,MAAMQ,mBAAyC,GAAG;IAChDxB,IAAI;IACJC,QAAQ;IACRe,OAAO;IACPJ,eAAe;IACfa,mBAAmB,EAAEZ,sBAAsB,CAACa;EAC9C,CAAC;EAED,MAAMnC,IAAI,GAAGzB,OAAO,CAAC,MAAM;IACzB,IAAI+B,eAAe,EAAE;MACnB;IACF;IACA,OAAA8B,aAAA,CAAAA,aAAA,KACK7B,YAAY;MACf8B,kBAAkB,EAAE,CAACjC,QAAQ,aAARA,QAAQ,cAARA,QAAQ,GAAIT,WAAW;IAAC;EAEjD,CAAC,EAAE,CAACS,QAAQ,EAAEE,eAAe,EAAEC,YAAY,CAAC,CAAC;EAE7C,IAAIN,SAAS,EAAE;IAKbqC,MAAM,CAACC,MAAM,CAACvC,IAAI,EAAEC,SAAS,CAAC;EAChC;EAEA,MAAMI,WAAW,GAAG9B,OAAO,CAAC,MAAM;IAChC,OAAA6D,aAAA,CAAAA,aAAA,KACM,CAAChC,QAAQ,GAAGG,YAAY,GAAG,IAAI;MACnC8B,kBAAkB,EAAE,CAAC/B,eAAe,aAAfA,eAAe,cAAfA,eAAe,GAAIX,WAAW;IAAC;EAExD,CAAC,EAAE,CAACS,QAAQ,EAAEE,eAAe,EAAEC,YAAY,CAAC,CAAC;EAE7C,MAAMiC,SAAS,GAAGpE,WAAW,CAC1B4B,IAAuC,IAAK;IAAA,IAAAyC,qBAAA;IAC3C,MAAMC,SAAS,IAAAD,qBAAA,GAAGzC,IAAI,CAACqC,kBAAkB,cAAAI,qBAAA,uBAAvBA,qBAAA,CAA0B,CAAC,CAAC;IAC9C,IAAIC,SAAS,KAAK,IAAI,IAAI,OAAOA,SAAS,KAAK,QAAQ,EAAE;MACvD,OAAAN,aAAA,CAAAA,aAAA,KACK7B,YAAY;QACf8B,kBAAkB,EAAE,CAAC,IAAI;MAAC;IAE9B;IACA,OAAOhC,WAAW;EACpB,CAAC,EACD,CAACA,WAAW,EAAEE,YAAY,CAC5B,CAAC;EAED,OACEpC,KAAA,CAAAwE,aAAA,CAACjE,SAAS;IACRsB,IAAI,EAAEA,IAAK;IACXK,WAAW,EAAEA,WAAY;IACzBH,QAAQ,EAAEA,QAAS;IACnBsC,SAAS,EAAEA,SAAU;IACrBhC,gBAAgB,EACde,gBAAgB,CAACY,OAAO,KAAK,MAAM,GAAG,KAAK,GAAG3B,gBAC/C;IACDa,eAAe,EAAEA,eAAgB;IACjCuB,iBAAiB,EAAEC,IAAA,IAA4B;MAAA,IAA3B;QAAER;MAAmB,CAAC,GAAAQ,IAAA;MACxC,OAAOnB,eAAe,CACpBjB,IAAI,IAAIW,YAAY,EACpB,OAAOT,QAAQ,KAAK,QAAQ,GACxB,CACE,GAAGc,OAAO,CAACqB,KAAK,CAAC,CAAC,EAAEnC,QAAQ,CAAC,EAC7B,GAAG0B,kBAAkB,EACrB,GAAGZ,OAAO,CAACqB,KAAK,CAACnC,QAAQ,CAAC,CAC3B,GACD,CAAC,GAAGc,OAAO,EAAE,GAAGY,kBAAkB,CAAC,EACvCjB,YAAY,GAAGxB,eAAe,CAAC+B,cAAc,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CACzD,CAAC;IACH,CAAE;IACFX,QAAQ,EAAEA,CAAChB,IAAI,EAAE+C,OAAO,KAAK;MAC3B,MAAM;QAAEC,SAAS;QAAEC;MAAc,CAAC,GAAGF,OAAO;MAC5C,IAAIlB,eAAe,EAAE;QACnBoB,aAAa,CAAC,CAAC;QACfnB,aAAa,CAAC,IAAI,CAAC;MACrB,CAAC,MAAM;QAAA,IAAAoB,qBAAA;QACLtB,oBAAoB,CAAC,MAAM,CAAC;QAC5B,CAAAsB,qBAAA,GAAA5B,sBAAsB,CAACa,OAAO,cAAAe,qBAAA,uBAA9BA,qBAAA,CAAAC,IAAA,CAAA7B,sBAAsB,EAAW,MAAM,CAAC;QACxC0B,SAAS,CAAC,CAAC;MACb;MACAhC,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAGhB,IAAI,EAAE+C,OAAO,CAAC;IAC3B;EAAE,GAEF5E,KAAA,CAAAwE,aAAA,CAAChE,oBAAoB,CAACyE,QAAQ;IAAC5B,KAAK,EAAES;EAAoB,GACxD9D,KAAA,CAAAwE,aAAA,CAACzD,YAAY;IACXuB,IAAI,EAAC,qBAAqB;IAC1B4C,aAAa,EAAErB,cAAc,GAAG,MAAM,GAAG,MAAO;IAChDsB,WAAW;EAAA,GAEXnF,KAAA,CAAAwE,aAAA,CAACY,YAAY,EAAAC,QAAA;IACX5C,KAAK,EAAEA,KAAM;IACbE,UAAU,EAAEA,UAAW;IACvBQ,sBAAsB,EAAEA,sBAAuB;IAC/CU,cAAc,EAAEA,cAAe;IAC/BD,aAAa,EAAEA,aAAc;IAC7BR,gBAAgB,EAAEA,gBAAiB;IACnCkC,qBAAqB,EAAE1D;EAAY,GAC/BkB,IAAI,GAEPJ,QACW,CACF,CACe,CACtB,CAAC;AAEhB;AAEA,SAAS0C,YAAYA,CAAAG,KAAA,EAUlB;EAAA,IAAAC,WAAA,EAAAC,aAAA;EAAA,IAVmB;MACpBhD,KAAK;MACLE,UAAU;MACVkB,cAAc;MACdV,sBAAsB;MACtBS,aAAa;MACbR,gBAAgB;MAChBkC,qBAAqB;MACrB5C;IAEF,CAAC,GAAA6C,KAAA;IADIzC,IAAI,GAAAC,wBAAA,CAAAwC,KAAA,EAAAG,UAAA;EAEP,MAAM;IAAER,aAAa;IAAEnB;EAAoB,CAAC,GAC1C7D,UAAU,CAACO,kBAAkB,CAAC,IAAI,CAAC,CAAC;EACtC2C,gBAAgB,CAACY,OAAO,GAAGkB,aAAa;EAExC/E,SAAS,CAAC,MAAM;IACdmF,qBAAqB,CAAC,CAAC;EACzB,CAAC,EAAE,CAACJ,aAAa,EAAEI,qBAAqB,CAAC,CAAC;EAE1CnC,sBAAsB,CAACa,OAAO,GAAGD,mBAAmB;EACpD,MAAM;IAAE4B;EAAa,CAAC,GAAGpE,cAAc,CAAC,CAAC,CAACqE,oBAAoB;EAC9D,MAAM;IAAEf;EAAU,CAAC,GAAG3E,UAAU,CAACQ,WAAW,CAAC,IAAI,CAAC,CAAC;EACnD,MAAMmF,oBAAoB,GAAG5F,WAAW,CAAC,MAAM;IAC7C4E,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAG,CAAC;EACf,CAAC,EAAE,CAACA,SAAS,CAAC,CAAC;EAEf,MAAMiB,OAAO,GACX9F,KAAA,CAAAwE,aAAA,CAAClD,OAAO,QACNtB,KAAA,CAAAwE,aAAA,CAAC/D,kBAAkB,CAACsF,QAAQ,QACxBC,OAAO,IAAK;IACZ,MAAMlC,mBAAmB,GAAAG,aAAA,CAAAA,aAAA,KACpB+B,OAAO;MACVH;IAAoB,EACrB;IACD,OACE7F,KAAA,CAAAwE,aAAA,CAAC/D,kBAAkB,CAACwE,QAAQ;MAAC5B,KAAK,EAAES;IAAoB,GACtD9D,KAAA,CAAAwE,aAAA,CAACvD,IAAI,CAACgF,UAAU;MAACC,GAAG,EAAC;IAAO,GAAAV,WAAA,KAAAA,WAAA,GAC1BxF,KAAA,CAAAwE,aAAA,CAAC1D,UAAU;MAACqF,IAAI,EAAER;IAAa,CAAE,CAAC,GACjC9B,cAAc,KAAA4B,aAAA,KAAAA,aAAA,GACbzF,KAAA,CAAAwE,aAAA,CAAC3D,YAAY;MAACuF,OAAO,EAAExC;IAAc,CAAE,CAAC,EAE3B,CACU,CAAC;EAElC,CAC2B,CACtB,CACV;EAED,OACE5D,KAAA,CAAAwE,aAAA,CAAAxE,KAAA,CAAAqG,QAAA,QACErG,KAAA,CAAAwE,aAAA,CAAC5D,aAAa,EAAAyE,QAAA;IACZiB,IAAI,EAAE,CAACzC,cAAc,IAAIqB,aAAa,KAAK,MAAO;IAClDzC,KAAK,EAAEA,KAAM;IACbqD,OAAO,EAAEA;EAAQ,GACbhD,IAAI,GAEPJ,QACY,CAAC,EAEfC,UAAU,IAAI,OAAOkB,cAAc,KAAK,SAAS,IAChD7D,KAAA,CAAAwE,aAAA,CAACtD,eAAe;IAACoF,IAAI,EAAEzC,cAAc,IAAIqB,aAAa,KAAK;EAAO,GAC/DvC,UACc,CAEnB,CAAC;AAEP;AAEAjB,aAAa,CAACV,UAAU,GAAGA,UAAU;AACrCU,aAAa,CAAC6E,qBAAqB,GAAG,IAAI;AAE1C,eAAe7E,aAAa"}
|
|
@@ -16,6 +16,7 @@ declare function useValueProvider(props?: Omit<ValueProviderProps, 'children'>):
|
|
|
16
16
|
defaultValue?: unknown;
|
|
17
17
|
className?: string;
|
|
18
18
|
placeholder?: import("react").ReactNode;
|
|
19
|
+
help?: import("../../../../components/help-button/HelpButtonInline").HelpProps;
|
|
19
20
|
inline?: boolean;
|
|
20
21
|
maxWidth?: "small" | "auto" | "medium" | "large";
|
|
21
22
|
labelSrOnly?: boolean;
|
|
@@ -19,6 +19,11 @@ export const ValueProperties = {
|
|
|
19
19
|
type: 'boolean',
|
|
20
20
|
status: 'optional'
|
|
21
21
|
},
|
|
22
|
+
help: {
|
|
23
|
+
doc: 'Provide help content for the field using `title` and `content` as a string or React.Node. Additionally, you can set `open` to `true` to display the inline help, set the `breakout` property to `false` to disable the breakout of the inline help content, or use `renderAs` set to `dialog` to render the content in a [Dialog](/uilib/components/dialog/) (recommended for larger amounts of content).',
|
|
24
|
+
type: 'object',
|
|
25
|
+
status: 'optional'
|
|
26
|
+
},
|
|
22
27
|
transformLabel: {
|
|
23
28
|
doc: 'Transforms the label before it gets displayed. Receives the label as the first parameter. The second parameter is a object containing the `convertJsxToString` function.',
|
|
24
29
|
type: 'function',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ValueDocs.js","names":["ValueProperties","value","doc","type","status","defaultValue","label","labelSrOnly","transformLabel","inheritLabel","inheritVisibility","showEmpty","placeholder","path","inline","maxWidth","transformIn"],"sources":["../../../../../src/extensions/forms/Value/ValueDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../../shared/types'\n\nexport const ValueProperties: PropertiesTableProps = {\n value: {\n doc: 'Value for the value component. Will take precedence over the path value given in the data context.',\n type: '{valueType}',\n status: 'optional',\n },\n defaultValue: {\n doc: 'Default value for the value component. Will not take precedence over the path value given in the data context.',\n type: '{valueType}',\n status: 'optional',\n },\n label: {\n doc: 'Field label to show above the displayed value.',\n type: 'string',\n status: 'optional',\n },\n labelSrOnly: {\n doc: 'Use `true` to make the label only readable by screen readers.',\n type: 'boolean',\n status: 'optional',\n },\n transformLabel: {\n doc: 'Transforms the label before it gets displayed. Receives the label as the first parameter. The second parameter is a object containing the `convertJsxToString` function.',\n type: 'function',\n status: 'optional',\n },\n inheritLabel: {\n doc: 'Use `true` to inherit the label from a visible (rendered) field with the same path.',\n type: 'boolean',\n status: 'optional',\n },\n inheritVisibility: {\n doc: 'Use `true` to inherit the visibility from a field with the same path. You can find more info in the [Value section](/uilib/extensions/forms/Value/#inherit-visibility-from-fields-based-on-path).',\n type: 'boolean',\n status: 'optional',\n },\n showEmpty: {\n doc: 'Shows the value even if it is empty.',\n type: 'boolean',\n status: 'optional',\n },\n placeholder: {\n doc: 'Text showing in place of the value if no value is given.',\n type: 'string',\n status: 'optional',\n },\n path: {\n doc: 'JSON Pointer for where the data for this input is located in the source dataset.',\n type: 'string',\n status: 'optional',\n },\n inline: {\n doc: 'For showing the value inline (not as a block element).',\n type: 'boolean',\n status: 'optional',\n },\n maxWidth: {\n doc: 'Use `auto` for no max-width (use browser default), `small`, `medium` or `large` for predefined standard max widths. Defaults to `large`.',\n type: 'string',\n status: 'optional',\n },\n transformIn: {\n doc: 'Transforms the `value` before its displayed in the value component.',\n type: 'function',\n status: 'optional',\n },\n '[Space](/uilib/layout/space/properties)': {\n doc: 'Spacing properties like `top` or `bottom` are supported.',\n type: ['string', 'object'],\n status: 'optional',\n },\n}\n"],"mappings":"AAEA,OAAO,MAAMA,eAAqC,GAAG;EACnDC,KAAK,EAAE;IACLC,GAAG,EAAE,oGAAoG;IACzGC,IAAI,EAAE,aAAa;IACnBC,MAAM,EAAE;EACV,CAAC;EACDC,YAAY,EAAE;IACZH,GAAG,EAAE,gHAAgH;IACrHC,IAAI,EAAE,aAAa;IACnBC,MAAM,EAAE;EACV,CAAC;EACDE,KAAK,EAAE;IACLJ,GAAG,EAAE,gDAAgD;IACrDC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDG,WAAW,EAAE;IACXL,GAAG,EAAE,+DAA+D;IACpEC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDI,cAAc,EAAE;
|
|
1
|
+
{"version":3,"file":"ValueDocs.js","names":["ValueProperties","value","doc","type","status","defaultValue","label","labelSrOnly","help","transformLabel","inheritLabel","inheritVisibility","showEmpty","placeholder","path","inline","maxWidth","transformIn"],"sources":["../../../../../src/extensions/forms/Value/ValueDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../../shared/types'\n\nexport const ValueProperties: PropertiesTableProps = {\n value: {\n doc: 'Value for the value component. Will take precedence over the path value given in the data context.',\n type: '{valueType}',\n status: 'optional',\n },\n defaultValue: {\n doc: 'Default value for the value component. Will not take precedence over the path value given in the data context.',\n type: '{valueType}',\n status: 'optional',\n },\n label: {\n doc: 'Field label to show above the displayed value.',\n type: 'string',\n status: 'optional',\n },\n labelSrOnly: {\n doc: 'Use `true` to make the label only readable by screen readers.',\n type: 'boolean',\n status: 'optional',\n },\n help: {\n doc: 'Provide help content for the field using `title` and `content` as a string or React.Node. Additionally, you can set `open` to `true` to display the inline help, set the `breakout` property to `false` to disable the breakout of the inline help content, or use `renderAs` set to `dialog` to render the content in a [Dialog](/uilib/components/dialog/) (recommended for larger amounts of content).',\n type: 'object',\n status: 'optional',\n },\n transformLabel: {\n doc: 'Transforms the label before it gets displayed. Receives the label as the first parameter. The second parameter is a object containing the `convertJsxToString` function.',\n type: 'function',\n status: 'optional',\n },\n inheritLabel: {\n doc: 'Use `true` to inherit the label from a visible (rendered) field with the same path.',\n type: 'boolean',\n status: 'optional',\n },\n inheritVisibility: {\n doc: 'Use `true` to inherit the visibility from a field with the same path. You can find more info in the [Value section](/uilib/extensions/forms/Value/#inherit-visibility-from-fields-based-on-path).',\n type: 'boolean',\n status: 'optional',\n },\n showEmpty: {\n doc: 'Shows the value even if it is empty.',\n type: 'boolean',\n status: 'optional',\n },\n placeholder: {\n doc: 'Text showing in place of the value if no value is given.',\n type: 'string',\n status: 'optional',\n },\n path: {\n doc: 'JSON Pointer for where the data for this input is located in the source dataset.',\n type: 'string',\n status: 'optional',\n },\n inline: {\n doc: 'For showing the value inline (not as a block element).',\n type: 'boolean',\n status: 'optional',\n },\n maxWidth: {\n doc: 'Use `auto` for no max-width (use browser default), `small`, `medium` or `large` for predefined standard max widths. Defaults to `large`.',\n type: 'string',\n status: 'optional',\n },\n transformIn: {\n doc: 'Transforms the `value` before its displayed in the value component.',\n type: 'function',\n status: 'optional',\n },\n '[Space](/uilib/layout/space/properties)': {\n doc: 'Spacing properties like `top` or `bottom` are supported.',\n type: ['string', 'object'],\n status: 'optional',\n },\n}\n"],"mappings":"AAEA,OAAO,MAAMA,eAAqC,GAAG;EACnDC,KAAK,EAAE;IACLC,GAAG,EAAE,oGAAoG;IACzGC,IAAI,EAAE,aAAa;IACnBC,MAAM,EAAE;EACV,CAAC;EACDC,YAAY,EAAE;IACZH,GAAG,EAAE,gHAAgH;IACrHC,IAAI,EAAE,aAAa;IACnBC,MAAM,EAAE;EACV,CAAC;EACDE,KAAK,EAAE;IACLJ,GAAG,EAAE,gDAAgD;IACrDC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDG,WAAW,EAAE;IACXL,GAAG,EAAE,+DAA+D;IACpEC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDI,IAAI,EAAE;IACJN,GAAG,EAAE,2YAA2Y;IAChZC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDK,cAAc,EAAE;IACdP,GAAG,EAAE,0KAA0K;IAC/KC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV,CAAC;EACDM,YAAY,EAAE;IACZR,GAAG,EAAE,qFAAqF;IAC1FC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDO,iBAAiB,EAAE;IACjBT,GAAG,EAAE,mMAAmM;IACxMC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDQ,SAAS,EAAE;IACTV,GAAG,EAAE,sCAAsC;IAC3CC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDS,WAAW,EAAE;IACXX,GAAG,EAAE,0DAA0D;IAC/DC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDU,IAAI,EAAE;IACJZ,GAAG,EAAE,kFAAkF;IACvFC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDW,MAAM,EAAE;IACNb,GAAG,EAAE,wDAAwD;IAC7DC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDY,QAAQ,EAAE;IACRd,GAAG,EAAE,0IAA0I;IAC/IC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDa,WAAW,EAAE;IACXf,GAAG,EAAE,qEAAqE;IAC1EC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV,CAAC;EACD,yCAAyC,EAAE;IACzCF,GAAG,EAAE,0DAA0D;IAC/DC,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC1BC,MAAM,EAAE;EACV;AACF,CAAC"}
|
|
@@ -1,10 +1,22 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { ValueProps } from '../types';
|
|
3
|
+
import { HelpProps } from '../../../components/help-button/HelpButtonInline';
|
|
3
4
|
/**
|
|
4
5
|
* Props are documented in ValueDocs.ts
|
|
5
6
|
*/
|
|
6
7
|
export type Props = Omit<ValueProps<unknown>, 'value'> & {
|
|
7
|
-
|
|
8
|
+
id?: string;
|
|
9
|
+
/** The id to link a element with */
|
|
10
|
+
forId?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Provide help content for the value.
|
|
13
|
+
*/
|
|
14
|
+
help?: HelpProps;
|
|
15
|
+
/**
|
|
16
|
+
* The layout of the value block.
|
|
17
|
+
* (Undocumented for now, as there is only one layout option, vertical.)
|
|
18
|
+
*/
|
|
19
|
+
layout?: 'vertical';
|
|
8
20
|
/**
|
|
9
21
|
* Used internally by the Composition component
|
|
10
22
|
*/
|
|
@@ -13,6 +25,7 @@ export type Props = Omit<ValueProps<unknown>, 'value'> & {
|
|
|
13
25
|
* Used internally by the Composition component
|
|
14
26
|
*/
|
|
15
27
|
gap?: 'xx-small' | 'x-small' | 'small' | 'medium' | 'large' | false;
|
|
28
|
+
children?: React.ReactNode;
|
|
16
29
|
};
|
|
17
30
|
declare function ValueBlock(props: Props): import("react/jsx-runtime").JSX.Element;
|
|
18
31
|
declare namespace ValueBlock {
|
|
@@ -17,7 +17,10 @@ import IterateItemContext from '../Iterate/IterateItemContext';
|
|
|
17
17
|
import { convertJsxToString } from '../../../shared/component-helper';
|
|
18
18
|
import VisibilityContext from '../Form/Visibility/VisibilityContext';
|
|
19
19
|
import Visibility from '../Form/Visibility/Visibility';
|
|
20
|
+
import HelpButtonInline, { HelpButtonInlineContent } from '../../../components/help-button/HelpButtonInline';
|
|
21
|
+
import useId from '../../../shared/helpers/useId';
|
|
20
22
|
function ValueBlock(props) {
|
|
23
|
+
var _props$id;
|
|
21
24
|
const summaryListContext = useContext(SummaryListContext);
|
|
22
25
|
const valueBlockContext = useContext(ValueBlockContext);
|
|
23
26
|
const {
|
|
@@ -26,6 +29,7 @@ function ValueBlock(props) {
|
|
|
26
29
|
const {
|
|
27
30
|
index: iterateIndex
|
|
28
31
|
} = useContext(IterateItemContext) || {};
|
|
32
|
+
const id = useId((_props$id = props.id) !== null && _props$id !== void 0 ? _props$id : props.forId);
|
|
29
33
|
const {
|
|
30
34
|
className,
|
|
31
35
|
label: labelProp,
|
|
@@ -39,6 +43,8 @@ function ValueBlock(props) {
|
|
|
39
43
|
showEmpty,
|
|
40
44
|
children,
|
|
41
45
|
composition,
|
|
46
|
+
help,
|
|
47
|
+
layout = 'vertical',
|
|
42
48
|
gap = 'xx-small'
|
|
43
49
|
} = props;
|
|
44
50
|
const label = useMemo(() => {
|
|
@@ -59,10 +65,11 @@ function ValueBlock(props) {
|
|
|
59
65
|
}
|
|
60
66
|
let content = null;
|
|
61
67
|
const compositionClass = composition && `dnb-forms-value-block__composition--${composition === true ? 'horizontal' : composition}`;
|
|
62
|
-
const defaultClass = `dnb-forms-value-block__content dnb-forms-value-block__content--gap-${gap === false ? 'none' : gap}
|
|
68
|
+
const defaultClass = `dnb-forms-value-block__content dnb-forms-value-block__content--gap-${gap === false ? 'none' : gap}` + (maxWidth ? ` dnb-forms-value-block--max-width-${maxWidth}` : "");
|
|
69
|
+
const hasHelp = (help === null || help === void 0 ? void 0 : help.title) || (help === null || help === void 0 ? void 0 : help.content);
|
|
63
70
|
if (summaryListContext) {
|
|
64
71
|
const Item = summaryListContext.isNested ? Dl : summaryListContext.layout === 'horizontal' ? Dl.Item : Fragment;
|
|
65
|
-
if (!label && valueBlockContext !== null && valueBlockContext !== void 0 && valueBlockContext.composition) {
|
|
72
|
+
if (!label && !hasHelp && valueBlockContext !== null && valueBlockContext !== void 0 && valueBlockContext.composition) {
|
|
66
73
|
var _span;
|
|
67
74
|
content = (_span = React.createElement("span", {
|
|
68
75
|
className: defaultClass
|
|
@@ -70,15 +77,27 @@ function ValueBlock(props) {
|
|
|
70
77
|
className: "dnb-forms-value-block__placeholder"
|
|
71
78
|
}, placeholder);
|
|
72
79
|
} else {
|
|
80
|
+
const {
|
|
81
|
+
layout
|
|
82
|
+
} = summaryListContext;
|
|
73
83
|
content = React.createElement(SummaryListContext.Provider, {
|
|
74
84
|
value: _objectSpread(_objectSpread({}, summaryListContext), {}, {
|
|
75
85
|
isNested: true
|
|
76
86
|
})
|
|
77
87
|
}, React.createElement(Item, null, React.createElement(Dt, {
|
|
78
|
-
className: 'dnb-forms-value-block__label' + (!label || labelSrOnly ? " dnb-sr-only" : "")
|
|
79
|
-
}, React.createElement(VisibilityWrapper, null, label && React.createElement("strong", null, label)
|
|
80
|
-
|
|
81
|
-
|
|
88
|
+
className: 'dnb-forms-value-block__label' + (!label && !hasHelp || labelSrOnly ? " dnb-sr-only" : "")
|
|
89
|
+
}, React.createElement(VisibilityWrapper, null, label && React.createElement("strong", null, label), hasHelp && React.createElement(HelpButtonInline, {
|
|
90
|
+
contentId: `${id}-help`,
|
|
91
|
+
help: help
|
|
92
|
+
}))), React.createElement(Dd, {
|
|
93
|
+
className: classnames(compositionClass, layout !== 'grid' && !summaryListContext.isNested && maxWidth && `dnb-forms-value-block--max-width-${maxWidth}`)
|
|
94
|
+
}, React.createElement(VisibilityWrapper, null, hasHelp && React.createElement(HelpButtonInlineContent, {
|
|
95
|
+
contentId: `${id}-help`,
|
|
96
|
+
className: "dnb-forms-value-block__help",
|
|
97
|
+
help: help,
|
|
98
|
+
breakout: layout === 'vertical',
|
|
99
|
+
outset: layout === 'vertical'
|
|
100
|
+
}), children ? React.createElement("span", {
|
|
82
101
|
className: defaultClass
|
|
83
102
|
}, children) : React.createElement("span", {
|
|
84
103
|
className: "dnb-forms-value-block__placeholder"
|
|
@@ -87,13 +106,24 @@ function ValueBlock(props) {
|
|
|
87
106
|
} else {
|
|
88
107
|
content = React.createElement(Span, _extends({
|
|
89
108
|
ref: ref,
|
|
90
|
-
className: classnames('dnb-forms-value-block', compositionClass, className, inline && 'dnb-forms-value-block--inline'
|
|
91
|
-
}, pickSpacingProps(props)), label && React.createElement(FormLabel, {
|
|
109
|
+
className: classnames('dnb-forms-value-block', compositionClass, className, inline && 'dnb-forms-value-block--inline')
|
|
110
|
+
}, pickSpacingProps(props)), (label || hasHelp) && React.createElement(FormLabel, {
|
|
92
111
|
element: "strong",
|
|
93
|
-
className:
|
|
112
|
+
className: 'dnb-forms-value-block__label' + (maxWidth ? ` dnb-forms-value-block--max-width-${maxWidth}` : ""),
|
|
94
113
|
labelDirection: inline ? 'horizontal' : 'vertical',
|
|
95
114
|
srOnly: labelSrOnly
|
|
96
|
-
},
|
|
115
|
+
}, React.createElement("span", null, label && React.createElement("span", {
|
|
116
|
+
className: "dnb-forms-value-block__label__content"
|
|
117
|
+
}, label), hasHelp && React.createElement(HelpButtonInline, {
|
|
118
|
+
contentId: `${id}-help`,
|
|
119
|
+
help: help
|
|
120
|
+
}))), hasHelp && React.createElement(HelpButtonInlineContent, {
|
|
121
|
+
contentId: `${id}-help`,
|
|
122
|
+
className: "dnb-forms-value-block__help",
|
|
123
|
+
help: help,
|
|
124
|
+
breakout: layout === 'vertical',
|
|
125
|
+
outset: layout === 'vertical'
|
|
126
|
+
}), children ? React.createElement("span", {
|
|
97
127
|
className: defaultClass
|
|
98
128
|
}, children) : React.createElement("span", {
|
|
99
129
|
className: "dnb-forms-value-block__placeholder"
|