@dnb/eufemia 10.75.4 → 10.76.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 +30 -0
- package/cjs/components/DateFormat.d.ts +12 -0
- package/cjs/components/DateFormat.js +24 -0
- package/cjs/components/DateFormat.js.map +1 -0
- package/cjs/components/PortalRoot.d.ts +12 -0
- package/cjs/components/PortalRoot.js +24 -0
- package/cjs/components/PortalRoot.js.map +1 -0
- package/cjs/components/breadcrumb/Breadcrumb.d.ts +4 -0
- package/cjs/components/breadcrumb/Breadcrumb.js +9 -4
- package/cjs/components/breadcrumb/Breadcrumb.js.map +1 -1
- package/cjs/components/breadcrumb/BreadcrumbDocs.js +5 -0
- package/cjs/components/breadcrumb/BreadcrumbDocs.js.map +1 -1
- package/cjs/components/card/Card.d.ts +4 -0
- package/cjs/components/card/Card.js +13 -4
- package/cjs/components/card/Card.js.map +1 -1
- package/cjs/components/card/CardDocs.js +1 -1
- package/cjs/components/card/CardDocs.js.map +1 -1
- package/cjs/components/checkbox/Checkbox.js.map +1 -1
- package/cjs/components/date-format/DateFormat.d.ts +30 -0
- package/cjs/components/date-format/DateFormat.js +86 -0
- package/cjs/components/date-format/DateFormat.js.map +1 -0
- package/cjs/components/date-format/DateFormatDocs.d.ts +2 -0
- package/cjs/components/date-format/DateFormatDocs.js +34 -0
- package/cjs/components/date-format/DateFormatDocs.js.map +1 -0
- package/cjs/components/date-format/DateFormatUtils.d.ts +11 -0
- package/cjs/components/date-format/DateFormatUtils.js +36 -0
- package/cjs/components/date-format/DateFormatUtils.js.map +1 -0
- package/cjs/components/date-format/index.d.ts +7 -0
- package/cjs/components/date-format/index.js +24 -0
- package/cjs/components/date-format/index.js.map +1 -0
- package/cjs/components/date-picker/DatePicker.js +5 -8
- package/cjs/components/date-picker/DatePicker.js.map +1 -1
- package/cjs/components/date-picker/DatePickerCalc.d.ts +0 -13
- package/cjs/components/date-picker/DatePickerCalc.js +0 -44
- package/cjs/components/date-picker/DatePickerCalc.js.map +1 -1
- package/cjs/components/date-picker/DatePickerCalendar.js +11 -10
- package/cjs/components/date-picker/DatePickerCalendar.js.map +1 -1
- package/cjs/components/date-picker/DatePickerCalendarNavigator.js +7 -7
- package/cjs/components/date-picker/DatePickerCalendarNavigator.js.map +1 -1
- package/cjs/components/date-picker/DatePickerInput.js +2 -1
- package/cjs/components/date-picker/DatePickerInput.js.map +1 -1
- package/cjs/components/date-picker/DatePickerPortal.d.ts +1 -1
- package/cjs/components/date-picker/DatePickerPortal.js +4 -4
- package/cjs/components/date-picker/DatePickerPortal.js.map +1 -1
- package/cjs/components/form-status/FormStatus.js +1 -1
- package/cjs/components/form-status/FormStatus.js.map +1 -1
- package/cjs/components/form-status/style/dnb-form-status.css +1 -1
- package/cjs/components/form-status/style/dnb-form-status.min.css +1 -1
- package/cjs/components/form-status/style/dnb-form-status.scss +1 -1
- package/cjs/components/form-status/style/themes/dnb-form-status-theme-sbanken.css +11 -2
- package/cjs/components/form-status/style/themes/dnb-form-status-theme-sbanken.min.css +1 -1
- package/cjs/components/form-status/style/themes/dnb-form-status-theme-sbanken.scss +6 -2
- package/cjs/components/global-status/style/themes/dnb-global-status-theme-sbanken.css +1 -1
- package/cjs/components/global-status/style/themes/dnb-global-status-theme-sbanken.min.css +1 -1
- package/cjs/components/global-status/style/themes/dnb-global-status-theme-sbanken.scss +1 -1
- package/cjs/components/help-button/style/dnb-help-button-inline.css +1 -1
- package/cjs/components/help-button/style/dnb-help-button-inline.min.css +1 -1
- package/cjs/components/help-button/style/dnb-help-button-inline.scss +1 -1
- package/cjs/components/help-button/style/dnb-help-button.css +1 -1
- package/cjs/components/help-button/style/dnb-help-button.min.css +1 -1
- package/cjs/components/index.d.ts +3 -1
- package/cjs/components/index.js +14 -0
- package/cjs/components/index.js.map +1 -1
- package/cjs/components/info-card/style/dnb-info-card.css +1 -1
- package/cjs/components/info-card/style/dnb-info-card.min.css +1 -1
- package/cjs/components/info-card/style/dnb-info-card.scss +1 -1
- package/cjs/components/lib.d.ts +5 -1
- package/cjs/components/lib.js +16 -0
- package/cjs/components/lib.js.map +1 -1
- package/cjs/components/modal/ModalRoot.d.ts +2 -7
- package/cjs/components/modal/ModalRoot.js +9 -65
- package/cjs/components/modal/ModalRoot.js.map +1 -1
- package/cjs/components/portal-root/PortalRoot.d.ts +7 -0
- package/cjs/components/portal-root/PortalRoot.js +65 -0
- package/cjs/components/portal-root/PortalRoot.js.map +1 -0
- package/cjs/components/portal-root/PortalRootDocs.d.ts +2 -0
- package/cjs/components/portal-root/PortalRootDocs.js +19 -0
- package/cjs/components/portal-root/PortalRootDocs.js.map +1 -0
- package/cjs/components/portal-root/index.d.ts +7 -0
- package/cjs/components/portal-root/index.js +24 -0
- package/cjs/components/portal-root/index.js.map +1 -0
- package/cjs/components/section/style/themes/dnb-section-theme-sbanken.css +1 -1
- package/cjs/components/section/style/themes/dnb-section-theme-sbanken.min.css +1 -1
- package/cjs/components/section/style/themes/dnb-section-theme-sbanken.scss +1 -1
- package/cjs/components/step-indicator/StepIndicator.js +6 -2
- package/cjs/components/step-indicator/StepIndicator.js.map +1 -1
- package/cjs/components/step-indicator/StepIndicatorDocs.js +1 -1
- package/cjs/components/step-indicator/StepIndicatorDocs.js.map +1 -1
- package/cjs/components/step-indicator/StepIndicatorTriggerButton.d.ts +2 -1
- package/cjs/components/step-indicator/StepIndicatorTriggerButton.js +5 -3
- package/cjs/components/step-indicator/StepIndicatorTriggerButton.js.map +1 -1
- package/cjs/components/switch/Switch.d.ts +12 -3
- package/cjs/components/switch/Switch.js +39 -15
- package/cjs/components/switch/Switch.js.map +1 -1
- package/cjs/components/switch/SwitchDocs.js +5 -0
- package/cjs/components/switch/SwitchDocs.js.map +1 -1
- package/cjs/components/tooltip/TooltipPortal.js +28 -59
- package/cjs/components/tooltip/TooltipPortal.js.map +1 -1
- package/cjs/components/tooltip/style/dnb-tooltip.css +8 -1
- package/cjs/components/tooltip/style/dnb-tooltip.min.css +1 -1
- package/cjs/components/tooltip/style/dnb-tooltip.scss +8 -1
- package/cjs/components/upload/Upload.js +31 -7
- package/cjs/components/upload/Upload.js.map +1 -1
- package/cjs/components/upload/UploadContext.d.ts +1 -0
- package/cjs/components/upload/UploadContext.js +2 -1
- package/cjs/components/upload/UploadContext.js.map +1 -1
- package/cjs/components/upload/UploadDocs.js +11 -1
- package/cjs/components/upload/UploadDocs.js.map +1 -1
- package/cjs/components/upload/UploadDropzone.d.ts +3 -1
- package/cjs/components/upload/UploadDropzone.js +5 -4
- package/cjs/components/upload/UploadDropzone.js.map +1 -1
- package/cjs/components/upload/UploadFileInput.d.ts +3 -1
- package/cjs/components/upload/UploadFileInput.js +7 -5
- package/cjs/components/upload/UploadFileInput.js.map +1 -1
- package/cjs/components/upload/style/dnb-upload.css +10 -2
- package/cjs/components/upload/style/dnb-upload.min.css +1 -1
- package/cjs/components/upload/style/dnb-upload.scss +12 -2
- package/cjs/components/upload/types.d.ts +4 -0
- package/cjs/components/upload/types.js.map +1 -1
- package/cjs/elements/lists/style/lists-mixins.scss +1 -1
- package/cjs/extensions/forms/Connectors/Bring/address.d.ts +48 -0
- package/cjs/extensions/forms/Connectors/Bring/address.js +185 -0
- package/cjs/extensions/forms/Connectors/Bring/address.js.map +1 -0
- package/cjs/extensions/forms/Connectors/Bring/index.d.ts +1 -0
- package/cjs/extensions/forms/Connectors/Bring/index.js +3 -1
- package/cjs/extensions/forms/Connectors/Bring/index.js.map +1 -1
- package/cjs/extensions/forms/Connectors/Bring/postalCode.js +10 -1
- package/cjs/extensions/forms/Connectors/Bring/postalCode.js.map +1 -1
- package/cjs/extensions/forms/Connectors/createContext.js +3 -0
- package/cjs/extensions/forms/Connectors/createContext.js.map +1 -1
- package/cjs/extensions/forms/Field/Address/Address.d.ts +3 -0
- package/cjs/extensions/forms/Field/Address/Address.js.map +1 -1
- package/cjs/extensions/forms/Field/Boolean/BooleanDocs.js +1 -1
- package/cjs/extensions/forms/Field/Boolean/BooleanDocs.js.map +1 -1
- package/cjs/extensions/forms/Field/Date/Date.js +11 -8
- package/cjs/extensions/forms/Field/Date/Date.js.map +1 -1
- package/cjs/extensions/forms/Field/Indeterminate/Indeterminate.js +3 -3
- package/cjs/extensions/forms/Field/Indeterminate/Indeterminate.js.map +1 -1
- package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.js +15 -6
- package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
- package/cjs/extensions/forms/Field/Toggle/Toggle.d.ts +1 -1
- package/cjs/extensions/forms/Field/Toggle/Toggle.js +36 -0
- package/cjs/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
- package/cjs/extensions/forms/Field/Upload/Upload.d.ts +1 -1
- package/cjs/extensions/forms/Field/Upload/Upload.js +26 -7
- package/cjs/extensions/forms/Field/Upload/Upload.js.map +1 -1
- package/cjs/extensions/forms/Field/style/field-sizes.scss +1 -1
- package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.css +2 -2
- package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
- package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.scss +1 -1
- package/cjs/extensions/forms/Form/Card/Card.d.ts +3 -6
- package/cjs/extensions/forms/Form/Card/Card.js +1 -1
- package/cjs/extensions/forms/Form/Card/Card.js.map +1 -1
- package/cjs/extensions/forms/Form/Card/CardDocs.d.ts +1 -0
- package/cjs/extensions/forms/Form/Card/CardDocs.js +14 -11
- package/cjs/extensions/forms/Form/Card/CardDocs.js.map +1 -1
- package/cjs/extensions/forms/Value/Date/Date.js +22 -7
- package/cjs/extensions/forms/Value/Date/Date.js.map +1 -1
- package/cjs/extensions/forms/Value/style/value-sizes.scss +2 -2
- package/cjs/extensions/forms/ValueBlock/style/dnb-value-block.css +2 -2
- package/cjs/extensions/forms/ValueBlock/style/dnb-value-block.min.css +1 -1
- package/cjs/extensions/forms/Wizard/Container/WizardContainerDocs.js +1 -1
- package/cjs/extensions/forms/Wizard/Container/WizardContainerDocs.js.map +1 -1
- package/cjs/extensions/forms/constants/locales/en-GB.d.ts +1 -0
- package/cjs/extensions/forms/constants/locales/en-GB.js +2 -1
- package/cjs/extensions/forms/constants/locales/en-GB.js.map +1 -1
- package/cjs/extensions/forms/constants/locales/en-US.d.ts +1 -0
- package/cjs/extensions/forms/constants/locales/index.d.ts +2 -0
- package/cjs/extensions/forms/constants/locales/nb-NO.d.ts +1 -0
- package/cjs/extensions/forms/constants/locales/nb-NO.js +2 -1
- package/cjs/extensions/forms/constants/locales/nb-NO.js.map +1 -1
- package/cjs/extensions/forms/constants/locales/sv-SE.d.ts +1 -0
- package/cjs/extensions/forms/constants/locales/sv-SE.js +2 -1
- package/cjs/extensions/forms/constants/locales/sv-SE.js.map +1 -1
- package/cjs/extensions/forms/style/dnb-forms.css +4 -4
- package/cjs/extensions/forms/style/dnb-forms.min.css +1 -1
- package/cjs/extensions/payment-card/style/dnb-payment-card.css +1 -0
- package/cjs/extensions/payment-card/style/dnb-payment-card.min.css +1 -1
- package/cjs/fragments/drawer-list/DrawerList.d.ts +4 -2
- package/cjs/fragments/drawer-list/DrawerList.js +6 -5
- package/cjs/fragments/drawer-list/DrawerList.js.map +1 -1
- package/cjs/fragments/drawer-list/DrawerListHelpers.js +1 -1
- package/cjs/fragments/drawer-list/DrawerListHelpers.js.map +1 -1
- package/cjs/fragments/drawer-list/DrawerListPortal.d.ts +1 -0
- package/cjs/fragments/drawer-list/DrawerListPortal.js +31 -65
- package/cjs/fragments/drawer-list/DrawerListPortal.js.map +1 -1
- package/cjs/fragments/drawer-list/DrawerListProvider.d.ts +1 -1
- package/cjs/fragments/drawer-list/DrawerListProvider.js.map +1 -1
- package/cjs/fragments/drawer-list/style/dnb-drawer-list.scss +1 -1
- package/cjs/index.d.ts +3 -1
- package/cjs/index.js +14 -0
- package/cjs/index.js.map +1 -1
- package/cjs/shared/build-info/BuildInfoData.d.ts +2 -2
- package/cjs/shared/build-info/BuildInfoData.js +2 -2
- package/cjs/shared/build-info/BuildInfoData.js.map +1 -1
- package/cjs/shared/locales/en-GB.d.ts +3 -0
- package/cjs/shared/locales/en-GB.js +3 -0
- package/cjs/shared/locales/en-GB.js.map +1 -1
- package/cjs/shared/locales/en-US.d.ts +3 -0
- package/cjs/shared/locales/index.d.ts +6 -0
- package/cjs/shared/locales/nb-NO.d.ts +3 -0
- package/cjs/shared/locales/nb-NO.js +3 -0
- package/cjs/shared/locales/nb-NO.js.map +1 -1
- package/cjs/shared/locales/sv-SE.d.ts +3 -0
- package/cjs/shared/locales/sv-SE.js +3 -0
- package/cjs/shared/locales/sv-SE.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 +27 -12
- package/cjs/style/dnb-ui-components.min.css +4 -4
- package/cjs/style/dnb-ui-core.css +1 -1
- package/cjs/style/dnb-ui-core.min.css +1 -1
- package/cjs/style/dnb-ui-elements.css +1 -1
- package/cjs/style/dnb-ui-elements.min.css +1 -1
- package/cjs/style/dnb-ui-extensions.css +5 -4
- package/cjs/style/dnb-ui-extensions.min.css +1 -1
- package/cjs/style/dnb-ui-forms.css +4 -4
- package/cjs/style/dnb-ui-forms.min.css +1 -1
- package/cjs/style/dnb-ui-fragments.css +1 -1
- package/cjs/style/dnb-ui-fragments.min.css +1 -1
- package/cjs/style/themes/theme-eiendom/eiendom-theme-basis.css +2 -1
- package/cjs/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
- package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +31 -16
- package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +4 -4
- package/cjs/style/themes/theme-eiendom/eiendom-theme-elements.css +1 -1
- package/cjs/style/themes/theme-eiendom/eiendom-theme-elements.min.css +1 -1
- package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.css +5 -4
- package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
- package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.css +4 -4
- package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
- package/cjs/style/themes/theme-eiendom/properties.d.ts +2 -0
- package/cjs/style/themes/theme-eiendom/properties.js +3 -1
- package/cjs/style/themes/theme-eiendom/properties.js.map +1 -1
- package/cjs/style/themes/theme-sbanken/properties.d.ts +2 -0
- package/cjs/style/themes/theme-sbanken/properties.js +2 -0
- package/cjs/style/themes/theme-sbanken/properties.js.map +1 -1
- package/cjs/style/themes/theme-sbanken/properties.scss +3 -0
- package/cjs/style/themes/theme-sbanken/sbanken-theme-basis.css +3 -1
- package/cjs/style/themes/theme-sbanken/sbanken-theme-basis.min.css +2 -2
- package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +44 -20
- package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +6 -6
- package/cjs/style/themes/theme-sbanken/sbanken-theme-elements.css +1 -1
- package/cjs/style/themes/theme-sbanken/sbanken-theme-elements.min.css +1 -1
- package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.css +5 -4
- package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
- package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.css +4 -4
- package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
- package/cjs/style/themes/theme-ui/properties.d.ts +2 -0
- package/cjs/style/themes/theme-ui/properties.js +3 -1
- package/cjs/style/themes/theme-ui/properties.js.map +1 -1
- package/cjs/style/themes/theme-ui/properties.scss +3 -0
- package/cjs/style/themes/theme-ui/ui-theme-basis.css +2 -1
- package/cjs/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
- package/cjs/style/themes/theme-ui/ui-theme-components.css +31 -16
- package/cjs/style/themes/theme-ui/ui-theme-components.min.css +4 -4
- package/cjs/style/themes/theme-ui/ui-theme-elements.css +1 -1
- package/cjs/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
- package/cjs/style/themes/theme-ui/ui-theme-extensions.css +5 -4
- package/cjs/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
- package/cjs/style/themes/theme-ui/ui-theme-forms.css +4 -4
- package/cjs/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
- package/cjs/style/themes/theme-ui/ui-theme-properties.css +1 -0
- package/cjs/style/themes/theme-ui/ui-theme-properties.min.css +1 -1
- package/cjs/style/themes/theme-ui/ui-theme-tags.css +1 -1
- package/cjs/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
- package/components/DateFormat.d.ts +12 -0
- package/components/DateFormat.js +4 -0
- package/components/DateFormat.js.map +1 -0
- package/components/PortalRoot.d.ts +12 -0
- package/components/PortalRoot.js +4 -0
- package/components/PortalRoot.js.map +1 -0
- package/components/breadcrumb/Breadcrumb.d.ts +4 -0
- package/components/breadcrumb/Breadcrumb.js +9 -4
- package/components/breadcrumb/Breadcrumb.js.map +1 -1
- package/components/breadcrumb/BreadcrumbDocs.js +5 -0
- package/components/breadcrumb/BreadcrumbDocs.js.map +1 -1
- package/components/card/Card.d.ts +4 -0
- package/components/card/Card.js +13 -4
- package/components/card/Card.js.map +1 -1
- package/components/card/CardDocs.js +1 -1
- package/components/card/CardDocs.js.map +1 -1
- package/components/checkbox/Checkbox.js.map +1 -1
- package/components/date-format/DateFormat.d.ts +30 -0
- package/components/date-format/DateFormat.js +77 -0
- package/components/date-format/DateFormat.js.map +1 -0
- package/components/date-format/DateFormatDocs.d.ts +2 -0
- package/components/date-format/DateFormatDocs.js +28 -0
- package/components/date-format/DateFormatDocs.js.map +1 -0
- package/components/date-format/DateFormatUtils.d.ts +11 -0
- package/components/date-format/DateFormatUtils.js +29 -0
- package/components/date-format/DateFormatUtils.js.map +1 -0
- package/components/date-format/index.d.ts +7 -0
- package/components/date-format/index.js +4 -0
- package/components/date-format/index.js.map +1 -0
- package/components/date-picker/DatePicker.js +3 -6
- package/components/date-picker/DatePicker.js.map +1 -1
- package/components/date-picker/DatePickerCalc.d.ts +0 -13
- package/components/date-picker/DatePickerCalc.js +0 -41
- package/components/date-picker/DatePickerCalc.js.map +1 -1
- package/components/date-picker/DatePickerCalendar.js +7 -6
- package/components/date-picker/DatePickerCalendar.js.map +1 -1
- package/components/date-picker/DatePickerCalendarNavigator.js +4 -4
- package/components/date-picker/DatePickerCalendarNavigator.js.map +1 -1
- package/components/date-picker/DatePickerInput.js +2 -1
- package/components/date-picker/DatePickerInput.js.map +1 -1
- package/components/date-picker/DatePickerPortal.d.ts +1 -1
- package/components/date-picker/DatePickerPortal.js +4 -4
- package/components/date-picker/DatePickerPortal.js.map +1 -1
- package/components/form-status/FormStatus.js +1 -1
- package/components/form-status/FormStatus.js.map +1 -1
- package/components/form-status/style/dnb-form-status.css +1 -1
- package/components/form-status/style/dnb-form-status.min.css +1 -1
- package/components/form-status/style/dnb-form-status.scss +1 -1
- package/components/form-status/style/themes/dnb-form-status-theme-sbanken.css +11 -2
- package/components/form-status/style/themes/dnb-form-status-theme-sbanken.min.css +1 -1
- package/components/form-status/style/themes/dnb-form-status-theme-sbanken.scss +6 -2
- package/components/global-status/style/themes/dnb-global-status-theme-sbanken.css +1 -1
- package/components/global-status/style/themes/dnb-global-status-theme-sbanken.min.css +1 -1
- package/components/global-status/style/themes/dnb-global-status-theme-sbanken.scss +1 -1
- package/components/help-button/style/dnb-help-button-inline.css +1 -1
- package/components/help-button/style/dnb-help-button-inline.min.css +1 -1
- package/components/help-button/style/dnb-help-button-inline.scss +1 -1
- package/components/help-button/style/dnb-help-button.css +1 -1
- package/components/help-button/style/dnb-help-button.min.css +1 -1
- package/components/index.d.ts +3 -1
- package/components/index.js +3 -1
- package/components/index.js.map +1 -1
- package/components/info-card/style/dnb-info-card.css +1 -1
- package/components/info-card/style/dnb-info-card.min.css +1 -1
- package/components/info-card/style/dnb-info-card.scss +1 -1
- package/components/lib.d.ts +5 -1
- package/components/lib.js +5 -1
- package/components/lib.js.map +1 -1
- package/components/modal/ModalRoot.d.ts +2 -7
- package/components/modal/ModalRoot.js +9 -65
- package/components/modal/ModalRoot.js.map +1 -1
- package/components/portal-root/PortalRoot.d.ts +7 -0
- package/components/portal-root/PortalRoot.js +54 -0
- package/components/portal-root/PortalRoot.js.map +1 -0
- package/components/portal-root/PortalRootDocs.d.ts +2 -0
- package/components/portal-root/PortalRootDocs.js +13 -0
- package/components/portal-root/PortalRootDocs.js.map +1 -0
- package/components/portal-root/index.d.ts +7 -0
- package/components/portal-root/index.js +4 -0
- package/components/portal-root/index.js.map +1 -0
- package/components/section/style/themes/dnb-section-theme-sbanken.css +1 -1
- package/components/section/style/themes/dnb-section-theme-sbanken.min.css +1 -1
- package/components/section/style/themes/dnb-section-theme-sbanken.scss +1 -1
- package/components/step-indicator/StepIndicator.js +6 -2
- package/components/step-indicator/StepIndicator.js.map +1 -1
- package/components/step-indicator/StepIndicatorDocs.js +1 -1
- package/components/step-indicator/StepIndicatorDocs.js.map +1 -1
- package/components/step-indicator/StepIndicatorTriggerButton.d.ts +2 -1
- package/components/step-indicator/StepIndicatorTriggerButton.js +5 -3
- package/components/step-indicator/StepIndicatorTriggerButton.js.map +1 -1
- package/components/switch/Switch.d.ts +12 -3
- package/components/switch/Switch.js +40 -16
- package/components/switch/Switch.js.map +1 -1
- package/components/switch/SwitchDocs.js +5 -0
- package/components/switch/SwitchDocs.js.map +1 -1
- package/components/tooltip/TooltipPortal.js +27 -60
- package/components/tooltip/TooltipPortal.js.map +1 -1
- package/components/tooltip/style/dnb-tooltip.css +8 -1
- package/components/tooltip/style/dnb-tooltip.min.css +1 -1
- package/components/tooltip/style/dnb-tooltip.scss +8 -1
- package/components/upload/Upload.js +31 -7
- package/components/upload/Upload.js.map +1 -1
- package/components/upload/UploadContext.d.ts +1 -0
- package/components/upload/UploadContext.js +2 -1
- package/components/upload/UploadContext.js.map +1 -1
- package/components/upload/UploadDocs.js +11 -1
- package/components/upload/UploadDocs.js.map +1 -1
- package/components/upload/UploadDropzone.d.ts +3 -1
- package/components/upload/UploadDropzone.js +5 -4
- package/components/upload/UploadDropzone.js.map +1 -1
- package/components/upload/UploadFileInput.d.ts +3 -1
- package/components/upload/UploadFileInput.js +7 -5
- package/components/upload/UploadFileInput.js.map +1 -1
- package/components/upload/style/dnb-upload.css +10 -2
- package/components/upload/style/dnb-upload.min.css +1 -1
- package/components/upload/style/dnb-upload.scss +12 -2
- package/components/upload/types.d.ts +4 -0
- package/components/upload/types.js.map +1 -1
- package/elements/lists/style/lists-mixins.scss +1 -1
- package/es/components/DateFormat.d.ts +12 -0
- package/es/components/DateFormat.js +4 -0
- package/es/components/DateFormat.js.map +1 -0
- package/es/components/PortalRoot.d.ts +12 -0
- package/es/components/PortalRoot.js +4 -0
- package/es/components/PortalRoot.js.map +1 -0
- package/es/components/breadcrumb/Breadcrumb.d.ts +4 -0
- package/es/components/breadcrumb/Breadcrumb.js +9 -4
- package/es/components/breadcrumb/Breadcrumb.js.map +1 -1
- package/es/components/breadcrumb/BreadcrumbDocs.js +5 -0
- package/es/components/breadcrumb/BreadcrumbDocs.js.map +1 -1
- package/es/components/card/Card.d.ts +4 -0
- package/es/components/card/Card.js +12 -4
- package/es/components/card/Card.js.map +1 -1
- package/es/components/card/CardDocs.js +1 -1
- package/es/components/card/CardDocs.js.map +1 -1
- package/es/components/checkbox/Checkbox.js.map +1 -1
- package/es/components/date-format/DateFormat.d.ts +30 -0
- package/es/components/date-format/DateFormat.js +74 -0
- package/es/components/date-format/DateFormat.js.map +1 -0
- package/es/components/date-format/DateFormatDocs.d.ts +2 -0
- package/es/components/date-format/DateFormatDocs.js +28 -0
- package/es/components/date-format/DateFormatDocs.js.map +1 -0
- package/es/components/date-format/DateFormatUtils.d.ts +11 -0
- package/es/components/date-format/DateFormatUtils.js +27 -0
- package/es/components/date-format/DateFormatUtils.js.map +1 -0
- package/es/components/date-format/index.d.ts +7 -0
- package/es/components/date-format/index.js +4 -0
- package/es/components/date-format/index.js.map +1 -0
- package/es/components/date-picker/DatePicker.js +3 -6
- package/es/components/date-picker/DatePicker.js.map +1 -1
- package/es/components/date-picker/DatePickerCalc.d.ts +0 -13
- package/es/components/date-picker/DatePickerCalc.js +0 -39
- package/es/components/date-picker/DatePickerCalc.js.map +1 -1
- package/es/components/date-picker/DatePickerCalendar.js +7 -6
- package/es/components/date-picker/DatePickerCalendar.js.map +1 -1
- package/es/components/date-picker/DatePickerCalendarNavigator.js +4 -4
- package/es/components/date-picker/DatePickerCalendarNavigator.js.map +1 -1
- package/es/components/date-picker/DatePickerInput.js +2 -1
- package/es/components/date-picker/DatePickerInput.js.map +1 -1
- package/es/components/date-picker/DatePickerPortal.d.ts +1 -1
- package/es/components/date-picker/DatePickerPortal.js +4 -4
- package/es/components/date-picker/DatePickerPortal.js.map +1 -1
- package/es/components/form-status/FormStatus.js +1 -1
- package/es/components/form-status/FormStatus.js.map +1 -1
- package/es/components/form-status/style/dnb-form-status.css +1 -1
- package/es/components/form-status/style/dnb-form-status.min.css +1 -1
- package/es/components/form-status/style/dnb-form-status.scss +1 -1
- package/es/components/form-status/style/themes/dnb-form-status-theme-sbanken.css +11 -2
- package/es/components/form-status/style/themes/dnb-form-status-theme-sbanken.min.css +1 -1
- package/es/components/form-status/style/themes/dnb-form-status-theme-sbanken.scss +6 -2
- package/es/components/global-status/style/themes/dnb-global-status-theme-sbanken.css +1 -1
- package/es/components/global-status/style/themes/dnb-global-status-theme-sbanken.min.css +1 -1
- package/es/components/global-status/style/themes/dnb-global-status-theme-sbanken.scss +1 -1
- package/es/components/help-button/style/dnb-help-button-inline.css +1 -1
- package/es/components/help-button/style/dnb-help-button-inline.min.css +1 -1
- package/es/components/help-button/style/dnb-help-button-inline.scss +1 -1
- package/es/components/help-button/style/dnb-help-button.css +1 -1
- package/es/components/help-button/style/dnb-help-button.min.css +1 -1
- package/es/components/index.d.ts +3 -1
- package/es/components/index.js +3 -1
- package/es/components/index.js.map +1 -1
- package/es/components/info-card/style/dnb-info-card.css +1 -1
- package/es/components/info-card/style/dnb-info-card.min.css +1 -1
- package/es/components/info-card/style/dnb-info-card.scss +1 -1
- package/es/components/lib.d.ts +5 -1
- package/es/components/lib.js +5 -1
- package/es/components/lib.js.map +1 -1
- package/es/components/modal/ModalRoot.d.ts +2 -7
- package/es/components/modal/ModalRoot.js +9 -61
- package/es/components/modal/ModalRoot.js.map +1 -1
- package/es/components/portal-root/PortalRoot.d.ts +7 -0
- package/es/components/portal-root/PortalRoot.js +54 -0
- package/es/components/portal-root/PortalRoot.js.map +1 -0
- package/es/components/portal-root/PortalRootDocs.d.ts +2 -0
- package/es/components/portal-root/PortalRootDocs.js +13 -0
- package/es/components/portal-root/PortalRootDocs.js.map +1 -0
- package/es/components/portal-root/index.d.ts +7 -0
- package/es/components/portal-root/index.js +4 -0
- package/es/components/portal-root/index.js.map +1 -0
- package/es/components/section/style/themes/dnb-section-theme-sbanken.css +1 -1
- package/es/components/section/style/themes/dnb-section-theme-sbanken.min.css +1 -1
- package/es/components/section/style/themes/dnb-section-theme-sbanken.scss +1 -1
- package/es/components/step-indicator/StepIndicator.js +6 -2
- package/es/components/step-indicator/StepIndicator.js.map +1 -1
- package/es/components/step-indicator/StepIndicatorDocs.js +1 -1
- package/es/components/step-indicator/StepIndicatorDocs.js.map +1 -1
- package/es/components/step-indicator/StepIndicatorTriggerButton.d.ts +2 -1
- package/es/components/step-indicator/StepIndicatorTriggerButton.js +5 -3
- package/es/components/step-indicator/StepIndicatorTriggerButton.js.map +1 -1
- package/es/components/switch/Switch.d.ts +12 -3
- package/es/components/switch/Switch.js +40 -16
- package/es/components/switch/Switch.js.map +1 -1
- package/es/components/switch/SwitchDocs.js +5 -0
- package/es/components/switch/SwitchDocs.js.map +1 -1
- package/es/components/tooltip/TooltipPortal.js +27 -59
- package/es/components/tooltip/TooltipPortal.js.map +1 -1
- package/es/components/tooltip/style/dnb-tooltip.css +8 -1
- package/es/components/tooltip/style/dnb-tooltip.min.css +1 -1
- package/es/components/tooltip/style/dnb-tooltip.scss +8 -1
- package/es/components/upload/Upload.js +31 -7
- package/es/components/upload/Upload.js.map +1 -1
- package/es/components/upload/UploadContext.d.ts +1 -0
- package/es/components/upload/UploadContext.js +2 -1
- package/es/components/upload/UploadContext.js.map +1 -1
- package/es/components/upload/UploadDocs.js +11 -1
- package/es/components/upload/UploadDocs.js.map +1 -1
- package/es/components/upload/UploadDropzone.d.ts +3 -1
- package/es/components/upload/UploadDropzone.js +5 -4
- package/es/components/upload/UploadDropzone.js.map +1 -1
- package/es/components/upload/UploadFileInput.d.ts +3 -1
- package/es/components/upload/UploadFileInput.js +7 -5
- package/es/components/upload/UploadFileInput.js.map +1 -1
- package/es/components/upload/style/dnb-upload.css +10 -2
- package/es/components/upload/style/dnb-upload.min.css +1 -1
- package/es/components/upload/style/dnb-upload.scss +12 -2
- package/es/components/upload/types.d.ts +4 -0
- package/es/components/upload/types.js.map +1 -1
- package/es/elements/lists/style/lists-mixins.scss +1 -1
- package/es/extensions/forms/Connectors/Bring/address.d.ts +48 -0
- package/es/extensions/forms/Connectors/Bring/address.js +169 -0
- package/es/extensions/forms/Connectors/Bring/address.js.map +1 -0
- package/es/extensions/forms/Connectors/Bring/index.d.ts +1 -0
- package/es/extensions/forms/Connectors/Bring/index.js +3 -1
- package/es/extensions/forms/Connectors/Bring/index.js.map +1 -1
- package/es/extensions/forms/Connectors/Bring/postalCode.js +9 -1
- package/es/extensions/forms/Connectors/Bring/postalCode.js.map +1 -1
- package/es/extensions/forms/Connectors/createContext.js +3 -0
- package/es/extensions/forms/Connectors/createContext.js.map +1 -1
- package/es/extensions/forms/Field/Address/Address.d.ts +3 -0
- package/es/extensions/forms/Field/Address/Address.js.map +1 -1
- package/es/extensions/forms/Field/Boolean/BooleanDocs.js +1 -1
- package/es/extensions/forms/Field/Boolean/BooleanDocs.js.map +1 -1
- package/es/extensions/forms/Field/Date/Date.js +5 -2
- package/es/extensions/forms/Field/Date/Date.js.map +1 -1
- package/es/extensions/forms/Field/Indeterminate/Indeterminate.js +3 -3
- package/es/extensions/forms/Field/Indeterminate/Indeterminate.js.map +1 -1
- package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.js +15 -6
- package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
- package/es/extensions/forms/Field/Toggle/Toggle.d.ts +1 -1
- package/es/extensions/forms/Field/Toggle/Toggle.js +37 -1
- package/es/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
- package/es/extensions/forms/Field/Upload/Upload.d.ts +1 -1
- package/es/extensions/forms/Field/Upload/Upload.js +26 -7
- package/es/extensions/forms/Field/Upload/Upload.js.map +1 -1
- package/es/extensions/forms/Field/style/field-sizes.scss +1 -1
- package/es/extensions/forms/FieldBlock/style/dnb-field-block.css +2 -2
- package/es/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
- package/es/extensions/forms/FieldBlock/style/dnb-field-block.scss +1 -1
- package/es/extensions/forms/Form/Card/Card.d.ts +3 -6
- package/es/extensions/forms/Form/Card/Card.js +1 -1
- package/es/extensions/forms/Form/Card/Card.js.map +1 -1
- package/es/extensions/forms/Form/Card/CardDocs.d.ts +1 -0
- package/es/extensions/forms/Form/Card/CardDocs.js +12 -10
- package/es/extensions/forms/Form/Card/CardDocs.js.map +1 -1
- package/es/extensions/forms/Value/Date/Date.js +20 -5
- package/es/extensions/forms/Value/Date/Date.js.map +1 -1
- package/es/extensions/forms/Value/style/value-sizes.scss +2 -2
- package/es/extensions/forms/ValueBlock/style/dnb-value-block.css +2 -2
- package/es/extensions/forms/ValueBlock/style/dnb-value-block.min.css +1 -1
- package/es/extensions/forms/Wizard/Container/WizardContainerDocs.js +1 -1
- package/es/extensions/forms/Wizard/Container/WizardContainerDocs.js.map +1 -1
- package/es/extensions/forms/constants/locales/en-GB.d.ts +1 -0
- package/es/extensions/forms/constants/locales/en-GB.js +2 -1
- package/es/extensions/forms/constants/locales/en-GB.js.map +1 -1
- package/es/extensions/forms/constants/locales/en-US.d.ts +1 -0
- package/es/extensions/forms/constants/locales/index.d.ts +2 -0
- package/es/extensions/forms/constants/locales/nb-NO.d.ts +1 -0
- package/es/extensions/forms/constants/locales/nb-NO.js +2 -1
- package/es/extensions/forms/constants/locales/nb-NO.js.map +1 -1
- package/es/extensions/forms/constants/locales/sv-SE.d.ts +1 -0
- package/es/extensions/forms/constants/locales/sv-SE.js +2 -1
- package/es/extensions/forms/constants/locales/sv-SE.js.map +1 -1
- package/es/extensions/forms/style/dnb-forms.css +4 -4
- package/es/extensions/forms/style/dnb-forms.min.css +1 -1
- package/es/extensions/payment-card/style/dnb-payment-card.css +1 -0
- package/es/extensions/payment-card/style/dnb-payment-card.min.css +1 -1
- package/es/fragments/drawer-list/DrawerList.d.ts +4 -2
- package/es/fragments/drawer-list/DrawerList.js +6 -5
- package/es/fragments/drawer-list/DrawerList.js.map +1 -1
- package/es/fragments/drawer-list/DrawerListHelpers.js +1 -1
- package/es/fragments/drawer-list/DrawerListHelpers.js.map +1 -1
- package/es/fragments/drawer-list/DrawerListPortal.d.ts +1 -0
- package/es/fragments/drawer-list/DrawerListPortal.js +32 -66
- package/es/fragments/drawer-list/DrawerListPortal.js.map +1 -1
- package/es/fragments/drawer-list/DrawerListProvider.d.ts +1 -1
- package/es/fragments/drawer-list/DrawerListProvider.js.map +1 -1
- package/es/fragments/drawer-list/style/dnb-drawer-list.scss +1 -1
- package/es/index.d.ts +3 -1
- package/es/index.js +3 -1
- package/es/index.js.map +1 -1
- package/es/shared/build-info/BuildInfoData.cjs +2 -2
- package/es/shared/build-info/BuildInfoData.d.ts +2 -2
- package/es/shared/build-info/BuildInfoData.js +2 -2
- package/es/shared/build-info/BuildInfoData.js.map +1 -1
- package/es/shared/locales/en-GB.d.ts +3 -0
- package/es/shared/locales/en-GB.js +3 -0
- package/es/shared/locales/en-GB.js.map +1 -1
- package/es/shared/locales/en-US.d.ts +3 -0
- package/es/shared/locales/index.d.ts +6 -0
- package/es/shared/locales/nb-NO.d.ts +3 -0
- package/es/shared/locales/nb-NO.js +3 -0
- package/es/shared/locales/nb-NO.js.map +1 -1
- package/es/shared/locales/sv-SE.d.ts +3 -0
- package/es/shared/locales/sv-SE.js +3 -0
- package/es/shared/locales/sv-SE.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 +27 -12
- package/es/style/dnb-ui-components.min.css +4 -4
- package/es/style/dnb-ui-core.css +1 -1
- package/es/style/dnb-ui-core.min.css +1 -1
- package/es/style/dnb-ui-elements.css +1 -1
- package/es/style/dnb-ui-elements.min.css +1 -1
- package/es/style/dnb-ui-extensions.css +5 -4
- package/es/style/dnb-ui-extensions.min.css +1 -1
- package/es/style/dnb-ui-forms.css +4 -4
- package/es/style/dnb-ui-forms.min.css +1 -1
- package/es/style/dnb-ui-fragments.css +1 -1
- package/es/style/dnb-ui-fragments.min.css +1 -1
- package/es/style/themes/theme-eiendom/eiendom-theme-basis.css +2 -1
- package/es/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
- package/es/style/themes/theme-eiendom/eiendom-theme-components.css +31 -16
- package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +4 -4
- package/es/style/themes/theme-eiendom/eiendom-theme-elements.css +1 -1
- package/es/style/themes/theme-eiendom/eiendom-theme-elements.min.css +1 -1
- package/es/style/themes/theme-eiendom/eiendom-theme-extensions.css +5 -4
- package/es/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
- package/es/style/themes/theme-eiendom/eiendom-theme-forms.css +4 -4
- package/es/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
- package/es/style/themes/theme-eiendom/properties.d.ts +2 -0
- package/es/style/themes/theme-eiendom/properties.js +3 -1
- package/es/style/themes/theme-eiendom/properties.js.map +1 -1
- package/es/style/themes/theme-sbanken/properties.d.ts +2 -0
- package/es/style/themes/theme-sbanken/properties.js +2 -0
- package/es/style/themes/theme-sbanken/properties.js.map +1 -1
- package/es/style/themes/theme-sbanken/properties.scss +3 -0
- package/es/style/themes/theme-sbanken/sbanken-theme-basis.css +3 -1
- package/es/style/themes/theme-sbanken/sbanken-theme-basis.min.css +2 -2
- package/es/style/themes/theme-sbanken/sbanken-theme-components.css +44 -20
- package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +6 -6
- package/es/style/themes/theme-sbanken/sbanken-theme-elements.css +1 -1
- package/es/style/themes/theme-sbanken/sbanken-theme-elements.min.css +1 -1
- package/es/style/themes/theme-sbanken/sbanken-theme-extensions.css +5 -4
- package/es/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
- package/es/style/themes/theme-sbanken/sbanken-theme-forms.css +4 -4
- package/es/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
- package/es/style/themes/theme-ui/properties.d.ts +2 -0
- package/es/style/themes/theme-ui/properties.js +3 -1
- package/es/style/themes/theme-ui/properties.js.map +1 -1
- package/es/style/themes/theme-ui/properties.scss +3 -0
- package/es/style/themes/theme-ui/ui-theme-basis.css +2 -1
- package/es/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
- package/es/style/themes/theme-ui/ui-theme-components.css +31 -16
- package/es/style/themes/theme-ui/ui-theme-components.min.css +4 -4
- package/es/style/themes/theme-ui/ui-theme-elements.css +1 -1
- package/es/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
- package/es/style/themes/theme-ui/ui-theme-extensions.css +5 -4
- package/es/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
- package/es/style/themes/theme-ui/ui-theme-forms.css +4 -4
- package/es/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
- package/es/style/themes/theme-ui/ui-theme-properties.css +1 -0
- package/es/style/themes/theme-ui/ui-theme-properties.min.css +1 -1
- package/es/style/themes/theme-ui/ui-theme-tags.css +1 -1
- package/es/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
- package/esm/dnb-ui-components.min.mjs +1 -1
- package/esm/dnb-ui-elements.min.mjs +1 -1
- package/esm/dnb-ui-extensions.min.mjs +3 -3
- package/esm/dnb-ui-lib.min.mjs +1 -1
- package/extensions/forms/Connectors/Bring/address.d.ts +48 -0
- package/extensions/forms/Connectors/Bring/address.js +170 -0
- package/extensions/forms/Connectors/Bring/address.js.map +1 -0
- package/extensions/forms/Connectors/Bring/index.d.ts +1 -0
- package/extensions/forms/Connectors/Bring/index.js +2 -0
- package/extensions/forms/Connectors/Bring/index.js.map +1 -1
- package/extensions/forms/Connectors/Bring/postalCode.js +9 -1
- package/extensions/forms/Connectors/Bring/postalCode.js.map +1 -1
- package/extensions/forms/Connectors/createContext.js +3 -0
- package/extensions/forms/Connectors/createContext.js.map +1 -1
- package/extensions/forms/Field/Address/Address.d.ts +3 -0
- package/extensions/forms/Field/Address/Address.js.map +1 -1
- package/extensions/forms/Field/Boolean/BooleanDocs.js +1 -1
- package/extensions/forms/Field/Boolean/BooleanDocs.js.map +1 -1
- package/extensions/forms/Field/Date/Date.js +5 -2
- package/extensions/forms/Field/Date/Date.js.map +1 -1
- package/extensions/forms/Field/Indeterminate/Indeterminate.js +3 -3
- package/extensions/forms/Field/Indeterminate/Indeterminate.js.map +1 -1
- package/extensions/forms/Field/PhoneNumber/PhoneNumber.js +15 -6
- package/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
- package/extensions/forms/Field/Toggle/Toggle.d.ts +1 -1
- package/extensions/forms/Field/Toggle/Toggle.js +37 -1
- package/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
- package/extensions/forms/Field/Upload/Upload.d.ts +1 -1
- package/extensions/forms/Field/Upload/Upload.js +26 -7
- package/extensions/forms/Field/Upload/Upload.js.map +1 -1
- package/extensions/forms/Field/style/field-sizes.scss +1 -1
- package/extensions/forms/FieldBlock/style/dnb-field-block.css +2 -2
- package/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
- package/extensions/forms/FieldBlock/style/dnb-field-block.scss +1 -1
- package/extensions/forms/Form/Card/Card.d.ts +3 -6
- package/extensions/forms/Form/Card/Card.js +1 -1
- package/extensions/forms/Form/Card/Card.js.map +1 -1
- package/extensions/forms/Form/Card/CardDocs.d.ts +1 -0
- package/extensions/forms/Form/Card/CardDocs.js +12 -10
- package/extensions/forms/Form/Card/CardDocs.js.map +1 -1
- package/extensions/forms/Value/Date/Date.js +20 -5
- package/extensions/forms/Value/Date/Date.js.map +1 -1
- package/extensions/forms/Value/style/value-sizes.scss +2 -2
- package/extensions/forms/ValueBlock/style/dnb-value-block.css +2 -2
- package/extensions/forms/ValueBlock/style/dnb-value-block.min.css +1 -1
- package/extensions/forms/Wizard/Container/WizardContainerDocs.js +1 -1
- package/extensions/forms/Wizard/Container/WizardContainerDocs.js.map +1 -1
- package/extensions/forms/constants/locales/en-GB.d.ts +1 -0
- package/extensions/forms/constants/locales/en-GB.js +2 -1
- package/extensions/forms/constants/locales/en-GB.js.map +1 -1
- package/extensions/forms/constants/locales/en-US.d.ts +1 -0
- package/extensions/forms/constants/locales/index.d.ts +2 -0
- package/extensions/forms/constants/locales/nb-NO.d.ts +1 -0
- package/extensions/forms/constants/locales/nb-NO.js +2 -1
- package/extensions/forms/constants/locales/nb-NO.js.map +1 -1
- package/extensions/forms/constants/locales/sv-SE.d.ts +1 -0
- package/extensions/forms/constants/locales/sv-SE.js +2 -1
- package/extensions/forms/constants/locales/sv-SE.js.map +1 -1
- package/extensions/forms/style/dnb-forms.css +4 -4
- package/extensions/forms/style/dnb-forms.min.css +1 -1
- package/extensions/payment-card/style/dnb-payment-card.css +1 -0
- package/extensions/payment-card/style/dnb-payment-card.min.css +1 -1
- package/fragments/drawer-list/DrawerList.d.ts +4 -2
- package/fragments/drawer-list/DrawerList.js +6 -5
- package/fragments/drawer-list/DrawerList.js.map +1 -1
- package/fragments/drawer-list/DrawerListHelpers.js +1 -1
- package/fragments/drawer-list/DrawerListHelpers.js.map +1 -1
- package/fragments/drawer-list/DrawerListPortal.d.ts +1 -0
- package/fragments/drawer-list/DrawerListPortal.js +32 -66
- package/fragments/drawer-list/DrawerListPortal.js.map +1 -1
- package/fragments/drawer-list/DrawerListProvider.d.ts +1 -1
- package/fragments/drawer-list/DrawerListProvider.js.map +1 -1
- package/fragments/drawer-list/style/dnb-drawer-list.scss +1 -1
- package/index.d.ts +3 -1
- package/index.js +3 -1
- package/index.js.map +1 -1
- package/package.json +1 -1
- package/shared/build-info/BuildInfoData.cjs +2 -2
- package/shared/build-info/BuildInfoData.d.ts +2 -2
- package/shared/build-info/BuildInfoData.js +2 -2
- package/shared/build-info/BuildInfoData.js.map +1 -1
- package/shared/locales/en-GB.d.ts +3 -0
- package/shared/locales/en-GB.js +3 -0
- package/shared/locales/en-GB.js.map +1 -1
- package/shared/locales/en-US.d.ts +3 -0
- package/shared/locales/index.d.ts +6 -0
- package/shared/locales/nb-NO.d.ts +3 -0
- package/shared/locales/nb-NO.js +3 -0
- package/shared/locales/nb-NO.js.map +1 -1
- package/shared/locales/sv-SE.d.ts +3 -0
- package/shared/locales/sv-SE.js +3 -0
- package/shared/locales/sv-SE.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 +27 -12
- package/style/dnb-ui-components.min.css +4 -4
- package/style/dnb-ui-core.css +1 -1
- package/style/dnb-ui-core.min.css +1 -1
- package/style/dnb-ui-elements.css +1 -1
- package/style/dnb-ui-elements.min.css +1 -1
- package/style/dnb-ui-extensions.css +5 -4
- package/style/dnb-ui-extensions.min.css +1 -1
- package/style/dnb-ui-forms.css +4 -4
- package/style/dnb-ui-forms.min.css +1 -1
- package/style/dnb-ui-fragments.css +1 -1
- package/style/dnb-ui-fragments.min.css +1 -1
- package/style/themes/theme-eiendom/eiendom-theme-basis.css +2 -1
- package/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
- package/style/themes/theme-eiendom/eiendom-theme-components.css +31 -16
- package/style/themes/theme-eiendom/eiendom-theme-components.min.css +4 -4
- package/style/themes/theme-eiendom/eiendom-theme-elements.css +1 -1
- package/style/themes/theme-eiendom/eiendom-theme-elements.min.css +1 -1
- package/style/themes/theme-eiendom/eiendom-theme-extensions.css +5 -4
- package/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
- package/style/themes/theme-eiendom/eiendom-theme-forms.css +4 -4
- package/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
- package/style/themes/theme-eiendom/properties.d.ts +2 -0
- package/style/themes/theme-eiendom/properties.js +3 -1
- package/style/themes/theme-eiendom/properties.js.map +1 -1
- package/style/themes/theme-sbanken/properties.d.ts +2 -0
- package/style/themes/theme-sbanken/properties.js +2 -0
- package/style/themes/theme-sbanken/properties.js.map +1 -1
- package/style/themes/theme-sbanken/properties.scss +3 -0
- package/style/themes/theme-sbanken/sbanken-theme-basis.css +3 -1
- package/style/themes/theme-sbanken/sbanken-theme-basis.min.css +2 -2
- package/style/themes/theme-sbanken/sbanken-theme-components.css +44 -20
- package/style/themes/theme-sbanken/sbanken-theme-components.min.css +6 -6
- package/style/themes/theme-sbanken/sbanken-theme-elements.css +1 -1
- package/style/themes/theme-sbanken/sbanken-theme-elements.min.css +1 -1
- package/style/themes/theme-sbanken/sbanken-theme-extensions.css +5 -4
- package/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
- package/style/themes/theme-sbanken/sbanken-theme-forms.css +4 -4
- package/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
- package/style/themes/theme-ui/properties.d.ts +2 -0
- package/style/themes/theme-ui/properties.js +3 -1
- package/style/themes/theme-ui/properties.js.map +1 -1
- package/style/themes/theme-ui/properties.scss +3 -0
- package/style/themes/theme-ui/ui-theme-basis.css +2 -1
- package/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
- package/style/themes/theme-ui/ui-theme-components.css +31 -16
- package/style/themes/theme-ui/ui-theme-components.min.css +4 -4
- package/style/themes/theme-ui/ui-theme-elements.css +1 -1
- package/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
- package/style/themes/theme-ui/ui-theme-extensions.css +5 -4
- package/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
- package/style/themes/theme-ui/ui-theme-forms.css +4 -4
- package/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
- package/style/themes/theme-ui/ui-theme-properties.css +1 -0
- package/style/themes/theme-ui/ui-theme-properties.min.css +1 -1
- package/style/themes/theme-ui/ui-theme-tags.css +1 -1
- package/style/themes/theme-ui/ui-theme-tags.min.css +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 +3 -3
- package/umd/dnb-ui-lib.min.js +1 -1
|
@@ -18,7 +18,7 @@ const defaultCountryCode = '+47';
|
|
|
18
18
|
const defaultPlaceholder = '00 00 00 00';
|
|
19
19
|
const defaultMask = [/\d/, /\d/, ' ', /\d/, /\d/, ' ', /\d/, /\d/, ' ', /\d/, /\d/];
|
|
20
20
|
function PhoneNumber(props) {
|
|
21
|
-
var _sharedContext$locale, _props$inputRef, _countryCodeRef$
|
|
21
|
+
var _sharedContext$locale, _props$inputRef, _countryCodeRef$curre2;
|
|
22
22
|
const sharedContext = useContext(SharedContext);
|
|
23
23
|
const {
|
|
24
24
|
label: defaultLabel,
|
|
@@ -190,12 +190,21 @@ function PhoneNumber(props) {
|
|
|
190
190
|
const handleCountryCodeChange = useCallback(({
|
|
191
191
|
data
|
|
192
192
|
}) => {
|
|
193
|
-
var _data$selectedKey;
|
|
193
|
+
var _data$selectedKey, _countryCodeRef$curre, _numberRef$current;
|
|
194
194
|
const countryCode = countryCodeRef.current = (data === null || data === void 0 ? void 0 : (_data$selectedKey = data.selectedKey) === null || _data$selectedKey === void 0 ? void 0 : _data$selectedKey.trim()) || emptyValue;
|
|
195
195
|
currentCountryRef.current = data === null || data === void 0 ? void 0 : data.country;
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
196
|
+
if (!numberMask && (_countryCodeRef$curre = countryCodeRef.current) !== null && _countryCodeRef$curre !== void 0 && _countryCodeRef$curre.includes(defaultCountryCode) && ((_numberRef$current = numberRef.current) === null || _numberRef$current === void 0 ? void 0 : _numberRef$current.length) > 8) {
|
|
197
|
+
const truncatedNumber = numberRef.current.substring(0, 8);
|
|
198
|
+
callOnChange({
|
|
199
|
+
countryCode,
|
|
200
|
+
phoneNumber: truncatedNumber
|
|
201
|
+
});
|
|
202
|
+
onNumberChange === null || onNumberChange === void 0 ? void 0 : onNumberChange(truncatedNumber);
|
|
203
|
+
} else {
|
|
204
|
+
callOnChange({
|
|
205
|
+
countryCode
|
|
206
|
+
});
|
|
207
|
+
}
|
|
199
208
|
onCountryCodeChange === null || onCountryCodeChange === void 0 ? void 0 : onCountryCodeChange(countryCode);
|
|
200
209
|
}, [emptyValue, callOnChange, onCountryCodeChange]);
|
|
201
210
|
const handleNumberChange = useCallback(value => {
|
|
@@ -246,7 +255,7 @@ function PhoneNumber(props) {
|
|
|
246
255
|
}
|
|
247
256
|
}
|
|
248
257
|
}, [callOnChange, countries, updateCurrentDataSet]);
|
|
249
|
-
const isDefault = (_countryCodeRef$
|
|
258
|
+
const isDefault = (_countryCodeRef$curre2 = countryCodeRef.current) === null || _countryCodeRef$curre2 === void 0 ? void 0 : _countryCodeRef$curre2.includes(defaultCountryCode);
|
|
250
259
|
const fieldBlockProps = _objectSpread({
|
|
251
260
|
id,
|
|
252
261
|
className: classnames('dnb-forms-field-phone-number', className),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PhoneNumber.js","names":["React","useMemo","useContext","useCallback","useEffect","useRef","Autocomplete","classnames","useCountries","StringField","CompositionField","useFieldProps","pickSpacingProps","SharedContext","countryFilter","getCountryData","useTranslation","defaultCountryCode","defaultPlaceholder","defaultMask","PhoneNumber","props","_sharedContext$locale","_props$inputRef","_countryCodeRef$curre","sharedContext","label","defaultLabel","countryCodeLabel","defaultCountryCodeLabel","errorRequired","lang","locale","split","countryCodeRef","emptyValue","prevCountryCodeRef","current","numberRef","dataRef","langRef","wasFilled","currentCountryRef","errorMessages","_objectSpread","validateRequired","value","required","isChanged","error","countryCode","phoneNumber","splitValue","undefined","fromExternal","external","omitCountryCodeField","toEvent","schema","_props$schema","type","pattern","defaultProps","ref","preparedProps","inputRef","id","path","itemPath","className","countryCodeFieldClassName","numberFieldClassName","countryCodePlaceholder","placeholder","labelSrOnly","numberMask","countries","ccFilter","info","warning","size","hasError","disabled","width","help","validateInitially","continuousValidation","validateContinuously","validateUnchanged","setHasFocus","handleChange","setDisplayValue","onCountryCodeChange","onNumberChange","filterCountries","_inputRef$current","number","length","joinValue","filter","country","updateCurrentDataSet","formatCountryCode","cdc","sort","makeObject","prepareEventValues","_currentCountryRef$cu","cdcVal","replace","item","find","_item$country","iso","callOnChange","data","eventValues","callOnBlurOrFocus","hasFocus","handleCountryCodeChange","_data$selectedKey","selectedKey","trim","handleNumberChange","handleOnBlur","handleOnFocus","handleCountryCodeFocus","updateData","onTypeHandler","revalidateInputValue","event","_event$nativeEvent","nativeEvent","test","window","requestAnimationFrame","isDefault","includes","fieldBlockProps","createElement","mode","label_direction","label_sr_only","status","on_focus","on_blur","on_change","on_type","independent_width","search_numbers","keep_selection","selectall","autoComplete","no_animation","noAnimation","layout","mask","Array","fill","onFocus","onBlur","onChange","innerRef","breakout","outset","inputMode","_country$i18n$lang","name","i18n","en","code","selected_value","search_content","content","match","slice","array","Boolean","join","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/PhoneNumber/PhoneNumber.tsx"],"sourcesContent":["import React, {\n useMemo,\n useContext,\n useCallback,\n useEffect,\n useRef,\n} from 'react'\nimport { Autocomplete } from '../../../../components'\nimport { InputMaskedProps } from '../../../../components/InputMasked'\nimport classnames from 'classnames'\nimport {\n CountryISO,\n type CountryLang,\n type CountryType,\n} from '../../constants/countries'\nimport useCountries from '../SelectCountry/useCountries'\nimport StringField, { Props as StringFieldProps } from '../String'\nimport { Props as FieldBlockProps } from '../../FieldBlock'\nimport CompositionField from '../Composition'\nimport { useFieldProps } from '../../hooks'\nimport {\n FieldPropsWithExtraValue,\n AllJSONSchemaVersions,\n} from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport SharedContext from '../../../../shared/Context'\nimport {\n countryFilter,\n CountryFilterSet,\n getCountryData,\n} from '../SelectCountry'\nimport useTranslation from '../../hooks/useTranslation'\nimport { DrawerListDataArrayItem } from '../../../../fragments/DrawerList'\n\nexport type AdditionalArgs = {\n phoneNumber: string\n countryCode: string\n iso: string\n}\n\nexport type Props = Omit<\n FieldPropsWithExtraValue<string, AdditionalArgs, undefined | string>,\n | 'layout'\n | 'layoutOptions'\n | 'labelSize'\n | 'labelDescription'\n | 'labelDescriptionInline'\n> & {\n countryCodeFieldClassName?: string\n numberFieldClassName?: string\n countryCodePlaceholder?: string\n countryCodeLabel?: string\n numberMask?: InputMaskedProps['mask']\n pattern?: StringFieldProps['pattern']\n width?: 'large' | 'stretch'\n inputRef?: React.RefObject<HTMLInputElement>\n omitCountryCodeField?: boolean\n onCountryCodeChange?: (value: string | undefined) => void\n onNumberChange?: (value: string | undefined) => void\n\n /**\n * Defines the countries to filter. Can be `Scandinavia`, `Nordic`, `Europe` or `Prioritized`.\n * Defaults to `Prioritized`.\n */\n countries?: CountryFilterSet\n\n /**\n * Use this prop to filter out certain countries. The function receives the country object and should return a boolean. Returning `false` will omit the country.\n */\n filterCountries?: (country: CountryType) => boolean\n\n /**\n * For internal testing purposes\n */\n noAnimation?: boolean\n} & Pick<StringFieldProps, 'size'>\n\n// Important for the default value to be defined here, and not after the useFieldProps call, to avoid the UI jumping\n// back to +47 once the user empty the field so handleChange send out undefined.\nconst defaultCountryCode = '+47'\nconst defaultPlaceholder = '00 00 00 00'\nconst defaultMask = [\n /\\d/,\n /\\d/,\n ' ',\n /\\d/,\n /\\d/,\n ' ',\n /\\d/,\n /\\d/,\n ' ',\n /\\d/,\n /\\d/,\n]\n\ntype EventValues = {\n countryCode?: string\n phoneNumber?: string\n}\n\nfunction PhoneNumber(props: Props) {\n const sharedContext = useContext(SharedContext)\n const {\n label: defaultLabel,\n countryCodeLabel: defaultCountryCodeLabel,\n errorRequired,\n } = useTranslation().PhoneNumber\n const lang = sharedContext.locale?.split('-')[0] as CountryLang\n\n const countryCodeRef = useRef<Props['value']>(props?.emptyValue)\n const prevCountryCodeRef = useRef(countryCodeRef.current)\n const numberRef = useRef<Props['value']>(props?.emptyValue)\n const dataRef = useRef<Array<DrawerListDataArrayItem>>(null)\n const langRef = useRef<string>(lang)\n const wasFilled = useRef<boolean>(false)\n const currentCountryRef = useRef<CountryType>()\n\n const errorMessages = useMemo(\n () => ({\n 'Field.errorRequired': errorRequired,\n 'Field.errorPattern': errorRequired,\n ...props.errorMessages,\n }),\n [errorRequired, props.errorMessages]\n )\n\n const validateRequired = useCallback(\n (value: string, { required, isChanged, error }) => {\n if (required) {\n const [countryCode, phoneNumber] = splitValue(value)\n\n if (countryCode !== prevCountryCodeRef.current) {\n if (countryCode) {\n prevCountryCodeRef.current = countryCode\n }\n return undefined\n }\n\n if (isChanged && !phoneNumber) {\n return error\n }\n }\n\n return undefined\n },\n []\n )\n\n const fromExternal = useCallback(\n (external: string) => {\n const [countryCode, phoneNumber] = splitValue(external)\n if (!countryCode && !phoneNumber && !props.omitCountryCodeField) {\n return countryCodeRef.current\n }\n return external\n },\n [props.omitCountryCodeField]\n )\n\n const toEvent = useCallback(\n (value: string) => {\n const [, phoneNumber] = splitValue(value)\n if (!phoneNumber) {\n return props.emptyValue\n }\n return value\n },\n [props.emptyValue]\n )\n\n const schema = useMemo<AllJSONSchemaVersions>(\n () =>\n props.schema ?? {\n type: 'string',\n pattern: props.pattern,\n },\n [props.schema, props.pattern]\n )\n const defaultProps: Partial<Props> = {\n schema,\n errorMessages,\n }\n const ref = useRef<HTMLInputElement>()\n const preparedProps: Props = {\n ...props,\n ...defaultProps,\n validateRequired,\n fromExternal,\n toEvent,\n inputRef: props.inputRef ?? ref,\n }\n\n const {\n id,\n path,\n itemPath,\n value,\n className,\n inputRef,\n countryCodeFieldClassName,\n numberFieldClassName,\n countryCodePlaceholder,\n placeholder,\n countryCodeLabel,\n label = defaultLabel,\n labelSrOnly,\n numberMask,\n countries: ccFilter = 'Prioritized',\n emptyValue,\n info,\n warning,\n size,\n error,\n hasError,\n disabled,\n width = props.omitCountryCodeField ? 'medium' : 'large',\n help,\n required,\n validateInitially,\n continuousValidation,\n validateContinuously,\n validateUnchanged,\n omitCountryCodeField,\n setHasFocus,\n handleChange,\n setDisplayValue,\n onCountryCodeChange,\n onNumberChange,\n filterCountries,\n } = useFieldProps(preparedProps)\n\n useEffect(() => {\n if (path || itemPath) {\n const number = inputRef.current?.value\n setDisplayValue(\n number?.length > 0\n ? joinValue([countryCodeRef.current, number])\n : undefined\n )\n }\n }, [inputRef, itemPath, path, setDisplayValue, value])\n\n const filter = useCallback(\n (country: CountryType) => {\n return countryFilter(country, filterCountries, ccFilter)\n },\n [ccFilter, filterCountries]\n )\n\n const { countries } = useCountries()\n\n const updateCurrentDataSet = useCallback(() => {\n dataRef.current = getCountryData({\n countries,\n lang,\n filter:\n // Make sure the whole cc list is displayed when cc filter is set to specific region\n ccFilter === 'Prioritized' && !wasFilled.current\n ? (country) =>\n `${formatCountryCode(country.cdc)}` ===\n countryCodeRef.current\n : filter,\n sort: ccFilter as Extract<CountryFilterSet, 'Prioritized'>,\n makeObject,\n })\n }, [countries, lang, ccFilter, filter])\n\n const prepareEventValues = useCallback(\n ({\n countryCode = countryCodeRef.current || emptyValue,\n phoneNumber = numberRef.current || emptyValue,\n }: EventValues = {}) => {\n if (!currentCountryRef.current) {\n type Item = DrawerListDataArrayItem & { country: CountryType }\n\n const cdcVal = countryCode?.replace(/^\\+/, '')\n const item = dataRef.current.find((item: Item) => {\n const cdc = item?.country?.cdc\n return cdc === cdcVal\n }) as Item\n\n currentCountryRef.current = item?.country\n }\n\n return {\n ...(!omitCountryCodeField ? { countryCode } : {}),\n phoneNumber,\n iso: currentCountryRef.current?.iso as CountryISO,\n }\n },\n [emptyValue, omitCountryCodeField]\n )\n\n const callOnChange = useCallback(\n (data: EventValues) => {\n const eventValues = prepareEventValues(data)\n handleChange(\n joinValue([eventValues.countryCode, eventValues.phoneNumber]),\n eventValues\n )\n },\n [prepareEventValues, handleChange]\n )\n\n const callOnBlurOrFocus = useCallback(\n (hasFocus: boolean) => {\n setHasFocus(hasFocus, undefined, prepareEventValues())\n },\n [prepareEventValues, setHasFocus]\n )\n\n /**\n * We do not process the whole country list at the first render.\n * Only when the Autocomplete opens (focus).\n * To achieve this, we use memo instead of effect to update refs in sync.\n *\n * We set or update the data list depending on if the countrycode changes or lang changes.\n * We then update countryCode and phoneNumber when value changes.\n */\n useMemo(() => {\n const [countryCode, phoneNumber] = splitValue(props.value || value)\n numberRef.current = phoneNumber\n\n if (lang !== langRef.current || !wasFilled.current) {\n if (!countryCodeRef.current || countryCode) {\n countryCodeRef.current = countryCode || defaultCountryCode\n }\n langRef.current = lang\n\n updateCurrentDataSet()\n }\n }, [value, props.value, lang, updateCurrentDataSet])\n\n const handleCountryCodeChange = useCallback(\n ({\n data,\n }: {\n data: { selectedKey: string; country: CountryType }\n }) => {\n const countryCode = (countryCodeRef.current =\n data?.selectedKey?.trim() || emptyValue)\n currentCountryRef.current = data?.country\n\n callOnChange({ countryCode })\n onCountryCodeChange?.(countryCode)\n },\n [emptyValue, callOnChange, onCountryCodeChange]\n )\n\n const handleNumberChange = useCallback(\n (value: string) => {\n const phoneNumber = (numberRef.current = value || emptyValue)\n\n callOnChange({ phoneNumber })\n onNumberChange?.(phoneNumber)\n },\n [emptyValue, callOnChange, onNumberChange]\n )\n\n const handleOnBlur = useCallback(() => {\n callOnBlurOrFocus(false)\n }, [callOnBlurOrFocus])\n\n const handleOnFocus = useCallback(() => {\n callOnBlurOrFocus(true)\n }, [callOnBlurOrFocus])\n\n const handleCountryCodeFocus = useCallback(\n ({ updateData }) => {\n if (!wasFilled.current) {\n wasFilled.current = true\n updateCurrentDataSet()\n updateData(dataRef.current)\n }\n handleOnFocus()\n },\n [handleOnFocus, updateCurrentDataSet]\n )\n\n const onTypeHandler = useCallback(\n ({ value, updateData, revalidateInputValue, event }) => {\n // Handle browser autofill/autocomplete\n if (typeof event?.nativeEvent?.data === 'undefined') {\n const cdcVal = /\\+\\d{1,3}\\s{1}\\d+/.test(value)\n ? splitValue(value)[0]\n : value\n const country = countries.find(({ cdc }) => cdc === cdcVal)\n if (country?.cdc) {\n const countryCode = (countryCodeRef.current = formatCountryCode(\n country.cdc\n ))\n\n updateCurrentDataSet()\n updateData(dataRef.current)\n callOnChange({ countryCode })\n\n // To ensure correct input value,\n // regardless if there is changed data before or not.\n window.requestAnimationFrame(() => {\n revalidateInputValue()\n })\n }\n }\n },\n [callOnChange, countries, updateCurrentDataSet]\n )\n\n const isDefault = countryCodeRef.current?.includes(defaultCountryCode)\n\n const fieldBlockProps: FieldBlockProps = {\n id,\n className: classnames('dnb-forms-field-phone-number', className),\n width,\n label: undefined,\n help: undefined,\n ...pickSpacingProps(props),\n }\n\n return (\n <CompositionField {...fieldBlockProps}>\n {!omitCountryCodeField && (\n <Autocomplete\n className={classnames(\n 'dnb-forms-field-phone-number__country-code',\n countryCodeFieldClassName\n )}\n mode=\"async\"\n placeholder={countryCodePlaceholder}\n label_direction=\"vertical\"\n label={countryCodeLabel ?? defaultCountryCodeLabel}\n label_sr_only={labelSrOnly}\n data={dataRef.current}\n value={countryCodeRef.current}\n status={hasError ? 'error' : undefined}\n disabled={disabled}\n on_focus={handleCountryCodeFocus}\n on_blur={handleOnBlur}\n on_change={handleCountryCodeChange}\n on_type={onTypeHandler}\n independent_width\n search_numbers\n keep_selection\n selectall\n autoComplete=\"tel-country-code\"\n no_animation={props.noAnimation}\n size={size}\n />\n )}\n <StringField\n className={classnames(\n 'dnb-forms-field-phone-number__number',\n numberFieldClassName\n )}\n type=\"tel\"\n autoComplete=\"tel-national\"\n emptyValue={emptyValue}\n layout=\"vertical\"\n label={label}\n labelSrOnly={labelSrOnly}\n placeholder={\n placeholder ?? (isDefault ? defaultPlaceholder : undefined)\n }\n mask={\n numberMask ?? (isDefault ? defaultMask : Array(12).fill(/\\d/))\n }\n onFocus={handleOnFocus}\n onBlur={handleOnBlur}\n onChange={handleNumberChange}\n value={numberRef.current}\n innerRef={inputRef}\n info={info}\n warning={warning}\n error={error}\n disabled={disabled}\n width=\"stretch\"\n help={{ ...help, breakout: false, outset: false }}\n required={required}\n errorMessages={errorMessages}\n validateInitially={validateInitially}\n validateContinuously={continuousValidation || validateContinuously}\n validateUnchanged={validateUnchanged}\n inputMode=\"tel\"\n size={size}\n />\n </CompositionField>\n )\n}\n\nfunction makeObject(country: CountryType, lang: string) {\n const name = country.i18n[lang] ?? country.i18n.en\n const code = formatCountryCode(country.cdc)\n return {\n selectedKey: code,\n selected_value: `${country.iso} (${code})`,\n search_content: [code, name],\n content: [name, code],\n country,\n }\n}\n\nfunction formatCountryCode(value: string) {\n return `+${value}`\n}\n\nfunction splitValue(value: string) {\n return (\n typeof value === 'string'\n ? value.match(/^(\\+[^ ]+)? ?(.*)$/)\n : [undefined, '', '']\n ).slice(1)\n}\n\nfunction joinValue(array: Array<string>) {\n return array.filter(Boolean).join(' ')\n}\n\nPhoneNumber._supportsSpacingProps = true\nexport default PhoneNumber\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"PhoneNumber.js","names":["React","useMemo","useContext","useCallback","useEffect","useRef","Autocomplete","classnames","useCountries","StringField","CompositionField","useFieldProps","pickSpacingProps","SharedContext","countryFilter","getCountryData","useTranslation","defaultCountryCode","defaultPlaceholder","defaultMask","PhoneNumber","props","_sharedContext$locale","_props$inputRef","_countryCodeRef$curre2","sharedContext","label","defaultLabel","countryCodeLabel","defaultCountryCodeLabel","errorRequired","lang","locale","split","countryCodeRef","emptyValue","prevCountryCodeRef","current","numberRef","dataRef","langRef","wasFilled","currentCountryRef","errorMessages","_objectSpread","validateRequired","value","required","isChanged","error","countryCode","phoneNumber","splitValue","undefined","fromExternal","external","omitCountryCodeField","toEvent","schema","_props$schema","type","pattern","defaultProps","ref","preparedProps","inputRef","id","path","itemPath","className","countryCodeFieldClassName","numberFieldClassName","countryCodePlaceholder","placeholder","labelSrOnly","numberMask","countries","ccFilter","info","warning","size","hasError","disabled","width","help","validateInitially","continuousValidation","validateContinuously","validateUnchanged","setHasFocus","handleChange","setDisplayValue","onCountryCodeChange","onNumberChange","filterCountries","_inputRef$current","number","length","joinValue","filter","country","updateCurrentDataSet","formatCountryCode","cdc","sort","makeObject","prepareEventValues","_currentCountryRef$cu","cdcVal","replace","item","find","_item$country","iso","callOnChange","data","eventValues","callOnBlurOrFocus","hasFocus","handleCountryCodeChange","_data$selectedKey","_countryCodeRef$curre","_numberRef$current","selectedKey","trim","includes","truncatedNumber","substring","handleNumberChange","handleOnBlur","handleOnFocus","handleCountryCodeFocus","updateData","onTypeHandler","revalidateInputValue","event","_event$nativeEvent","nativeEvent","test","window","requestAnimationFrame","isDefault","fieldBlockProps","createElement","mode","label_direction","label_sr_only","status","on_focus","on_blur","on_change","on_type","independent_width","search_numbers","keep_selection","selectall","autoComplete","no_animation","noAnimation","layout","mask","Array","fill","onFocus","onBlur","onChange","innerRef","breakout","outset","inputMode","_country$i18n$lang","name","i18n","en","code","selected_value","search_content","content","match","slice","array","Boolean","join","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/PhoneNumber/PhoneNumber.tsx"],"sourcesContent":["import React, {\n useMemo,\n useContext,\n useCallback,\n useEffect,\n useRef,\n} from 'react'\nimport { Autocomplete } from '../../../../components'\nimport { InputMaskedProps } from '../../../../components/InputMasked'\nimport classnames from 'classnames'\nimport {\n CountryISO,\n type CountryLang,\n type CountryType,\n} from '../../constants/countries'\nimport useCountries from '../SelectCountry/useCountries'\nimport StringField, { Props as StringFieldProps } from '../String'\nimport { Props as FieldBlockProps } from '../../FieldBlock'\nimport CompositionField from '../Composition'\nimport { useFieldProps } from '../../hooks'\nimport {\n FieldPropsWithExtraValue,\n AllJSONSchemaVersions,\n} from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport SharedContext from '../../../../shared/Context'\nimport {\n countryFilter,\n CountryFilterSet,\n getCountryData,\n} from '../SelectCountry'\nimport useTranslation from '../../hooks/useTranslation'\nimport { DrawerListDataArrayItem } from '../../../../fragments/DrawerList'\n\nexport type AdditionalArgs = {\n phoneNumber: string\n countryCode: string\n iso: string\n}\n\nexport type Props = Omit<\n FieldPropsWithExtraValue<string, AdditionalArgs, undefined | string>,\n | 'layout'\n | 'layoutOptions'\n | 'labelSize'\n | 'labelDescription'\n | 'labelDescriptionInline'\n> & {\n countryCodeFieldClassName?: string\n numberFieldClassName?: string\n countryCodePlaceholder?: string\n countryCodeLabel?: string\n numberMask?: InputMaskedProps['mask']\n pattern?: StringFieldProps['pattern']\n width?: 'large' | 'stretch'\n inputRef?: React.RefObject<HTMLInputElement>\n omitCountryCodeField?: boolean\n onCountryCodeChange?: (value: string | undefined) => void\n onNumberChange?: (value: string | undefined) => void\n\n /**\n * Defines the countries to filter. Can be `Scandinavia`, `Nordic`, `Europe` or `Prioritized`.\n * Defaults to `Prioritized`.\n */\n countries?: CountryFilterSet\n\n /**\n * Use this prop to filter out certain countries. The function receives the country object and should return a boolean. Returning `false` will omit the country.\n */\n filterCountries?: (country: CountryType) => boolean\n\n /**\n * For internal testing purposes\n */\n noAnimation?: boolean\n} & Pick<StringFieldProps, 'size'>\n\n// Important for the default value to be defined here, and not after the useFieldProps call, to avoid the UI jumping\n// back to +47 once the user empty the field so handleChange send out undefined.\nconst defaultCountryCode = '+47'\nconst defaultPlaceholder = '00 00 00 00'\nconst defaultMask = [\n /\\d/,\n /\\d/,\n ' ',\n /\\d/,\n /\\d/,\n ' ',\n /\\d/,\n /\\d/,\n ' ',\n /\\d/,\n /\\d/,\n]\n\ntype EventValues = {\n countryCode?: string\n phoneNumber?: string\n}\n\nfunction PhoneNumber(props: Props) {\n const sharedContext = useContext(SharedContext)\n const {\n label: defaultLabel,\n countryCodeLabel: defaultCountryCodeLabel,\n errorRequired,\n } = useTranslation().PhoneNumber\n const lang = sharedContext.locale?.split('-')[0] as CountryLang\n\n const countryCodeRef = useRef<Props['value']>(props?.emptyValue)\n const prevCountryCodeRef = useRef(countryCodeRef.current)\n const numberRef = useRef<Props['value']>(props?.emptyValue)\n const dataRef = useRef<Array<DrawerListDataArrayItem>>(null)\n const langRef = useRef<string>(lang)\n const wasFilled = useRef<boolean>(false)\n const currentCountryRef = useRef<CountryType>()\n\n const errorMessages = useMemo(\n () => ({\n 'Field.errorRequired': errorRequired,\n 'Field.errorPattern': errorRequired,\n ...props.errorMessages,\n }),\n [errorRequired, props.errorMessages]\n )\n\n const validateRequired = useCallback(\n (value: string, { required, isChanged, error }) => {\n if (required) {\n const [countryCode, phoneNumber] = splitValue(value)\n\n if (countryCode !== prevCountryCodeRef.current) {\n if (countryCode) {\n prevCountryCodeRef.current = countryCode\n }\n return undefined\n }\n\n if (isChanged && !phoneNumber) {\n return error\n }\n }\n\n return undefined\n },\n []\n )\n\n const fromExternal = useCallback(\n (external: string) => {\n const [countryCode, phoneNumber] = splitValue(external)\n if (!countryCode && !phoneNumber && !props.omitCountryCodeField) {\n return countryCodeRef.current\n }\n return external\n },\n [props.omitCountryCodeField]\n )\n\n const toEvent = useCallback(\n (value: string) => {\n const [, phoneNumber] = splitValue(value)\n if (!phoneNumber) {\n return props.emptyValue\n }\n return value\n },\n [props.emptyValue]\n )\n\n const schema = useMemo<AllJSONSchemaVersions>(\n () =>\n props.schema ?? {\n type: 'string',\n pattern: props.pattern,\n },\n [props.schema, props.pattern]\n )\n const defaultProps: Partial<Props> = {\n schema,\n errorMessages,\n }\n const ref = useRef<HTMLInputElement>()\n const preparedProps: Props = {\n ...props,\n ...defaultProps,\n validateRequired,\n fromExternal,\n toEvent,\n inputRef: props.inputRef ?? ref,\n }\n\n const {\n id,\n path,\n itemPath,\n value,\n className,\n inputRef,\n countryCodeFieldClassName,\n numberFieldClassName,\n countryCodePlaceholder,\n placeholder,\n countryCodeLabel,\n label = defaultLabel,\n labelSrOnly,\n numberMask,\n countries: ccFilter = 'Prioritized',\n emptyValue,\n info,\n warning,\n size,\n error,\n hasError,\n disabled,\n width = props.omitCountryCodeField ? 'medium' : 'large',\n help,\n required,\n validateInitially,\n continuousValidation,\n validateContinuously,\n validateUnchanged,\n omitCountryCodeField,\n setHasFocus,\n handleChange,\n setDisplayValue,\n onCountryCodeChange,\n onNumberChange,\n filterCountries,\n } = useFieldProps(preparedProps)\n\n useEffect(() => {\n if (path || itemPath) {\n const number = inputRef.current?.value\n setDisplayValue(\n number?.length > 0\n ? joinValue([countryCodeRef.current, number])\n : undefined\n )\n }\n }, [inputRef, itemPath, path, setDisplayValue, value])\n\n const filter = useCallback(\n (country: CountryType) => {\n return countryFilter(country, filterCountries, ccFilter)\n },\n [ccFilter, filterCountries]\n )\n\n const { countries } = useCountries()\n\n const updateCurrentDataSet = useCallback(() => {\n dataRef.current = getCountryData({\n countries,\n lang,\n filter:\n // Make sure the whole cc list is displayed when cc filter is set to specific region\n ccFilter === 'Prioritized' && !wasFilled.current\n ? (country) =>\n `${formatCountryCode(country.cdc)}` ===\n countryCodeRef.current\n : filter,\n sort: ccFilter as Extract<CountryFilterSet, 'Prioritized'>,\n makeObject,\n })\n }, [countries, lang, ccFilter, filter])\n\n const prepareEventValues = useCallback(\n ({\n countryCode = countryCodeRef.current || emptyValue,\n phoneNumber = numberRef.current || emptyValue,\n }: EventValues = {}) => {\n if (!currentCountryRef.current) {\n type Item = DrawerListDataArrayItem & { country: CountryType }\n\n const cdcVal = countryCode?.replace(/^\\+/, '')\n const item = dataRef.current.find((item: Item) => {\n const cdc = item?.country?.cdc\n return cdc === cdcVal\n }) as Item\n\n currentCountryRef.current = item?.country\n }\n\n return {\n ...(!omitCountryCodeField ? { countryCode } : {}),\n phoneNumber,\n iso: currentCountryRef.current?.iso as CountryISO,\n }\n },\n [emptyValue, omitCountryCodeField]\n )\n\n const callOnChange = useCallback(\n (data: EventValues) => {\n const eventValues = prepareEventValues(data)\n handleChange(\n joinValue([eventValues.countryCode, eventValues.phoneNumber]),\n eventValues\n )\n },\n [prepareEventValues, handleChange]\n )\n\n const callOnBlurOrFocus = useCallback(\n (hasFocus: boolean) => {\n setHasFocus(hasFocus, undefined, prepareEventValues())\n },\n [prepareEventValues, setHasFocus]\n )\n\n /**\n * We do not process the whole country list at the first render.\n * Only when the Autocomplete opens (focus).\n * To achieve this, we use memo instead of effect to update refs in sync.\n *\n * We set or update the data list depending on if the countrycode changes or lang changes.\n * We then update countryCode and phoneNumber when value changes.\n */\n useMemo(() => {\n const [countryCode, phoneNumber] = splitValue(props.value || value)\n numberRef.current = phoneNumber\n\n if (lang !== langRef.current || !wasFilled.current) {\n if (!countryCodeRef.current || countryCode) {\n countryCodeRef.current = countryCode || defaultCountryCode\n }\n langRef.current = lang\n\n updateCurrentDataSet()\n }\n }, [value, props.value, lang, updateCurrentDataSet])\n\n const handleCountryCodeChange = useCallback(\n ({\n data,\n }: {\n data: { selectedKey: string; country: CountryType }\n }) => {\n const countryCode = (countryCodeRef.current =\n data?.selectedKey?.trim() || emptyValue)\n currentCountryRef.current = data?.country\n\n // If the phone number is more than 8 digits, and the country code is the default one (+47),\n // we truncate the phone number to 8 digits.\n // This is to ensure that the phone number does not exceed the maximum length set by the mask.\n // TODO: This is a temporary solution, and should be removed once the mask is updated to handle this case.\n if (\n !numberMask &&\n countryCodeRef.current?.includes(defaultCountryCode) &&\n numberRef.current?.length > 8\n ) {\n const truncatedNumber = numberRef.current.substring(0, 8)\n callOnChange({\n countryCode,\n phoneNumber: truncatedNumber,\n })\n onNumberChange?.(truncatedNumber)\n } else {\n callOnChange({ countryCode })\n }\n onCountryCodeChange?.(countryCode)\n },\n [emptyValue, callOnChange, onCountryCodeChange]\n )\n\n const handleNumberChange = useCallback(\n (value: string) => {\n const phoneNumber = (numberRef.current = value || emptyValue)\n\n callOnChange({ phoneNumber })\n onNumberChange?.(phoneNumber)\n },\n [emptyValue, callOnChange, onNumberChange]\n )\n\n const handleOnBlur = useCallback(() => {\n callOnBlurOrFocus(false)\n }, [callOnBlurOrFocus])\n\n const handleOnFocus = useCallback(() => {\n callOnBlurOrFocus(true)\n }, [callOnBlurOrFocus])\n\n const handleCountryCodeFocus = useCallback(\n ({ updateData }) => {\n if (!wasFilled.current) {\n wasFilled.current = true\n updateCurrentDataSet()\n updateData(dataRef.current)\n }\n handleOnFocus()\n },\n [handleOnFocus, updateCurrentDataSet]\n )\n\n const onTypeHandler = useCallback(\n ({ value, updateData, revalidateInputValue, event }) => {\n // Handle browser autofill/autocomplete\n if (typeof event?.nativeEvent?.data === 'undefined') {\n const cdcVal = /\\+\\d{1,3}\\s{1}\\d+/.test(value)\n ? splitValue(value)[0]\n : value\n const country = countries.find(({ cdc }) => cdc === cdcVal)\n if (country?.cdc) {\n const countryCode = (countryCodeRef.current = formatCountryCode(\n country.cdc\n ))\n\n updateCurrentDataSet()\n updateData(dataRef.current)\n callOnChange({ countryCode })\n\n // To ensure correct input value,\n // regardless if there is changed data before or not.\n window.requestAnimationFrame(() => {\n revalidateInputValue()\n })\n }\n }\n },\n [callOnChange, countries, updateCurrentDataSet]\n )\n\n const isDefault = countryCodeRef.current?.includes(defaultCountryCode)\n\n const fieldBlockProps: FieldBlockProps = {\n id,\n className: classnames('dnb-forms-field-phone-number', className),\n width,\n label: undefined,\n help: undefined,\n ...pickSpacingProps(props),\n }\n\n return (\n <CompositionField {...fieldBlockProps}>\n {!omitCountryCodeField && (\n <Autocomplete\n className={classnames(\n 'dnb-forms-field-phone-number__country-code',\n countryCodeFieldClassName\n )}\n mode=\"async\"\n placeholder={countryCodePlaceholder}\n label_direction=\"vertical\"\n label={countryCodeLabel ?? defaultCountryCodeLabel}\n label_sr_only={labelSrOnly}\n data={dataRef.current}\n value={countryCodeRef.current}\n status={hasError ? 'error' : undefined}\n disabled={disabled}\n on_focus={handleCountryCodeFocus}\n on_blur={handleOnBlur}\n on_change={handleCountryCodeChange}\n on_type={onTypeHandler}\n independent_width\n search_numbers\n keep_selection\n selectall\n autoComplete=\"tel-country-code\"\n no_animation={props.noAnimation}\n size={size}\n />\n )}\n <StringField\n className={classnames(\n 'dnb-forms-field-phone-number__number',\n numberFieldClassName\n )}\n type=\"tel\"\n autoComplete=\"tel-national\"\n emptyValue={emptyValue}\n layout=\"vertical\"\n label={label}\n labelSrOnly={labelSrOnly}\n placeholder={\n placeholder ?? (isDefault ? defaultPlaceholder : undefined)\n }\n mask={\n numberMask ?? (isDefault ? defaultMask : Array(12).fill(/\\d/))\n }\n onFocus={handleOnFocus}\n onBlur={handleOnBlur}\n onChange={handleNumberChange}\n value={numberRef.current}\n innerRef={inputRef}\n info={info}\n warning={warning}\n error={error}\n disabled={disabled}\n width=\"stretch\"\n help={{ ...help, breakout: false, outset: false }}\n required={required}\n errorMessages={errorMessages}\n validateInitially={validateInitially}\n validateContinuously={continuousValidation || validateContinuously}\n validateUnchanged={validateUnchanged}\n inputMode=\"tel\"\n size={size}\n />\n </CompositionField>\n )\n}\n\nfunction makeObject(country: CountryType, lang: string) {\n const name = country.i18n[lang] ?? country.i18n.en\n const code = formatCountryCode(country.cdc)\n return {\n selectedKey: code,\n selected_value: `${country.iso} (${code})`,\n search_content: [code, name],\n content: [name, code],\n country,\n }\n}\n\nfunction formatCountryCode(value: string) {\n return `+${value}`\n}\n\nfunction splitValue(value: string) {\n return (\n typeof value === 'string'\n ? value.match(/^(\\+[^ ]+)? ?(.*)$/)\n : [undefined, '', '']\n ).slice(1)\n}\n\nfunction joinValue(array: Array<string>) {\n return array.filter(Boolean).join(' ')\n}\n\nPhoneNumber._supportsSpacingProps = true\nexport default PhoneNumber\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -5,7 +5,7 @@ import type { ToggleButtonProps } from '../../../../components/ToggleButton';
|
|
|
5
5
|
export type ToggleProps = {
|
|
6
6
|
valueOn: unknown;
|
|
7
7
|
valueOff: unknown;
|
|
8
|
-
variant?: 'checkbox' | 'checkbox-button' | 'button' | 'buttons';
|
|
8
|
+
variant?: 'checkbox' | 'radio' | 'switch' | 'checkbox-button' | 'button' | 'buttons';
|
|
9
9
|
textOn?: string;
|
|
10
10
|
textOff?: string;
|
|
11
11
|
size?: ToggleButtonProps['size'] | CheckboxProps['size'];
|
|
@@ -6,7 +6,7 @@ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbol
|
|
|
6
6
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
7
7
|
import React, { useCallback, useMemo, useRef } from 'react';
|
|
8
8
|
import classnames from 'classnames';
|
|
9
|
-
import { Checkbox, ToggleButton } from '../../../../components';
|
|
9
|
+
import { Checkbox, Switch, ToggleButton, Radio } from '../../../../components';
|
|
10
10
|
import ButtonRow from '../../Form/ButtonRow';
|
|
11
11
|
import FieldBlock from '../../FieldBlock';
|
|
12
12
|
import { useFieldProps } from '../../hooks';
|
|
@@ -60,6 +60,9 @@ function Toggle(props) {
|
|
|
60
60
|
}) => {
|
|
61
61
|
handleChange === null || handleChange === void 0 ? void 0 : handleChange(value === 'on' ? valueOn : valueOff);
|
|
62
62
|
}, [handleChange, valueOn, valueOff]);
|
|
63
|
+
const handleSwitchChange = useCallback(args => {
|
|
64
|
+
handleChange === null || handleChange === void 0 ? void 0 : handleChange(args.checked ? valueOn : valueOff, args);
|
|
65
|
+
}, [handleChange, valueOn, valueOff]);
|
|
63
66
|
const cn = classnames('dnb-forms-field-toggle', className);
|
|
64
67
|
const fieldBlockProps = _objectSpread({
|
|
65
68
|
forId: id,
|
|
@@ -102,6 +105,21 @@ function Toggle(props) {
|
|
|
102
105
|
onChange: handleCheckboxChange,
|
|
103
106
|
onClick: handleClick
|
|
104
107
|
}, htmlAttributes)));
|
|
108
|
+
case 'switch':
|
|
109
|
+
return React.createElement(FieldBlock, _extends({}, fieldBlockProps, {
|
|
110
|
+
label: undefined
|
|
111
|
+
}), React.createElement(Switch, _extends({
|
|
112
|
+
id: id,
|
|
113
|
+
className: cn,
|
|
114
|
+
label: labelWithItemNo !== null && labelWithItemNo !== void 0 ? labelWithItemNo : isOn ? textOn !== null && textOn !== void 0 ? textOn : translations.yes : textOff !== null && textOff !== void 0 ? textOff : translations.no,
|
|
115
|
+
labelSrOnly: labelSrOnly,
|
|
116
|
+
checked: isOn,
|
|
117
|
+
disabled: disabled,
|
|
118
|
+
size: size !== 'small' ? size : undefined,
|
|
119
|
+
status: hasError ? 'error' : undefined,
|
|
120
|
+
onChange: handleSwitchChange,
|
|
121
|
+
onClick: handleClick
|
|
122
|
+
}, htmlAttributes)));
|
|
105
123
|
case 'button':
|
|
106
124
|
return React.createElement(FieldBlock, fieldBlockProps, React.createElement(ToggleButton, _extends({
|
|
107
125
|
id: id,
|
|
@@ -138,6 +156,24 @@ function Toggle(props) {
|
|
|
138
156
|
value: "off",
|
|
139
157
|
role: "radio"
|
|
140
158
|
}, htmlAttributes))))));
|
|
159
|
+
case 'radio':
|
|
160
|
+
return React.createElement(FieldBlock, _extends({}, fieldBlockProps, {
|
|
161
|
+
asFieldset: true
|
|
162
|
+
}), React.createElement(Radio.Group, {
|
|
163
|
+
value: isOn ? 'on' : isOff ? 'off' : null,
|
|
164
|
+
on_change: handleToggleChange,
|
|
165
|
+
status: hasError ? 'error' : undefined,
|
|
166
|
+
disabled: disabled,
|
|
167
|
+
size: size !== 'small' ? size : 'default'
|
|
168
|
+
}, React.createElement(Radio, _extends({
|
|
169
|
+
label: textOn !== null && textOn !== void 0 ? textOn : translations.yes,
|
|
170
|
+
value: "on",
|
|
171
|
+
status: hasError ? 'error' : undefined
|
|
172
|
+
}, htmlAttributes)), React.createElement(Radio, _extends({
|
|
173
|
+
label: textOff !== null && textOff !== void 0 ? textOff : translations.no,
|
|
174
|
+
value: "off",
|
|
175
|
+
status: hasError ? 'error' : undefined
|
|
176
|
+
}, htmlAttributes))));
|
|
141
177
|
case 'checkbox-button':
|
|
142
178
|
return React.createElement(FieldBlock, fieldBlockProps, React.createElement(ToggleButton, _extends({
|
|
143
179
|
id: id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Toggle.js","names":["React","useCallback","useMemo","useRef","classnames","Checkbox","ToggleButton","ButtonRow","FieldBlock","useFieldProps","pickSpacingProps","ToggleButtonGroupContext","useTranslation","useIterateItemNo","Toggle","props","translations","ToggleField","preparedProps","_objectSpread","errorMessages","id","className","valueOn","valueOff","variant","disabled","textOn","textOff","value","size","hasError","htmlAttributes","handleChange","setDisplayValue","preventChangeRef","onClick","handleClick","args","preventDefault","_args$preventDefault","current","call","checked","event","handleCheckboxChange","handleToggleChange","cn","fieldBlockProps","forId","isOn","isOff","text","label","labelSuffix","required","labelSrOnly","labelWithItemNo","createElement","_extends","undefined","yes","no","status","onChange","on_change","role","asFieldset","bottom","Group","Provider","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Toggle/Toggle.tsx"],"sourcesContent":["import React, { useCallback, useMemo, useRef } from 'react'\nimport classnames from 'classnames'\nimport { Checkbox, ToggleButton } from '../../../../components'\nimport ButtonRow from '../../Form/ButtonRow'\nimport FieldBlock, { Props as FieldBlockProps } from '../../FieldBlock'\nimport { useFieldProps } from '../../hooks'\nimport { FieldProps } from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport ToggleButtonGroupContext from '../../../../components/toggle-button/ToggleButtonGroupContext'\nimport useTranslation from '../../hooks/useTranslation'\nimport { useIterateItemNo } from '../../Iterate/ItemNo/useIterateItemNo'\nimport type {\n CheckboxProps,\n OnChangeParams,\n OnClickParams,\n} from '../../../../components/Checkbox'\nimport type { ToggleButtonProps } from '../../../../components/ToggleButton'\n\nexport type ToggleProps = {\n valueOn: unknown\n valueOff: unknown\n variant?: 'checkbox' | 'checkbox-button' | 'button' | 'buttons'\n textOn?: string\n textOff?: string\n size?: ToggleButtonProps['size'] | CheckboxProps['size']\n\n /**\n * Checkbox props\n */\n onClick?: (\n value: unknown,\n params: { event: React.MouseEvent<HTMLInputElement> }\n ) => void\n}\n\nexport type Props = Omit<FieldProps<unknown>, 'layout' | 'layoutOptions'> &\n ToggleProps\n\nfunction Toggle(props: Props) {\n const translations = useTranslation().ToggleField\n\n const preparedProps: Props = {\n ...props,\n errorMessages: props.errorMessages,\n }\n\n const {\n id,\n className,\n valueOn,\n valueOff,\n variant,\n disabled,\n textOn,\n textOff,\n value,\n size,\n hasError,\n htmlAttributes,\n handleChange,\n setDisplayValue,\n } = useFieldProps(preparedProps)\n\n const preventChangeRef = useRef(false)\n\n const onClick = preparedProps?.onClick\n const handleClick = useCallback(\n (args: OnClickParams) => {\n const preventDefault = () => {\n preventChangeRef.current = true\n args.preventDefault?.()\n }\n\n if (preventChangeRef.current) {\n args.checked = !args.checked\n preventChangeRef.current = false\n }\n\n const event = {\n ...args,\n preventDefault,\n }\n onClick?.(args.checked ? valueOn : valueOff, event)\n },\n [onClick, valueOff, valueOn]\n )\n const handleCheckboxChange = useCallback(\n (args: OnChangeParams) => {\n handleChange?.(args.checked ? valueOn : valueOff, args)\n },\n [handleChange, valueOn, valueOff]\n )\n const handleToggleChange = useCallback(\n ({ value }) => {\n handleChange?.(value === 'on' ? valueOn : valueOff)\n },\n [handleChange, valueOn, valueOff]\n )\n\n const cn = classnames('dnb-forms-field-toggle', className)\n\n const fieldBlockProps: FieldBlockProps = {\n forId: id,\n className: cn,\n disabled,\n ...pickSpacingProps(props),\n }\n\n const isOn = value === valueOn\n const isOff = value === valueOff\n\n useMemo(() => {\n const text = isOn ? textOn : textOff\n if (text) {\n setDisplayValue(text)\n }\n }, [isOn, setDisplayValue, textOff, textOn])\n\n const { label, labelSuffix, required, labelSrOnly } = props\n const labelWithItemNo = useIterateItemNo({\n label,\n labelSuffix,\n required,\n })\n\n switch (variant) {\n default:\n case 'checkbox':\n return (\n <FieldBlock {...fieldBlockProps} label={undefined}>\n <Checkbox\n id={id}\n className={cn}\n label={\n labelWithItemNo ??\n (isOn\n ? textOn ?? translations.yes\n : textOff ?? translations.no)\n }\n labelSrOnly={labelSrOnly}\n checked={isOn}\n disabled={disabled}\n size={size !== 'small' ? size : undefined}\n status={hasError ? 'error' : undefined}\n onChange={handleCheckboxChange}\n onClick={handleClick}\n {...htmlAttributes}\n />\n </FieldBlock>\n )\n case 'button':\n return (\n <FieldBlock {...fieldBlockProps}>\n <ToggleButton\n id={id}\n text={\n isOn\n ? textOn ?? translations.yes\n : textOff ?? translations.no\n }\n checked={isOn}\n disabled={disabled}\n status={hasError ? 'error' : undefined}\n value={value ? 'true' : 'false'}\n size={size}\n on_change={handleCheckboxChange}\n role=\"checkbox\"\n {...htmlAttributes}\n />\n </FieldBlock>\n )\n case 'buttons':\n return (\n <FieldBlock {...fieldBlockProps} asFieldset>\n <ButtonRow bottom=\"x-small\">\n <ToggleButton.Group role=\"radiogroup\">\n <ToggleButtonGroupContext.Provider\n value={{\n value: isOn ? 'on' : isOff ? 'off' : null, // use \"null\" to reset the value\n onChange: handleToggleChange,\n status: hasError ? 'error' : undefined,\n disabled,\n size,\n }}\n >\n <ToggleButton\n text={textOn ?? translations.yes}\n value=\"on\"\n role=\"radio\"\n {...htmlAttributes}\n />\n <ToggleButton\n text={textOff ?? translations.no}\n value=\"off\"\n role=\"radio\"\n {...htmlAttributes}\n />\n </ToggleButtonGroupContext.Provider>\n </ToggleButton.Group>\n </ButtonRow>\n </FieldBlock>\n )\n case 'checkbox-button':\n return (\n <FieldBlock {...fieldBlockProps}>\n <ToggleButton\n id={id}\n variant=\"checkbox\"\n text={\n isOn\n ? textOn ?? translations.yes\n : textOff ?? translations.no\n }\n checked={isOn}\n disabled={disabled}\n status={hasError ? 'error' : undefined}\n value={value ? 'true' : 'false'}\n size={size}\n on_change={handleCheckboxChange}\n role=\"checkbox\"\n {...htmlAttributes}\n />\n </FieldBlock>\n )\n }\n}\n\nToggle._supportsSpacingProps = true\nexport default Toggle\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"Toggle.js","names":["React","useCallback","useMemo","useRef","classnames","Checkbox","Switch","ToggleButton","Radio","ButtonRow","FieldBlock","useFieldProps","pickSpacingProps","ToggleButtonGroupContext","useTranslation","useIterateItemNo","Toggle","props","translations","ToggleField","preparedProps","_objectSpread","errorMessages","id","className","valueOn","valueOff","variant","disabled","textOn","textOff","value","size","hasError","htmlAttributes","handleChange","setDisplayValue","preventChangeRef","onClick","handleClick","args","preventDefault","_args$preventDefault","current","call","checked","event","handleCheckboxChange","handleToggleChange","handleSwitchChange","cn","fieldBlockProps","forId","isOn","isOff","text","label","labelSuffix","required","labelSrOnly","labelWithItemNo","createElement","_extends","undefined","yes","no","status","onChange","on_change","role","asFieldset","bottom","Group","Provider","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Toggle/Toggle.tsx"],"sourcesContent":["import React, { useCallback, useMemo, useRef } from 'react'\nimport classnames from 'classnames'\nimport {\n Checkbox,\n Switch,\n ToggleButton,\n Radio,\n} from '../../../../components'\nimport ButtonRow from '../../Form/ButtonRow'\nimport FieldBlock, { Props as FieldBlockProps } from '../../FieldBlock'\nimport { useFieldProps } from '../../hooks'\nimport { FieldProps } from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport ToggleButtonGroupContext from '../../../../components/toggle-button/ToggleButtonGroupContext'\nimport useTranslation from '../../hooks/useTranslation'\nimport { useIterateItemNo } from '../../Iterate/ItemNo/useIterateItemNo'\nimport type {\n CheckboxProps,\n OnChangeParams,\n OnClickParams,\n} from '../../../../components/Checkbox'\nimport type { ToggleButtonProps } from '../../../../components/ToggleButton'\nimport { SwitchOnChangeParams } from '../../../../components/Switch'\n\nexport type ToggleProps = {\n valueOn: unknown\n valueOff: unknown\n variant?:\n | 'checkbox'\n | 'radio'\n | 'switch'\n | 'checkbox-button'\n | 'button'\n | 'buttons'\n textOn?: string\n textOff?: string\n size?: ToggleButtonProps['size'] | CheckboxProps['size']\n\n /**\n * Checkbox props\n */\n onClick?: (\n value: unknown,\n params: { event: React.MouseEvent<HTMLInputElement> }\n ) => void\n}\n\nexport type Props = Omit<FieldProps<unknown>, 'layout' | 'layoutOptions'> &\n ToggleProps\n\nfunction Toggle(props: Props) {\n const translations = useTranslation().ToggleField\n\n const preparedProps: Props = {\n ...props,\n errorMessages: props.errorMessages,\n }\n\n const {\n id,\n className,\n valueOn,\n valueOff,\n variant,\n disabled,\n textOn,\n textOff,\n value,\n size,\n hasError,\n htmlAttributes,\n handleChange,\n setDisplayValue,\n } = useFieldProps(preparedProps)\n\n const preventChangeRef = useRef(false)\n\n const onClick = preparedProps?.onClick\n const handleClick = useCallback(\n (args: OnClickParams) => {\n const preventDefault = () => {\n preventChangeRef.current = true\n args.preventDefault?.()\n }\n\n if (preventChangeRef.current) {\n args.checked = !args.checked\n preventChangeRef.current = false\n }\n\n const event = {\n ...args,\n preventDefault,\n }\n onClick?.(args.checked ? valueOn : valueOff, event)\n },\n [onClick, valueOff, valueOn]\n )\n const handleCheckboxChange = useCallback(\n (args: OnChangeParams) => {\n handleChange?.(args.checked ? valueOn : valueOff, args)\n },\n [handleChange, valueOn, valueOff]\n )\n const handleToggleChange = useCallback(\n ({ value }) => {\n handleChange?.(value === 'on' ? valueOn : valueOff)\n },\n [handleChange, valueOn, valueOff]\n )\n const handleSwitchChange = useCallback(\n (args: SwitchOnChangeParams) => {\n handleChange?.(args.checked ? valueOn : valueOff, args)\n },\n [handleChange, valueOn, valueOff]\n )\n\n const cn = classnames('dnb-forms-field-toggle', className)\n\n const fieldBlockProps: FieldBlockProps = {\n forId: id,\n className: cn,\n disabled,\n ...pickSpacingProps(props),\n }\n\n const isOn = value === valueOn\n const isOff = value === valueOff\n\n useMemo(() => {\n const text = isOn ? textOn : textOff\n if (text) {\n setDisplayValue(text)\n }\n }, [isOn, setDisplayValue, textOff, textOn])\n\n const { label, labelSuffix, required, labelSrOnly } = props\n const labelWithItemNo = useIterateItemNo({\n label,\n labelSuffix,\n required,\n })\n\n switch (variant) {\n default:\n case 'checkbox':\n return (\n <FieldBlock {...fieldBlockProps} label={undefined}>\n <Checkbox\n id={id}\n className={cn}\n label={\n labelWithItemNo ??\n (isOn\n ? textOn ?? translations.yes\n : textOff ?? translations.no)\n }\n labelSrOnly={labelSrOnly}\n checked={isOn}\n disabled={disabled}\n size={size !== 'small' ? size : undefined}\n status={hasError ? 'error' : undefined}\n onChange={handleCheckboxChange}\n onClick={handleClick}\n {...htmlAttributes}\n />\n </FieldBlock>\n )\n case 'switch':\n return (\n <FieldBlock {...fieldBlockProps} label={undefined}>\n <Switch\n id={id}\n className={cn}\n label={\n labelWithItemNo ??\n (isOn\n ? textOn ?? translations.yes\n : textOff ?? translations.no)\n }\n labelSrOnly={labelSrOnly}\n checked={isOn}\n disabled={disabled}\n size={size !== 'small' ? size : undefined}\n status={hasError ? 'error' : undefined}\n onChange={handleSwitchChange}\n onClick={handleClick}\n {...htmlAttributes}\n />\n </FieldBlock>\n )\n case 'button':\n return (\n <FieldBlock {...fieldBlockProps}>\n <ToggleButton\n id={id}\n text={\n isOn\n ? textOn ?? translations.yes\n : textOff ?? translations.no\n }\n checked={isOn}\n disabled={disabled}\n status={hasError ? 'error' : undefined}\n value={value ? 'true' : 'false'}\n size={size}\n on_change={handleCheckboxChange}\n role=\"checkbox\"\n {...htmlAttributes}\n />\n </FieldBlock>\n )\n case 'buttons':\n return (\n <FieldBlock {...fieldBlockProps} asFieldset>\n <ButtonRow bottom=\"x-small\">\n <ToggleButton.Group role=\"radiogroup\">\n <ToggleButtonGroupContext.Provider\n value={{\n value: isOn ? 'on' : isOff ? 'off' : null, // use \"null\" to reset the value\n onChange: handleToggleChange,\n status: hasError ? 'error' : undefined,\n disabled,\n size,\n }}\n >\n <ToggleButton\n text={textOn ?? translations.yes}\n value=\"on\"\n role=\"radio\"\n {...htmlAttributes}\n />\n <ToggleButton\n text={textOff ?? translations.no}\n value=\"off\"\n role=\"radio\"\n {...htmlAttributes}\n />\n </ToggleButtonGroupContext.Provider>\n </ToggleButton.Group>\n </ButtonRow>\n </FieldBlock>\n )\n case 'radio':\n return (\n <FieldBlock {...fieldBlockProps} asFieldset>\n <Radio.Group\n value={isOn ? 'on' : isOff ? 'off' : null}\n on_change={handleToggleChange}\n status={hasError ? 'error' : undefined}\n disabled={disabled}\n size={size !== 'small' ? size : 'default'} // Radio does not support \"small\" size\n >\n <Radio\n label={textOn ?? translations.yes}\n value=\"on\"\n status={hasError ? 'error' : undefined}\n {...htmlAttributes}\n />\n <Radio\n label={textOff ?? translations.no}\n value=\"off\"\n status={hasError ? 'error' : undefined}\n {...htmlAttributes}\n />\n </Radio.Group>\n </FieldBlock>\n )\n case 'checkbox-button':\n return (\n <FieldBlock {...fieldBlockProps}>\n <ToggleButton\n id={id}\n variant=\"checkbox\"\n text={\n isOn\n ? textOn ?? translations.yes\n : textOff ?? translations.no\n }\n checked={isOn}\n disabled={disabled}\n status={hasError ? 'error' : undefined}\n value={value ? 'true' : 'false'}\n size={size}\n on_change={handleCheckboxChange}\n role=\"checkbox\"\n {...htmlAttributes}\n />\n </FieldBlock>\n )\n }\n}\n\nToggle._supportsSpacingProps = true\nexport default Toggle\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,7 +3,7 @@ import { UploadFile, UploadFileNative, UploadProps } from '../../../../component
|
|
|
3
3
|
import { SpacingProps } from '../../../../shared/types';
|
|
4
4
|
export type { UploadFile, UploadFileNative };
|
|
5
5
|
export type UploadValue = Array<UploadFile | UploadFileNative>;
|
|
6
|
-
export type Props = Omit<FieldProps<UploadValue, UploadValue | undefined>, 'layout' | 'layoutOptions' | 'onBlurValidator' | 'onChangeValidator' | 'contentWidth' | 'labelSize' | 'labelDescriptionInline' | 'labelSrOnly' | 'labelSize' | 'labelSuffix'> & SpacingProps & Pick<Partial<UploadProps>, 'title' | 'text' | 'acceptedFileTypes' | 'filesAmountLimit' | 'fileMaxSize' | 'onFileDelete' | 'onFileClick' | 'skeleton' | 'download' | 'allowDuplicates' | 'disableDragAndDrop'> & {
|
|
6
|
+
export type Props = Omit<FieldProps<UploadValue, UploadValue | undefined>, 'layout' | 'layoutOptions' | 'onBlurValidator' | 'onChangeValidator' | 'contentWidth' | 'labelSize' | 'labelDescriptionInline' | 'labelSrOnly' | 'labelSize' | 'labelSuffix'> & SpacingProps & Pick<Partial<UploadProps>, 'children' | 'title' | 'variant' | 'text' | 'acceptedFileTypes' | 'filesAmountLimit' | 'fileMaxSize' | 'onFileDelete' | 'onFileClick' | 'skeleton' | 'download' | 'allowDuplicates' | 'disableDragAndDrop'> & {
|
|
7
7
|
fileHandler?: (newFiles: UploadValue) => UploadValue | Promise<UploadValue>;
|
|
8
8
|
width?: 'large' | 'stretch';
|
|
9
9
|
};
|
|
@@ -76,6 +76,7 @@ function UploadComponent(props) {
|
|
|
76
76
|
const {
|
|
77
77
|
title = sharedTr.title,
|
|
78
78
|
text = sharedTr.text,
|
|
79
|
+
variant = 'normal',
|
|
79
80
|
acceptedFileTypes = ['pdf', 'png', 'jpg', 'jpeg'],
|
|
80
81
|
filesAmountLimit = 100,
|
|
81
82
|
fileMaxSize = 5,
|
|
@@ -156,8 +157,10 @@ function UploadComponent(props) {
|
|
|
156
157
|
width,
|
|
157
158
|
help: undefined
|
|
158
159
|
}, pickSpacingProps(props));
|
|
160
|
+
const usedLabelDescription = labelDescription !== null && labelDescription !== void 0 ? labelDescription : text;
|
|
159
161
|
return React.createElement(FieldBlock, fieldBlockProps, React.createElement(Upload, _extends({
|
|
160
162
|
id: id,
|
|
163
|
+
variant: variant,
|
|
161
164
|
acceptedFileTypes: acceptedFileTypes,
|
|
162
165
|
filesAmountLimit: filesAmountLimit,
|
|
163
166
|
download: download,
|
|
@@ -169,17 +172,33 @@ function UploadComponent(props) {
|
|
|
169
172
|
onChange: changeHandler,
|
|
170
173
|
onFileDelete: onFileDelete,
|
|
171
174
|
onFileClick: onFileClick,
|
|
172
|
-
title:
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
left: text ? 'x-small' : false,
|
|
175
|
+
title: help && labelDescription === false ? React.createElement(LabelWithHelpButton, {
|
|
176
|
+
label: label !== null && label !== void 0 ? label : title,
|
|
177
|
+
id: id,
|
|
176
178
|
help: help
|
|
177
|
-
})
|
|
179
|
+
}) : label !== null && label !== void 0 ? label : title,
|
|
180
|
+
text: help && (labelDescription !== null && labelDescription !== void 0 ? labelDescription : text) ? React.createElement(LabelWithHelpButton, {
|
|
181
|
+
label: usedLabelDescription,
|
|
182
|
+
id: id,
|
|
183
|
+
help: help
|
|
184
|
+
}) : usedLabelDescription
|
|
178
185
|
}, htmlAttributes), help && React.createElement(HelpButtonInlineContent, {
|
|
179
186
|
contentId: `${id}-help`,
|
|
180
187
|
help: help,
|
|
181
|
-
roundedCorner:
|
|
182
|
-
})));
|
|
188
|
+
roundedCorner: variant === 'compact'
|
|
189
|
+
}), props.children));
|
|
190
|
+
}
|
|
191
|
+
function LabelWithHelpButton(props) {
|
|
192
|
+
const {
|
|
193
|
+
label,
|
|
194
|
+
id,
|
|
195
|
+
help
|
|
196
|
+
} = props;
|
|
197
|
+
return React.createElement(React.Fragment, null, label, React.createElement(HelpButtonInline, {
|
|
198
|
+
contentId: `${id}-help`,
|
|
199
|
+
left: label ? 'x-small' : false,
|
|
200
|
+
help: help
|
|
201
|
+
}));
|
|
183
202
|
}
|
|
184
203
|
export default UploadComponent;
|
|
185
204
|
UploadComponent._supportsSpacingProps = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Upload.js","names":["React","useCallback","useEffect","useMemo","useRef","classnames","FieldBlock","useFieldProps","useTranslation","useFormsTranslation","Upload","useUpload","pickSpacingProps","HelpButtonInline","HelpButtonInlineContent","useSharedTranslation","FormError","validateRequired","value","required","isChanged","error","hasError","some","file","errorMessage","hasFiles","length","undefined","UploadComponent","props","sharedTr","formsTr","errorMessages","errorRequired","fromInput","forEach","item","index","_item$file","name","preparedProps","_objectSpread","toInput","transformFiles","_useFieldProps","executeOnChangeRegardlessOfError","id","className","width","widthProp","label","labelDescription","help","htmlAttributes","disabled","handleChange","handleFocus","handleBlur","fileHandler","rest","_objectWithoutProperties","_excluded","title","text","acceptedFileTypes","filesAmountLimit","fileMaxSize","skeleton","onFileDelete","onFileClick","download","allowDuplicates","disableDragAndDrop","files","setFiles","filesRef","current","handleChangeAsync","_filesRef$current","existingFileIds","map","existingFiles","filter","includes","newFiles","newValidFiles","newFilesLoading","isLoading","incomingFiles","_incomingFiles$filter","incomingFileObj","foundIndex","findIndex","newFile","push","indexOfFirstNewFile","updatedFiles","slice","changeHandler","fieldBlockProps","forId","labelSrOnly","createElement","_extends","onChange","Fragment","contentId","left","roundedCorner","_supportsSpacingProps","Array","isArray","File","_lastModified","_item$file2","_type","_item$file3","lastModified","type"],"sources":["../../../../../../src/extensions/forms/Field/Upload/Upload.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef } from 'react'\nimport classnames from 'classnames'\nimport FieldBlock, {\n Props as FieldBlockProps,\n FieldBlockWidth,\n} from '../../FieldBlock'\nimport {\n useFieldProps,\n useTranslation as useFormsTranslation,\n} from '../../hooks'\nimport { FieldProps } from '../../types'\nimport Upload, {\n UploadFile,\n UploadFileNative,\n UploadProps,\n} from '../../../../components/Upload'\nimport useUpload from '../../../../components/upload/useUpload'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport HelpButtonInline, {\n HelpButtonInlineContent,\n} from '../../../../components/help-button/HelpButtonInline'\nimport { useTranslation as useSharedTranslation } from '../../../../shared'\nimport { SpacingProps } from '../../../../shared/types'\nimport { FormError } from '../../utils'\n\nexport type { UploadFile, UploadFileNative }\nexport type UploadValue = Array<UploadFile | UploadFileNative>\nexport type Props = Omit<\n FieldProps<UploadValue, UploadValue | undefined>,\n | 'layout'\n | 'layoutOptions'\n | 'onBlurValidator'\n | 'onChangeValidator'\n | 'contentWidth'\n | 'labelSize'\n | 'labelDescriptionInline'\n | 'labelSrOnly'\n | 'labelSize'\n | 'labelSuffix'\n> &\n SpacingProps &\n Pick<\n Partial<UploadProps>,\n | 'title'\n | 'text'\n | 'acceptedFileTypes'\n | 'filesAmountLimit'\n | 'fileMaxSize'\n | 'onFileDelete'\n | 'onFileClick'\n | 'skeleton'\n | 'download'\n | 'allowDuplicates'\n | 'disableDragAndDrop'\n > & {\n fileHandler?: (\n newFiles: UploadValue\n ) => UploadValue | Promise<UploadValue>\n width?: 'large' | 'stretch'\n }\n\nconst validateRequired = (\n value: UploadValue,\n { required, isChanged, error }\n) => {\n const hasError = value?.some((file) => file.errorMessage)\n if (hasError) {\n return new FormError('Upload.errorInvalidFiles')\n }\n\n const hasFiles = value?.length > 0\n if (required && ((!isChanged && !hasFiles) || !hasFiles)) {\n return error\n }\n\n return undefined\n}\n\nfunction UploadComponent(props: Props) {\n const sharedTr = useSharedTranslation().Upload\n const formsTr = useFormsTranslation().Upload\n\n const errorMessages = useMemo(\n () => ({\n 'Field.errorRequired': formsTr.errorRequired,\n }),\n [formsTr.errorRequired]\n )\n\n const fromInput = useCallback((value: UploadValue) => {\n value.forEach((item, index) => {\n if (!item) {\n return\n }\n\n value[index] = item\n\n // Store the name in the value, to support session storage (serialization)\n value[index]['name'] = item['name'] || item.file?.name\n })\n\n return value\n }, [])\n\n const preparedProps = {\n errorMessages,\n validateRequired,\n fromInput,\n toInput: transformFiles,\n ...props,\n }\n\n const {\n id,\n className,\n width: widthProp = 'stretch',\n value,\n label,\n labelDescription,\n help,\n htmlAttributes,\n disabled,\n handleChange,\n handleFocus,\n handleBlur,\n fileHandler,\n ...rest\n } = useFieldProps(preparedProps, {\n executeOnChangeRegardlessOfError: true,\n })\n\n // Upload props\n const {\n title = sharedTr.title,\n text = sharedTr.text,\n acceptedFileTypes = ['pdf', 'png', 'jpg', 'jpeg'],\n filesAmountLimit = 100,\n fileMaxSize = 5,\n skeleton,\n onFileDelete,\n onFileClick,\n download,\n allowDuplicates,\n disableDragAndDrop,\n } = rest\n\n const { files, setFiles } = useUpload(id)\n\n const filesRef = useRef<Array<UploadFile>>()\n\n useEffect(() => {\n filesRef.current = files\n }, [files])\n\n useEffect(() => {\n setFiles(value)\n }, [setFiles, value])\n\n const handleChangeAsync = useCallback(\n async (files: UploadValue) => {\n // Filter out existing files\n const existingFileIds =\n filesRef.current?.map((file) => file.id) || []\n const existingFiles = files.filter((file) =>\n existingFileIds.includes(file.id)\n )\n const newFiles = files.filter(\n (file) => !existingFileIds.includes(file.id)\n )\n const newValidFiles = newFiles.filter((file) => !file.errorMessage)\n\n if (newValidFiles.length > 0) {\n // Set loading\n const newFilesLoading = newFiles.map((file) => ({\n ...file,\n isLoading: !file.errorMessage,\n }))\n setFiles([...filesRef.current, ...newFilesLoading])\n\n const incomingFiles = await fileHandler(newValidFiles)\n\n if (!incomingFiles) {\n setFiles(existingFiles)\n handleChange(existingFiles)\n } else {\n // merge incoming files into existing order of newFiles.\n incomingFiles.forEach((file) => {\n const incomingFileObj = {\n ...file,\n isLoading: false,\n }\n const foundIndex = newFilesLoading.findIndex(\n (newFile) => newFile.isLoading\n )\n if (foundIndex >= 0) {\n newFilesLoading[foundIndex] = incomingFileObj\n } else {\n // if there's more files incoming than there's files loading (edge case), add them to end of array.\n newFilesLoading.push(incomingFileObj)\n }\n })\n\n const indexOfFirstNewFile = filesRef.current.findIndex(\n ({ id }) => id === newFiles[0].id\n )\n\n const updatedFiles = [\n ...filesRef.current.slice(0, indexOfFirstNewFile),\n ...(incomingFiles?.filter((file) => file != null) ?? []),\n ...filesRef.current.slice(\n indexOfFirstNewFile + incomingFiles.length\n ),\n ]\n setFiles(updatedFiles)\n handleChange(updatedFiles)\n }\n } else {\n handleChange(files)\n }\n },\n [setFiles, fileHandler, handleChange]\n )\n\n const changeHandler = useCallback(\n ({ files }: { files: UploadValue }) => {\n // Prevents the form-status from showing up\n handleBlur()\n handleFocus()\n\n if (fileHandler) {\n handleChangeAsync(files)\n } else {\n handleChange(files)\n }\n },\n [handleBlur, handleFocus, fileHandler, handleChangeAsync, handleChange]\n )\n\n const width = widthProp as FieldBlockWidth\n const fieldBlockProps: FieldBlockProps = {\n id,\n forId: `${id}-input`,\n labelSrOnly: true,\n className: classnames('dnb-forms-field-upload', className),\n width,\n help: undefined,\n ...pickSpacingProps(props),\n }\n\n return (\n <FieldBlock {...fieldBlockProps}>\n <Upload\n id={id}\n acceptedFileTypes={acceptedFileTypes}\n filesAmountLimit={filesAmountLimit}\n download={download}\n allowDuplicates={allowDuplicates}\n disableDragAndDrop={disableDragAndDrop}\n disabled={disabled}\n fileMaxSize={fileMaxSize}\n skeleton={skeleton}\n onChange={changeHandler}\n onFileDelete={onFileDelete}\n onFileClick={onFileClick}\n title={label ?? title}\n text={\n help ? (\n <>\n {labelDescription ?? text}\n <HelpButtonInline\n contentId={`${id}-help`}\n left={text ? 'x-small' : false}\n help={help}\n />\n </>\n ) : (\n labelDescription ?? text\n )\n }\n {...htmlAttributes}\n >\n {help && (\n <HelpButtonInlineContent\n contentId={`${id}-help`}\n help={help}\n roundedCorner={false}\n />\n )}\n </Upload>\n </FieldBlock>\n )\n}\n\nexport default UploadComponent\n\nUploadComponent._supportsSpacingProps = true\n\nexport function transformFiles(value: UploadValue) {\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return undefined\n }\n\n value.map((item) => {\n if (item?.file && !(item.file instanceof File)) {\n // To support session storage, we recreated the file blob.\n item['file'] = new File([], item['name'] || item?.file['name'], {\n lastModified: (item.file as File)?.lastModified ?? 0,\n type: (item.file as File)?.type ?? '',\n })\n }\n return item\n })\n }\n\n return value\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"Upload.js","names":["React","useCallback","useEffect","useMemo","useRef","classnames","FieldBlock","useFieldProps","useTranslation","useFormsTranslation","Upload","useUpload","pickSpacingProps","HelpButtonInline","HelpButtonInlineContent","useSharedTranslation","FormError","validateRequired","value","required","isChanged","error","hasError","some","file","errorMessage","hasFiles","length","undefined","UploadComponent","props","sharedTr","formsTr","errorMessages","errorRequired","fromInput","forEach","item","index","_item$file","name","preparedProps","_objectSpread","toInput","transformFiles","_useFieldProps","executeOnChangeRegardlessOfError","id","className","width","widthProp","label","labelDescription","help","htmlAttributes","disabled","handleChange","handleFocus","handleBlur","fileHandler","rest","_objectWithoutProperties","_excluded","title","text","variant","acceptedFileTypes","filesAmountLimit","fileMaxSize","skeleton","onFileDelete","onFileClick","download","allowDuplicates","disableDragAndDrop","files","setFiles","filesRef","current","handleChangeAsync","_filesRef$current","existingFileIds","map","existingFiles","filter","includes","newFiles","newValidFiles","newFilesLoading","isLoading","incomingFiles","_incomingFiles$filter","incomingFileObj","foundIndex","findIndex","newFile","push","indexOfFirstNewFile","updatedFiles","slice","changeHandler","fieldBlockProps","forId","labelSrOnly","usedLabelDescription","createElement","_extends","onChange","LabelWithHelpButton","contentId","roundedCorner","children","Fragment","left","_supportsSpacingProps","Array","isArray","File","_lastModified","_item$file2","_type","_item$file3","lastModified","type"],"sources":["../../../../../../src/extensions/forms/Field/Upload/Upload.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef } from 'react'\nimport classnames from 'classnames'\nimport FieldBlock, {\n Props as FieldBlockProps,\n FieldBlockWidth,\n} from '../../FieldBlock'\nimport {\n useFieldProps,\n useTranslation as useFormsTranslation,\n} from '../../hooks'\nimport { FieldProps } from '../../types'\nimport Upload, {\n UploadFile,\n UploadFileNative,\n UploadProps,\n} from '../../../../components/Upload'\nimport useUpload from '../../../../components/upload/useUpload'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport HelpButtonInline, {\n HelpButtonInlineContent,\n HelpProps,\n} from '../../../../components/help-button/HelpButtonInline'\nimport { useTranslation as useSharedTranslation } from '../../../../shared'\nimport { SpacingProps } from '../../../../shared/types'\nimport { FormError } from '../../utils'\n\nexport type { UploadFile, UploadFileNative }\nexport type UploadValue = Array<UploadFile | UploadFileNative>\nexport type Props = Omit<\n FieldProps<UploadValue, UploadValue | undefined>,\n | 'layout'\n | 'layoutOptions'\n | 'onBlurValidator'\n | 'onChangeValidator'\n | 'contentWidth'\n | 'labelSize'\n | 'labelDescriptionInline'\n | 'labelSrOnly'\n | 'labelSize'\n | 'labelSuffix'\n> &\n SpacingProps &\n Pick<\n Partial<UploadProps>,\n | 'children'\n | 'title'\n | 'variant'\n | 'text'\n | 'acceptedFileTypes'\n | 'filesAmountLimit'\n | 'fileMaxSize'\n | 'onFileDelete'\n | 'onFileClick'\n | 'skeleton'\n | 'download'\n | 'allowDuplicates'\n | 'disableDragAndDrop'\n > & {\n fileHandler?: (\n newFiles: UploadValue\n ) => UploadValue | Promise<UploadValue>\n width?: 'large' | 'stretch'\n }\n\nconst validateRequired = (\n value: UploadValue,\n { required, isChanged, error }\n) => {\n const hasError = value?.some((file) => file.errorMessage)\n if (hasError) {\n return new FormError('Upload.errorInvalidFiles')\n }\n\n const hasFiles = value?.length > 0\n if (required && ((!isChanged && !hasFiles) || !hasFiles)) {\n return error\n }\n\n return undefined\n}\n\nfunction UploadComponent(props: Props) {\n const sharedTr = useSharedTranslation().Upload\n const formsTr = useFormsTranslation().Upload\n\n const errorMessages = useMemo(\n () => ({\n 'Field.errorRequired': formsTr.errorRequired,\n }),\n [formsTr.errorRequired]\n )\n\n const fromInput = useCallback((value: UploadValue) => {\n value.forEach((item, index) => {\n if (!item) {\n return\n }\n\n value[index] = item\n\n // Store the name in the value, to support session storage (serialization)\n value[index]['name'] = item['name'] || item.file?.name\n })\n\n return value\n }, [])\n\n const preparedProps = {\n errorMessages,\n validateRequired,\n fromInput,\n toInput: transformFiles,\n ...props,\n }\n\n const {\n id,\n className,\n width: widthProp = 'stretch',\n value,\n label,\n labelDescription,\n help,\n htmlAttributes,\n disabled,\n handleChange,\n handleFocus,\n handleBlur,\n fileHandler,\n ...rest\n } = useFieldProps(preparedProps, {\n executeOnChangeRegardlessOfError: true,\n })\n\n // Upload props\n const {\n title = sharedTr.title,\n text = sharedTr.text,\n variant = 'normal',\n acceptedFileTypes = ['pdf', 'png', 'jpg', 'jpeg'],\n filesAmountLimit = 100,\n fileMaxSize = 5,\n skeleton,\n onFileDelete,\n onFileClick,\n download,\n allowDuplicates,\n disableDragAndDrop,\n } = rest\n\n const { files, setFiles } = useUpload(id)\n\n const filesRef = useRef<Array<UploadFile>>()\n\n useEffect(() => {\n filesRef.current = files\n }, [files])\n\n useEffect(() => {\n setFiles(value)\n }, [setFiles, value])\n\n const handleChangeAsync = useCallback(\n async (files: UploadValue) => {\n // Filter out existing files\n const existingFileIds =\n filesRef.current?.map((file) => file.id) || []\n const existingFiles = files.filter((file) =>\n existingFileIds.includes(file.id)\n )\n const newFiles = files.filter(\n (file) => !existingFileIds.includes(file.id)\n )\n const newValidFiles = newFiles.filter((file) => !file.errorMessage)\n\n if (newValidFiles.length > 0) {\n // Set loading\n const newFilesLoading = newFiles.map((file) => ({\n ...file,\n isLoading: !file.errorMessage,\n }))\n setFiles([...filesRef.current, ...newFilesLoading])\n\n const incomingFiles = await fileHandler(newValidFiles)\n\n if (!incomingFiles) {\n setFiles(existingFiles)\n handleChange(existingFiles)\n } else {\n // merge incoming files into existing order of newFiles.\n incomingFiles.forEach((file) => {\n const incomingFileObj = {\n ...file,\n isLoading: false,\n }\n const foundIndex = newFilesLoading.findIndex(\n (newFile) => newFile.isLoading\n )\n if (foundIndex >= 0) {\n newFilesLoading[foundIndex] = incomingFileObj\n } else {\n // if there's more files incoming than there's files loading (edge case), add them to end of array.\n newFilesLoading.push(incomingFileObj)\n }\n })\n\n const indexOfFirstNewFile = filesRef.current.findIndex(\n ({ id }) => id === newFiles[0].id\n )\n\n const updatedFiles = [\n ...filesRef.current.slice(0, indexOfFirstNewFile),\n ...(incomingFiles?.filter((file) => file != null) ?? []),\n ...filesRef.current.slice(\n indexOfFirstNewFile + incomingFiles.length\n ),\n ]\n setFiles(updatedFiles)\n handleChange(updatedFiles)\n }\n } else {\n handleChange(files)\n }\n },\n [setFiles, fileHandler, handleChange]\n )\n\n const changeHandler = useCallback(\n ({ files }: { files: UploadValue }) => {\n // Prevents the form-status from showing up\n handleBlur()\n handleFocus()\n\n if (fileHandler) {\n handleChangeAsync(files)\n } else {\n handleChange(files)\n }\n },\n [handleBlur, handleFocus, fileHandler, handleChangeAsync, handleChange]\n )\n\n const width = widthProp as FieldBlockWidth\n const fieldBlockProps: FieldBlockProps = {\n id,\n forId: `${id}-input`,\n labelSrOnly: true,\n className: classnames('dnb-forms-field-upload', className),\n width,\n help: undefined,\n ...pickSpacingProps(props),\n }\n\n const usedLabelDescription = labelDescription ?? text\n\n return (\n <FieldBlock {...fieldBlockProps}>\n <Upload\n id={id}\n variant={variant}\n acceptedFileTypes={acceptedFileTypes}\n filesAmountLimit={filesAmountLimit}\n download={download}\n allowDuplicates={allowDuplicates}\n disableDragAndDrop={disableDragAndDrop}\n disabled={disabled}\n fileMaxSize={fileMaxSize}\n skeleton={skeleton}\n onChange={changeHandler}\n onFileDelete={onFileDelete}\n onFileClick={onFileClick}\n title={\n help && labelDescription === false ? (\n <LabelWithHelpButton\n label={label ?? title}\n id={id}\n help={help}\n />\n ) : (\n label ?? title\n )\n }\n text={\n help && (labelDescription ?? text) ? (\n <LabelWithHelpButton\n label={usedLabelDescription}\n id={id}\n help={help}\n />\n ) : (\n usedLabelDescription\n )\n }\n {...htmlAttributes}\n >\n {help && (\n <HelpButtonInlineContent\n contentId={`${id}-help`}\n help={help}\n roundedCorner={variant === 'compact'}\n />\n )}\n {props.children}\n </Upload>\n </FieldBlock>\n )\n}\n\nfunction LabelWithHelpButton(props: {\n label: React.ReactNode\n id: string\n help?: HelpProps\n}) {\n const { label, id, help } = props\n return (\n <>\n {label}\n <HelpButtonInline\n contentId={`${id}-help`}\n left={label ? 'x-small' : false}\n help={help}\n />\n </>\n )\n}\n\nexport default UploadComponent\n\nUploadComponent._supportsSpacingProps = true\n\nexport function transformFiles(value: UploadValue) {\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return undefined\n }\n\n value.map((item) => {\n if (item?.file && !(item.file instanceof File)) {\n // To support session storage, we recreated the file blob.\n item['file'] = new File([], item['name'] || item?.file['name'], {\n lastModified: (item.file as File)?.lastModified ?? 0,\n type: (item.file as File)?.type ?? '',\n })\n }\n return item\n })\n }\n\n return value\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
--forms-field-width--small: 5rem;
|
|
7
7
|
--forms-field-width--medium: 11rem;
|
|
8
8
|
--forms-field-width--large: 21rem;
|
|
9
|
-
--forms-field-label-max-width--large:
|
|
9
|
+
--forms-field-label-max-width--large: var(--text-block-max-width);
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
fieldset.dnb-forms-field-block {
|
|
@@ -151,7 +151,7 @@ fieldset.dnb-forms-field-block:not([class*=space__right]) {
|
|
|
151
151
|
}
|
|
152
152
|
.dnb-forms-field-block__status .dnb-form-status__shell {
|
|
153
153
|
margin-top: 0.5rem;
|
|
154
|
-
max-width:
|
|
154
|
+
max-width: var(--text-block-max-width);
|
|
155
155
|
}
|
|
156
156
|
@media screen and (max-width: 15em) {
|
|
157
157
|
.dnb-forms-field-block__status {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@charset "UTF-8";:root{--forms-field-width--small:5rem;--forms-field-width--medium:11rem;--forms-field-width--large:21rem;--forms-field-label-max-width--large:
|
|
1
|
+
@charset "UTF-8";:root{--forms-field-width--small:5rem;--forms-field-width--medium:11rem;--forms-field-width--large:21rem;--forms-field-label-max-width--large:var(--text-block-max-width)}fieldset.dnb-forms-field-block{border:none;padding:0}fieldset.dnb-forms-field-block:not([class*=space__top]){margin-top:0}fieldset.dnb-forms-field-block:not([class*=space__bottom]){margin-bottom:0}fieldset.dnb-forms-field-block:not([class*=space__left]){margin-left:0}fieldset.dnb-forms-field-block:not([class*=space__right]){margin-right:0}.dnb-forms-field-block{--label-margin:0.25rem}.dnb-forms-field-block__grid{display:grid;grid-template-areas:"label" "help" "contents" "indicator" "status";grid-template-columns:minmax(-webkit-min-content,var(--block-content-width,auto));grid-template-columns:minmax(min-content,var(--block-content-width,auto))}.dnb-forms-field-block--label-height-small{--label-margin:0}.dnb-forms-field-block--label-height-medium{--label-margin:0.5rem}.dnb-forms-field-block--label-height-large{--label-margin:0.7rem}.dnb-forms-field-block--width-stretch{flex-grow:1}.dnb-forms-field-block--width-stretch label.dnb-form-label{max-width:none}@media screen and (min-width:25.00625em){.dnb-forms-field-block--width-custom{width:calc(var(--dnb-forms-field-block-width))}.dnb-forms-field-block--width-small{width:var(--forms-field-width--small)}.dnb-forms-field-block--width-medium{width:var(--forms-field-width--medium)}.dnb-forms-field-block--width-large{width:var(--forms-field-width--large)}}.dnb-forms-field-block:not([class*="--content-width"]){--max-width:var(--forms-field-label-max-width--large)}.dnb-forms-field-block__label,.dnb-forms-field-block__label.dnb-form-label{align-items:center;display:flex;grid-area:label;margin-right:0;max-width:var(--forms-field-label-max-width--large)}.dnb-forms-field-block__label.dnb-form-label__content:has(+.dnb-help-button),.dnb-forms-field-block__label.dnb-form-label__description:has(+.dnb-help-button),.dnb-forms-field-block__label__content:has(+.dnb-help-button),.dnb-forms-field-block__label__description:has(+.dnb-help-button){margin-right:.5rem}.dnb-forms-field-block__label.dnb-form-label:has(.dnb-forms-field-block__label__description,.dnb-forms-field-block__label.dnb-form-label__description) .dnb-help-button,.dnb-forms-field-block__label.dnb-form-label:has(.dnb-forms-field-block__label__description,.dnb-forms-field-block__label.dnb-form-label__description):not(.dnb-forms-field-block__label:has(+.dnb-help-button),.dnb-forms-field-block__label.dnb-form-label:has(+.dnb-help-button)) .dnb-forms-field-block__label.dnb-form-label__content,.dnb-forms-field-block__label.dnb-form-label:has(.dnb-forms-field-block__label__description,.dnb-forms-field-block__label.dnb-form-label__description):not(.dnb-forms-field-block__label:has(+.dnb-help-button),.dnb-forms-field-block__label.dnb-form-label:has(+.dnb-help-button)) .dnb-forms-field-block__label__content,.dnb-forms-field-block__label:has(.dnb-forms-field-block__label__description,.dnb-forms-field-block__label.dnb-form-label__description) .dnb-help-button,.dnb-forms-field-block__label:has(.dnb-forms-field-block__label__description,.dnb-forms-field-block__label.dnb-form-label__description):not(.dnb-forms-field-block__label:has(+.dnb-help-button),.dnb-forms-field-block__label.dnb-form-label:has(+.dnb-help-button)) .dnb-forms-field-block__label.dnb-form-label__content,.dnb-forms-field-block__label:has(.dnb-forms-field-block__label__description,.dnb-forms-field-block__label.dnb-form-label__description):not(.dnb-forms-field-block__label:has(+.dnb-help-button),.dnb-forms-field-block__label.dnb-form-label:has(+.dnb-help-button)) .dnb-forms-field-block__label__content{margin-right:.3em}.dnb-forms-field-block__label .dnb-help-button__word-joiner,.dnb-forms-field-block__label.dnb-form-label .dnb-help-button__word-joiner{margin-left:.45em;white-space:nowrap}.dnb-forms-field-block__label .dnb-help-button__word-joiner:before,.dnb-forms-field-block__label.dnb-form-label .dnb-help-button__word-joiner:before{content:""}.dnb-forms-field-block__grid.dnb-forms-field-block--layout-vertical{flex-wrap:wrap}.dnb-forms-field-block__grid.dnb-forms-field-block--layout-vertical>.dnb-form-label{margin-bottom:.5rem}.dnb-forms-field-block__grid.dnb-forms-field-block--layout-horizontal .dnb-forms-field-block__label{margin-right:1rem}.dnb-forms-field-block__grid.dnb-forms-field-block--layout-horizontal>.dnb-form-label{margin-bottom:var(--label-margin);margin-top:var(--label-margin)}@media screen and (max-width:40em){.dnb-forms-field-block__grid.dnb-forms-field-block--layout-horizontal>.dnb-form-label{margin-bottom:calc(var(--label-margin) + .5rem)}}@media screen and (min-width:40.00625em){.dnb-forms-field-block__grid.dnb-forms-field-block--layout-horizontal{grid-template-areas:"label contents" ". help" ". indicator" ". status";grid-template-columns:minmax(var(--dnb-forms-field-block-layout-width-min,-webkit-min-content),var(--dnb-forms-field-block-layout-width-max,-webkit-max-content)) auto;grid-template-columns:minmax(var(--dnb-forms-field-block-layout-width-min,min-content),var(--dnb-forms-field-block-layout-width-max,max-content)) auto}.dnb-forms-field-block__grid.dnb-forms-field-block--layout-horizontal .dnb-help-button__content{--help-button-indent-width:0}.dnb-forms-field-block__grid.dnb-forms-field-block--layout-horizontal .dnb-help-button__content .dnb-section{--rounded-corner:0.25rem;align-self:flex-start}.dnb-forms-field-block__grid.dnb-forms-field-block--layout-horizontal .dnb-forms-field-block__contents{align-self:end}}.dnb-forms-field-block__indicator{grid-area:indicator;position:relative}.dnb-forms-field-block__indicator .dnb-forms-submit-indicator__content{position:absolute}.dnb-forms-field-block__help{display:flex;flex-flow:column;grid-area:help}.dnb-forms-field-block__help .dnb-section{margin-bottom:1rem}.dnb-forms-field-block__help .dnb-section>.dnb-p--lead{margin-bottom:.5rem}@media screen and (min-width:40.00625em){.dnb-forms-field-block__grid.dnb-forms-field-block--layout-horizontal .dnb-forms-field-block__help .dnb-section{margin-bottom:0;margin-top:.5rem}}.dnb-forms-field-block__status{grid-area:status}.dnb-forms-field-block__status .dnb-form-status__shell{margin-top:.5rem;max-width:var(--text-block-max-width)}@media screen and (max-width:15em){.dnb-forms-field-block__status{width:90%}}.dnb-forms-field-block__contents{display:flex;grid-area:contents;width:100%}.dnb-forms-field-block__contents--width-stretch{width:100%}.dnb-forms-field-block__contents--width-custom{--field-block-content-width:calc(var(--dnb-forms-field-block-content-width))}.dnb-forms-field-block__contents--width-small{--field-block-content-width:var(--forms-field-width--small)}.dnb-forms-field-block__contents--width-medium{--field-block-content-width:var(--forms-field-width--medium)}.dnb-forms-field-block__contents--width-large{--field-block-content-width:var(--forms-field-width--large)}@media screen and (min-width:25.00625em){.dnb-forms-field-block__contents--width-custom,.dnb-forms-field-block__contents--width-large,.dnb-forms-field-block__contents--width-medium,.dnb-forms-field-block__contents--width-small{max-width:var(--field-block-content-width,none)}}@media screen and (min-width:40.00625em){.dnb-forms-field-block__contents--width-custom,.dnb-forms-field-block__contents--width-large,.dnb-forms-field-block__contents--width-medium,.dnb-forms-field-block__contents--width-small{width:var(--field-block-content-width,-webkit-max-content);width:var(--field-block-content-width,max-content)}}.dnb-forms-field-block__composition--vertical .dnb-forms-field-block__contents{display:flex;flex-flow:column;row-gap:var(--spacing-x-small)}.dnb-forms-field-block__composition--horizontal .dnb-forms-field-block__contents{column-gap:var(--spacing-small);display:flex;flex-flow:row;flex-wrap:wrap;row-gap:var(--spacing-small)}.dnb-forms-field-block__composition--horizontal .dnb-forms-field-block__contents>.dnb-forms-field-block--width-stretch{flex:1}@media screen and (min-width:25.00625em){.dnb-forms-field-block__composition--horizontal .dnb-forms-field-block__contents{align-items:flex-end}.dnb-forms-field-block__composition--horizontal .dnb-forms-field-block__contents[class*=align-center]{align-items:center}}@media screen and (max-width:25em){.dnb-forms-field-block__composition--horizontal .dnb-forms-field-block__contents{flex-flow:column;row-gap:var(--spacing-x-small)}.dnb-forms-field-block__composition>.dnb-forms-field-block__grid>.dnb-forms-submit-indicator{display:none}}@media screen and (min-width:25.00625em){.dnb-forms-field-block__composition>.dnb-forms-field-block__grid>.dnb-forms-field-block__contents .dnb-forms-submit-indicator{display:none}}
|
|
@@ -189,7 +189,7 @@ fieldset.dnb-forms-field-block {
|
|
|
189
189
|
|
|
190
190
|
.dnb-form-status__shell {
|
|
191
191
|
margin-top: 0.5rem; // set margin-top on shell, so we can animate the height
|
|
192
|
-
max-width:
|
|
192
|
+
max-width: var(--text-block-max-width); // to enhance readability
|
|
193
193
|
}
|
|
194
194
|
|
|
195
195
|
@include allBelow(xx-small) {
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
import
|
|
2
|
-
declare
|
|
3
|
-
|
|
4
|
-
var _supportsSpacingProps: boolean;
|
|
5
|
-
}
|
|
6
|
-
export default Card;
|
|
1
|
+
import CardInstance from '../../../../components/card/Card';
|
|
2
|
+
declare const _default: typeof CardInstance;
|
|
3
|
+
export default _default;
|