@dnb/eufemia 10.44.0 → 10.45.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 +29 -0
- package/cjs/components/checkbox/style/dnb-checkbox.scss +1 -1
- package/cjs/components/radio/style/dnb-radio.scss +1 -1
- package/cjs/components/table/TableStickyHeader.js.map +1 -1
- package/cjs/components/upload/Upload.js +2 -1
- package/cjs/components/upload/Upload.js.map +1 -1
- package/cjs/components/upload/UploadDocs.d.ts +1 -0
- package/cjs/components/upload/UploadDocs.js +17 -4
- package/cjs/components/upload/UploadDocs.js.map +1 -1
- package/cjs/components/upload/UploadInfo.js +57 -5
- package/cjs/components/upload/UploadInfo.js.map +1 -1
- package/cjs/components/upload/UploadVerify.d.ts +4 -2
- package/cjs/components/upload/UploadVerify.js +32 -5
- package/cjs/components/upload/UploadVerify.js.map +1 -1
- package/cjs/components/upload/style/dnb-upload.css +15 -0
- package/cjs/components/upload/style/dnb-upload.min.css +1 -1
- package/cjs/components/upload/style/dnb-upload.scss +17 -0
- package/cjs/components/upload/types.d.ts +7 -1
- package/cjs/components/upload/types.js.map +1 -1
- package/cjs/extensions/forms/DataContext/Context.d.ts +8 -3
- package/cjs/extensions/forms/DataContext/Context.js.map +1 -1
- package/cjs/extensions/forms/DataContext/FieldBoundary/FieldBoundaryContext.d.ts +8 -0
- package/cjs/extensions/forms/DataContext/FieldBoundary/FieldBoundaryContext.js.map +1 -1
- package/cjs/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js +8 -0
- package/cjs/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js.map +1 -1
- package/cjs/extensions/forms/DataContext/Provider/Provider.js +22 -7
- package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
- package/cjs/extensions/forms/Field/ArraySelection/ArraySelection.d.ts +2 -1
- package/cjs/extensions/forms/Field/ArraySelection/ArraySelection.js +29 -24
- package/cjs/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
- package/cjs/extensions/forms/Field/Name/Name.js +2 -2
- package/cjs/extensions/forms/Field/Name/Name.js.map +1 -1
- package/cjs/extensions/forms/Field/Selection/Selection.d.ts +3 -0
- package/cjs/extensions/forms/Field/Selection/Selection.js +28 -20
- package/cjs/extensions/forms/Field/Selection/Selection.js.map +1 -1
- package/cjs/extensions/forms/FieldBlock/FieldBlock.js +3 -3
- package/cjs/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
- package/cjs/extensions/forms/Form/Element/Element.js +11 -9
- package/cjs/extensions/forms/Form/Element/Element.js.map +1 -1
- package/cjs/extensions/forms/Form/Isolation/Isolation.js +25 -7
- package/cjs/extensions/forms/Form/Isolation/Isolation.js.map +1 -1
- package/cjs/extensions/forms/Form/Section/EditContainer/EditToolbarTools.js +13 -5
- package/cjs/extensions/forms/Form/Section/EditContainer/EditToolbarTools.js.map +1 -1
- package/cjs/extensions/forms/Form/Section/EditContainer/useContainerDataStore.js +10 -13
- package/cjs/extensions/forms/Form/Section/EditContainer/useContainerDataStore.js.map +1 -1
- package/cjs/extensions/forms/Iterate/AnimatedContainer/AnimatedContainer.js +3 -3
- package/cjs/extensions/forms/Iterate/AnimatedContainer/AnimatedContainer.js.map +1 -1
- package/cjs/extensions/forms/Iterate/AnimatedContainer/ElementBlock.js +2 -2
- package/cjs/extensions/forms/Iterate/AnimatedContainer/ElementBlock.js.map +1 -1
- package/cjs/extensions/forms/Iterate/Array/Array.js +7 -5
- package/cjs/extensions/forms/Iterate/Array/Array.js.map +1 -1
- package/cjs/extensions/forms/Iterate/EditContainer/EditContainer.d.ts +1 -3
- package/cjs/extensions/forms/Iterate/EditContainer/EditContainer.js +25 -19
- package/cjs/extensions/forms/Iterate/EditContainer/EditContainer.js.map +1 -1
- package/cjs/extensions/forms/Iterate/EditContainer/EditContainerDocs.js +10 -0
- package/cjs/extensions/forms/Iterate/EditContainer/EditContainerDocs.js.map +1 -1
- package/cjs/extensions/forms/Iterate/EditContainer/EditToolbarTools.js +44 -14
- package/cjs/extensions/forms/Iterate/EditContainer/EditToolbarTools.js.map +1 -1
- package/cjs/extensions/forms/Iterate/{IterateElementContext.d.ts → IterateItemContext.d.ts} +3 -3
- package/cjs/extensions/forms/Iterate/{IterateElementContext.js → IterateItemContext.js} +3 -3
- package/cjs/extensions/forms/Iterate/IterateItemContext.js.map +1 -0
- package/cjs/extensions/forms/Iterate/PushButton/PushButton.js +3 -3
- package/cjs/extensions/forms/Iterate/PushButton/PushButton.js.map +1 -1
- package/cjs/extensions/forms/Iterate/PushButton/PushButtonDocs.js +5 -0
- package/cjs/extensions/forms/Iterate/PushButton/PushButtonDocs.js.map +1 -1
- package/cjs/extensions/forms/Iterate/PushContainer/OpenButton.d.ts +4 -0
- package/cjs/extensions/forms/Iterate/PushContainer/OpenButton.js +42 -0
- package/cjs/extensions/forms/Iterate/PushContainer/OpenButton.js.map +1 -0
- package/cjs/extensions/forms/Iterate/PushContainer/PushContainer.d.ts +37 -0
- package/cjs/extensions/forms/Iterate/PushContainer/PushContainer.js +95 -0
- package/cjs/extensions/forms/Iterate/PushContainer/PushContainer.js.map +1 -0
- package/cjs/extensions/forms/Iterate/PushContainer/PushContainerContext.d.ts +11 -0
- package/cjs/extensions/forms/Iterate/PushContainer/PushContainerContext.js +12 -0
- package/cjs/extensions/forms/Iterate/PushContainer/PushContainerContext.js.map +1 -0
- package/cjs/extensions/forms/Iterate/PushContainer/PushContainerDocs.d.ts +3 -0
- package/cjs/extensions/forms/Iterate/PushContainer/PushContainerDocs.js +42 -0
- package/cjs/extensions/forms/Iterate/PushContainer/PushContainerDocs.js.map +1 -0
- package/cjs/extensions/forms/Iterate/PushContainer/index.d.ts +2 -0
- package/cjs/extensions/forms/Iterate/PushContainer/index.js +27 -0
- package/cjs/extensions/forms/Iterate/PushContainer/index.js.map +1 -0
- package/cjs/extensions/forms/Iterate/RemoveButton/RemoveButton.js +4 -4
- package/cjs/extensions/forms/Iterate/RemoveButton/RemoveButton.js.map +1 -1
- package/cjs/extensions/forms/Iterate/ViewContainer/ViewContainer.d.ts +4 -0
- package/cjs/extensions/forms/Iterate/ViewContainer/ViewContainer.js +13 -5
- package/cjs/extensions/forms/Iterate/ViewContainer/ViewContainer.js.map +1 -1
- package/cjs/extensions/forms/Iterate/ViewContainer/ViewContainerDocs.js +5 -0
- package/cjs/extensions/forms/Iterate/ViewContainer/ViewContainerDocs.js.map +1 -1
- package/cjs/extensions/forms/Iterate/ViewContainer/ViewToolbarTools.js +3 -3
- package/cjs/extensions/forms/Iterate/ViewContainer/ViewToolbarTools.js.map +1 -1
- package/cjs/extensions/forms/Iterate/hooks/useItem.d.ts +1 -0
- package/cjs/extensions/forms/Iterate/hooks/useItem.js +15 -0
- package/cjs/extensions/forms/Iterate/hooks/useItem.js.map +1 -0
- package/cjs/extensions/forms/Iterate/index.d.ts +3 -1
- package/cjs/extensions/forms/Iterate/index.js +17 -3
- package/cjs/extensions/forms/Iterate/index.js.map +1 -1
- package/cjs/extensions/forms/Value/ArraySelection/ArraySelection.d.ts +19 -0
- package/cjs/extensions/forms/Value/ArraySelection/ArraySelection.js +81 -0
- package/cjs/extensions/forms/Value/ArraySelection/ArraySelection.js.map +1 -0
- package/cjs/extensions/forms/Value/ArraySelection/ArraySelectionDocs.d.ts +2 -0
- package/cjs/extensions/forms/Value/ArraySelection/ArraySelectionDocs.js +15 -0
- package/cjs/extensions/forms/Value/ArraySelection/ArraySelectionDocs.js.map +1 -0
- package/cjs/extensions/forms/Value/ArraySelection/index.d.ts +2 -0
- package/cjs/extensions/forms/Value/ArraySelection/index.js +27 -0
- package/cjs/extensions/forms/Value/ArraySelection/index.js.map +1 -0
- package/cjs/extensions/forms/Value/Selection/Selection.d.ts +9 -0
- package/cjs/extensions/forms/Value/Selection/Selection.js +58 -0
- package/cjs/extensions/forms/Value/Selection/Selection.js.map +1 -0
- package/cjs/extensions/forms/Value/Selection/SelectionDocs.d.ts +2 -0
- package/cjs/extensions/forms/Value/Selection/SelectionDocs.js +15 -0
- package/cjs/extensions/forms/Value/Selection/SelectionDocs.js.map +1 -0
- package/cjs/extensions/forms/Value/Selection/index.d.ts +2 -0
- package/cjs/extensions/forms/Value/Selection/index.js +27 -0
- package/cjs/extensions/forms/Value/Selection/index.js.map +1 -0
- package/cjs/extensions/forms/Value/ValueDocs.js +6 -1
- package/cjs/extensions/forms/Value/ValueDocs.js.map +1 -1
- package/cjs/extensions/forms/Value/index.d.ts +2 -0
- package/cjs/extensions/forms/Value/index.js +14 -0
- package/cjs/extensions/forms/Value/index.js.map +1 -1
- package/cjs/extensions/forms/ValueBlock/ValueBlock.js +3 -3
- package/cjs/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
- package/cjs/extensions/forms/Wizard/Container/WizardContainer.js +27 -11
- package/cjs/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
- package/cjs/extensions/forms/Wizard/Context/WizardContext.d.ts +1 -0
- package/cjs/extensions/forms/Wizard/Context/WizardContext.js.map +1 -1
- package/cjs/extensions/forms/constants/locales/en-GB.d.ts +3 -0
- package/cjs/extensions/forms/constants/locales/en-GB.js +3 -0
- package/cjs/extensions/forms/constants/locales/en-GB.js.map +1 -1
- package/cjs/extensions/forms/constants/locales/en-US.d.ts +3 -0
- package/cjs/extensions/forms/constants/locales/index.d.ts +6 -0
- package/cjs/extensions/forms/constants/locales/nb-NO.d.ts +3 -0
- package/cjs/extensions/forms/constants/locales/nb-NO.js +3 -0
- package/cjs/extensions/forms/constants/locales/nb-NO.js.map +1 -1
- package/cjs/extensions/forms/hooks/useDataValue.d.ts +1 -0
- package/cjs/extensions/forms/hooks/useDataValue.js +11 -4
- package/cjs/extensions/forms/hooks/useDataValue.js.map +1 -1
- package/cjs/extensions/forms/hooks/useExternalValue.js +4 -4
- package/cjs/extensions/forms/hooks/useExternalValue.js.map +1 -1
- package/cjs/extensions/forms/hooks/useFieldProps.js +11 -9
- package/cjs/extensions/forms/hooks/useFieldProps.js.map +1 -1
- package/cjs/extensions/forms/hooks/usePath.js +3 -3
- package/cjs/extensions/forms/hooks/usePath.js.map +1 -1
- package/cjs/extensions/forms/hooks/useValueProps.js +4 -1
- package/cjs/extensions/forms/hooks/useValueProps.js.map +1 -1
- package/cjs/extensions/forms/types.d.ts +4 -0
- package/cjs/extensions/forms/types.js.map +1 -1
- package/cjs/shared/Eufemia.d.ts +1 -1
- package/cjs/shared/Eufemia.js +2 -2
- package/cjs/shared/Eufemia.js.map +1 -1
- package/cjs/shared/locales/en-GB.d.ts +1 -0
- package/cjs/shared/locales/en-GB.js +1 -0
- package/cjs/shared/locales/en-GB.js.map +1 -1
- package/cjs/shared/locales/en-US.d.ts +1 -0
- package/cjs/shared/locales/index.d.ts +2 -0
- package/cjs/shared/locales/nb-NO.d.ts +1 -0
- package/cjs/shared/locales/nb-NO.js +2 -1
- package/cjs/shared/locales/nb-NO.js.map +1 -1
- package/cjs/shared/useTheme.d.ts +4 -10
- package/cjs/shared/useTheme.js +7 -5
- package/cjs/shared/useTheme.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 +15 -0
- package/cjs/style/dnb-ui-components.min.css +1 -1
- package/cjs/style/dnb-ui-core.css +1 -1
- package/cjs/style/dnb-ui-core.min.css +1 -1
- package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +15 -0
- package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +1 -1
- package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +15 -0
- package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +1 -1
- package/cjs/style/themes/theme-ui/ui-theme-components.css +15 -0
- package/cjs/style/themes/theme-ui/ui-theme-components.min.css +1 -1
- package/components/checkbox/style/dnb-checkbox.scss +1 -1
- package/components/radio/style/dnb-radio.scss +1 -1
- package/components/table/TableStickyHeader.js.map +1 -1
- package/components/upload/Upload.js +2 -1
- package/components/upload/Upload.js.map +1 -1
- package/components/upload/UploadDocs.d.ts +1 -0
- package/components/upload/UploadDocs.js +15 -3
- package/components/upload/UploadDocs.js.map +1 -1
- package/components/upload/UploadInfo.js +57 -5
- package/components/upload/UploadInfo.js.map +1 -1
- package/components/upload/UploadVerify.d.ts +4 -2
- package/components/upload/UploadVerify.js +30 -5
- package/components/upload/UploadVerify.js.map +1 -1
- package/components/upload/style/dnb-upload.css +15 -0
- package/components/upload/style/dnb-upload.min.css +1 -1
- package/components/upload/style/dnb-upload.scss +17 -0
- package/components/upload/types.d.ts +7 -1
- package/components/upload/types.js.map +1 -1
- package/es/components/checkbox/style/dnb-checkbox.scss +1 -1
- package/es/components/radio/style/dnb-radio.scss +1 -1
- package/es/components/table/TableStickyHeader.js.map +1 -1
- package/es/components/upload/Upload.js +2 -1
- package/es/components/upload/Upload.js.map +1 -1
- package/es/components/upload/UploadDocs.d.ts +1 -0
- package/es/components/upload/UploadDocs.js +15 -3
- package/es/components/upload/UploadDocs.js.map +1 -1
- package/es/components/upload/UploadInfo.js +57 -5
- package/es/components/upload/UploadInfo.js.map +1 -1
- package/es/components/upload/UploadVerify.d.ts +4 -2
- package/es/components/upload/UploadVerify.js +30 -5
- package/es/components/upload/UploadVerify.js.map +1 -1
- package/es/components/upload/style/dnb-upload.css +15 -0
- package/es/components/upload/style/dnb-upload.min.css +1 -1
- package/es/components/upload/style/dnb-upload.scss +17 -0
- package/es/components/upload/types.d.ts +7 -1
- package/es/components/upload/types.js.map +1 -1
- package/es/extensions/forms/DataContext/Context.d.ts +8 -3
- package/es/extensions/forms/DataContext/Context.js.map +1 -1
- package/es/extensions/forms/DataContext/FieldBoundary/FieldBoundaryContext.d.ts +8 -0
- package/es/extensions/forms/DataContext/FieldBoundary/FieldBoundaryContext.js.map +1 -1
- package/es/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js +9 -1
- package/es/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js.map +1 -1
- package/es/extensions/forms/DataContext/Provider/Provider.js +22 -7
- package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
- package/es/extensions/forms/Field/ArraySelection/ArraySelection.d.ts +2 -1
- package/es/extensions/forms/Field/ArraySelection/ArraySelection.js +28 -24
- package/es/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
- package/es/extensions/forms/Field/Name/Name.js +2 -2
- package/es/extensions/forms/Field/Name/Name.js.map +1 -1
- package/es/extensions/forms/Field/Selection/Selection.d.ts +3 -0
- package/es/extensions/forms/Field/Selection/Selection.js +22 -16
- package/es/extensions/forms/Field/Selection/Selection.js.map +1 -1
- package/es/extensions/forms/FieldBlock/FieldBlock.js +3 -3
- package/es/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
- package/es/extensions/forms/Form/Element/Element.js +9 -9
- package/es/extensions/forms/Form/Element/Element.js.map +1 -1
- package/es/extensions/forms/Form/Isolation/Isolation.js +26 -8
- package/es/extensions/forms/Form/Isolation/Isolation.js.map +1 -1
- package/es/extensions/forms/Form/Section/EditContainer/EditToolbarTools.js +13 -5
- package/es/extensions/forms/Form/Section/EditContainer/EditToolbarTools.js.map +1 -1
- package/es/extensions/forms/Form/Section/EditContainer/useContainerDataStore.js +10 -11
- package/es/extensions/forms/Form/Section/EditContainer/useContainerDataStore.js.map +1 -1
- package/es/extensions/forms/Iterate/AnimatedContainer/AnimatedContainer.js +3 -3
- package/es/extensions/forms/Iterate/AnimatedContainer/AnimatedContainer.js.map +1 -1
- package/es/extensions/forms/Iterate/AnimatedContainer/ElementBlock.js +2 -2
- package/es/extensions/forms/Iterate/AnimatedContainer/ElementBlock.js.map +1 -1
- package/es/extensions/forms/Iterate/Array/Array.js +7 -5
- package/es/extensions/forms/Iterate/Array/Array.js.map +1 -1
- package/es/extensions/forms/Iterate/EditContainer/EditContainer.d.ts +1 -3
- package/es/extensions/forms/Iterate/EditContainer/EditContainer.js +26 -20
- package/es/extensions/forms/Iterate/EditContainer/EditContainer.js.map +1 -1
- package/es/extensions/forms/Iterate/EditContainer/EditContainerDocs.js +10 -0
- package/es/extensions/forms/Iterate/EditContainer/EditContainerDocs.js.map +1 -1
- package/es/extensions/forms/Iterate/EditContainer/EditToolbarTools.js +44 -14
- package/es/extensions/forms/Iterate/EditContainer/EditToolbarTools.js.map +1 -1
- package/{extensions/forms/Iterate/IterateElementContext.d.ts → es/extensions/forms/Iterate/IterateItemContext.d.ts} +3 -3
- package/es/extensions/forms/Iterate/IterateItemContext.js +4 -0
- package/es/extensions/forms/Iterate/IterateItemContext.js.map +1 -0
- package/es/extensions/forms/Iterate/PushButton/PushButton.js +3 -3
- package/es/extensions/forms/Iterate/PushButton/PushButton.js.map +1 -1
- package/es/extensions/forms/Iterate/PushButton/PushButtonDocs.js +5 -0
- package/es/extensions/forms/Iterate/PushButton/PushButtonDocs.js.map +1 -1
- package/es/extensions/forms/Iterate/PushContainer/OpenButton.d.ts +4 -0
- package/es/extensions/forms/Iterate/PushContainer/OpenButton.js +32 -0
- package/es/extensions/forms/Iterate/PushContainer/OpenButton.js.map +1 -0
- package/es/extensions/forms/Iterate/PushContainer/PushContainer.d.ts +37 -0
- package/es/extensions/forms/Iterate/PushContainer/PushContainer.js +80 -0
- package/es/extensions/forms/Iterate/PushContainer/PushContainer.js.map +1 -0
- package/es/extensions/forms/Iterate/PushContainer/PushContainerContext.d.ts +11 -0
- package/es/extensions/forms/Iterate/PushContainer/PushContainerContext.js +6 -0
- package/es/extensions/forms/Iterate/PushContainer/PushContainerContext.js.map +1 -0
- package/es/extensions/forms/Iterate/PushContainer/PushContainerDocs.d.ts +3 -0
- package/es/extensions/forms/Iterate/PushContainer/PushContainerDocs.js +34 -0
- package/es/extensions/forms/Iterate/PushContainer/PushContainerDocs.js.map +1 -0
- package/es/extensions/forms/Iterate/PushContainer/index.d.ts +2 -0
- package/es/extensions/forms/Iterate/PushContainer/index.js +3 -0
- package/es/extensions/forms/Iterate/PushContainer/index.js.map +1 -0
- package/es/extensions/forms/Iterate/RemoveButton/RemoveButton.js +4 -4
- package/es/extensions/forms/Iterate/RemoveButton/RemoveButton.js.map +1 -1
- package/es/extensions/forms/Iterate/ViewContainer/ViewContainer.d.ts +4 -0
- package/es/extensions/forms/Iterate/ViewContainer/ViewContainer.js +15 -6
- package/es/extensions/forms/Iterate/ViewContainer/ViewContainer.js.map +1 -1
- package/es/extensions/forms/Iterate/ViewContainer/ViewContainerDocs.js +5 -0
- package/es/extensions/forms/Iterate/ViewContainer/ViewContainerDocs.js.map +1 -1
- package/es/extensions/forms/Iterate/ViewContainer/ViewToolbarTools.js +3 -3
- package/es/extensions/forms/Iterate/ViewContainer/ViewToolbarTools.js.map +1 -1
- package/es/extensions/forms/Iterate/hooks/useItem.d.ts +1 -0
- package/es/extensions/forms/Iterate/hooks/useItem.js +9 -0
- package/es/extensions/forms/Iterate/hooks/useItem.js.map +1 -0
- package/es/extensions/forms/Iterate/index.d.ts +3 -1
- package/es/extensions/forms/Iterate/index.js +3 -1
- package/es/extensions/forms/Iterate/index.js.map +1 -1
- package/es/extensions/forms/Value/ArraySelection/ArraySelection.d.ts +19 -0
- package/es/extensions/forms/Value/ArraySelection/ArraySelection.js +66 -0
- package/es/extensions/forms/Value/ArraySelection/ArraySelection.js.map +1 -0
- package/es/extensions/forms/Value/ArraySelection/ArraySelectionDocs.d.ts +2 -0
- package/es/extensions/forms/Value/ArraySelection/ArraySelectionDocs.js +8 -0
- package/es/extensions/forms/Value/ArraySelection/ArraySelectionDocs.js.map +1 -0
- package/es/extensions/forms/Value/ArraySelection/index.d.ts +2 -0
- package/es/extensions/forms/Value/ArraySelection/index.js +3 -0
- package/es/extensions/forms/Value/ArraySelection/index.js.map +1 -0
- package/es/extensions/forms/Value/Selection/Selection.d.ts +9 -0
- package/es/extensions/forms/Value/Selection/Selection.js +48 -0
- package/es/extensions/forms/Value/Selection/Selection.js.map +1 -0
- package/es/extensions/forms/Value/Selection/SelectionDocs.d.ts +2 -0
- package/es/extensions/forms/Value/Selection/SelectionDocs.js +8 -0
- package/es/extensions/forms/Value/Selection/SelectionDocs.js.map +1 -0
- package/es/extensions/forms/Value/Selection/index.d.ts +2 -0
- package/es/extensions/forms/Value/Selection/index.js +3 -0
- package/es/extensions/forms/Value/Selection/index.js.map +1 -0
- package/es/extensions/forms/Value/ValueDocs.js +6 -1
- package/es/extensions/forms/Value/ValueDocs.js.map +1 -1
- package/es/extensions/forms/Value/index.d.ts +2 -0
- package/es/extensions/forms/Value/index.js +2 -0
- package/es/extensions/forms/Value/index.js.map +1 -1
- package/es/extensions/forms/ValueBlock/ValueBlock.js +3 -3
- package/es/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
- package/es/extensions/forms/Wizard/Container/WizardContainer.js +16 -1
- package/es/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
- package/es/extensions/forms/Wizard/Context/WizardContext.d.ts +1 -0
- package/es/extensions/forms/Wizard/Context/WizardContext.js.map +1 -1
- package/es/extensions/forms/constants/locales/en-GB.d.ts +3 -0
- package/es/extensions/forms/constants/locales/en-GB.js +3 -0
- package/es/extensions/forms/constants/locales/en-GB.js.map +1 -1
- package/es/extensions/forms/constants/locales/en-US.d.ts +3 -0
- package/es/extensions/forms/constants/locales/index.d.ts +6 -0
- package/es/extensions/forms/constants/locales/nb-NO.d.ts +3 -0
- package/es/extensions/forms/constants/locales/nb-NO.js +3 -0
- package/es/extensions/forms/constants/locales/nb-NO.js.map +1 -1
- package/es/extensions/forms/hooks/useDataValue.d.ts +1 -0
- package/es/extensions/forms/hooks/useDataValue.js +11 -4
- package/es/extensions/forms/hooks/useDataValue.js.map +1 -1
- package/es/extensions/forms/hooks/useExternalValue.js +4 -4
- package/es/extensions/forms/hooks/useExternalValue.js.map +1 -1
- package/es/extensions/forms/hooks/useFieldProps.js +11 -9
- package/es/extensions/forms/hooks/useFieldProps.js.map +1 -1
- package/es/extensions/forms/hooks/usePath.js +2 -2
- package/es/extensions/forms/hooks/usePath.js.map +1 -1
- package/es/extensions/forms/hooks/useValueProps.js +4 -1
- package/es/extensions/forms/hooks/useValueProps.js.map +1 -1
- package/es/extensions/forms/types.d.ts +4 -0
- package/es/extensions/forms/types.js.map +1 -1
- package/es/shared/Eufemia.d.ts +1 -1
- package/es/shared/Eufemia.js +2 -2
- package/es/shared/Eufemia.js.map +1 -1
- package/es/shared/locales/en-GB.d.ts +1 -0
- package/es/shared/locales/en-GB.js +1 -0
- package/es/shared/locales/en-GB.js.map +1 -1
- package/es/shared/locales/en-US.d.ts +1 -0
- package/es/shared/locales/index.d.ts +2 -0
- package/es/shared/locales/nb-NO.d.ts +1 -0
- package/es/shared/locales/nb-NO.js +2 -1
- package/es/shared/locales/nb-NO.js.map +1 -1
- package/es/shared/useTheme.d.ts +4 -10
- package/es/shared/useTheme.js +7 -5
- package/es/shared/useTheme.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 +15 -0
- package/es/style/dnb-ui-components.min.css +1 -1
- package/es/style/dnb-ui-core.css +1 -1
- package/es/style/dnb-ui-core.min.css +1 -1
- package/es/style/themes/theme-eiendom/eiendom-theme-components.css +15 -0
- package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +1 -1
- package/es/style/themes/theme-sbanken/sbanken-theme-components.css +15 -0
- package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +1 -1
- package/es/style/themes/theme-ui/ui-theme-components.css +15 -0
- package/es/style/themes/theme-ui/ui-theme-components.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 +5 -5
- package/esm/dnb-ui-lib.min.mjs +1 -1
- package/extensions/forms/DataContext/Context.d.ts +8 -3
- package/extensions/forms/DataContext/Context.js.map +1 -1
- package/extensions/forms/DataContext/FieldBoundary/FieldBoundaryContext.d.ts +8 -0
- package/extensions/forms/DataContext/FieldBoundary/FieldBoundaryContext.js.map +1 -1
- package/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js +9 -1
- package/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js.map +1 -1
- package/extensions/forms/DataContext/Provider/Provider.js +22 -7
- package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
- package/extensions/forms/Field/ArraySelection/ArraySelection.d.ts +2 -1
- package/extensions/forms/Field/ArraySelection/ArraySelection.js +28 -24
- package/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
- package/extensions/forms/Field/Name/Name.js +2 -2
- package/extensions/forms/Field/Name/Name.js.map +1 -1
- package/extensions/forms/Field/Selection/Selection.d.ts +3 -0
- package/extensions/forms/Field/Selection/Selection.js +27 -20
- package/extensions/forms/Field/Selection/Selection.js.map +1 -1
- package/extensions/forms/FieldBlock/FieldBlock.js +3 -3
- package/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
- package/extensions/forms/Form/Element/Element.js +9 -9
- package/extensions/forms/Form/Element/Element.js.map +1 -1
- package/extensions/forms/Form/Isolation/Isolation.js +26 -8
- package/extensions/forms/Form/Isolation/Isolation.js.map +1 -1
- package/extensions/forms/Form/Section/EditContainer/EditToolbarTools.js +13 -5
- package/extensions/forms/Form/Section/EditContainer/EditToolbarTools.js.map +1 -1
- package/extensions/forms/Form/Section/EditContainer/useContainerDataStore.js +10 -11
- package/extensions/forms/Form/Section/EditContainer/useContainerDataStore.js.map +1 -1
- package/extensions/forms/Iterate/AnimatedContainer/AnimatedContainer.js +3 -3
- package/extensions/forms/Iterate/AnimatedContainer/AnimatedContainer.js.map +1 -1
- package/extensions/forms/Iterate/AnimatedContainer/ElementBlock.js +2 -2
- package/extensions/forms/Iterate/AnimatedContainer/ElementBlock.js.map +1 -1
- package/extensions/forms/Iterate/Array/Array.js +7 -5
- package/extensions/forms/Iterate/Array/Array.js.map +1 -1
- package/extensions/forms/Iterate/EditContainer/EditContainer.d.ts +1 -3
- package/extensions/forms/Iterate/EditContainer/EditContainer.js +26 -20
- package/extensions/forms/Iterate/EditContainer/EditContainer.js.map +1 -1
- package/extensions/forms/Iterate/EditContainer/EditContainerDocs.js +10 -0
- package/extensions/forms/Iterate/EditContainer/EditContainerDocs.js.map +1 -1
- package/extensions/forms/Iterate/EditContainer/EditToolbarTools.js +44 -14
- package/extensions/forms/Iterate/EditContainer/EditToolbarTools.js.map +1 -1
- package/{es/extensions/forms/Iterate/IterateElementContext.d.ts → extensions/forms/Iterate/IterateItemContext.d.ts} +3 -3
- package/extensions/forms/Iterate/IterateItemContext.js +4 -0
- package/extensions/forms/Iterate/IterateItemContext.js.map +1 -0
- package/extensions/forms/Iterate/PushButton/PushButton.js +3 -3
- package/extensions/forms/Iterate/PushButton/PushButton.js.map +1 -1
- package/extensions/forms/Iterate/PushButton/PushButtonDocs.js +5 -0
- package/extensions/forms/Iterate/PushButton/PushButtonDocs.js.map +1 -1
- package/extensions/forms/Iterate/PushContainer/OpenButton.d.ts +4 -0
- package/extensions/forms/Iterate/PushContainer/OpenButton.js +32 -0
- package/extensions/forms/Iterate/PushContainer/OpenButton.js.map +1 -0
- package/extensions/forms/Iterate/PushContainer/PushContainer.d.ts +37 -0
- package/extensions/forms/Iterate/PushContainer/PushContainer.js +83 -0
- package/extensions/forms/Iterate/PushContainer/PushContainer.js.map +1 -0
- package/extensions/forms/Iterate/PushContainer/PushContainerContext.d.ts +11 -0
- package/extensions/forms/Iterate/PushContainer/PushContainerContext.js +6 -0
- package/extensions/forms/Iterate/PushContainer/PushContainerContext.js.map +1 -0
- package/extensions/forms/Iterate/PushContainer/PushContainerDocs.d.ts +3 -0
- package/extensions/forms/Iterate/PushContainer/PushContainerDocs.js +34 -0
- package/extensions/forms/Iterate/PushContainer/PushContainerDocs.js.map +1 -0
- package/extensions/forms/Iterate/PushContainer/index.d.ts +2 -0
- package/extensions/forms/Iterate/PushContainer/index.js +3 -0
- package/extensions/forms/Iterate/PushContainer/index.js.map +1 -0
- package/extensions/forms/Iterate/RemoveButton/RemoveButton.js +4 -4
- package/extensions/forms/Iterate/RemoveButton/RemoveButton.js.map +1 -1
- package/extensions/forms/Iterate/ViewContainer/ViewContainer.d.ts +4 -0
- package/extensions/forms/Iterate/ViewContainer/ViewContainer.js +15 -6
- package/extensions/forms/Iterate/ViewContainer/ViewContainer.js.map +1 -1
- package/extensions/forms/Iterate/ViewContainer/ViewContainerDocs.js +5 -0
- package/extensions/forms/Iterate/ViewContainer/ViewContainerDocs.js.map +1 -1
- package/extensions/forms/Iterate/ViewContainer/ViewToolbarTools.js +3 -3
- package/extensions/forms/Iterate/ViewContainer/ViewToolbarTools.js.map +1 -1
- package/extensions/forms/Iterate/hooks/useItem.d.ts +1 -0
- package/extensions/forms/Iterate/hooks/useItem.js +9 -0
- package/extensions/forms/Iterate/hooks/useItem.js.map +1 -0
- package/extensions/forms/Iterate/index.d.ts +3 -1
- package/extensions/forms/Iterate/index.js +3 -1
- package/extensions/forms/Iterate/index.js.map +1 -1
- package/extensions/forms/Value/ArraySelection/ArraySelection.d.ts +19 -0
- package/extensions/forms/Value/ArraySelection/ArraySelection.js +70 -0
- package/extensions/forms/Value/ArraySelection/ArraySelection.js.map +1 -0
- package/extensions/forms/Value/ArraySelection/ArraySelectionDocs.d.ts +2 -0
- package/extensions/forms/Value/ArraySelection/ArraySelectionDocs.js +8 -0
- package/extensions/forms/Value/ArraySelection/ArraySelectionDocs.js.map +1 -0
- package/extensions/forms/Value/ArraySelection/index.d.ts +2 -0
- package/extensions/forms/Value/ArraySelection/index.js +3 -0
- package/extensions/forms/Value/ArraySelection/index.js.map +1 -0
- package/extensions/forms/Value/Selection/Selection.d.ts +9 -0
- package/extensions/forms/Value/Selection/Selection.js +48 -0
- package/extensions/forms/Value/Selection/Selection.js.map +1 -0
- package/extensions/forms/Value/Selection/SelectionDocs.d.ts +2 -0
- package/extensions/forms/Value/Selection/SelectionDocs.js +8 -0
- package/extensions/forms/Value/Selection/SelectionDocs.js.map +1 -0
- package/extensions/forms/Value/Selection/index.d.ts +2 -0
- package/extensions/forms/Value/Selection/index.js +3 -0
- package/extensions/forms/Value/Selection/index.js.map +1 -0
- package/extensions/forms/Value/ValueDocs.js +6 -1
- package/extensions/forms/Value/ValueDocs.js.map +1 -1
- package/extensions/forms/Value/index.d.ts +2 -0
- package/extensions/forms/Value/index.js +2 -0
- package/extensions/forms/Value/index.js.map +1 -1
- package/extensions/forms/ValueBlock/ValueBlock.js +3 -3
- package/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
- package/extensions/forms/Wizard/Container/WizardContainer.js +27 -11
- package/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
- package/extensions/forms/Wizard/Context/WizardContext.d.ts +1 -0
- package/extensions/forms/Wizard/Context/WizardContext.js.map +1 -1
- package/extensions/forms/constants/locales/en-GB.d.ts +3 -0
- package/extensions/forms/constants/locales/en-GB.js +3 -0
- package/extensions/forms/constants/locales/en-GB.js.map +1 -1
- package/extensions/forms/constants/locales/en-US.d.ts +3 -0
- package/extensions/forms/constants/locales/index.d.ts +6 -0
- package/extensions/forms/constants/locales/nb-NO.d.ts +3 -0
- package/extensions/forms/constants/locales/nb-NO.js +3 -0
- package/extensions/forms/constants/locales/nb-NO.js.map +1 -1
- package/extensions/forms/hooks/useDataValue.d.ts +1 -0
- package/extensions/forms/hooks/useDataValue.js +11 -4
- package/extensions/forms/hooks/useDataValue.js.map +1 -1
- package/extensions/forms/hooks/useExternalValue.js +4 -4
- package/extensions/forms/hooks/useExternalValue.js.map +1 -1
- package/extensions/forms/hooks/useFieldProps.js +11 -9
- package/extensions/forms/hooks/useFieldProps.js.map +1 -1
- package/extensions/forms/hooks/usePath.js +2 -2
- package/extensions/forms/hooks/usePath.js.map +1 -1
- package/extensions/forms/hooks/useValueProps.js +4 -1
- package/extensions/forms/hooks/useValueProps.js.map +1 -1
- package/extensions/forms/types.d.ts +4 -0
- package/extensions/forms/types.js.map +1 -1
- package/package.json +1 -1
- package/shared/Eufemia.d.ts +1 -1
- package/shared/Eufemia.js +2 -2
- package/shared/Eufemia.js.map +1 -1
- package/shared/locales/en-GB.d.ts +1 -0
- package/shared/locales/en-GB.js +1 -0
- package/shared/locales/en-GB.js.map +1 -1
- package/shared/locales/en-US.d.ts +1 -0
- package/shared/locales/index.d.ts +2 -0
- package/shared/locales/nb-NO.d.ts +1 -0
- package/shared/locales/nb-NO.js +2 -1
- package/shared/locales/nb-NO.js.map +1 -1
- package/shared/useTheme.d.ts +4 -10
- package/shared/useTheme.js +7 -5
- package/shared/useTheme.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 +15 -0
- package/style/dnb-ui-components.min.css +1 -1
- package/style/dnb-ui-core.css +1 -1
- package/style/dnb-ui-core.min.css +1 -1
- package/style/themes/theme-eiendom/eiendom-theme-components.css +15 -0
- package/style/themes/theme-eiendom/eiendom-theme-components.min.css +1 -1
- package/style/themes/theme-sbanken/sbanken-theme-components.css +15 -0
- package/style/themes/theme-sbanken/sbanken-theme-components.min.css +1 -1
- package/style/themes/theme-ui/ui-theme-components.css +15 -0
- package/style/themes/theme-ui/ui-theme-components.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 +5 -5
- package/umd/dnb-ui-lib.min.js +1 -1
- package/cjs/extensions/forms/Iterate/IterateElementContext.js.map +0 -1
- package/es/extensions/forms/Iterate/IterateElementContext.js +0 -4
- package/es/extensions/forms/Iterate/IterateElementContext.js.map +0 -1
- package/extensions/forms/Iterate/IterateElementContext.js +0 -4
- package/extensions/forms/Iterate/IterateElementContext.js.map +0 -1
|
@@ -1,21 +1,24 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
1
3
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
4
|
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
3
5
|
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
4
6
|
const _excluded = ["value", "error", "title", "help", "className", "children"];
|
|
5
7
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
6
8
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
7
|
-
import React from 'react';
|
|
9
|
+
import React, { useCallback, useContext, useMemo } from 'react';
|
|
8
10
|
import { Checkbox, HelpButton, ToggleButton } from '../../../../components';
|
|
9
11
|
import classnames from 'classnames';
|
|
10
|
-
import OptionField from '../Option';
|
|
11
12
|
import FieldBlock from '../../FieldBlock';
|
|
12
13
|
import { useFieldProps } from '../../hooks';
|
|
13
14
|
import { pickSpacingProps } from '../../../../components/flex/utils';
|
|
14
|
-
import { getStatus } from '../Selection';
|
|
15
|
+
import { getStatus, mapOptions } from '../Selection';
|
|
15
16
|
import ToggleButtonGroupContext from '../../../../components/toggle-button/ToggleButtonGroupContext';
|
|
17
|
+
import DataContext from '../../DataContext/Context';
|
|
16
18
|
function ArraySelection(props) {
|
|
17
19
|
const {
|
|
18
20
|
id,
|
|
21
|
+
path,
|
|
19
22
|
className,
|
|
20
23
|
variant = 'checkbox',
|
|
21
24
|
layout = 'vertical',
|
|
@@ -50,8 +53,9 @@ function ArraySelection(props) {
|
|
|
50
53
|
title: help.title
|
|
51
54
|
}, help.content) : undefined)
|
|
52
55
|
}, pickSpacingProps(props));
|
|
53
|
-
const options =
|
|
56
|
+
const options = useCheckboxOrToggleOptions({
|
|
54
57
|
id,
|
|
58
|
+
path,
|
|
55
59
|
variant,
|
|
56
60
|
info,
|
|
57
61
|
warning,
|
|
@@ -76,8 +80,9 @@ function ArraySelection(props) {
|
|
|
76
80
|
}, options));
|
|
77
81
|
}
|
|
78
82
|
}
|
|
79
|
-
export function
|
|
83
|
+
export function useCheckboxOrToggleOptions({
|
|
80
84
|
id,
|
|
85
|
+
path,
|
|
81
86
|
variant = 'checkbox',
|
|
82
87
|
info,
|
|
83
88
|
warning,
|
|
@@ -89,9 +94,12 @@ export function getCheckboxOrToggleOptions({
|
|
|
89
94
|
hasError,
|
|
90
95
|
handleChange
|
|
91
96
|
}) {
|
|
92
|
-
const
|
|
93
|
-
|
|
94
|
-
|
|
97
|
+
const {
|
|
98
|
+
setFieldProps
|
|
99
|
+
} = useContext(DataContext);
|
|
100
|
+
const optionsCount = useMemo(() => React.Children.count(children), [children]);
|
|
101
|
+
const collectedData = [];
|
|
102
|
+
const createOption = useCallback((props, i) => {
|
|
95
103
|
const {
|
|
96
104
|
value: selected,
|
|
97
105
|
error,
|
|
@@ -101,6 +109,9 @@ export function getCheckboxOrToggleOptions({
|
|
|
101
109
|
children
|
|
102
110
|
} = props,
|
|
103
111
|
rest = _objectWithoutProperties(props, _excluded);
|
|
112
|
+
if (value !== null && value !== void 0 && value.includes(selected)) {
|
|
113
|
+
collectedData.push(props);
|
|
114
|
+
}
|
|
104
115
|
const label = title !== null && title !== void 0 ? title : children;
|
|
105
116
|
const status = getStatus(error, info, warning);
|
|
106
117
|
const suffix = help ? React.createElement(HelpButton, {
|
|
@@ -111,6 +122,7 @@ export function getCheckboxOrToggleOptions({
|
|
|
111
122
|
const newValue = value !== null && value !== void 0 && value.includes(selected) ? value.filter(value => value !== selected) : [...(value !== null && value !== void 0 ? value : []), selected];
|
|
112
123
|
handleChange === null || handleChange === void 0 ? void 0 : handleChange(newValue.length === 0 ? emptyValue : newValue);
|
|
113
124
|
};
|
|
125
|
+
const Component = variant === 'checkbox' ? Checkbox : ToggleButton;
|
|
114
126
|
return React.createElement(Component, _extends({
|
|
115
127
|
id: optionsCount === 1 ? id : undefined,
|
|
116
128
|
key: `option-${i}-${value}`,
|
|
@@ -124,22 +136,14 @@ export function getCheckboxOrToggleOptions({
|
|
|
124
136
|
suffix: suffix,
|
|
125
137
|
on_change: handleSelect
|
|
126
138
|
}, htmlAttributes, rest));
|
|
127
|
-
};
|
|
128
|
-
const
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
const nestedChildren = mapOptions(child.props.children);
|
|
136
|
-
return React.cloneElement(child, child.props, nestedChildren);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
return child;
|
|
140
|
-
});
|
|
141
|
-
};
|
|
142
|
-
return mapOptions(children);
|
|
139
|
+
}, [disabled, emptyValue, handleChange, hasError, htmlAttributes, id, info, optionsCount, value, variant, warning]);
|
|
140
|
+
const result = mapOptions(children, {
|
|
141
|
+
createOption
|
|
142
|
+
});
|
|
143
|
+
if (path) {
|
|
144
|
+
setFieldProps === null || setFieldProps === void 0 ? void 0 : setFieldProps(path + '/arraySelectionData', collectedData);
|
|
145
|
+
}
|
|
146
|
+
return result;
|
|
143
147
|
}
|
|
144
148
|
ArraySelection._supportsSpacingProps = true;
|
|
145
149
|
export default ArraySelection;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArraySelection.js","names":["React","Checkbox","HelpButton","ToggleButton","classnames","OptionField","FieldBlock","useFieldProps","pickSpacingProps","getStatus","ToggleButtonGroupContext","ArraySelection","props","id","className","variant","layout","optionsLayout","label","labelDescription","value","error","hasError","help","info","warning","disabled","emptyValue","htmlAttributes","handleChange","children","fieldBlockProps","_objectSpread","forId","contentClassName","createElement","Fragment","size","left","title","content","undefined","options","getCheckboxOrToggleOptions","Provider","status","optionsCount","Children","count","Component","createOption","i","selected","rest","_objectWithoutProperties","_excluded","suffix","handleSelect","newValue","includes","filter","length","_extends","key","text","checked","on_change","mapOptions","toArray","map","child","isValidElement","type","nestedChildren","cloneElement","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/ArraySelection/ArraySelection.tsx"],"sourcesContent":["import React from 'react'\nimport { Checkbox, HelpButton, ToggleButton } from '../../../../components'\nimport classnames from 'classnames'\nimport OptionField from '../Option'\nimport FieldBlock from '../../FieldBlock'\nimport { useFieldProps } from '../../hooks'\nimport { ReturnAdditional } from '../../hooks/useFieldProps'\nimport { FieldHelpProps, FieldProps, FormError } from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport { getStatus } from '../Selection'\nimport { HelpButtonProps } from '../../../../components/HelpButton'\nimport ToggleButtonGroupContext from '../../../../components/toggle-button/ToggleButtonGroupContext'\n\ntype OptionProps = React.ComponentProps<\n React.FC<{\n value: number | string\n error: Error | FormError | undefined\n title: React.ReactNode\n help: HelpButtonProps\n className: string\n children: React.ReactNode\n handleSelect: () => void\n }>\n>\n\nexport type Props = FieldHelpProps &\n FieldProps<Array<string | number> | undefined> & {\n children?: React.ReactNode\n variant?: 'checkbox' | 'button' | 'checkbox-button'\n optionsLayout?: 'horizontal' | 'vertical'\n }\n\nfunction ArraySelection(props: Props) {\n const {\n id,\n className,\n variant = 'checkbox',\n layout = 'vertical',\n optionsLayout = 'vertical',\n label,\n labelDescription,\n value,\n error,\n hasError,\n help,\n info,\n warning,\n disabled,\n emptyValue,\n htmlAttributes,\n handleChange,\n children,\n } = useFieldProps(props)\n\n const fieldBlockProps = {\n forId: id,\n className: classnames(\n 'dnb-forms-field-array-selection',\n `dnb-forms-field-array-selection--variant-${\n variant === 'checkbox' ? 'checkbox' : 'button'\n }`,\n `dnb-forms-field-array-selection--layout-${layout}`,\n `dnb-forms-field-array-selection--options-layout-${optionsLayout}`,\n className\n ),\n contentClassName: 'dnb-forms-field-array-selection__options',\n help,\n info,\n warning,\n error,\n layout,\n label,\n labelDescription: (\n <>\n {labelDescription}\n {help ? (\n <HelpButton\n size=\"small\"\n left={labelDescription ? 'x-small' : false}\n title={help.title}\n >\n {help.content}\n </HelpButton>\n ) : undefined}\n </>\n ),\n ...pickSpacingProps(props),\n }\n\n const options = getCheckboxOrToggleOptions({\n id,\n variant,\n info,\n warning,\n emptyValue,\n htmlAttributes,\n children,\n value,\n disabled,\n handleChange,\n hasError,\n })\n\n switch (variant) {\n case 'checkbox':\n return <FieldBlock {...fieldBlockProps}>{options}</FieldBlock>\n default:\n return (\n <FieldBlock {...fieldBlockProps}>\n <ToggleButtonGroupContext.Provider\n value={{\n status: hasError ? 'error' : undefined,\n disabled,\n variant:\n variant === 'checkbox-button' ? 'checkbox' : 'default',\n }}\n >\n {options}\n </ToggleButtonGroupContext.Provider>\n </FieldBlock>\n )\n }\n}\n\nexport function getCheckboxOrToggleOptions({\n id,\n variant = 'checkbox',\n info,\n warning,\n emptyValue,\n htmlAttributes,\n children,\n value,\n disabled,\n hasError,\n handleChange,\n}: {\n id: Props['id']\n variant?: Props['variant']\n info?: Props['info']\n warning?: Props['warning']\n emptyValue?: Props['emptyValue']\n htmlAttributes?: Props['htmlAttributes']\n children?: Props['children']\n value?: Props['value']\n disabled?: Props['disabled']\n hasError?: ReturnAdditional<Props['value']>['hasError']\n handleChange?: ReturnAdditional<Props['value']>['handleChange']\n}) {\n const optionsCount = React.Children.count(children)\n\n const Component = (\n variant === 'checkbox' ? Checkbox : ToggleButton\n ) as typeof Checkbox & typeof ToggleButton\n\n const createOption = (props: OptionProps, i: number) => {\n const {\n value: selected,\n error,\n title,\n help,\n className,\n children,\n ...rest\n } = props\n\n const label = title ?? children\n const status = getStatus(error, info, warning)\n const suffix = help ? (\n <HelpButton size=\"small\" title={help.title}>\n {help.content}\n </HelpButton>\n ) : undefined\n const handleSelect = () => {\n const newValue = value?.includes(selected)\n ? value.filter((value) => value !== selected)\n : [...(value ?? []), selected]\n\n handleChange?.(\n newValue.length === 0 ? (emptyValue as typeof value) : newValue\n )\n }\n\n return (\n <Component\n id={optionsCount === 1 ? id : undefined}\n key={`option-${i}-${value}`}\n className={classnames(\n `dnb-forms-field-array-selection__${\n variant === 'checkbox' ? 'checkbox' : 'button'\n }`,\n className\n )}\n label={variant === 'checkbox' ? label : undefined}\n text={variant !== 'checkbox' ? label : undefined}\n value={value}\n disabled={disabled}\n checked={value?.includes(selected)}\n status={(hasError || status) && 'error'}\n suffix={suffix}\n on_change={handleSelect}\n {...htmlAttributes}\n {...rest}\n />\n )\n }\n\n const mapOptions = (children: React.ReactNode) => {\n return React.Children.toArray(children).map(\n (child: React.ReactElement<OptionProps>, i) => {\n if (React.isValidElement(child)) {\n if (child.type === OptionField) {\n return createOption(child.props, i)\n }\n\n if (child.props.children) {\n const nestedChildren = mapOptions(child.props.children)\n return React.cloneElement(child, child.props, nestedChildren)\n }\n }\n\n return child\n }\n )\n }\n\n return mapOptions(children)\n}\n\nArraySelection._supportsSpacingProps = true\nexport default ArraySelection\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ArraySelection.js","names":["React","useCallback","useContext","useMemo","Checkbox","HelpButton","ToggleButton","classnames","FieldBlock","useFieldProps","pickSpacingProps","getStatus","mapOptions","ToggleButtonGroupContext","DataContext","ArraySelection","props","id","path","className","variant","layout","optionsLayout","label","labelDescription","value","error","hasError","help","info","warning","disabled","emptyValue","htmlAttributes","handleChange","children","fieldBlockProps","_objectSpread","forId","contentClassName","createElement","Fragment","size","left","title","content","undefined","options","useCheckboxOrToggleOptions","Provider","status","setFieldProps","optionsCount","Children","count","collectedData","createOption","i","selected","rest","_objectWithoutProperties","_excluded","includes","push","suffix","handleSelect","newValue","filter","length","Component","_extends","key","text","checked","on_change","result","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/ArraySelection/ArraySelection.tsx"],"sourcesContent":["import React, { useCallback, useContext, useMemo } from 'react'\nimport { Checkbox, HelpButton, ToggleButton } from '../../../../components'\nimport classnames from 'classnames'\nimport FieldBlock from '../../FieldBlock'\nimport { useFieldProps } from '../../hooks'\nimport { ReturnAdditional } from '../../hooks/useFieldProps'\nimport { FieldHelpProps, FieldProps, FormError } from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport { getStatus, mapOptions } from '../Selection'\nimport { HelpButtonProps } from '../../../../components/HelpButton'\nimport ToggleButtonGroupContext from '../../../../components/toggle-button/ToggleButtonGroupContext'\nimport DataContext from '../../DataContext/Context'\n\ntype OptionProps = React.ComponentProps<\n React.FC<{\n value: number | string\n error: Error | FormError | undefined\n title: React.ReactNode\n help: HelpButtonProps\n className: string\n children: React.ReactNode\n handleSelect: () => void\n }>\n>\n\nexport type Props = FieldHelpProps &\n FieldProps<Array<string | number> | undefined> & {\n children?: React.ReactNode\n variant?: 'checkbox' | 'button' | 'checkbox-button'\n optionsLayout?: 'horizontal' | 'vertical'\n }\n\nfunction ArraySelection(props: Props) {\n const {\n id,\n path,\n className,\n variant = 'checkbox',\n layout = 'vertical',\n optionsLayout = 'vertical',\n label,\n labelDescription,\n value,\n error,\n hasError,\n help,\n info,\n warning,\n disabled,\n emptyValue,\n htmlAttributes,\n handleChange,\n children,\n } = useFieldProps(props)\n\n const fieldBlockProps = {\n forId: id,\n className: classnames(\n 'dnb-forms-field-array-selection',\n `dnb-forms-field-array-selection--variant-${\n variant === 'checkbox' ? 'checkbox' : 'button'\n }`,\n `dnb-forms-field-array-selection--layout-${layout}`,\n `dnb-forms-field-array-selection--options-layout-${optionsLayout}`,\n className\n ),\n contentClassName: 'dnb-forms-field-array-selection__options',\n help,\n info,\n warning,\n error,\n layout,\n label,\n labelDescription: (\n <>\n {labelDescription}\n {help ? (\n <HelpButton\n size=\"small\"\n left={labelDescription ? 'x-small' : false}\n title={help.title}\n >\n {help.content}\n </HelpButton>\n ) : undefined}\n </>\n ),\n ...pickSpacingProps(props),\n }\n\n const options = useCheckboxOrToggleOptions({\n id,\n path,\n variant,\n info,\n warning,\n emptyValue,\n htmlAttributes,\n children,\n value,\n disabled,\n handleChange,\n hasError,\n })\n\n switch (variant) {\n case 'checkbox':\n return <FieldBlock {...fieldBlockProps}>{options}</FieldBlock>\n default:\n return (\n <FieldBlock {...fieldBlockProps}>\n <ToggleButtonGroupContext.Provider\n value={{\n status: hasError ? 'error' : undefined,\n disabled,\n variant:\n variant === 'checkbox-button' ? 'checkbox' : 'default',\n }}\n >\n {options}\n </ToggleButtonGroupContext.Provider>\n </FieldBlock>\n )\n }\n}\n\nexport function useCheckboxOrToggleOptions({\n id,\n path,\n variant = 'checkbox',\n info,\n warning,\n emptyValue,\n htmlAttributes,\n children,\n value,\n disabled,\n hasError,\n handleChange,\n}: {\n id: Props['id']\n path?: Props['path']\n variant?: Props['variant']\n info?: Props['info']\n warning?: Props['warning']\n emptyValue?: Props['emptyValue']\n htmlAttributes?: Props['htmlAttributes']\n children?: Props['children']\n value?: Props['value']\n disabled?: Props['disabled']\n hasError?: ReturnAdditional<Props['value']>['hasError']\n handleChange?: ReturnAdditional<Props['value']>['handleChange']\n}) {\n const { setFieldProps } = useContext(DataContext)\n const optionsCount = useMemo(\n () => React.Children.count(children),\n [children]\n )\n const collectedData = []\n\n const createOption = useCallback(\n (props: OptionProps, i: number) => {\n const {\n value: selected,\n error,\n title,\n help,\n className,\n children,\n ...rest\n } = props\n\n if (value?.includes(selected)) {\n collectedData.push(props)\n }\n\n const label = title ?? children\n const status = getStatus(error, info, warning)\n const suffix = help ? (\n <HelpButton size=\"small\" title={help.title}>\n {help.content}\n </HelpButton>\n ) : undefined\n const handleSelect = () => {\n const newValue = value?.includes(selected)\n ? value.filter((value) => value !== selected)\n : [...(value ?? []), selected]\n\n handleChange?.(\n newValue.length === 0 ? (emptyValue as typeof value) : newValue\n )\n }\n\n const Component = (\n variant === 'checkbox' ? Checkbox : ToggleButton\n ) as typeof Checkbox & typeof ToggleButton\n\n return (\n <Component\n id={optionsCount === 1 ? id : undefined}\n key={`option-${i}-${value}`}\n className={classnames(\n `dnb-forms-field-array-selection__${\n variant === 'checkbox' ? 'checkbox' : 'button'\n }`,\n className\n )}\n label={variant === 'checkbox' ? label : undefined}\n text={variant !== 'checkbox' ? label : undefined}\n value={value}\n disabled={disabled}\n checked={value?.includes(selected)}\n status={(hasError || status) && 'error'}\n suffix={suffix}\n on_change={handleSelect}\n {...htmlAttributes}\n {...rest}\n />\n )\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n disabled,\n emptyValue,\n handleChange,\n hasError,\n htmlAttributes,\n id,\n info,\n optionsCount,\n value,\n variant,\n warning,\n ]\n )\n\n const result = mapOptions(children, { createOption })\n\n if (path) {\n setFieldProps?.(path + '/arraySelectionData', collectedData)\n }\n\n return result\n}\n\nArraySelection._supportsSpacingProps = true\nexport default ArraySelection\n"],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ function Name(props) {
|
|
|
9
9
|
const StringFieldProps = _objectSpread({
|
|
10
10
|
trim: true,
|
|
11
11
|
autoComplete: 'name',
|
|
12
|
-
pattern: '^[\\p{L}\\p{
|
|
12
|
+
pattern: '^(?!.*[\\-\\s]{2})[\\p{L}]+([ \\-][\\p{L}]+)*$'
|
|
13
13
|
}, props);
|
|
14
14
|
return React.createElement(StringField, StringFieldProps);
|
|
15
15
|
}
|
|
@@ -51,7 +51,7 @@ Name.Company = function CompanyName(props) {
|
|
|
51
51
|
});
|
|
52
52
|
const StringFieldProps = _objectSpread(_objectSpread({
|
|
53
53
|
label: translations.label,
|
|
54
|
-
pattern:
|
|
54
|
+
pattern: '^(?!.*[-\\s]{2})(?!.*[\\.]{2})[\\p{L}\\p{N}][\\p{L}\\p{N}\\p{P}\\p{Zs}.]*[\\p{L}\\p{N}\\p{P}]$',
|
|
55
55
|
autoComplete: 'organization'
|
|
56
56
|
}, props), {}, {
|
|
57
57
|
errorMessages
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Name.js","names":["React","StringField","useErrorMessage","useTranslation","Name","props","StringFieldProps","_objectSpread","trim","autoComplete","pattern","createElement","_supportsSpacingProps","First","FirstName","translations","errorMessages","path","required","errorRequired","errorPattern","nameProps","label","Last","LastName","Company","CompanyName"
|
|
1
|
+
{"version":3,"file":"Name.js","names":["React","StringField","useErrorMessage","useTranslation","Name","props","StringFieldProps","_objectSpread","trim","autoComplete","pattern","createElement","_supportsSpacingProps","First","FirstName","translations","errorMessages","path","required","errorRequired","errorPattern","nameProps","label","Last","LastName","Company","CompanyName"],"sources":["../../../../../../src/extensions/forms/Field/Name/Name.tsx"],"sourcesContent":["import React from 'react'\nimport StringField, { Props as StringFieldProps } from '../String'\nimport useErrorMessage from '../../hooks/useErrorMessage'\nimport useTranslation from '../../hooks/useTranslation'\n\nexport type Props = StringFieldProps\n\nfunction Name(props: Props) {\n const StringFieldProps: Props = {\n trim: true,\n autoComplete: 'name',\n pattern: '^(?!.*[\\\\-\\\\s]{2})[\\\\p{L}]+([ \\\\-][\\\\p{L}]+)*$',\n ...props,\n }\n\n return <StringField {...StringFieldProps} />\n}\nName._supportsSpacingProps = true\n\nName.First = function FirstName(props: Props) {\n const translations = useTranslation().FirstName\n const errorMessages = useErrorMessage(props.path, props.errorMessages, {\n required: translations.errorRequired,\n pattern: translations.errorPattern,\n })\n\n const nameProps: Props = {\n label: translations.label,\n autoComplete: 'given-name',\n ...props,\n errorMessages,\n }\n\n return <Name {...nameProps} />\n}\nName.First['_supportsSpacingProps'] = true\n\nName.Last = function LastName(props: Props) {\n const translations = useTranslation().LastName\n const errorMessages = useErrorMessage(props.path, props.errorMessages, {\n required: translations.errorRequired,\n pattern: translations.errorPattern,\n })\n\n const nameProps: Props = {\n label: translations.label,\n autoComplete: 'family-name',\n ...props,\n errorMessages,\n }\n\n return <Name {...nameProps} />\n}\nName.First['_supportsSpacingProps'] = true\n\nName.Company = function CompanyName(props: Props) {\n const translations = useTranslation().CompanyName\n const errorMessages = useErrorMessage(props.path, props.errorMessages, {\n required: translations.errorRequired,\n })\n\n const StringFieldProps: Props = {\n label: translations.label,\n pattern:\n '^(?!.*[-\\\\s]{2})(?!.*[\\\\.]{2})[\\\\p{L}\\\\p{N}][\\\\p{L}\\\\p{N}\\\\p{P}\\\\p{Zs}.]*[\\\\p{L}\\\\p{N}\\\\p{P}]$',\n autoComplete: 'organization',\n ...props,\n errorMessages,\n }\n\n return <Name {...StringFieldProps} />\n}\nName.First['_supportsSpacingProps'] = true\n\nexport default Name\n"],"mappings":";;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,WAAW,MAAqC,WAAW;AAClE,OAAOC,eAAe,MAAM,6BAA6B;AACzD,OAAOC,cAAc,MAAM,4BAA4B;AAIvD,SAASC,IAAIA,CAACC,KAAY,EAAE;EAC1B,MAAMC,gBAAuB,GAAAC,aAAA;IAC3BC,IAAI,EAAE,IAAI;IACVC,YAAY,EAAE,MAAM;IACpBC,OAAO,EAAE;EAAgD,GACtDL,KAAK,CACT;EAED,OAAOL,KAAA,CAAAW,aAAA,CAACV,WAAW,EAAKK,gBAAmB,CAAC;AAC9C;AACAF,IAAI,CAACQ,qBAAqB,GAAG,IAAI;AAEjCR,IAAI,CAACS,KAAK,GAAG,SAASC,SAASA,CAACT,KAAY,EAAE;EAC5C,MAAMU,YAAY,GAAGZ,cAAc,CAAC,CAAC,CAACW,SAAS;EAC/C,MAAME,aAAa,GAAGd,eAAe,CAACG,KAAK,CAACY,IAAI,EAAEZ,KAAK,CAACW,aAAa,EAAE;IACrEE,QAAQ,EAAEH,YAAY,CAACI,aAAa;IACpCT,OAAO,EAAEK,YAAY,CAACK;EACxB,CAAC,CAAC;EAEF,MAAMC,SAAgB,GAAAd,aAAA,CAAAA,aAAA;IACpBe,KAAK,EAAEP,YAAY,CAACO,KAAK;IACzBb,YAAY,EAAE;EAAY,GACvBJ,KAAK;IACRW;EAAa,EACd;EAED,OAAOhB,KAAA,CAAAW,aAAA,CAACP,IAAI,EAAKiB,SAAY,CAAC;AAChC,CAAC;AACDjB,IAAI,CAACS,KAAK,CAAC,uBAAuB,CAAC,GAAG,IAAI;AAE1CT,IAAI,CAACmB,IAAI,GAAG,SAASC,QAAQA,CAACnB,KAAY,EAAE;EAC1C,MAAMU,YAAY,GAAGZ,cAAc,CAAC,CAAC,CAACqB,QAAQ;EAC9C,MAAMR,aAAa,GAAGd,eAAe,CAACG,KAAK,CAACY,IAAI,EAAEZ,KAAK,CAACW,aAAa,EAAE;IACrEE,QAAQ,EAAEH,YAAY,CAACI,aAAa;IACpCT,OAAO,EAAEK,YAAY,CAACK;EACxB,CAAC,CAAC;EAEF,MAAMC,SAAgB,GAAAd,aAAA,CAAAA,aAAA;IACpBe,KAAK,EAAEP,YAAY,CAACO,KAAK;IACzBb,YAAY,EAAE;EAAa,GACxBJ,KAAK;IACRW;EAAa,EACd;EAED,OAAOhB,KAAA,CAAAW,aAAA,CAACP,IAAI,EAAKiB,SAAY,CAAC;AAChC,CAAC;AACDjB,IAAI,CAACS,KAAK,CAAC,uBAAuB,CAAC,GAAG,IAAI;AAE1CT,IAAI,CAACqB,OAAO,GAAG,SAASC,WAAWA,CAACrB,KAAY,EAAE;EAChD,MAAMU,YAAY,GAAGZ,cAAc,CAAC,CAAC,CAACuB,WAAW;EACjD,MAAMV,aAAa,GAAGd,eAAe,CAACG,KAAK,CAACY,IAAI,EAAEZ,KAAK,CAACW,aAAa,EAAE;IACrEE,QAAQ,EAAEH,YAAY,CAACI;EACzB,CAAC,CAAC;EAEF,MAAMb,gBAAuB,GAAAC,aAAA,CAAAA,aAAA;IAC3Be,KAAK,EAAEP,YAAY,CAACO,KAAK;IACzBZ,OAAO,EACL,gGAAgG;IAClGD,YAAY,EAAE;EAAc,GACzBJ,KAAK;IACRW;EAAa,EACd;EAED,OAAOhB,KAAA,CAAAW,aAAA,CAACP,IAAI,EAAKE,gBAAmB,CAAC;AACvC,CAAC;AACDF,IAAI,CAACS,KAAK,CAAC,uBAAuB,CAAC,GAAG,IAAI;AAE1C,eAAeT,IAAI"}
|
|
@@ -58,5 +58,8 @@ declare namespace Selection {
|
|
|
58
58
|
var _supportsSpacingProps: boolean;
|
|
59
59
|
}
|
|
60
60
|
export declare function getStatus(error: Error | FormError | undefined, info: React.ReactNode, warning: React.ReactNode): string;
|
|
61
|
+
export declare function mapOptions(children: React.ReactNode, { createOption }: {
|
|
62
|
+
createOption: any;
|
|
63
|
+
}): any;
|
|
61
64
|
export declare function makeOptions<T = DrawerListProps['data']>(children: React.ReactNode): T;
|
|
62
65
|
export default Selection;
|
|
@@ -156,7 +156,6 @@ function renderRadioItems({
|
|
|
156
156
|
hasError
|
|
157
157
|
}) {
|
|
158
158
|
const optionsCount = React.Children.count(children) + ((dataList === null || dataList === void 0 ? void 0 : dataList.length) || 0);
|
|
159
|
-
const Component = variant === 'radio' ? Radio : ToggleButton;
|
|
160
159
|
const createOption = (props, i) => {
|
|
161
160
|
const {
|
|
162
161
|
error,
|
|
@@ -171,6 +170,7 @@ function renderRadioItems({
|
|
|
171
170
|
size: "small",
|
|
172
171
|
title: help.title
|
|
173
172
|
}, help.content) : undefined;
|
|
173
|
+
const Component = variant === 'radio' ? Radio : ToggleButton;
|
|
174
174
|
return React.createElement(Component, _extends({
|
|
175
175
|
id: optionsCount === 1 ? id : undefined,
|
|
176
176
|
key: `option-${i}-${value}`,
|
|
@@ -181,23 +181,29 @@ function renderRadioItems({
|
|
|
181
181
|
suffix: suffix
|
|
182
182
|
}, htmlAttributes, rest));
|
|
183
183
|
};
|
|
184
|
-
const mapOptions = children => {
|
|
185
|
-
return React.Children.map(children, (child, i) => {
|
|
186
|
-
if (React.isValidElement(child)) {
|
|
187
|
-
if (child.type === OptionField) {
|
|
188
|
-
return createOption(child.props, i);
|
|
189
|
-
}
|
|
190
|
-
if (child.props.children) {
|
|
191
|
-
const nestedChildren = mapOptions(child.props.children);
|
|
192
|
-
return React.cloneElement(child, child.props, nestedChildren);
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
return child;
|
|
196
|
-
});
|
|
197
|
-
};
|
|
198
184
|
return [...(dataList || []).map((props, i) => {
|
|
199
185
|
return createOption(props, i);
|
|
200
|
-
}), ...(mapOptions(children
|
|
186
|
+
}), ...(mapOptions(children, {
|
|
187
|
+
createOption
|
|
188
|
+
}) || [])].filter(Boolean);
|
|
189
|
+
}
|
|
190
|
+
export function mapOptions(children, {
|
|
191
|
+
createOption
|
|
192
|
+
}) {
|
|
193
|
+
return React.Children.map(children, (child, i) => {
|
|
194
|
+
if (React.isValidElement(child)) {
|
|
195
|
+
if (child.type === OptionField) {
|
|
196
|
+
return createOption(child.props, i);
|
|
197
|
+
}
|
|
198
|
+
if (child.props.children) {
|
|
199
|
+
const nestedChildren = mapOptions(child.props.children, {
|
|
200
|
+
createOption
|
|
201
|
+
});
|
|
202
|
+
return React.cloneElement(child, child.props, nestedChildren);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
return child;
|
|
206
|
+
});
|
|
201
207
|
}
|
|
202
208
|
export function makeOptions(children) {
|
|
203
209
|
return React.Children.map(children, child => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Selection.js","names":["React","useMemo","useCallback","classnames","makeUniqueId","ToggleButton","Dropdown","Radio","HelpButton","Autocomplete","OptionField","useFieldProps","pickSpacingProps","FieldBlock","FormError","convertCamelCaseProps","useDataValue","Selection","props","clearValue","id","className","variant","label","labelDescription","layout","optionsLayout","placeholder","value","info","warning","error","hasError","disabled","help","emptyValue","width","htmlAttributes","setHasFocus","handleChange","data","dataPath","children","autocompleteProps","dropdownProps","getValueByPath","dataList","handleDropdownChange","selectedKey","onChangeHandler","undefined","handleShow","handleHide","cn","fieldBlockProps","_objectSpread","forId","Component","items","renderRadioItems","createElement","_extends","asFieldset","Children","count","Group","layout_direction","on_change","String","status","getStatus","renderDropdownItems","concat","makeOptions","filter","Boolean","sharedProps","list_class","portal_class","title","suffix","content","on_show","on_hide","stretch","_error$message","message","Error","toString","optionsCount","length","createOption","i","rest","_objectWithoutProperties","_excluded","size","key","text","mapOptions","map","child","isValidElement","type","nestedChildren","cloneElement","_child","_child$props","_child$props$children","_ref","_props$children","_props$value","_em","_em2","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Selection/Selection.tsx"],"sourcesContent":["import React, { useMemo, useCallback } from 'react'\nimport classnames from 'classnames'\nimport { makeUniqueId } from '../../../../shared/component-helper'\nimport {\n ToggleButton,\n Dropdown,\n Radio,\n HelpButton,\n Autocomplete,\n} from '../../../../components'\nimport OptionField, { Props as OptionFieldProps } from '../Option'\nimport { useFieldProps } from '../../hooks'\nimport { ReturnAdditional } from '../../hooks/useFieldProps'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport FieldBlock from '../../FieldBlock'\nimport {\n FormError,\n FieldProps,\n FieldHelpProps,\n FieldBlockWidth,\n Path,\n} from '../../types'\nimport type { FormStatusText } from '../../../../components/FormStatus'\nimport type { AutocompleteAllProps } from '../../../../components/Autocomplete'\nimport type { DropdownAllProps } from '../../../../components/Dropdown'\nimport { HelpButtonProps } from '../../../../components/HelpButton'\nimport { DrawerListProps } from '../../../../fragments/DrawerList'\nimport {\n convertCamelCaseProps,\n ToCamelCase,\n} from '../../../../shared/helpers/withCamelCaseProps'\nimport useDataValue from '../../hooks/useDataValue'\n\ntype IOption = {\n title: string | React.ReactNode\n value: number | string\n status: FormStatusText\n}\nexport type Data = Array<{\n value: string\n title: React.ReactNode\n text?: React.ReactNode\n}>\n\nexport type Props = FieldHelpProps &\n FieldProps<IOption['value']> & {\n /**\n * Defines the variant of the component.\n * Default: dropdown\n */\n variant?: 'dropdown' | 'autocomplete' | 'radio' | 'button'\n\n /**\n * The width of the component.\n * Default: large\n */\n width?: FieldBlockWidth\n\n /**\n * Defines the layout of the options for radio and button variants.\n */\n optionsLayout?: 'horizontal' | 'vertical'\n\n /**\n * The path to the context data (Form.Handler).\n * The object needs to have a `value` and a `title` property.\n */\n dataPath?: Path\n\n /**\n * Data to be used for the component. The object needs to have a `value` and a `title` property.\n * The generated options will be placed above given JSX based children.\n */\n data?: Data\n\n /**\n * Autocomplete specific props\n */\n autocompleteProps?: ToCamelCase<AutocompleteAllProps>\n\n /**\n * Dropdown specific props\n */\n dropdownProps?: ToCamelCase<DropdownAllProps>\n\n /**\n * The content of the component.\n */\n children?: React.ReactNode\n }\n\nfunction Selection(props: Props) {\n const clearValue = useMemo(() => `clear-option-${makeUniqueId()}`, [])\n\n const {\n id,\n className,\n variant = 'dropdown',\n label,\n labelDescription,\n layout = 'vertical',\n optionsLayout = 'vertical',\n placeholder,\n value,\n info,\n warning,\n error,\n hasError,\n disabled,\n help,\n emptyValue,\n width = 'large',\n htmlAttributes,\n setHasFocus,\n handleChange,\n data,\n dataPath,\n children,\n\n // - Autocomplete and Dropdown specific props\n autocompleteProps,\n dropdownProps,\n } = useFieldProps(props)\n\n const { getValueByPath } = useDataValue()\n let dataList = data\n if (dataPath) {\n dataList = getValueByPath(dataPath)\n }\n\n const handleDropdownChange = useCallback(\n ({ data }) => {\n const selectedKey = data?.selectedKey\n handleChange?.(\n !selectedKey || selectedKey === clearValue\n ? emptyValue\n : selectedKey\n )\n },\n [handleChange, emptyValue, clearValue]\n )\n\n const onChangeHandler = useCallback(\n ({ value }) => {\n handleChange?.(value === undefined ? emptyValue : value)\n },\n [handleChange, emptyValue]\n )\n\n // Specific handleShow and handleHide because Dropdown preserve the initially received callbacks, so changes\n // due to `useCallback` usage will have no effect, leading to useFieldPropss handleFocus and handleBlur sending out old\n // copies of value as arguments.\n const handleShow = useCallback(\n ({ data }) => {\n setHasFocus(true, data?.selectedKey)\n },\n [setHasFocus]\n )\n\n const handleHide = useCallback(\n ({ data }) => {\n setHasFocus(false, data?.selectedKey)\n },\n [setHasFocus]\n )\n\n const cn = classnames(\n 'dnb-forms-field-selection',\n `dnb-forms-field-selection__variant--${variant}`,\n `dnb-forms-field-selection__options-layout--${optionsLayout}`,\n className\n )\n\n const fieldBlockProps = {\n forId: id,\n className: cn,\n ...pickSpacingProps(props),\n info,\n warning,\n error,\n layout,\n label,\n labelDescription,\n }\n\n switch (variant) {\n case 'radio':\n case 'button': {\n const Component = (\n variant === 'radio' ? Radio : ToggleButton\n ) as typeof Radio & typeof ToggleButton\n\n const items = renderRadioItems({\n id,\n value,\n variant,\n info,\n warning,\n htmlAttributes,\n children,\n dataList,\n hasError,\n })\n\n return (\n <FieldBlock\n {...fieldBlockProps}\n asFieldset={React.Children.count(items) > 1}\n >\n <Component.Group\n className={cn}\n layout_direction={\n optionsLayout === 'horizontal' ? 'row' : 'column'\n }\n disabled={disabled}\n on_change={onChangeHandler}\n value={String(value ?? '')}\n >\n {items}\n </Component.Group>\n </FieldBlock>\n )\n }\n\n case 'autocomplete':\n case 'dropdown': {\n const status = getStatus(error, info, warning)\n const data = renderDropdownItems(dataList)\n .concat(makeOptions(children))\n .filter(Boolean)\n\n const sharedProps: AutocompleteAllProps & DropdownAllProps = {\n id,\n list_class: 'dnb-forms-field-selection__list',\n portal_class: 'dnb-forms-field-selection__portal',\n title: placeholder,\n value: String(value ?? ''),\n status: (hasError || status) && 'error',\n disabled,\n ...htmlAttributes,\n data,\n suffix: help ? (\n <HelpButton title={help.title}>{help.content}</HelpButton>\n ) : undefined,\n on_change: handleDropdownChange,\n on_show: handleShow,\n on_hide: handleHide,\n stretch: true,\n }\n\n return (\n <FieldBlock {...fieldBlockProps} width={width}>\n {variant === 'autocomplete' ? (\n <Autocomplete\n {...sharedProps}\n {...(autocompleteProps\n ? (convertCamelCaseProps(\n autocompleteProps\n ) as AutocompleteAllProps)\n : null)}\n />\n ) : (\n <Dropdown\n {...sharedProps}\n {...(dropdownProps\n ? (convertCamelCaseProps(\n dropdownProps\n ) as DropdownAllProps)\n : null)}\n />\n )}\n </FieldBlock>\n )\n }\n }\n}\n\nexport function getStatus(\n error: Error | FormError | undefined,\n info: React.ReactNode,\n warning: React.ReactNode\n) {\n return (\n error?.message ??\n ((warning instanceof Error && warning.message) ||\n (warning instanceof FormError && warning.message) ||\n warning?.toString() ||\n (info instanceof Error && info.message) ||\n (info instanceof FormError && info.message) ||\n info?.toString())\n )\n}\n\ntype OptionProps = React.ComponentProps<\n React.FC<{\n error?: Error | FormError | undefined\n title: React.ReactNode\n help?: HelpButtonProps\n children?: React.ReactNode\n }>\n>\n\nfunction renderRadioItems({\n id,\n value,\n variant,\n info,\n warning,\n htmlAttributes,\n children,\n dataList,\n hasError,\n}: {\n id: string\n value: Props['value']\n variant: Props['variant']\n info: Props['info']\n warning: Props['warning']\n htmlAttributes: Props['htmlAttributes']\n children: Props['children']\n dataList: Data\n hasError: ReturnAdditional<Props['value']>['hasError']\n}) {\n const optionsCount =\n React.Children.count(children) + (dataList?.length || 0)\n\n const Component = (\n variant === 'radio' ? Radio : ToggleButton\n ) as typeof Radio & typeof ToggleButton\n\n const createOption = (props: OptionProps, i: number) => {\n const { error, title, help, children, ...rest } = props\n\n const label = title ?? children\n const status = getStatus(error, info, warning)\n const suffix = help ? (\n <HelpButton size=\"small\" title={help.title}>\n {help.content}\n </HelpButton>\n ) : undefined\n\n return (\n <Component\n id={optionsCount === 1 ? id : undefined}\n key={`option-${i}-${value}`}\n label={variant === 'radio' ? label : undefined}\n text={variant === 'button' ? label : undefined}\n value={String(value ?? '')}\n status={(hasError || status) && 'error'}\n suffix={suffix}\n {...htmlAttributes}\n {...rest}\n />\n )\n }\n\n const mapOptions = (children: React.ReactNode) => {\n return React.Children.map(\n children,\n (child: React.ReactElement<OptionProps>, i) => {\n if (React.isValidElement(child)) {\n if (child.type === OptionField) {\n return createOption(child.props, i)\n }\n\n if (child.props.children) {\n const nestedChildren = mapOptions(child.props.children)\n return React.cloneElement(child, child.props, nestedChildren)\n }\n }\n\n return child\n }\n )\n }\n\n return [\n ...(dataList || []).map((props, i) => {\n return createOption(props as OptionProps, i)\n }),\n ...(mapOptions(children) || []),\n ].filter(Boolean)\n}\n\nexport function makeOptions<T = DrawerListProps['data']>(\n children: React.ReactNode\n): T {\n return React.Children.map(children, (child) => {\n if (child?.['props']?.children?.type === OptionField) {\n child = child['props'].children\n }\n\n if (React.isValidElement(child) && child.type === OptionField) {\n const props = child.props as OptionFieldProps\n const title = props.children ?? props.title ?? <em>Untitled</em>\n const content = props.text ? [title, props.text] : title\n const selectedKey = String(props.value ?? '')\n\n return { selectedKey, content }\n }\n\n // For other children, just show them as content\n if (child) {\n return {\n content: child,\n }\n }\n }) as T\n}\n\nfunction renderDropdownItems(data: Data) {\n return (\n data?.map(({ value, title, text }) => ({\n selectedKey: value,\n content: (text ? [title, text] : title) || <em>Untitled</em>,\n })) || []\n )\n}\n\nSelection._supportsSpacingProps = true\nexport default Selection\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Selection.js","names":["React","useMemo","useCallback","classnames","makeUniqueId","ToggleButton","Dropdown","Radio","HelpButton","Autocomplete","OptionField","useFieldProps","pickSpacingProps","FieldBlock","FormError","convertCamelCaseProps","useDataValue","Selection","props","clearValue","id","className","variant","label","labelDescription","layout","optionsLayout","placeholder","value","info","warning","error","hasError","disabled","help","emptyValue","width","htmlAttributes","setHasFocus","handleChange","data","dataPath","children","autocompleteProps","dropdownProps","getValueByPath","dataList","handleDropdownChange","selectedKey","onChangeHandler","undefined","handleShow","handleHide","cn","fieldBlockProps","_objectSpread","forId","Component","items","renderRadioItems","createElement","_extends","asFieldset","Children","count","Group","layout_direction","on_change","String","status","getStatus","renderDropdownItems","concat","makeOptions","filter","Boolean","sharedProps","list_class","portal_class","title","suffix","content","on_show","on_hide","stretch","_error$message","message","Error","toString","optionsCount","length","createOption","i","rest","_objectWithoutProperties","_excluded","size","key","text","map","mapOptions","child","isValidElement","type","nestedChildren","cloneElement","_child","_child$props","_child$props$children","_ref","_props$children","_props$value","_em","_em2","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Selection/Selection.tsx"],"sourcesContent":["import React, { useMemo, useCallback } from 'react'\nimport classnames from 'classnames'\nimport { makeUniqueId } from '../../../../shared/component-helper'\nimport {\n ToggleButton,\n Dropdown,\n Radio,\n HelpButton,\n Autocomplete,\n} from '../../../../components'\nimport OptionField, { Props as OptionFieldProps } from '../Option'\nimport { useFieldProps } from '../../hooks'\nimport { ReturnAdditional } from '../../hooks/useFieldProps'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport FieldBlock from '../../FieldBlock'\nimport {\n FormError,\n FieldProps,\n FieldHelpProps,\n FieldBlockWidth,\n Path,\n} from '../../types'\nimport type { FormStatusText } from '../../../../components/FormStatus'\nimport type { AutocompleteAllProps } from '../../../../components/Autocomplete'\nimport type { DropdownAllProps } from '../../../../components/Dropdown'\nimport { HelpButtonProps } from '../../../../components/HelpButton'\nimport { DrawerListProps } from '../../../../fragments/DrawerList'\nimport {\n convertCamelCaseProps,\n ToCamelCase,\n} from '../../../../shared/helpers/withCamelCaseProps'\nimport useDataValue from '../../hooks/useDataValue'\n\ntype IOption = {\n title: string | React.ReactNode\n value: number | string\n status: FormStatusText\n}\nexport type Data = Array<{\n value: string\n title: React.ReactNode\n text?: React.ReactNode\n}>\n\nexport type Props = FieldHelpProps &\n FieldProps<IOption['value']> & {\n /**\n * Defines the variant of the component.\n * Default: dropdown\n */\n variant?: 'dropdown' | 'autocomplete' | 'radio' | 'button'\n\n /**\n * The width of the component.\n * Default: large\n */\n width?: FieldBlockWidth\n\n /**\n * Defines the layout of the options for radio and button variants.\n */\n optionsLayout?: 'horizontal' | 'vertical'\n\n /**\n * The path to the context data (Form.Handler).\n * The object needs to have a `value` and a `title` property.\n */\n dataPath?: Path\n\n /**\n * Data to be used for the component. The object needs to have a `value` and a `title` property.\n * The generated options will be placed above given JSX based children.\n */\n data?: Data\n\n /**\n * Autocomplete specific props\n */\n autocompleteProps?: ToCamelCase<AutocompleteAllProps>\n\n /**\n * Dropdown specific props\n */\n dropdownProps?: ToCamelCase<DropdownAllProps>\n\n /**\n * The content of the component.\n */\n children?: React.ReactNode\n }\n\nfunction Selection(props: Props) {\n const clearValue = useMemo(() => `clear-option-${makeUniqueId()}`, [])\n\n const {\n id,\n className,\n variant = 'dropdown',\n label,\n labelDescription,\n layout = 'vertical',\n optionsLayout = 'vertical',\n placeholder,\n value,\n info,\n warning,\n error,\n hasError,\n disabled,\n help,\n emptyValue,\n width = 'large',\n htmlAttributes,\n setHasFocus,\n handleChange,\n data,\n dataPath,\n children,\n\n // - Autocomplete and Dropdown specific props\n autocompleteProps,\n dropdownProps,\n } = useFieldProps(props)\n\n const { getValueByPath } = useDataValue()\n let dataList = data\n if (dataPath) {\n dataList = getValueByPath(dataPath)\n }\n\n const handleDropdownChange = useCallback(\n ({ data }) => {\n const selectedKey = data?.selectedKey\n handleChange?.(\n !selectedKey || selectedKey === clearValue\n ? emptyValue\n : selectedKey\n )\n },\n [handleChange, emptyValue, clearValue]\n )\n\n const onChangeHandler = useCallback(\n ({ value }) => {\n handleChange?.(value === undefined ? emptyValue : value)\n },\n [handleChange, emptyValue]\n )\n\n // Specific handleShow and handleHide because Dropdown preserve the initially received callbacks, so changes\n // due to `useCallback` usage will have no effect, leading to useFieldPropss handleFocus and handleBlur sending out old\n // copies of value as arguments.\n const handleShow = useCallback(\n ({ data }) => {\n setHasFocus(true, data?.selectedKey)\n },\n [setHasFocus]\n )\n\n const handleHide = useCallback(\n ({ data }) => {\n setHasFocus(false, data?.selectedKey)\n },\n [setHasFocus]\n )\n\n const cn = classnames(\n 'dnb-forms-field-selection',\n `dnb-forms-field-selection__variant--${variant}`,\n `dnb-forms-field-selection__options-layout--${optionsLayout}`,\n className\n )\n\n const fieldBlockProps = {\n forId: id,\n className: cn,\n ...pickSpacingProps(props),\n info,\n warning,\n error,\n layout,\n label,\n labelDescription,\n }\n\n switch (variant) {\n case 'radio':\n case 'button': {\n const Component = (\n variant === 'radio' ? Radio : ToggleButton\n ) as typeof Radio & typeof ToggleButton\n\n const items = renderRadioItems({\n id,\n value,\n variant,\n info,\n warning,\n htmlAttributes,\n children,\n dataList,\n hasError,\n })\n\n return (\n <FieldBlock\n {...fieldBlockProps}\n asFieldset={React.Children.count(items) > 1}\n >\n <Component.Group\n className={cn}\n layout_direction={\n optionsLayout === 'horizontal' ? 'row' : 'column'\n }\n disabled={disabled}\n on_change={onChangeHandler}\n value={String(value ?? '')}\n >\n {items}\n </Component.Group>\n </FieldBlock>\n )\n }\n\n case 'autocomplete':\n case 'dropdown': {\n const status = getStatus(error, info, warning)\n const data = renderDropdownItems(dataList)\n .concat(makeOptions(children))\n .filter(Boolean)\n\n const sharedProps: AutocompleteAllProps & DropdownAllProps = {\n id,\n list_class: 'dnb-forms-field-selection__list',\n portal_class: 'dnb-forms-field-selection__portal',\n title: placeholder,\n value: String(value ?? ''),\n status: (hasError || status) && 'error',\n disabled,\n ...htmlAttributes,\n data,\n suffix: help ? (\n <HelpButton title={help.title}>{help.content}</HelpButton>\n ) : undefined,\n on_change: handleDropdownChange,\n on_show: handleShow,\n on_hide: handleHide,\n stretch: true,\n }\n\n return (\n <FieldBlock {...fieldBlockProps} width={width}>\n {variant === 'autocomplete' ? (\n <Autocomplete\n {...sharedProps}\n {...(autocompleteProps\n ? (convertCamelCaseProps(\n autocompleteProps\n ) as AutocompleteAllProps)\n : null)}\n />\n ) : (\n <Dropdown\n {...sharedProps}\n {...(dropdownProps\n ? (convertCamelCaseProps(\n dropdownProps\n ) as DropdownAllProps)\n : null)}\n />\n )}\n </FieldBlock>\n )\n }\n }\n}\n\nexport function getStatus(\n error: Error | FormError | undefined,\n info: React.ReactNode,\n warning: React.ReactNode\n) {\n return (\n error?.message ??\n ((warning instanceof Error && warning.message) ||\n (warning instanceof FormError && warning.message) ||\n warning?.toString() ||\n (info instanceof Error && info.message) ||\n (info instanceof FormError && info.message) ||\n info?.toString())\n )\n}\n\ntype OptionProps = React.ComponentProps<\n React.FC<{\n error?: Error | FormError | undefined\n title: React.ReactNode\n help?: HelpButtonProps\n children?: React.ReactNode\n }>\n>\n\nfunction renderRadioItems({\n id,\n value,\n variant,\n info,\n warning,\n htmlAttributes,\n children,\n dataList,\n hasError,\n}: {\n id: string\n value: Props['value']\n variant: Props['variant']\n info: Props['info']\n warning: Props['warning']\n htmlAttributes: Props['htmlAttributes']\n children: Props['children']\n dataList: Data\n hasError: ReturnAdditional<Props['value']>['hasError']\n}) {\n const optionsCount =\n React.Children.count(children) + (dataList?.length || 0)\n\n const createOption = (props: OptionProps, i: number) => {\n const { error, title, help, children, ...rest } = props\n\n const label = title ?? children\n const status = getStatus(error, info, warning)\n const suffix = help ? (\n <HelpButton size=\"small\" title={help.title}>\n {help.content}\n </HelpButton>\n ) : undefined\n\n const Component = (\n variant === 'radio' ? Radio : ToggleButton\n ) as typeof Radio & typeof ToggleButton\n\n return (\n <Component\n id={optionsCount === 1 ? id : undefined}\n key={`option-${i}-${value}`}\n label={variant === 'radio' ? label : undefined}\n text={variant === 'button' ? label : undefined}\n value={String(value ?? '')}\n status={(hasError || status) && 'error'}\n suffix={suffix}\n {...htmlAttributes}\n {...rest}\n />\n )\n }\n\n return [\n ...(dataList || []).map((props, i) => {\n return createOption(props as OptionProps, i)\n }),\n ...(mapOptions(children, { createOption }) || []),\n ].filter(Boolean)\n}\n\nexport function mapOptions(children: React.ReactNode, { createOption }) {\n return React.Children.map(\n children,\n (child: React.ReactElement<OptionProps>, i) => {\n if (React.isValidElement(child)) {\n if (child.type === OptionField) {\n return createOption(child.props, i)\n }\n\n if (child.props.children) {\n const nestedChildren = mapOptions(child.props.children, {\n createOption,\n })\n return React.cloneElement(child, child.props, nestedChildren)\n }\n }\n\n return child\n }\n )\n}\n\nexport function makeOptions<T = DrawerListProps['data']>(\n children: React.ReactNode\n): T {\n return React.Children.map(children, (child) => {\n if (child?.['props']?.children?.type === OptionField) {\n child = child['props'].children\n }\n\n if (React.isValidElement(child) && child.type === OptionField) {\n const props = child.props as OptionFieldProps\n const title = props.children ?? props.title ?? <em>Untitled</em>\n const content = props.text ? [title, props.text] : title\n const selectedKey = String(props.value ?? '')\n\n return { selectedKey, content }\n }\n\n // For other children, just show them as content\n if (child) {\n return {\n content: child,\n }\n }\n }) as T\n}\n\nfunction renderDropdownItems(data: Data) {\n return (\n data?.map(({ value, title, text }) => ({\n selectedKey: value,\n content: (text ? [title, text] : title) || <em>Untitled</em>,\n })) || []\n )\n}\n\nSelection._supportsSpacingProps = true\nexport default Selection\n"],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ import React, { useMemo, useContext, useCallback, useRef, useReducer, useEffect
|
|
|
10
10
|
import classnames from 'classnames';
|
|
11
11
|
import FieldBlockContext from './FieldBlockContext';
|
|
12
12
|
import DataContext from '../DataContext/Context';
|
|
13
|
-
import IterateElementContext from '../Iterate/
|
|
13
|
+
import IterateElementContext from '../Iterate/IterateItemContext';
|
|
14
14
|
import { Space, FormLabel, FormStatus } from '../../../components';
|
|
15
15
|
import { Ul, Li } from '../../../elements';
|
|
16
16
|
import { convertJsxToString, findElementInChildren, warn } from '../../../shared/component-helper';
|
|
@@ -48,10 +48,10 @@ function FieldBlock(props) {
|
|
|
48
48
|
children
|
|
49
49
|
} = _Object$assign,
|
|
50
50
|
rest = _objectWithoutProperties(_Object$assign, _excluded);
|
|
51
|
-
const
|
|
51
|
+
const iterateItemContext = useContext(IterateElementContext);
|
|
52
52
|
const {
|
|
53
53
|
index: iterateIndex
|
|
54
|
-
} =
|
|
54
|
+
} = iterateItemContext !== null && iterateItemContext !== void 0 ? iterateItemContext : {};
|
|
55
55
|
const blockId = useId(props.id);
|
|
56
56
|
const [wasUpdated, forceUpdate] = useReducer(() => ({}), {});
|
|
57
57
|
const mountedFieldsRef = useRef({});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FieldBlock.js","names":["React","useMemo","useContext","useCallback","useRef","useReducer","useEffect","classnames","FieldBlockContext","DataContext","IterateElementContext","Space","FormLabel","FormStatus","Ul","Li","convertJsxToString","findElementInChildren","warn","useId","useUnmountEffect","FormError","SubmitIndicator","createSharedState","useTranslation","states","FieldBlock","props","dataContext","nestedFieldBlockContext","sharedData","forId","id","_Object$assign","Object","assign","data","className","layout","composition","label","labelProp","labelDescription","labelSrOnly","asFieldset","info","warning","error","errorProp","fieldState","disabled","width","contentWidth","align","labelSize","contentClassName","children","rest","_objectWithoutProperties","_excluded","iterateElementContext","index","iterateIndex","blockId","wasUpdated","forceUpdate","mountedFieldsRef","stateRecordRef","fieldStateIdsRef","contentsRef","hasInitiallyErrorProp","Boolean","undefined","replace","String","setInternalRecord","stateId","identifier","type","current","existingIndex","findIndex","item","_objectSpread","push","setFieldState","showFieldError","show","map","showInitially","statusContent","content","statesWithMessages","entries","flatMap","reduce","acc","cur","existing","find","message","getMessage","messages","state","width_element","no_animation","process","env","NODE_ENV","globalThis","IS_TEST","found","msg","filter","i","arr","length","text","createElement","CombineMessages","mainClasses","gridClasses","enableFieldset","useEnableFieldset","labelProps","element","srOnly","space","top","bottom","size","prerenderFieldProps","Provider","value","hasErrorProp","_extends","LabelDescription","ref","result","count","child","_child$props","_child$type","translations","Field","Fragment","errorSummary","stateSummary","key","Error","toString","_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'\n\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 IterateElementContext from '../Iterate/IterateElementContext'\nimport { Space, FormLabel, FormStatus } from '../../../components'\nimport { Ul, Li } from '../../../elements'\nimport {\n convertJsxToString,\n findElementInChildren,\n warn,\n} from '../../../shared/component-helper'\nimport useId from '../../../shared/helpers/useId'\nimport useUnmountEffect from '../../../shared/helpers/useUnmountEffect'\nimport {\n ComponentProps,\n FieldProps,\n FormError,\n SubmitState,\n Identifier,\n FieldBlockWidth,\n} from '../types'\nimport type { FormLabelAllProps } from '../../../components/FormLabel'\nimport SubmitIndicator from '../Form/SubmitIndicator/SubmitIndicator'\nimport { createSharedState } from '../../../shared/helpers/useSharedState'\nimport useTranslation from '../hooks/useTranslation'\n\nexport const states: Array<StateTypes> = ['error', 'info', 'warning']\n\nexport type Props = Pick<\n FieldProps,\n | keyof ComponentProps\n | 'layout'\n | 'label'\n | 'labelDescription'\n | 'info'\n | 'warning'\n | 'error'\n | '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 /** Width of outer block element */\n width?: FieldBlockWidth\n /** Width of contents block, while label etc can be wider if space is available */\n contentWidth?: FieldBlockWidth\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 children?: React.ReactNode\n} & React.HTMLAttributes<HTMLDivElement>\n\nfunction FieldBlock(props: Props) {\n const dataContext = useContext(DataContext)\n const nestedFieldBlockContext = useContext(FieldBlockContext)\n\n const sharedData = createSharedState<Props>(\n 'field-block-props-' + (props.forId || props.id)\n )\n const {\n className,\n forId,\n layout = 'vertical',\n composition,\n label: labelProp,\n labelDescription,\n labelSrOnly,\n asFieldset,\n info,\n warning,\n error: errorProp,\n fieldState,\n disabled,\n width,\n contentWidth,\n align,\n labelSize,\n contentClassName,\n children,\n ...rest\n } = Object.assign({}, sharedData.data, props)\n\n const iterateElementContext = useContext(IterateElementContext)\n const { index: iterateIndex } = iterateElementContext ?? {}\n\n const blockId = useId(props.id)\n const [wasUpdated, forceUpdate] = useReducer(() => ({}), {})\n const mountedFieldsRef = useRef<MountedFieldsRef>({})\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 = useMemo(() => {\n if (iterateIndex !== undefined) {\n return convertJsxToString(labelProp).replace(\n '{itemNr}',\n String(iterateIndex + 1)\n )\n }\n return labelProp\n }, [iterateIndex, labelProp])\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 setFieldState = useCallback(\n (props: StateBasis) => {\n if (nestedFieldBlockContext) {\n // If this FieldBlock is inside another one, forward the call to the outer one\n nestedFieldBlockContext.setFieldState(props)\n return\n }\n\n setInternalRecord(props)\n\n forceUpdate()\n },\n [nestedFieldBlockContext, setInternalRecord]\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 message = getMessage(cur)\n\n if (existing) {\n existing.messages.push({\n ...cur,\n message,\n })\n } else {\n acc.push({\n ...cur,\n content: undefined,\n messages: [\n {\n ...cur,\n message,\n },\n ],\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 text: <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 }, {}) as StatusContent\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n info,\n warning,\n errorProp,\n nestedFieldBlockContext,\n setInternalRecord,\n blockId,\n wasUpdated, // wasUpdated is needed to get the current errors\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 useUnmountEffect(() => () => {\n mountedFieldsRef.current = {}\n stateRecordRef.current = {}\n })\n\n const mainClasses = classnames(\n 'dnb-forms-field-block',\n width !== undefined && `dnb-forms-field-block--width-${width}`,\n className\n )\n const gridClasses = classnames(\n 'dnb-forms-field-block__grid',\n `dnb-forms-field-block--layout-${layout}`\n )\n\n // A child component with a label was found, use fieldset/legend instead of div/label\n const enableFieldset = useEnableFieldset({\n label,\n asFieldset,\n children,\n nestedFieldBlockContext,\n })\n\n const labelProps: FormLabelAllProps = {\n element: enableFieldset ? 'legend' : 'label',\n forId: enableFieldset ? undefined : forId,\n srOnly: labelSrOnly,\n space: { top: 0, bottom: 'x-small' },\n size: labelSize,\n disabled,\n }\n\n if (dataContext?.prerenderFieldProps) {\n return null\n }\n\n if (fieldState && !label) {\n warn('You have to provide a label to use show an indicator.')\n }\n\n return (\n <FieldBlockContext.Provider\n value={{\n setFieldState,\n showFieldError,\n hasErrorProp: Boolean(errorProp),\n fieldStateIdsRef,\n mountedFieldsRef,\n composition,\n }}\n >\n <Space\n element={enableFieldset ? 'fieldset' : 'div'} // use fieldset and legend to enhance a11y\n className={mainClasses}\n {...rest}\n >\n <div className={gridClasses}>\n <LabelDescription labelDescription={labelDescription}>\n {(label || labelDescription) && (\n <FormLabel {...labelProps}>\n <SubmitIndicator state={fieldState}>\n {label}\n {labelDescription && (\n <span className=\"dnb-forms-field-block__label-description\">\n {labelDescription}\n </span>\n )}\n </SubmitIndicator>\n </FormLabel>\n )}\n </LabelDescription>\n\n <div className=\"dnb-forms-field-block__status\">\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-${contentWidth}`,\n align && `dnb-forms-field-block__contents--align-${align}`,\n composition &&\n `dnb-forms-field-block__contents__composition--${\n composition === true ? 'horizontal' : composition\n }`,\n contentClassName\n )}\n ref={contentsRef}\n >\n {children}\n </div>\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\nfunction LabelDescription({ labelDescription, children }) {\n if (!labelDescription) {\n return children\n }\n return <div className=\"dnb-forms-field-block__label\">{children}</div>\n}\n\nfunction getMessage(item: Partial<StateWithMessage>): StateMessage {\n const { content } = item\n\n return ((content instanceof Error && content.message) ||\n (content instanceof FormError && content.message) ||\n content?.toString() ||\n content) as StateMessage\n}\n\nFieldBlock._supportsSpacingProps = true\n\nexport default FieldBlock\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FieldBlock.js","names":["React","useMemo","useContext","useCallback","useRef","useReducer","useEffect","classnames","FieldBlockContext","DataContext","IterateElementContext","Space","FormLabel","FormStatus","Ul","Li","convertJsxToString","findElementInChildren","warn","useId","useUnmountEffect","FormError","SubmitIndicator","createSharedState","useTranslation","states","FieldBlock","props","dataContext","nestedFieldBlockContext","sharedData","forId","id","_Object$assign","Object","assign","data","className","layout","composition","label","labelProp","labelDescription","labelSrOnly","asFieldset","info","warning","error","errorProp","fieldState","disabled","width","contentWidth","align","labelSize","contentClassName","children","rest","_objectWithoutProperties","_excluded","iterateItemContext","index","iterateIndex","blockId","wasUpdated","forceUpdate","mountedFieldsRef","stateRecordRef","fieldStateIdsRef","contentsRef","hasInitiallyErrorProp","Boolean","undefined","replace","String","setInternalRecord","stateId","identifier","type","current","existingIndex","findIndex","item","_objectSpread","push","setFieldState","showFieldError","show","map","showInitially","statusContent","content","statesWithMessages","entries","flatMap","reduce","acc","cur","existing","find","message","getMessage","messages","state","width_element","no_animation","process","env","NODE_ENV","globalThis","IS_TEST","found","msg","filter","i","arr","length","text","createElement","CombineMessages","mainClasses","gridClasses","enableFieldset","useEnableFieldset","labelProps","element","srOnly","space","top","bottom","size","prerenderFieldProps","Provider","value","hasErrorProp","_extends","LabelDescription","ref","result","count","child","_child$props","_child$type","translations","Field","Fragment","errorSummary","stateSummary","key","Error","toString","_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'\n\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 IterateElementContext from '../Iterate/IterateItemContext'\nimport { Space, FormLabel, FormStatus } from '../../../components'\nimport { Ul, Li } from '../../../elements'\nimport {\n convertJsxToString,\n findElementInChildren,\n warn,\n} from '../../../shared/component-helper'\nimport useId from '../../../shared/helpers/useId'\nimport useUnmountEffect from '../../../shared/helpers/useUnmountEffect'\nimport {\n ComponentProps,\n FieldProps,\n FormError,\n SubmitState,\n Identifier,\n FieldBlockWidth,\n} from '../types'\nimport type { FormLabelAllProps } from '../../../components/FormLabel'\nimport SubmitIndicator from '../Form/SubmitIndicator/SubmitIndicator'\nimport { createSharedState } from '../../../shared/helpers/useSharedState'\nimport useTranslation from '../hooks/useTranslation'\n\nexport const states: Array<StateTypes> = ['error', 'info', 'warning']\n\nexport type Props = Pick<\n FieldProps,\n | keyof ComponentProps\n | 'layout'\n | 'label'\n | 'labelDescription'\n | 'info'\n | 'warning'\n | 'error'\n | '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 /** Width of outer block element */\n width?: FieldBlockWidth\n /** Width of contents block, while label etc can be wider if space is available */\n contentWidth?: FieldBlockWidth\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 children?: React.ReactNode\n} & React.HTMLAttributes<HTMLDivElement>\n\nfunction FieldBlock(props: Props) {\n const dataContext = useContext(DataContext)\n const nestedFieldBlockContext = useContext(FieldBlockContext)\n\n const sharedData = createSharedState<Props>(\n 'field-block-props-' + (props.forId || props.id)\n )\n const {\n className,\n forId,\n layout = 'vertical',\n composition,\n label: labelProp,\n labelDescription,\n labelSrOnly,\n asFieldset,\n info,\n warning,\n error: errorProp,\n fieldState,\n disabled,\n width,\n contentWidth,\n align,\n labelSize,\n contentClassName,\n children,\n ...rest\n } = Object.assign({}, sharedData.data, props)\n\n const iterateItemContext = useContext(IterateElementContext)\n const { index: iterateIndex } = iterateItemContext ?? {}\n\n const blockId = useId(props.id)\n const [wasUpdated, forceUpdate] = useReducer(() => ({}), {})\n const mountedFieldsRef = useRef<MountedFieldsRef>({})\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 = useMemo(() => {\n if (iterateIndex !== undefined) {\n return convertJsxToString(labelProp).replace(\n '{itemNr}',\n String(iterateIndex + 1)\n )\n }\n return labelProp\n }, [iterateIndex, labelProp])\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 setFieldState = useCallback(\n (props: StateBasis) => {\n if (nestedFieldBlockContext) {\n // If this FieldBlock is inside another one, forward the call to the outer one\n nestedFieldBlockContext.setFieldState(props)\n return\n }\n\n setInternalRecord(props)\n\n forceUpdate()\n },\n [nestedFieldBlockContext, setInternalRecord]\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 message = getMessage(cur)\n\n if (existing) {\n existing.messages.push({\n ...cur,\n message,\n })\n } else {\n acc.push({\n ...cur,\n content: undefined,\n messages: [\n {\n ...cur,\n message,\n },\n ],\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 text: <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 }, {}) as StatusContent\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n info,\n warning,\n errorProp,\n nestedFieldBlockContext,\n setInternalRecord,\n blockId,\n wasUpdated, // wasUpdated is needed to get the current errors\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 useUnmountEffect(() => () => {\n mountedFieldsRef.current = {}\n stateRecordRef.current = {}\n })\n\n const mainClasses = classnames(\n 'dnb-forms-field-block',\n width !== undefined && `dnb-forms-field-block--width-${width}`,\n className\n )\n const gridClasses = classnames(\n 'dnb-forms-field-block__grid',\n `dnb-forms-field-block--layout-${layout}`\n )\n\n // A child component with a label was found, use fieldset/legend instead of div/label\n const enableFieldset = useEnableFieldset({\n label,\n asFieldset,\n children,\n nestedFieldBlockContext,\n })\n\n const labelProps: FormLabelAllProps = {\n element: enableFieldset ? 'legend' : 'label',\n forId: enableFieldset ? undefined : forId,\n srOnly: labelSrOnly,\n space: { top: 0, bottom: 'x-small' },\n size: labelSize,\n disabled,\n }\n\n if (dataContext?.prerenderFieldProps) {\n return null\n }\n\n if (fieldState && !label) {\n warn('You have to provide a label to use show an indicator.')\n }\n\n return (\n <FieldBlockContext.Provider\n value={{\n setFieldState,\n showFieldError,\n hasErrorProp: Boolean(errorProp),\n fieldStateIdsRef,\n mountedFieldsRef,\n composition,\n }}\n >\n <Space\n element={enableFieldset ? 'fieldset' : 'div'} // use fieldset and legend to enhance a11y\n className={mainClasses}\n {...rest}\n >\n <div className={gridClasses}>\n <LabelDescription labelDescription={labelDescription}>\n {(label || labelDescription) && (\n <FormLabel {...labelProps}>\n <SubmitIndicator state={fieldState}>\n {label}\n {labelDescription && (\n <span className=\"dnb-forms-field-block__label-description\">\n {labelDescription}\n </span>\n )}\n </SubmitIndicator>\n </FormLabel>\n )}\n </LabelDescription>\n\n <div className=\"dnb-forms-field-block__status\">\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-${contentWidth}`,\n align && `dnb-forms-field-block__contents--align-${align}`,\n composition &&\n `dnb-forms-field-block__contents__composition--${\n composition === true ? 'horizontal' : composition\n }`,\n contentClassName\n )}\n ref={contentsRef}\n >\n {children}\n </div>\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\nfunction LabelDescription({ labelDescription, children }) {\n if (!labelDescription) {\n return children\n }\n return <div className=\"dnb-forms-field-block__label\">{children}</div>\n}\n\nfunction getMessage(item: Partial<StateWithMessage>): StateMessage {\n const { content } = item\n\n return ((content instanceof Error && content.message) ||\n (content instanceof FormError && content.message) ||\n content?.toString() ||\n content) as StateMessage\n}\n\nFieldBlock._supportsSpacingProps = true\n\nexport default FieldBlock\n"],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
4
|
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
5
5
|
const _excluded = ["children", "className", "onSubmit"];
|
|
6
|
-
import React from 'react';
|
|
6
|
+
import React, { useCallback, useContext } from 'react';
|
|
7
7
|
import Context from '../../DataContext/Context';
|
|
8
8
|
import Space from '../../../../components/space/Space';
|
|
9
9
|
import classnames from 'classnames';
|
|
@@ -14,14 +14,9 @@ export default function FormElement(_ref) {
|
|
|
14
14
|
onSubmit = null
|
|
15
15
|
} = _ref,
|
|
16
16
|
rest = _objectWithoutProperties(_ref, _excluded);
|
|
17
|
-
const dataContext =
|
|
17
|
+
const dataContext = useContext(Context);
|
|
18
18
|
dataContext.isInsideFormElement = true;
|
|
19
|
-
|
|
20
|
-
element: "form",
|
|
21
|
-
className: classnames('dnb-forms-form', className),
|
|
22
|
-
onSubmit: onSubmitHandler
|
|
23
|
-
}, rest), children);
|
|
24
|
-
function onSubmitHandler(event) {
|
|
19
|
+
const onSubmitHandler = useCallback(event => {
|
|
25
20
|
var _dataContext$handleSu;
|
|
26
21
|
event === null || event === void 0 ? void 0 : event.preventDefault();
|
|
27
22
|
const formElement = event.target;
|
|
@@ -31,6 +26,11 @@ export default function FormElement(_ref) {
|
|
|
31
26
|
if (typeof onSubmit === 'function') {
|
|
32
27
|
onSubmit(event);
|
|
33
28
|
}
|
|
34
|
-
}
|
|
29
|
+
}, [dataContext, onSubmit]);
|
|
30
|
+
return React.createElement(Space, _extends({
|
|
31
|
+
element: "form",
|
|
32
|
+
className: classnames('dnb-forms-form', className),
|
|
33
|
+
onSubmit: onSubmitHandler
|
|
34
|
+
}, rest), children);
|
|
35
35
|
}
|
|
36
36
|
//# sourceMappingURL=Element.js.map
|