@dnb/eufemia 10.75.4 → 10.76.1
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 +38 -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 +39 -69
- 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 +5 -8
- package/cjs/fragments/drawer-list/style/themes/dnb-drawer-list-theme-sbanken.scss +1 -4
- 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/core/utilities.scss +8 -0
- package/cjs/style/dnb-ui-basis.css +5 -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 +31 -17
- package/cjs/style/dnb-ui-components.min.css +4 -4
- package/cjs/style/dnb-ui-core.css +5 -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 +5 -6
- 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 +35 -21
- 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 +49 -29
- package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +7 -7
- 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 +35 -21
- 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 +40 -70
- 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 +5 -8
- package/es/fragments/drawer-list/style/themes/dnb-drawer-list-theme-sbanken.scss +1 -4
- 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/core/utilities.scss +8 -0
- package/es/style/dnb-ui-basis.css +5 -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 +31 -17
- package/es/style/dnb-ui-components.min.css +4 -4
- package/es/style/dnb-ui-core.css +5 -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 +5 -6
- 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 +35 -21
- 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 +49 -29
- package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +7 -7
- 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 +35 -21
- 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 +40 -70
- 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 +5 -8
- package/fragments/drawer-list/style/themes/dnb-drawer-list-theme-sbanken.scss +1 -4
- 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/core/utilities.scss +8 -0
- package/style/dnb-ui-basis.css +5 -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 +31 -17
- package/style/dnb-ui-components.min.css +4 -4
- package/style/dnb-ui-core.css +5 -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 +5 -6
- 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 +35 -21
- 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 +49 -29
- package/style/themes/theme-sbanken/sbanken-theme-components.min.css +7 -7
- 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 +35 -21
- 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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePickerCalendar.js","names":["React","useCallback","useContext","useEffect","useMemo","useRef","classnames","format","addMonths","addWeeks","addDays","isSameDay","isSameMonth","startOfDay","differenceInCalendarDays","differenceInMonths","lastDayOfMonth","setDate","isDisabled","makeDayObject","toRange","getWeek","dayOffset","getCalendar","formatDate","Button","DatePickerContext","DatePickerCalendarNav","defaultProps","hideNavigation","hideDays","onlyMonth","hideNextMonthWeek","noAutoFocus","rtl","resetDate","arrowKeys","keysToHandle","DatePickerCalendar","restOfProps","props","_objectSpread","updateDates","setHasClickedCalendarDay","startDate","endDate","maxDate","minDate","startMonth","endMonth","hoverDate","setHoverDate","setSubmittedDates","onDaysRender","yearNavigation","translation","DatePicker","firstDay","defaultFirstDayOfWeek","selectedMonth","id","nr","month","isRange","firstDayOfWeek","locale","onSelect","onKeyDown","tableRef","days","cache","current","focus","preventScroll","onMouseLeaveHandler","undefined","callOnSelect","event","getDays","daysFromCalendar","Date","map","date","changedDays","Array","isArray","keyNavCalc","keyCode","includes","dateHandler","test","shiftAmount","findValid","foundDate","find","cur","isSelectable","isInactive","nextDate","hasReachedEnd","onKeyDownHandler","pressedKey","code","preventDefault","persist","currentDates","dateType","currentDate","newDate","hidePicker","dates","currentMonth","Math","abs","cacheKey","join","weekDays","count","reduce","acc","i","push","Object","values","createElement","className","lang","type","title","replace","formatOptions","tabIndex","role","onMouseLeave","ref","day","key","scope","weekday","substring","week","year","handleAsDisabled","isLastMonth","isNextMonth","isStartDate","isEndDate","isSelectedDate","paramsCell","paramsButton","_extends","buildDayClassNames","size","variant","text","getDate","bounding","disabled","on_click","_ref","onSelectRange","state","onMouseOver","onHoverDay","onFocus","_ref2","daysToStartDate","daysToEndDate","range","_ref3","isPreview","isWithinSelection","isToday"],"sources":["../../../../src/components/date-picker/DatePickerCalendar.tsx"],"sourcesContent":["/**\n * Web DatePicker Component\n *\n */\n\nimport React, {\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n} from 'react'\nimport classnames from 'classnames'\n\n// date-fns\nimport format from 'date-fns/format'\nimport addMonths from 'date-fns/addMonths'\nimport addWeeks from 'date-fns/addWeeks'\nimport addDays from 'date-fns/addDays'\nimport isSameDay from 'date-fns/isSameDay'\nimport isSameMonth from 'date-fns/isSameMonth'\nimport startOfDay from 'date-fns/startOfDay'\nimport differenceInCalendarDays from 'date-fns/differenceInCalendarDays'\nimport differenceInMonths from 'date-fns/differenceInMonths'\nimport lastDayOfMonth from 'date-fns/lastDayOfMonth'\nimport setDate from 'date-fns/setDate'\n\nimport {\n isDisabled,\n makeDayObject,\n toRange,\n getWeek,\n dayOffset,\n getCalendar,\n formatDate,\n} from './DatePickerCalc'\nimport Button, { ButtonProps } from '../button/Button'\nimport DatePickerContext, {\n DatePickerContextValues,\n} from './DatePickerContext'\nimport { InternalLocale } from '../../shared/Context'\nimport { DatePickerChangeEvent } from './DatePickerProvider'\nimport { DatePickerDates } from './hooks/useDates'\nimport {\n CalendarNavButtonProps,\n DatePickerCalendarNav,\n} from './DatePickerCalendarNavigator'\n\nexport type CalendarDay = {\n date: Date\n isDisabled?: boolean\n isEndDate?: boolean\n isInactive?: boolean\n isLastMonth?: boolean\n isNextMonth?: boolean\n isPreview?: boolean\n isSelectable?: boolean\n isStartDate?: boolean\n isToday?: boolean\n isWithinSelection?: boolean\n className?: string\n}\n\nexport type CalendarNavigationEvent = {\n nr: number\n type?: CalendarNavButtonProps['type']\n}\n\nexport type DatePickerCalendarProps = Omit<\n React.HTMLProps<HTMLElement>,\n 'onSelect' | 'onChange'\n> & {\n id?: string\n nr?: number\n /**\n * To display what month should be shown in the first calendar by default. Defaults to the `date` respective `startDate`.\n */\n month?: Date\n hoverDate?: Date\n firstDayOfWeek?: string\n hideNavigation?: boolean\n hideDays?: boolean\n onlyMonth?: boolean\n hideNextMonthWeek?: boolean\n noAutoFocus?: boolean\n onSelect?: (\n event: DatePickerChangeEvent<\n | React.MouseEvent<HTMLSpanElement>\n | React.KeyboardEvent<HTMLTableElement | HTMLButtonElement>\n >\n ) => void\n onKeyDown?: (\n event: React.KeyboardEvent<HTMLTableElement | HTMLButtonElement>,\n tableRef: React.MutableRefObject<HTMLTableElement>,\n nr: number\n ) => void\n /**\n * To define the locale used in the calendar. Needs to be an `date-fns` \"v2\" locale object, like `import enLocale from 'date-fns/locale/en-GB'`. Defaults to `nb-NO`.\n */\n locale?: InternalLocale\n rtl?: boolean\n isRange?: boolean\n resetDate?: boolean\n}\n\ntype DayObject = {\n date: Date\n isToday: boolean\n isLastMonth: boolean\n isNextMonth: boolean\n isStartDate: boolean\n isEndDate: boolean\n isWithinSelection: boolean\n isPreview: boolean\n isDisabled: boolean\n isSelectable: boolean\n isInactive: boolean\n className?: string\n}\n\nconst defaultProps: DatePickerCalendarProps = {\n hideNavigation: false,\n hideDays: false,\n onlyMonth: false,\n hideNextMonthWeek: false,\n noAutoFocus: false,\n rtl: false,\n resetDate: true,\n}\n\nconst arrowKeys = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown']\nconst keysToHandle = ['Enter', 'Space', ...arrowKeys]\n\nfunction DatePickerCalendar(restOfProps: DatePickerCalendarProps) {\n const props = { ...defaultProps, ...restOfProps }\n\n const {\n updateDates,\n setHasClickedCalendarDay,\n startDate,\n endDate,\n maxDate,\n minDate,\n startMonth,\n endMonth,\n hoverDate,\n setHoverDate,\n setSubmittedDates,\n props: { onDaysRender, yearNavigation },\n translation: {\n DatePicker: { firstDay: defaultFirstDayOfWeek, selectedMonth },\n },\n } = useContext(DatePickerContext)\n\n const {\n id,\n nr,\n rtl,\n month,\n isRange,\n firstDayOfWeek = defaultFirstDayOfWeek,\n hideNavigation,\n locale,\n hideDays,\n onSelect,\n onKeyDown,\n resetDate,\n noAutoFocus,\n hideNextMonthWeek,\n onlyMonth,\n } = props\n\n const tableRef = useRef<React.ElementRef<'table'>>()\n const days = useRef<Record<string, Array<CalendarDay>>>({})\n const cache = useRef<Record<string, CalendarDay[][]>>({})\n\n useEffect(() => {\n if (!noAutoFocus && nr === 0) {\n if (tableRef.current) {\n tableRef.current.focus({ preventScroll: true })\n }\n }\n }, [noAutoFocus, nr])\n\n // Store the initial selected date on calendar render, to be used for `onCancel` in DatePickerFooter\n useEffect(() => {\n setSubmittedDates({ startDate, endDate })\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const onMouseLeaveHandler = useCallback(() => {\n setHoverDate(undefined)\n }, [setHoverDate])\n\n const callOnSelect = useCallback(\n (\n event: DatePickerChangeEvent<\n | React.MouseEvent<HTMLSpanElement>\n | React.KeyboardEvent<HTMLTableElement>\n > &\n DatePickerDates\n ) => {\n onSelect?.(event)\n },\n [onSelect]\n )\n\n const getDays = useCallback(\n (month: Date): DayObject[] => {\n let daysFromCalendar = getCalendar(\n month || new Date(),\n dayOffset(firstDayOfWeek),\n {\n onlyMonth,\n hideNextMonthWeek,\n }\n ).map((date) =>\n makeDayObject(date, {\n startDate,\n endDate,\n hoverDate,\n minDate,\n maxDate,\n month,\n })\n )\n\n if (onDaysRender) {\n const changedDays = onDaysRender(daysFromCalendar, nr)\n if (Array.isArray(changedDays)) {\n daysFromCalendar = changedDays\n }\n }\n\n // Save for later check against disabled days during key navigation\n days.current[format(month, 'yyyy-MM')] = daysFromCalendar\n\n return daysFromCalendar\n },\n [\n endDate,\n firstDayOfWeek,\n hideNextMonthWeek,\n hoverDate,\n maxDate,\n minDate,\n nr,\n onDaysRender,\n onlyMonth,\n startDate,\n ]\n )\n\n const keyNavCalc = useCallback((date: Date, keyCode: string) => {\n // Return date if arrow keys are not pressed\n if (!arrowKeys.includes(keyCode)) {\n return date\n }\n\n const dateHandler = /(ArrowLeft|ArrowRight)/g.test(keyCode)\n ? addDays\n : addWeeks\n const shiftAmount = /(ArrowLeft|ArrowUp)/g.test(keyCode) ? -1 : 1\n\n return dateHandler(date, shiftAmount)\n }, [])\n\n const findValid = useCallback(\n (date: Date, keyCode: string) => {\n if (!onDaysRender || !days.current) {\n return date\n }\n\n const month = format(date, 'yyyy-MM')\n\n // re-render with new month\n if (!days.current[month]) {\n getDays(date)\n }\n\n if (Array.isArray(days.current[month])) {\n const foundDate = days.current[month].find((cur) =>\n isSameDay(cur.date, date)\n )\n\n if (\n foundDate?.date &&\n (foundDate.isDisabled ||\n foundDate.isSelectable === false ||\n foundDate.isInactive)\n ) {\n const nextDate = keyNavCalc(foundDate.date, keyCode)\n return findValid(nextDate, keyCode)\n }\n\n if (foundDate?.date) {\n return foundDate.date\n }\n }\n\n return date\n },\n [onDaysRender, getDays, keyNavCalc]\n )\n\n const hasReachedEnd = useCallback(\n (date: Date) => isDisabled(date, minDate, maxDate),\n [minDate, maxDate]\n )\n\n const onKeyDownHandler = useCallback(\n (event: React.KeyboardEvent<HTMLTableElement>) => {\n const pressedKey = event.code\n\n // call onKeyDown prop if given\n if (typeof onKeyDown === 'function') {\n return onKeyDown(event, tableRef, nr)\n }\n\n // only continue of key is one of these\n if (!keysToHandle.includes(pressedKey)) {\n return\n }\n event.preventDefault()\n event.persist() // since we use the event after updateDates\n\n const currentDates = { startDate, endDate, startMonth, endMonth }\n const dateType = !isRange || nr === 0 ? 'start' : 'end'\n const currentDate = currentDates[`${dateType}Date`]\n\n let newDate = currentDate\n ? keyNavCalc(currentDate, pressedKey)\n : currentDates[`${dateType}Month`] ||\n (isRange && nr === 1 ? addMonths(new Date(), 1) : new Date())\n\n if (\n newDate === currentDate &&\n (pressedKey === 'Enter' || pressedKey === 'Space')\n ) {\n return callOnSelect({\n event,\n nr,\n hidePicker: true,\n })\n }\n\n const dates: {\n startDate?: Date\n endDate?: Date\n startMonth?: Date\n endMonth?: Date\n } = {}\n\n const currentMonth = currentDates[`${dateType}Month`]\n\n if (\n // in case we don't have a start/end date, then we use the current month date\n (currentMonth && !currentDate) ||\n // if we have a larger gap between the new date and the current month in the calendar\n (currentMonth &&\n Math.abs(differenceInMonths(newDate, currentMonth)) > 1)\n ) {\n newDate = !isRange\n ? currentMonth\n : nr === 0\n ? setDate(currentMonth, 1)\n : lastDayOfMonth(currentMonth)\n\n // only to make sure we navigate the calendar to the new date\n } else if (currentMonth && !isSameMonth(currentDate, currentMonth)) {\n dates[`${dateType}Month`] = newDate\n }\n\n newDate = findValid(newDate, pressedKey)\n\n if (hasReachedEnd(newDate)) {\n return // Stop here\n }\n\n dates[`${dateType}Date`] = newDate\n\n // set fallbacks\n if (!isRange) {\n dates.endDate = newDate\n } else {\n if (!startDate) {\n dates.startDate = newDate\n }\n if (!endDate) {\n dates.endDate = newDate\n }\n }\n\n // make sure we stay on the same month\n if (onlyMonth || hideNavigation) {\n if (\n !isSameMonth(dates.startDate, startDate) ||\n !isSameMonth(dates.endDate, startDate) // Heads up, should this not be context.endDate?\n ) {\n return\n }\n }\n\n updateDates(dates, () => {\n // call after state update, so the input get's the latest state as well\n callOnSelect({\n event,\n nr,\n hidePicker: false,\n ...dates,\n })\n })\n\n // and set the focus back again\n if (tableRef && tableRef.current) {\n tableRef.current.focus({ preventScroll: true })\n }\n },\n [\n callOnSelect,\n findValid,\n hasReachedEnd,\n onKeyDown,\n startDate,\n endDate,\n updateDates,\n hideNavigation,\n isRange,\n keyNavCalc,\n nr,\n onlyMonth,\n endMonth,\n startMonth,\n ]\n )\n\n const cacheKey = useMemo(() => {\n return [\n nr,\n month,\n firstDayOfWeek,\n onlyMonth,\n hideNextMonthWeek,\n startDate,\n endDate,\n hoverDate,\n maxDate,\n minDate,\n ].join('|')\n }, [\n nr,\n month,\n firstDayOfWeek,\n onlyMonth,\n hideNextMonthWeek,\n startDate,\n endDate,\n hoverDate,\n maxDate,\n minDate,\n ])\n\n const weekDays = useMemo(() => {\n // Cache the result, just because we then avoid at least double calc because of reconciliation,\n // but we do not avoid calculating every day during hover or select\n\n if (cache.current[cacheKey]) {\n return cache.current[cacheKey]\n }\n\n let count = 0\n\n const days = getDays(month).reduce((acc, cur, i) => {\n // Normalize the data for table consumption\n acc[count] = acc[count] || []\n acc[count].push(cur)\n if (i % 7 === 6) {\n count++\n }\n\n return acc\n }, {})\n\n cache.current[cacheKey] = Object.values(days)\n\n return cache.current[cacheKey]\n }, [cacheKey, getDays, month])\n\n return (\n <div\n className={classnames('dnb-date-picker__calendar', rtl && 'rtl')}\n lang={locale}\n >\n {!hideNavigation && !onlyMonth && (\n <div className=\"dnb-date-picker__header\">\n <DatePickerCalendarNav\n type={yearNavigation ? 'month' : 'both'}\n id={id}\n nr={nr}\n date={month}\n locale={locale}\n />\n {yearNavigation && (\n <DatePickerCalendarNav\n type=\"year\"\n id={id}\n nr={nr}\n date={month}\n locale={locale}\n />\n )}\n </div>\n )}\n {onlyMonth && (\n <div className=\"dnb-date-picker__header dnb-date-picker__header--only-month-label\">\n <label\n id={`${id}--title`}\n className=\"dnb-date-picker__header__title dnb-no-focus\"\n title={selectedMonth.replace(\n /%s/,\n formatDate(month, {\n locale,\n formatOptions: { month: 'long' },\n })\n )}\n tabIndex={-1}\n >\n {formatDate(month, {\n locale,\n formatOptions: { month: 'long' },\n })}\n </label>\n </div>\n )}\n <table\n role=\"grid\"\n className=\"dnb-no-focus\"\n tabIndex={0}\n aria-labelledby={`${id}--title`}\n onKeyDown={onKeyDownHandler}\n onMouseLeave={onMouseLeaveHandler}\n ref={tableRef}\n >\n {!hideDays && !onlyMonth && (\n <thead aria-hidden>\n <tr role=\"row\" className=\"dnb-date-picker__labels\">\n {getWeek(dayOffset(firstDayOfWeek)).map((day, i) => (\n <th\n key={i}\n role=\"columnheader\"\n scope=\"col\"\n className=\"dnb-date-picker__labels__day\"\n aria-label={formatDate(day, {\n locale,\n formatOptions: { weekday: 'long' },\n })}\n >\n {formatDate(day, {\n locale,\n formatOptions: { weekday: 'short' },\n }).substring(0, 2)}\n </th>\n ))}\n </tr>\n </thead>\n )}\n <tbody>\n {weekDays.map((week, i) => {\n return (\n <tr\n key={'week' + i}\n role=\"row\"\n className=\"dnb-date-picker__days\"\n >\n {week.map((day: DayObject, i) => {\n const title = formatDate(day.date, {\n locale,\n formatOptions: {\n weekday: 'long',\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n },\n })\n\n const handleAsDisabled =\n day.isLastMonth ||\n day.isNextMonth ||\n day.isDisabled ||\n day.isInactive\n\n const dateType = day.isStartDate\n ? 'start'\n : day.isEndDate\n ? 'end'\n : undefined\n const isSelectedDate =\n nr === 0 ? day.isStartDate : day.isEndDate\n\n // cell params\n const paramsCell = {\n tabIndex: -1,\n ...(dateType && { id: `${id}--button-${dateType}` }),\n ...(isSelectedDate && { ['aria-selected']: true }),\n } as React.HTMLProps<HTMLTableCellElement>\n\n // cell + button params\n const paramsButton = {\n ...(isSelectedDate && { ['aria-current']: 'date' }),\n } as ButtonProps\n\n return (\n <td\n key={'day' + i}\n role=\"gridcell\"\n className={classnames(\n 'dnb-date-picker__day',\n 'dnb-no-focus',\n buildDayClassNames(day)\n )}\n {...paramsCell}\n >\n <Button\n size=\"medium\"\n variant=\"secondary\"\n text={day.date.getDate()}\n bounding={true}\n disabled={handleAsDisabled}\n tabIndex={handleAsDisabled ? 0 : -1} // fix for NVDA\n aria-disabled={handleAsDisabled}\n aria-label={title}\n {...paramsButton}\n on_click={\n handleAsDisabled\n ? undefined\n : ({ event }) =>\n onSelectRange({\n day,\n isRange,\n startDate,\n endDate,\n resetDate,\n event,\n setHasClickedCalendarDay,\n onSelect: (state) => {\n updateDates(state, (dates) =>\n callOnSelect({\n ...dates,\n event,\n nr,\n hidePicker: !isRange,\n })\n )\n },\n })\n }\n onMouseOver={\n handleAsDisabled\n ? undefined\n : () =>\n onHoverDay({\n day,\n hoverDate,\n setHoverDate,\n })\n }\n onFocus={\n handleAsDisabled\n ? undefined\n : () =>\n onHoverDay({\n day,\n hoverDate,\n setHoverDate,\n })\n }\n />\n </td>\n )\n })}\n </tr>\n )\n })}\n </tbody>\n </table>\n </div>\n )\n}\n\nexport default DatePickerCalendar\n\ntype SelectRangeEvent = Pick<\n DatePickerContextValues,\n 'setHasClickedCalendarDay'\n> & {\n day: DayObject\n event?: React.MouseEvent<HTMLButtonElement>\n startDate?: Date\n endDate?: Date\n resetDate?: boolean\n isRange?: boolean\n onSelect?: DatePickerCalendarProps['onSelect']\n}\n\nfunction onSelectRange({\n day,\n isRange,\n startDate,\n endDate,\n onSelect,\n resetDate,\n event,\n setHasClickedCalendarDay,\n}: SelectRangeEvent) {\n event.persist()\n\n if (!isRange) {\n // set only date\n return onSelect({\n startDate: startOfDay(day.date),\n endDate: startOfDay(day.date),\n event,\n })\n\n // for setting date new on every selection, do this here\n }\n\n // Set to true to stop calendar views from changing in range mode when clicking a day\n setHasClickedCalendarDay(true)\n\n if (!startDate || (resetDate && startDate && endDate)) {\n // set startDate\n // user is selecting startDate\n return onSelect({\n startDate: startOfDay(day.date),\n endDate: undefined,\n event,\n })\n }\n\n // set either startDate or endDate\n const daysToStartDate = Math.abs(\n differenceInCalendarDays(startDate, day.date)\n )\n const daysToEndDate = Math.abs(\n differenceInCalendarDays(endDate, day.date)\n )\n\n const range = toRange(\n endDate && !resetDate && daysToStartDate < daysToEndDate\n ? endDate\n : startDate,\n day.date\n )\n\n return onSelect({\n startDate: startOfDay(range.startDate),\n endDate: startOfDay(range.endDate),\n event,\n })\n}\n\nfunction onHoverDay({\n day,\n hoverDate,\n setHoverDate,\n}: {\n day: CalendarDay\n hoverDate?: Date\n setHoverDate: (date: Date) => void\n}) {\n if (!isSameDay(day.date, hoverDate)) {\n setHoverDate?.(day.date)\n }\n}\n\nfunction buildDayClassNames(day: DayObject) {\n return classnames(\n {\n 'dnb-date-picker__day--start-date': day.isStartDate,\n 'dnb-date-picker__day--end-date': day.isEndDate,\n 'dnb-date-picker__day--preview': day.isPreview,\n 'dnb-date-picker__day--within-selection': day.isWithinSelection,\n 'dnb-date-picker__day--selectable': day.isSelectable,\n 'dnb-date-picker__day--inactive': day.isInactive,\n 'dnb-date-picker__day--disabled': day.isDisabled,\n 'dnb-date-picker__day--today': day.isToday,\n },\n day.className\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"DatePickerCalendar.js","names":["React","useCallback","useContext","useEffect","useMemo","useRef","classnames","format","addMonths","addWeeks","addDays","isSameDay","isSameMonth","startOfDay","differenceInCalendarDays","differenceInMonths","lastDayOfMonth","setDate","isDisabled","makeDayObject","toRange","getWeek","dayOffset","getCalendar","Button","DatePickerContext","DatePickerCalendarNav","formatDate","defaultProps","hideNavigation","hideDays","onlyMonth","hideNextMonthWeek","noAutoFocus","rtl","resetDate","arrowKeys","keysToHandle","DatePickerCalendar","restOfProps","props","_objectSpread","updateDates","setHasClickedCalendarDay","startDate","endDate","maxDate","minDate","startMonth","endMonth","hoverDate","setHoverDate","setSubmittedDates","onDaysRender","yearNavigation","translation","DatePicker","firstDay","defaultFirstDayOfWeek","selectedMonth","id","nr","month","isRange","firstDayOfWeek","locale","onSelect","onKeyDown","tableRef","days","cache","current","focus","preventScroll","onMouseLeaveHandler","undefined","callOnSelect","event","getDays","daysFromCalendar","Date","map","date","changedDays","Array","isArray","keyNavCalc","keyCode","includes","dateHandler","test","shiftAmount","findValid","foundDate","find","cur","isSelectable","isInactive","nextDate","hasReachedEnd","onKeyDownHandler","pressedKey","code","preventDefault","persist","currentDates","dateType","currentDate","newDate","hidePicker","dates","currentMonth","Math","abs","cacheKey","join","weekDays","count","reduce","acc","i","push","Object","values","createElement","className","lang","type","title","replace","options","tabIndex","role","onMouseLeave","ref","day","key","scope","weekday","substring","week","year","handleAsDisabled","isLastMonth","isNextMonth","isStartDate","isEndDate","isSelectedDate","paramsCell","paramsButton","_extends","buildDayClassNames","size","variant","text","getDate","bounding","disabled","on_click","_ref","onSelectRange","state","onMouseOver","onHoverDay","onFocus","_ref2","daysToStartDate","daysToEndDate","range","_ref3","isPreview","isWithinSelection","isToday"],"sources":["../../../../src/components/date-picker/DatePickerCalendar.tsx"],"sourcesContent":["/**\n * Web DatePicker Component\n *\n */\n\nimport React, {\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n} from 'react'\nimport classnames from 'classnames'\n\n// date-fns\nimport format from 'date-fns/format'\nimport addMonths from 'date-fns/addMonths'\nimport addWeeks from 'date-fns/addWeeks'\nimport addDays from 'date-fns/addDays'\nimport isSameDay from 'date-fns/isSameDay'\nimport isSameMonth from 'date-fns/isSameMonth'\nimport startOfDay from 'date-fns/startOfDay'\nimport differenceInCalendarDays from 'date-fns/differenceInCalendarDays'\nimport differenceInMonths from 'date-fns/differenceInMonths'\nimport lastDayOfMonth from 'date-fns/lastDayOfMonth'\nimport setDate from 'date-fns/setDate'\n\nimport {\n isDisabled,\n makeDayObject,\n toRange,\n getWeek,\n dayOffset,\n getCalendar,\n} from './DatePickerCalc'\nimport Button, { ButtonProps } from '../button/Button'\nimport DatePickerContext, {\n DatePickerContextValues,\n} from './DatePickerContext'\nimport { InternalLocale } from '../../shared/Context'\nimport { DatePickerChangeEvent } from './DatePickerProvider'\nimport { DatePickerDates } from './hooks/useDates'\nimport {\n CalendarNavButtonProps,\n DatePickerCalendarNav,\n} from './DatePickerCalendarNavigator'\nimport { formatDate } from '../date-format/DateFormatUtils'\n\nexport type CalendarDay = {\n date: Date\n isDisabled?: boolean\n isEndDate?: boolean\n isInactive?: boolean\n isLastMonth?: boolean\n isNextMonth?: boolean\n isPreview?: boolean\n isSelectable?: boolean\n isStartDate?: boolean\n isToday?: boolean\n isWithinSelection?: boolean\n className?: string\n}\n\nexport type CalendarNavigationEvent = {\n nr: number\n type?: CalendarNavButtonProps['type']\n}\n\nexport type DatePickerCalendarProps = Omit<\n React.HTMLProps<HTMLElement>,\n 'onSelect' | 'onChange'\n> & {\n id?: string\n nr?: number\n /**\n * To display what month should be shown in the first calendar by default. Defaults to the `date` respective `startDate`.\n */\n month?: Date\n hoverDate?: Date\n firstDayOfWeek?: string\n hideNavigation?: boolean\n hideDays?: boolean\n onlyMonth?: boolean\n hideNextMonthWeek?: boolean\n noAutoFocus?: boolean\n onSelect?: (\n event: DatePickerChangeEvent<\n | React.MouseEvent<HTMLSpanElement>\n | React.KeyboardEvent<HTMLTableElement | HTMLButtonElement>\n >\n ) => void\n onKeyDown?: (\n event: React.KeyboardEvent<HTMLTableElement | HTMLButtonElement>,\n tableRef: React.MutableRefObject<HTMLTableElement>,\n nr: number\n ) => void\n /**\n * To define the locale used in the calendar. Needs to be an `date-fns` \"v2\" locale object, like `import enLocale from 'date-fns/locale/en-GB'`. Defaults to `nb-NO`.\n */\n locale?: InternalLocale\n rtl?: boolean\n isRange?: boolean\n resetDate?: boolean\n}\n\ntype DayObject = {\n date: Date\n isToday: boolean\n isLastMonth: boolean\n isNextMonth: boolean\n isStartDate: boolean\n isEndDate: boolean\n isWithinSelection: boolean\n isPreview: boolean\n isDisabled: boolean\n isSelectable: boolean\n isInactive: boolean\n className?: string\n}\n\nconst defaultProps: DatePickerCalendarProps = {\n hideNavigation: false,\n hideDays: false,\n onlyMonth: false,\n hideNextMonthWeek: false,\n noAutoFocus: false,\n rtl: false,\n resetDate: true,\n}\n\nconst arrowKeys = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown']\nconst keysToHandle = ['Enter', 'Space', ...arrowKeys]\n\nfunction DatePickerCalendar(restOfProps: DatePickerCalendarProps) {\n const props = { ...defaultProps, ...restOfProps }\n\n const {\n updateDates,\n setHasClickedCalendarDay,\n startDate,\n endDate,\n maxDate,\n minDate,\n startMonth,\n endMonth,\n hoverDate,\n setHoverDate,\n setSubmittedDates,\n props: { onDaysRender, yearNavigation },\n translation: {\n DatePicker: { firstDay: defaultFirstDayOfWeek, selectedMonth },\n },\n } = useContext(DatePickerContext)\n\n const {\n id,\n nr,\n rtl,\n month,\n isRange,\n firstDayOfWeek = defaultFirstDayOfWeek,\n hideNavigation,\n locale,\n hideDays,\n onSelect,\n onKeyDown,\n resetDate,\n noAutoFocus,\n hideNextMonthWeek,\n onlyMonth,\n } = props\n\n const tableRef = useRef<React.ElementRef<'table'>>()\n const days = useRef<Record<string, Array<CalendarDay>>>({})\n const cache = useRef<Record<string, CalendarDay[][]>>({})\n\n useEffect(() => {\n if (!noAutoFocus && nr === 0) {\n if (tableRef.current) {\n tableRef.current.focus({ preventScroll: true })\n }\n }\n }, [noAutoFocus, nr])\n\n // Store the initial selected date on calendar render, to be used for `onCancel` in DatePickerFooter\n useEffect(() => {\n setSubmittedDates({ startDate, endDate })\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const onMouseLeaveHandler = useCallback(() => {\n setHoverDate(undefined)\n }, [setHoverDate])\n\n const callOnSelect = useCallback(\n (\n event: DatePickerChangeEvent<\n | React.MouseEvent<HTMLSpanElement>\n | React.KeyboardEvent<HTMLTableElement>\n > &\n DatePickerDates\n ) => {\n onSelect?.(event)\n },\n [onSelect]\n )\n\n const getDays = useCallback(\n (month: Date): DayObject[] => {\n let daysFromCalendar = getCalendar(\n month || new Date(),\n dayOffset(firstDayOfWeek),\n {\n onlyMonth,\n hideNextMonthWeek,\n }\n ).map((date) =>\n makeDayObject(date, {\n startDate,\n endDate,\n hoverDate,\n minDate,\n maxDate,\n month,\n })\n )\n\n if (onDaysRender) {\n const changedDays = onDaysRender(daysFromCalendar, nr)\n if (Array.isArray(changedDays)) {\n daysFromCalendar = changedDays\n }\n }\n\n // Save for later check against disabled days during key navigation\n days.current[format(month, 'yyyy-MM')] = daysFromCalendar\n\n return daysFromCalendar\n },\n [\n endDate,\n firstDayOfWeek,\n hideNextMonthWeek,\n hoverDate,\n maxDate,\n minDate,\n nr,\n onDaysRender,\n onlyMonth,\n startDate,\n ]\n )\n\n const keyNavCalc = useCallback((date: Date, keyCode: string) => {\n // Return date if arrow keys are not pressed\n if (!arrowKeys.includes(keyCode)) {\n return date\n }\n\n const dateHandler = /(ArrowLeft|ArrowRight)/g.test(keyCode)\n ? addDays\n : addWeeks\n const shiftAmount = /(ArrowLeft|ArrowUp)/g.test(keyCode) ? -1 : 1\n\n return dateHandler(date, shiftAmount)\n }, [])\n\n const findValid = useCallback(\n (date: Date, keyCode: string) => {\n if (!onDaysRender || !days.current) {\n return date\n }\n\n const month = format(date, 'yyyy-MM')\n\n // re-render with new month\n if (!days.current[month]) {\n getDays(date)\n }\n\n if (Array.isArray(days.current[month])) {\n const foundDate = days.current[month].find((cur) =>\n isSameDay(cur.date, date)\n )\n\n if (\n foundDate?.date &&\n (foundDate.isDisabled ||\n foundDate.isSelectable === false ||\n foundDate.isInactive)\n ) {\n const nextDate = keyNavCalc(foundDate.date, keyCode)\n return findValid(nextDate, keyCode)\n }\n\n if (foundDate?.date) {\n return foundDate.date\n }\n }\n\n return date\n },\n [onDaysRender, getDays, keyNavCalc]\n )\n\n const hasReachedEnd = useCallback(\n (date: Date) => isDisabled(date, minDate, maxDate),\n [minDate, maxDate]\n )\n\n const onKeyDownHandler = useCallback(\n (event: React.KeyboardEvent<HTMLTableElement>) => {\n const pressedKey = event.code\n\n // call onKeyDown prop if given\n if (typeof onKeyDown === 'function') {\n return onKeyDown(event, tableRef, nr)\n }\n\n // only continue of key is one of these\n if (!keysToHandle.includes(pressedKey)) {\n return\n }\n event.preventDefault()\n event.persist() // since we use the event after updateDates\n\n const currentDates = { startDate, endDate, startMonth, endMonth }\n const dateType = !isRange || nr === 0 ? 'start' : 'end'\n const currentDate = currentDates[`${dateType}Date`]\n\n let newDate = currentDate\n ? keyNavCalc(currentDate, pressedKey)\n : currentDates[`${dateType}Month`] ||\n (isRange && nr === 1 ? addMonths(new Date(), 1) : new Date())\n\n if (\n newDate === currentDate &&\n (pressedKey === 'Enter' || pressedKey === 'Space')\n ) {\n return callOnSelect({\n event,\n nr,\n hidePicker: true,\n })\n }\n\n const dates: {\n startDate?: Date\n endDate?: Date\n startMonth?: Date\n endMonth?: Date\n } = {}\n\n const currentMonth = currentDates[`${dateType}Month`]\n\n if (\n // in case we don't have a start/end date, then we use the current month date\n (currentMonth && !currentDate) ||\n // if we have a larger gap between the new date and the current month in the calendar\n (currentMonth &&\n Math.abs(differenceInMonths(newDate, currentMonth)) > 1)\n ) {\n newDate = !isRange\n ? currentMonth\n : nr === 0\n ? setDate(currentMonth, 1)\n : lastDayOfMonth(currentMonth)\n\n // only to make sure we navigate the calendar to the new date\n } else if (currentMonth && !isSameMonth(currentDate, currentMonth)) {\n dates[`${dateType}Month`] = newDate\n }\n\n newDate = findValid(newDate, pressedKey)\n\n if (hasReachedEnd(newDate)) {\n return // Stop here\n }\n\n dates[`${dateType}Date`] = newDate\n\n // set fallbacks\n if (!isRange) {\n dates.endDate = newDate\n } else {\n if (!startDate) {\n dates.startDate = newDate\n }\n if (!endDate) {\n dates.endDate = newDate\n }\n }\n\n // make sure we stay on the same month\n if (onlyMonth || hideNavigation) {\n if (\n !isSameMonth(dates.startDate, startDate) ||\n !isSameMonth(dates.endDate, startDate) // Heads up, should this not be context.endDate?\n ) {\n return\n }\n }\n\n updateDates(dates, () => {\n // call after state update, so the input get's the latest state as well\n callOnSelect({\n event,\n nr,\n hidePicker: false,\n ...dates,\n })\n })\n\n // and set the focus back again\n if (tableRef && tableRef.current) {\n tableRef.current.focus({ preventScroll: true })\n }\n },\n [\n callOnSelect,\n findValid,\n hasReachedEnd,\n onKeyDown,\n startDate,\n endDate,\n updateDates,\n hideNavigation,\n isRange,\n keyNavCalc,\n nr,\n onlyMonth,\n endMonth,\n startMonth,\n ]\n )\n\n const cacheKey = useMemo(() => {\n return [\n nr,\n month,\n firstDayOfWeek,\n onlyMonth,\n hideNextMonthWeek,\n startDate,\n endDate,\n hoverDate,\n maxDate,\n minDate,\n ].join('|')\n }, [\n nr,\n month,\n firstDayOfWeek,\n onlyMonth,\n hideNextMonthWeek,\n startDate,\n endDate,\n hoverDate,\n maxDate,\n minDate,\n ])\n\n const weekDays = useMemo(() => {\n // Cache the result, just because we then avoid at least double calc because of reconciliation,\n // but we do not avoid calculating every day during hover or select\n\n if (cache.current[cacheKey]) {\n return cache.current[cacheKey]\n }\n\n let count = 0\n\n const days = getDays(month).reduce((acc, cur, i) => {\n // Normalize the data for table consumption\n acc[count] = acc[count] || []\n acc[count].push(cur)\n if (i % 7 === 6) {\n count++\n }\n\n return acc\n }, {})\n\n cache.current[cacheKey] = Object.values(days)\n\n return cache.current[cacheKey]\n }, [cacheKey, getDays, month])\n\n return (\n <div\n className={classnames('dnb-date-picker__calendar', rtl && 'rtl')}\n lang={locale}\n >\n {!hideNavigation && !onlyMonth && (\n <div className=\"dnb-date-picker__header\">\n <DatePickerCalendarNav\n type={yearNavigation ? 'month' : 'both'}\n id={id}\n nr={nr}\n date={month}\n locale={locale}\n />\n {yearNavigation && (\n <DatePickerCalendarNav\n type=\"year\"\n id={id}\n nr={nr}\n date={month}\n locale={locale}\n />\n )}\n </div>\n )}\n {onlyMonth && (\n <div className=\"dnb-date-picker__header dnb-date-picker__header--only-month-label\">\n <label\n id={`${id}--title`}\n className=\"dnb-date-picker__header__title dnb-no-focus\"\n title={selectedMonth.replace(\n /%s/,\n formatDate(month, {\n locale,\n options: { month: 'long' },\n })\n )}\n tabIndex={-1}\n >\n {formatDate(month, {\n locale,\n options: { month: 'long' },\n })}\n </label>\n </div>\n )}\n <table\n role=\"grid\"\n className=\"dnb-no-focus\"\n tabIndex={0}\n aria-labelledby={`${id}--title`}\n onKeyDown={onKeyDownHandler}\n onMouseLeave={onMouseLeaveHandler}\n ref={tableRef}\n >\n {!hideDays && !onlyMonth && (\n <thead aria-hidden>\n <tr role=\"row\" className=\"dnb-date-picker__labels\">\n {getWeek(dayOffset(firstDayOfWeek)).map((day, i) => (\n <th\n key={i}\n role=\"columnheader\"\n scope=\"col\"\n className=\"dnb-date-picker__labels__day\"\n aria-label={formatDate(day, {\n locale,\n options: { weekday: 'long' },\n })}\n >\n {formatDate(day, {\n locale,\n options: { weekday: 'short' },\n }).substring(0, 2)}\n </th>\n ))}\n </tr>\n </thead>\n )}\n <tbody>\n {weekDays.map((week, i) => {\n return (\n <tr\n key={'week' + i}\n role=\"row\"\n className=\"dnb-date-picker__days\"\n >\n {week.map((day: DayObject, i) => {\n const title = formatDate(day.date, {\n locale,\n options: {\n weekday: 'long',\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n },\n })\n\n const handleAsDisabled =\n day.isLastMonth ||\n day.isNextMonth ||\n day.isDisabled ||\n day.isInactive\n\n const dateType = day.isStartDate\n ? 'start'\n : day.isEndDate\n ? 'end'\n : undefined\n const isSelectedDate =\n nr === 0 ? day.isStartDate : day.isEndDate\n\n // cell params\n const paramsCell = {\n tabIndex: -1,\n ...(dateType && { id: `${id}--button-${dateType}` }),\n ...(isSelectedDate && { ['aria-selected']: true }),\n } as React.HTMLProps<HTMLTableCellElement>\n\n // cell + button params\n const paramsButton = {\n ...(isSelectedDate && { ['aria-current']: 'date' }),\n } as ButtonProps\n\n return (\n <td\n key={'day' + i}\n role=\"gridcell\"\n className={classnames(\n 'dnb-date-picker__day',\n 'dnb-no-focus',\n buildDayClassNames(day)\n )}\n {...paramsCell}\n >\n <Button\n size=\"medium\"\n variant=\"secondary\"\n text={day.date.getDate()}\n bounding={true}\n disabled={handleAsDisabled}\n tabIndex={handleAsDisabled ? 0 : -1} // fix for NVDA\n aria-disabled={handleAsDisabled}\n aria-label={title}\n {...paramsButton}\n on_click={\n handleAsDisabled\n ? undefined\n : ({ event }) =>\n onSelectRange({\n day,\n isRange,\n startDate,\n endDate,\n resetDate,\n event,\n setHasClickedCalendarDay,\n onSelect: (state) => {\n updateDates(state, (dates) =>\n callOnSelect({\n ...dates,\n event,\n nr,\n hidePicker: !isRange,\n })\n )\n },\n })\n }\n onMouseOver={\n handleAsDisabled\n ? undefined\n : () =>\n onHoverDay({\n day,\n hoverDate,\n setHoverDate,\n })\n }\n onFocus={\n handleAsDisabled\n ? undefined\n : () =>\n onHoverDay({\n day,\n hoverDate,\n setHoverDate,\n })\n }\n />\n </td>\n )\n })}\n </tr>\n )\n })}\n </tbody>\n </table>\n </div>\n )\n}\n\nexport default DatePickerCalendar\n\ntype SelectRangeEvent = Pick<\n DatePickerContextValues,\n 'setHasClickedCalendarDay'\n> & {\n day: DayObject\n event?: React.MouseEvent<HTMLButtonElement>\n startDate?: Date\n endDate?: Date\n resetDate?: boolean\n isRange?: boolean\n onSelect?: DatePickerCalendarProps['onSelect']\n}\n\nfunction onSelectRange({\n day,\n isRange,\n startDate,\n endDate,\n onSelect,\n resetDate,\n event,\n setHasClickedCalendarDay,\n}: SelectRangeEvent) {\n event.persist()\n\n if (!isRange) {\n // set only date\n return onSelect({\n startDate: startOfDay(day.date),\n endDate: startOfDay(day.date),\n event,\n })\n\n // for setting date new on every selection, do this here\n }\n\n // Set to true to stop calendar views from changing in range mode when clicking a day\n setHasClickedCalendarDay(true)\n\n if (!startDate || (resetDate && startDate && endDate)) {\n // set startDate\n // user is selecting startDate\n return onSelect({\n startDate: startOfDay(day.date),\n endDate: undefined,\n event,\n })\n }\n\n // set either startDate or endDate\n const daysToStartDate = Math.abs(\n differenceInCalendarDays(startDate, day.date)\n )\n const daysToEndDate = Math.abs(\n differenceInCalendarDays(endDate, day.date)\n )\n\n const range = toRange(\n endDate && !resetDate && daysToStartDate < daysToEndDate\n ? endDate\n : startDate,\n day.date\n )\n\n return onSelect({\n startDate: startOfDay(range.startDate),\n endDate: startOfDay(range.endDate),\n event,\n })\n}\n\nfunction onHoverDay({\n day,\n hoverDate,\n setHoverDate,\n}: {\n day: CalendarDay\n hoverDate?: Date\n setHoverDate: (date: Date) => void\n}) {\n if (!isSameDay(day.date, hoverDate)) {\n setHoverDate?.(day.date)\n }\n}\n\nfunction buildDayClassNames(day: DayObject) {\n return classnames(\n {\n 'dnb-date-picker__day--start-date': day.isStartDate,\n 'dnb-date-picker__day--end-date': day.isEndDate,\n 'dnb-date-picker__day--preview': day.isPreview,\n 'dnb-date-picker__day--within-selection': day.isWithinSelection,\n 'dnb-date-picker__day--selectable': day.isSelectable,\n 'dnb-date-picker__day--inactive': day.isInactive,\n 'dnb-date-picker__day--disabled': day.isDisabled,\n 'dnb-date-picker__day--today': day.isToday,\n },\n day.className\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -9,7 +9,7 @@ import { addMonths, addYears, isSameMonth, isSameYear, subMonths, subYears } fro
|
|
|
9
9
|
import Button from '../Button';
|
|
10
10
|
import { useTranslation } from '../../shared';
|
|
11
11
|
import DatePickerContext from './DatePickerContext';
|
|
12
|
-
import { formatDate } from '
|
|
12
|
+
import { formatDate } from '../date-format/DateFormatUtils';
|
|
13
13
|
const titleFormats = {
|
|
14
14
|
both: {
|
|
15
15
|
month: 'long',
|
|
@@ -91,12 +91,12 @@ export function DatePickerCalendarNav(_ref) {
|
|
|
91
91
|
className: "dnb-date-picker__header__title dnb-no-focus",
|
|
92
92
|
title: title.replace(/%s/, formatDate(date, {
|
|
93
93
|
locale,
|
|
94
|
-
|
|
94
|
+
options: titleFormat
|
|
95
95
|
})),
|
|
96
96
|
tabIndex: -1
|
|
97
97
|
}, formatDate(date, {
|
|
98
98
|
locale,
|
|
99
|
-
|
|
99
|
+
options: titleFormat
|
|
100
100
|
})), React.createElement("div", {
|
|
101
101
|
className: "dnb-date-picker__header__nav"
|
|
102
102
|
}, React.createElement(CalendarNavButton, {
|
|
@@ -131,7 +131,7 @@ function CalendarNavButton(_ref3) {
|
|
|
131
131
|
const dateHandler = dateHandlers[dateType][type];
|
|
132
132
|
const title = translations[translationKey].replace(/%s/, formatDate(dateHandler(date, 1), {
|
|
133
133
|
locale,
|
|
134
|
-
|
|
134
|
+
options: dateFormat
|
|
135
135
|
}));
|
|
136
136
|
const disabled = dateLimit && navButtonDisabledHandlers[dateType](date, dateLimit);
|
|
137
137
|
const icon = type === 'prev' ? 'chevron_left' : 'chevron_right';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePickerCalendarNavigator.js","names":["React","useCallback","useContext","addMonths","addYears","isSameMonth","isSameYear","subMonths","subYears","Button","useTranslation","DatePickerContext","formatDate","titleFormats","both","month","year","dateHandlers","prev","next","DatePickerCalendarNav","_ref","type","id","nr","date","locale","minDate","maxDate","views","setViews","props","link","isLinkedCalendars","selectedMonth","selectedYear","DatePicker","title","titleFormat","buttonDateType","onNav","_ref2","navigationType","handlerType","updatedViews","map","view","_objectSpread","createElement","className","CalendarNavButton","dateLimit","dateType","dateFormat","onClick","replace","formatOptions","tabIndex","navButtonDisabledHandlers","_ref3","onKeyDown","translations","translationKey","capitalizeFirstLetter","dateHandler","disabled","icon","size","value","charAt","toLocaleUpperCase","slice"],"sources":["../../../../src/components/date-picker/DatePickerCalendarNavigator.tsx"],"sourcesContent":["import React, { useCallback, useContext } from 'react'\nimport {\n addMonths,\n addYears,\n isSameMonth,\n isSameYear,\n subMonths,\n subYears,\n} from 'date-fns'\nimport { CalendarNavigationEvent } from './DatePickerCalendar'\nimport classnames from 'classnames'\nimport Button from '../Button'\nimport { useTranslation } from '../../shared'\nimport DatePickerContext from './DatePickerContext'\nimport { InternalLocale } from '../../shared/Context'\nimport { formatDate } from './DatePickerCalc'\n\ntype CalendarNavigationDateType = 'month' | 'year'\ntype CalendarNavigationType = 'both' | CalendarNavigationDateType\n\nexport type DatePickerCalendarNavigationProps = Omit<\n React.HTMLProps<HTMLElement>,\n 'onSelect' | 'onChange'\n> & {\n type: CalendarNavigationType\n id: string\n nr?: number\n /**\n * To display what month should be shown in the first calendar by default. Defaults to the `date` respective `startDate`.\n */\n date?: Date\n\n /**\n * To define the locale used in the calendar. Needs to be an `date-fns` \"v2\" locale object, like `import enLocale from 'date-fns/locale/en-GB'`. Defaults to `nb-NO`.\n */\n locale?: InternalLocale\n}\n\ntype TitleFormatMap = {\n // eslint-disable-next-line no-unused-vars\n [T in CalendarNavigationType]: Intl.DateTimeFormatOptions\n}\n\nconst titleFormats: TitleFormatMap = {\n both: {\n month: 'long',\n year: 'numeric',\n },\n month: { month: 'long' },\n year: { year: 'numeric' },\n}\n\ntype CalendarDateHandlers = {\n // eslint-disable-next-line no-unused-vars\n [D in CalendarNavigationDateType]: {\n // eslint-disable-next-line no-unused-vars\n [B in CalendarNavButtonType]: typeof subMonths\n }\n}\n\nconst dateHandlers: CalendarDateHandlers = {\n month: {\n prev: subMonths,\n next: addMonths,\n },\n year: {\n prev: subYears,\n next: addYears,\n },\n}\n\nexport function DatePickerCalendarNav({\n type = 'both',\n id,\n nr,\n date,\n locale,\n}: DatePickerCalendarNavigationProps) {\n const {\n minDate,\n maxDate,\n views,\n setViews,\n props: { link: isLinkedCalendars },\n } = useContext(DatePickerContext)\n const { selectedMonth, selectedYear } = useTranslation().DatePicker\n\n const title = type === 'year' ? selectedYear : selectedMonth\n const titleFormat = titleFormats[type]\n const buttonDateType = type === 'year' ? 'year' : 'month'\n\n const onNav = useCallback(\n ({ nr, type: navigationType }: CalendarNavigationEvent) => {\n const handlerType = type === 'year' ? 'year' : 'month'\n const updatedViews = views.map((view) => {\n if (view.nr === nr || (isLinkedCalendars && view.nr === 1)) {\n const month = dateHandlers[handlerType][navigationType](\n view.month,\n 1\n )\n\n return { ...view, month }\n }\n\n return view\n })\n setViews(updatedViews)\n },\n [type, views, setViews, isLinkedCalendars]\n )\n\n return (\n <div\n className={classnames(\n 'dnb-date-picker__header__row',\n type === 'year' && 'dnb-date-picker__header__row--year'\n )}\n >\n <div className=\"dnb-date-picker__header__nav\">\n <CalendarNavButton\n type=\"prev\"\n nr={nr}\n date={date}\n dateLimit={minDate}\n dateType={buttonDateType}\n dateFormat={titleFormat}\n locale={locale}\n onClick={onNav}\n />\n </div>\n <label\n id={`${id}--title`}\n className=\"dnb-date-picker__header__title dnb-no-focus\"\n title={title.replace(\n /%s/,\n formatDate(date, { locale, formatOptions: titleFormat })\n )}\n tabIndex={-1}\n >\n {formatDate(date, { locale, formatOptions: titleFormat })}\n </label>\n <div className=\"dnb-date-picker__header__nav\">\n <CalendarNavButton\n type=\"next\"\n dateType={buttonDateType}\n nr={nr}\n date={date}\n dateLimit={maxDate}\n dateFormat={titleFormat}\n locale={locale}\n onClick={onNav}\n />\n </div>\n </div>\n )\n}\n\nexport type CalendarNavButtonType = 'prev' | 'next'\n\nexport type CalendarNavButtonProps = {\n dateType: CalendarNavigationDateType\n type: CalendarNavButtonType\n nr: number\n dateFormat: Intl.DateTimeFormatOptions\n date: Date\n dateLimit: Date\n locale: InternalLocale\n onClick: ({\n nr,\n type,\n }: {\n nr: number\n type: CalendarNavButtonProps['type']\n }) => void\n onKeyDown?: (event: React.KeyboardEvent<HTMLButtonElement>) => void\n}\n\ntype NavButtonDisabledHandlerMap = {\n // eslint-disable-next-line no-unused-vars\n [T in CalendarNavigationDateType]: typeof isSameMonth\n}\n\nconst navButtonDisabledHandlers: NavButtonDisabledHandlerMap = {\n month: isSameMonth,\n year: isSameYear,\n}\n\nfunction CalendarNavButton({\n type,\n dateType,\n dateFormat,\n nr,\n date,\n dateLimit,\n locale,\n onClick,\n onKeyDown,\n}: CalendarNavButtonProps) {\n const translations = useTranslation().DatePicker\n\n const translationKey = `${type}${capitalizeFirstLetter(dateType)}`\n const dateHandler = dateHandlers[dateType][type]\n\n const title = translations[translationKey].replace(\n /%s/,\n formatDate(dateHandler(date, 1), {\n locale,\n formatOptions: dateFormat,\n })\n )\n\n const disabled =\n dateLimit && navButtonDisabledHandlers[dateType](date, dateLimit)\n\n const icon = type === 'prev' ? 'chevron_left' : 'chevron_right'\n\n return (\n <Button\n className={classnames(`dnb-date-picker__${type}`, { disabled })}\n icon={icon}\n size=\"small\"\n aria-label={title}\n onClick={() => onClick && !disabled && onClick({ nr, type })}\n onKeyDown={onKeyDown}\n />\n )\n}\n\nfunction capitalizeFirstLetter(value: string) {\n return `${value.charAt(0).toLocaleUpperCase()}${value.slice(1)}`\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"DatePickerCalendarNavigator.js","names":["React","useCallback","useContext","addMonths","addYears","isSameMonth","isSameYear","subMonths","subYears","Button","useTranslation","DatePickerContext","formatDate","titleFormats","both","month","year","dateHandlers","prev","next","DatePickerCalendarNav","_ref","type","id","nr","date","locale","minDate","maxDate","views","setViews","props","link","isLinkedCalendars","selectedMonth","selectedYear","DatePicker","title","titleFormat","buttonDateType","onNav","_ref2","navigationType","handlerType","updatedViews","map","view","_objectSpread","createElement","className","CalendarNavButton","dateLimit","dateType","dateFormat","onClick","replace","options","tabIndex","navButtonDisabledHandlers","_ref3","onKeyDown","translations","translationKey","capitalizeFirstLetter","dateHandler","disabled","icon","size","value","charAt","toLocaleUpperCase","slice"],"sources":["../../../../src/components/date-picker/DatePickerCalendarNavigator.tsx"],"sourcesContent":["import React, { useCallback, useContext } from 'react'\nimport {\n addMonths,\n addYears,\n isSameMonth,\n isSameYear,\n subMonths,\n subYears,\n} from 'date-fns'\nimport { CalendarNavigationEvent } from './DatePickerCalendar'\nimport classnames from 'classnames'\nimport Button from '../Button'\nimport { useTranslation } from '../../shared'\nimport DatePickerContext from './DatePickerContext'\nimport { InternalLocale } from '../../shared/Context'\nimport { formatDate } from '../date-format/DateFormatUtils'\n\ntype CalendarNavigationDateType = 'month' | 'year'\ntype CalendarNavigationType = 'both' | CalendarNavigationDateType\n\nexport type DatePickerCalendarNavigationProps = Omit<\n React.HTMLProps<HTMLElement>,\n 'onSelect' | 'onChange'\n> & {\n type: CalendarNavigationType\n id: string\n nr?: number\n /**\n * To display what month should be shown in the first calendar by default. Defaults to the `date` respective `startDate`.\n */\n date?: Date\n\n /**\n * To define the locale used in the calendar. Needs to be an `date-fns` \"v2\" locale object, like `import enLocale from 'date-fns/locale/en-GB'`. Defaults to `nb-NO`.\n */\n locale?: InternalLocale\n}\n\ntype TitleFormatMap = {\n // eslint-disable-next-line no-unused-vars\n [T in CalendarNavigationType]: Intl.DateTimeFormatOptions\n}\n\nconst titleFormats: TitleFormatMap = {\n both: {\n month: 'long',\n year: 'numeric',\n },\n month: { month: 'long' },\n year: { year: 'numeric' },\n}\n\ntype CalendarDateHandlers = {\n // eslint-disable-next-line no-unused-vars\n [D in CalendarNavigationDateType]: {\n // eslint-disable-next-line no-unused-vars\n [B in CalendarNavButtonType]: typeof subMonths\n }\n}\n\nconst dateHandlers: CalendarDateHandlers = {\n month: {\n prev: subMonths,\n next: addMonths,\n },\n year: {\n prev: subYears,\n next: addYears,\n },\n}\n\nexport function DatePickerCalendarNav({\n type = 'both',\n id,\n nr,\n date,\n locale,\n}: DatePickerCalendarNavigationProps) {\n const {\n minDate,\n maxDate,\n views,\n setViews,\n props: { link: isLinkedCalendars },\n } = useContext(DatePickerContext)\n const { selectedMonth, selectedYear } = useTranslation().DatePicker\n\n const title = type === 'year' ? selectedYear : selectedMonth\n const titleFormat = titleFormats[type]\n const buttonDateType = type === 'year' ? 'year' : 'month'\n\n const onNav = useCallback(\n ({ nr, type: navigationType }: CalendarNavigationEvent) => {\n const handlerType = type === 'year' ? 'year' : 'month'\n const updatedViews = views.map((view) => {\n if (view.nr === nr || (isLinkedCalendars && view.nr === 1)) {\n const month = dateHandlers[handlerType][navigationType](\n view.month,\n 1\n )\n\n return { ...view, month }\n }\n\n return view\n })\n setViews(updatedViews)\n },\n [type, views, setViews, isLinkedCalendars]\n )\n\n return (\n <div\n className={classnames(\n 'dnb-date-picker__header__row',\n type === 'year' && 'dnb-date-picker__header__row--year'\n )}\n >\n <div className=\"dnb-date-picker__header__nav\">\n <CalendarNavButton\n type=\"prev\"\n nr={nr}\n date={date}\n dateLimit={minDate}\n dateType={buttonDateType}\n dateFormat={titleFormat}\n locale={locale}\n onClick={onNav}\n />\n </div>\n <label\n id={`${id}--title`}\n className=\"dnb-date-picker__header__title dnb-no-focus\"\n title={title.replace(\n /%s/,\n formatDate(date, { locale, options: titleFormat })\n )}\n tabIndex={-1}\n >\n {formatDate(date, { locale, options: titleFormat })}\n </label>\n <div className=\"dnb-date-picker__header__nav\">\n <CalendarNavButton\n type=\"next\"\n dateType={buttonDateType}\n nr={nr}\n date={date}\n dateLimit={maxDate}\n dateFormat={titleFormat}\n locale={locale}\n onClick={onNav}\n />\n </div>\n </div>\n )\n}\n\nexport type CalendarNavButtonType = 'prev' | 'next'\n\nexport type CalendarNavButtonProps = {\n dateType: CalendarNavigationDateType\n type: CalendarNavButtonType\n nr: number\n dateFormat: Intl.DateTimeFormatOptions\n date: Date\n dateLimit: Date\n locale: InternalLocale\n onClick: ({\n nr,\n type,\n }: {\n nr: number\n type: CalendarNavButtonProps['type']\n }) => void\n onKeyDown?: (event: React.KeyboardEvent<HTMLButtonElement>) => void\n}\n\ntype NavButtonDisabledHandlerMap = {\n // eslint-disable-next-line no-unused-vars\n [T in CalendarNavigationDateType]: typeof isSameMonth\n}\n\nconst navButtonDisabledHandlers: NavButtonDisabledHandlerMap = {\n month: isSameMonth,\n year: isSameYear,\n}\n\nfunction CalendarNavButton({\n type,\n dateType,\n dateFormat,\n nr,\n date,\n dateLimit,\n locale,\n onClick,\n onKeyDown,\n}: CalendarNavButtonProps) {\n const translations = useTranslation().DatePicker\n\n const translationKey = `${type}${capitalizeFirstLetter(dateType)}`\n const dateHandler = dateHandlers[dateType][type]\n\n const title = translations[translationKey].replace(\n /%s/,\n formatDate(dateHandler(date, 1), {\n locale,\n options: dateFormat,\n })\n )\n\n const disabled =\n dateLimit && navButtonDisabledHandlers[dateType](date, dateLimit)\n\n const icon = type === 'prev' ? 'chevron_left' : 'chevron_right'\n\n return (\n <Button\n className={classnames(`dnb-date-picker__${type}`, { disabled })}\n icon={icon}\n size=\"small\"\n aria-label={title}\n onClick={() => onClick && !disabled && onClick({ nr, type })}\n onKeyDown={onKeyDown}\n />\n )\n}\n\nfunction capitalizeFirstLetter(value: string) {\n return `${value.charAt(0).toLocaleUpperCase()}${value.slice(1)}`\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -20,11 +20,12 @@ import Button from '../button/Button';
|
|
|
20
20
|
import Input, { SubmitButton } from '../input/Input';
|
|
21
21
|
import { warn, validateDOMAttributes, toCapitalized } from '../../shared/component-helper';
|
|
22
22
|
import { IS_ANDROID, IS_IOS } from '../../shared/helpers';
|
|
23
|
-
import { convertStringToDate
|
|
23
|
+
import { convertStringToDate } from './DatePickerCalc';
|
|
24
24
|
import DatePickerContext from './DatePickerContext';
|
|
25
25
|
import { Context, useTranslation } from '../../shared';
|
|
26
26
|
import usePartialDates from './hooks/usePartialDates';
|
|
27
27
|
import useInputDates from './hooks/useInputDates';
|
|
28
|
+
import { formatDate } from '../date-format/DateFormatUtils';
|
|
28
29
|
const defaultProps = {
|
|
29
30
|
separatorRegExp: /[-/ ]/g,
|
|
30
31
|
statusState: 'error',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePickerInput.js","names":["React","useCallback","useContext","useMemo","useRef","useState","isValid","parseISO","classnames","TextMask","Button","Input","SubmitButton","warn","validateDOMAttributes","toCapitalized","IS_ANDROID","IS_IOS","convertStringToDate","formatDate","DatePickerContext","Context","useTranslation","usePartialDates","useInputDates","defaultProps","separatorRegExp","statusState","opened","DatePickerInput","externalProps","props","_objectSpread","maskOrder","defaultMaskOrder","maskPlaceholder","defaultMaskPlaceholder","DatePicker","isRange","id","title","submitAttributes","onFocus","onBlur","onChange","onSubmit","selectedDateTitle","showInput","inputElement","lang","disabled","skeleton","size","status","statusProps","attributes","_objectWithoutProperties","_excluded","focusState","setFocusState","partialDatesRef","setPartialDates","invalidDatesRef","invalidStartDate","invalidEndDate","isDateFullyFilledOutRef","updateDates","callOnChangeHandler","getReturnObject","startDate","endDate","onType","label","inputDates","updateInputDates","translation","locale","hasHadValidDate","modeDate","inputRefs","startDayRef","current","undefined","startMonthRef","startYearRef","endDayRef","endMonthRef","endYearRef","dateRefs","startDay","startMonth","startYear","endDay","endMonth","endYear","syncDateRefs","temporaryDates","refList","focusMode","maskList","separators","match","split","reduce","acc","cur","push","length","shift","copyHandler","event","mode","date","preventDefault","valueToCopy","clipboardData","setData","pasteHandler","success","window","getData","possibleFormats","forEach","sep","replace","reverse","join","index","dateFormat","error","callOnChangeAsInvalid","params","datesFromContext","derivedStartDate","derivedEndDate","callOnChange","_ref","state","dates","callOnType","_ref2","getDates","partialStartDate","partialEndDate","parsedStartDate","parsedEndDate","isStartDateValid","isEndDateValid","_getReturnObject","is_valid","is_valid_start_date","is_valid_end_date","returnObject","_excluded2","typedDates","start_date","end_date","setDate","type","persist","value","target","fallback","year","getFullYear","month","getMonth","day","getDate","Date","parseFloat","String","isValidDate","test","dateString","dateSetters","set_startDay","set_startMonth","set_startYear","set_endDay","set_endMonth","set_endYear","onFocusHandler","isNaN","setCursorPosition","onBlurHandler","onKeyDownHandler","keyCode","key","selectionStart","selectionEnd","getAttribute","firstSelectionStart","firstSelectionEnd","wait","secondSelectionStart","refListArray","findIndex","_ref3","isLastChar","isFirstChar","isMovingForward","isExplicitForward","hasNextField","_refListArray","nextSibling","withoutDelay","name","slice","isMovingBackward","isPressingBackspace","_refListArray2","prevSibling","endPos","onInputHandler","currentTarget","nativeEvent","inputType","getPlaceholderChar","indexOf","generateDateList","element","map","i","placeholderChar","isRangeLabel","onInput","onKeyDown","e","onPaste","onCopy","DateField","isValidElement","InputElement","inputSizeClassName","createElement","Fragment","_extends","className","mask","inputRef","hidden","htmlFor","renderInputElement","startDateList","endDateList","_span","ariaLabel","openPickerText","SubmitElement","innerRef","ref","input_state","input_element","status_state","submit_element","icon","variant","on_submit","on_click","position","arguments","options","focus","select","setSelectionRange","process","env","NODE_ENV","setTimeout","_ref4","_excluded3","guide","inputMode","showMask","keepCharPositions","autoComplete","autoCapitalize","spellCheck","autoCorrect","dateRefValue","inputDateValue","duration","Promise","r"],"sources":["../../../../src/components/date-picker/DatePickerInput.tsx"],"sourcesContent":["/**\n * Web DatePicker Component\n *\n */\n\nimport React, {\n MutableRefObject,\n useCallback,\n useContext,\n useMemo,\n useRef,\n useState,\n} from 'react'\n\n// date-fns\nimport isValid from 'date-fns/isValid'\nimport parseISO from 'date-fns/parseISO'\n\nimport classnames from 'classnames'\nimport TextMask, { TextMaskProps } from '../input-masked/TextMask'\nimport Button from '../button/Button'\nimport Input, { SubmitButton } from '../input/Input'\nimport type { InputInputElement, InputSize } from '../Input'\nimport {\n warn,\n validateDOMAttributes,\n toCapitalized,\n} from '../../shared/component-helper'\nimport { IS_ANDROID, IS_IOS } from '../../shared/helpers'\nimport { convertStringToDate, formatDate } from './DatePickerCalc'\nimport DatePickerContext from './DatePickerContext'\n\nimport type {\n FormStatusProps,\n FormStatusState,\n FormStatusText,\n} from '../FormStatus'\nimport type { SkeletonShow } from '../Skeleton'\nimport { ReturnObject } from './DatePickerProvider'\nimport { DatePickerEventAttributes, DatePickerProps } from './DatePicker'\nimport { Context, useTranslation } from '../../shared'\nimport usePartialDates from './hooks/usePartialDates'\nimport useInputDates, { DatePickerInputDates } from './hooks/useInputDates'\n\nexport type DatePickerInputProps = Omit<\n React.HTMLProps<HTMLInputElement>,\n | 'children'\n | 'ref'\n | 'value'\n | 'size'\n | 'onFocus'\n | 'onBlur'\n | 'onSubmit'\n | 'label'\n> & {\n selectedDateTitle?: string\n maskOrder?: DatePickerProps['maskOrder']\n maskPlaceholder?: DatePickerProps['maskPlaceholder']\n separatorRegExp?: RegExp\n submitAttributes?: Record<string, unknown>\n isRange?: boolean\n /**\n * The sizes you can choose is `small` (1.5rem), `default` (2rem), `medium` (2.5rem) and `large` (3rem) are supported component sizes. Defaults to `default` / `null`.\n */\n size?: InputSize\n /**\n * Text with a status message. The style defaults to an error message. You can use `true` to only get the status color, without a message.\n */\n status?: FormStatusText\n /**\n * Defines the state of the status. Currently, there are two statuses `[error, info]`. Defaults to `error`.\n */\n statusState?: FormStatusState\n /**\n * Use an object to define additional FormStatus properties.\n */\n statusProps?: FormStatusProps\n /**\n * Gives you the possibility to use a plain/vanilla `<input />` HTML element by defining it as a string `input_element=\"input\"`, a React element, or a render function `input_element={(internalProps) => (<Return />)}`. Can also be used in circumstances where the `react-text-mask` not should be used, e.g. in testing environments. Defaults to custom masked input.\n */\n inputElement?: InputInputElement\n /**\n * If set to `true`, an overlaying skeleton with animation will be shown.\n */\n skeleton?: SkeletonShow\n /**\n * To open the date-picker by default. Defaults to `false`.\n */\n opened?: boolean\n showInput?: boolean\n onSubmit?: (event: React.MouseEvent<HTMLButtonElement>) => void\n onChange?: (\n event: ReturnObject<React.ChangeEvent<HTMLInputElement>>\n ) => void\n /**\n * Will be called once the input gets focus.\n */\n onFocus?: (\n event: ReturnObject<React.FocusEvent<HTMLInputElement>>\n ) => void\n /**\n * Will be called once the input lose focus.\n */\n onBlur?: (\n event: ReturnObject<React.FocusEvent<HTMLInputElement>>\n ) => void\n}\n\nexport type InvalidDates = {\n invalidDate?: string\n invalidStartDate?: string\n invalidEndDate?: string\n}\n\nconst defaultProps: DatePickerInputProps = {\n separatorRegExp: /[-/ ]/g,\n statusState: 'error',\n opened: false,\n}\n\nfunction DatePickerInput(externalProps: DatePickerInputProps) {\n const props = { ...defaultProps, ...externalProps }\n\n const {\n maskOrder: defaultMaskOrder,\n maskPlaceholder: defaultMaskPlaceholder,\n } = useTranslation().DatePicker\n\n const {\n isRange,\n maskOrder = defaultMaskOrder,\n separatorRegExp,\n id,\n title,\n submitAttributes,\n maskPlaceholder = defaultMaskPlaceholder, // eslint-disable-line\n onFocus,\n onBlur,\n onChange, // eslint-disable-line\n onSubmit, // eslint-disable-line\n selectedDateTitle, // eslint-disable-line\n showInput, // eslint-disable-line\n inputElement,\n lang,\n disabled,\n skeleton,\n opened,\n size,\n status,\n statusState,\n statusProps,\n\n ...attributes\n } = props\n const [focusState, setFocusState] = useState<string>('virgin')\n\n const { partialDatesRef, setPartialDates } = usePartialDates()\n\n const invalidDatesRef = useRef<InvalidDates>({\n invalidStartDate: null,\n invalidEndDate: null,\n })\n const isDateFullyFilledOutRef = useRef(false)\n\n const {\n updateDates,\n callOnChangeHandler,\n getReturnObject,\n startDate,\n endDate,\n props: { onType, label },\n } = useContext(DatePickerContext)\n\n const { inputDates, updateInputDates } = useInputDates({\n startDate,\n endDate,\n })\n\n const translation = useTranslation().DatePicker\n const { locale } = useContext(Context)\n\n const hasHadValidDate = isValid(startDate) || isValid(endDate)\n\n const modeDate = useMemo(\n () => ({\n startDate,\n endDate,\n }),\n [startDate, endDate]\n )\n\n const inputRefs = useRef<\n Record<string, MutableRefObject<HTMLInputElement>>\n >({\n startDayRef: { current: undefined },\n startMonthRef: { current: undefined },\n startYearRef: { current: undefined },\n endDayRef: { current: undefined },\n endMonthRef: { current: undefined },\n endYearRef: { current: undefined },\n })\n\n const dateRefs = useRef<DatePickerInputDates>({\n startDay: '',\n startMonth: '',\n startYear: '',\n endDay: '',\n endMonth: '',\n endYear: '',\n })\n\n // Keep dateRefs in sync with inputDates on re-render\n syncDateRefs(dateRefs, inputDates)\n\n const temporaryDates = useRef<Record<string, Date>>({\n startDate: undefined,\n endDate: undefined,\n })\n\n const refList = useRef<Array<MutableRefObject<HTMLInputElement>>>()\n\n const focusMode = useRef<string>()\n\n const maskList = useMemo(() => {\n const separators = maskOrder.match(separatorRegExp)\n\n return maskOrder\n .split(separatorRegExp)\n .reduce<Array<string>>((acc, cur) => {\n if (!cur) {\n return acc\n }\n\n acc.push(cur)\n\n if (separators.length > 0) {\n // makes sure that separators are added at the correct places and removed from array when added\n acc.push(separators.shift())\n }\n\n return acc\n }, [])\n }, [maskOrder, separatorRegExp])\n\n const copyHandler = useCallback(\n (\n event: React.ClipboardEvent<HTMLInputElement>,\n mode: DatePickerEventAttributes['mode']\n ) => {\n const date = mode === 'end' ? endDate : startDate\n if (isValid(date)) {\n event.preventDefault()\n const valueToCopy = formatDate(date, { locale })\n event.clipboardData.setData('text/plain', valueToCopy)\n }\n },\n [endDate, locale, startDate]\n )\n\n const pasteHandler = useCallback(\n async (event: React.ClipboardEvent<HTMLInputElement>) => {\n if (!focusMode.current) {\n return // Stop here\n }\n\n const success = (\n event.clipboardData ||\n (typeof window !== 'undefined' && window['clipboardData'])\n ).getData('text/plain')\n\n if (!success) {\n return // Stop here\n }\n\n event.preventDefault()\n\n try {\n const separators = ['.', '/']\n const possibleFormats = ['yyyy-MM-dd']\n\n // TODO: Merge these loops\n possibleFormats.forEach((date) => {\n separators.forEach((sep) => {\n possibleFormats.push(date.replace(/-/g, sep))\n })\n })\n\n possibleFormats.forEach((date) => {\n possibleFormats.push(date.split('').reverse().join(''))\n })\n\n let date: Date\n let index = 0\n\n for (index; index < possibleFormats.length; ++index) {\n date = convertStringToDate(success, {\n dateFormat: possibleFormats[index],\n })\n\n if (date) {\n break\n }\n }\n\n const mode =\n focusMode.current === 'start' ? 'startDate' : 'endDate'\n\n if (date) {\n updateDates({\n [mode]: date,\n })\n }\n } catch (error: unknown) {\n warn(error)\n }\n },\n [updateDates]\n )\n\n const callOnChangeAsInvalid = useCallback(\n (params: {\n endDate?: Date\n startDate?: Date\n event: React.ChangeEvent<HTMLInputElement>\n }) => {\n // Should fire if user has filled out an invalid date,\n // or if the date was valid. Like if the user has pressed backspace or removed the valid date.\n if (isDateFullyFilledOutRef.current || hasHadValidDate) {\n const datesFromContext = { startDate, endDate }\n\n const {\n startDate: derivedStartDate,\n endDate: derivedEndDate,\n event,\n } = {\n ...datesFromContext,\n ...params,\n }\n\n callOnChangeHandler({\n startDate: derivedStartDate,\n endDate: derivedEndDate,\n event,\n ...invalidDatesRef.current,\n })\n }\n },\n [callOnChangeHandler, hasHadValidDate, startDate, endDate]\n )\n\n const callOnChange = useCallback(\n ({\n startDate,\n endDate,\n event,\n }: {\n startDate?: Date\n endDate?: Date\n event:\n | React.ChangeEvent<HTMLInputElement>\n | React.KeyboardEvent<HTMLInputElement>\n }) => {\n const state = {}\n if (typeof startDate !== 'undefined' && isValid(startDate)) {\n state['startDate'] = startDate\n }\n if (!isRange) {\n endDate = startDate\n }\n if (typeof endDate !== 'undefined' && isValid(endDate)) {\n state['endDate'] = endDate\n }\n\n updateDates(state, (dates) => {\n if (\n (typeof startDate !== 'undefined' && isValid(startDate)) ||\n (typeof endDate !== 'undefined' && isValid(endDate))\n ) {\n callOnChangeHandler({\n event,\n ...dates,\n ...invalidDatesRef.current,\n })\n }\n })\n },\n [updateDates, callOnChangeHandler, isRange]\n )\n\n const callOnType = useCallback(\n ({ event }: { event: React.ChangeEvent<HTMLInputElement> }) => {\n const getDates = () =>\n ['start', 'end'].reduce(\n (acc, mode) => {\n acc[`${mode}Date`] = [\n dateRefs.current[`${mode}Year`] ||\n inputDates[`${mode}Year`] ||\n 'yyyy',\n dateRefs.current[`${mode}Month`] ||\n inputDates[`${mode}Month`] ||\n 'mm',\n dateRefs.current[`${mode}Day`] ||\n inputDates[`${mode}Day`] ||\n 'dd',\n ].join('-')\n return acc\n },\n { startDate: undefined, endDate: undefined }\n )\n\n // Get the typed dates, so we can ...\n const { startDate, endDate } = getDates()\n\n // Get the partial dates, so we can know if something was typed or not in an optional date field\n setPartialDates({\n partialStartDate: startDate,\n // Only set endDate if in range mode\n ...(isRange && { partialEndDate: endDate }),\n })\n\n const parsedStartDate = parseISO(startDate)\n const parsedEndDate = parseISO(endDate)\n\n const isStartDateValid = isValid(parsedStartDate)\n const isEndDateValid = isValid(parsedEndDate)\n\n const {\n is_valid,\n is_valid_start_date,\n is_valid_end_date,\n ...returnObject\n } = getReturnObject({\n startDate: isStartDateValid ? parsedStartDate : null,\n endDate: isEndDateValid ? parsedEndDate : null,\n event,\n ...partialDatesRef.current,\n ...invalidDatesRef.current,\n })\n\n // Re-assigns dates to the typed date, instead of `null` from getReturnObject, if dates are invalid\n const typedDates = {\n ...(!isRange && is_valid === false && { date: startDate }),\n ...(isRange &&\n is_valid_start_date === false && { start_date: startDate }),\n ...(isRange &&\n is_valid_end_date === false && { end_date: endDate }),\n }\n\n onType?.({\n is_valid,\n is_valid_start_date,\n is_valid_end_date,\n ...returnObject,\n ...typedDates,\n })\n },\n [\n setPartialDates,\n isRange,\n getReturnObject,\n partialDatesRef,\n onType,\n inputDates,\n ]\n )\n\n const setDate = useCallback(\n (\n event: React.ChangeEvent<HTMLInputElement>,\n mode: 'start' | 'end',\n type: 'Day' | 'Month' | 'Year'\n ) => {\n event.persist() // since we have later a state update and afterwards the callback\n\n const value = (event.target as HTMLInputElement).value\n\n dateRefs.current[`${mode}${type}`] = value\n\n if (modeDate[`${mode}Date`]) {\n temporaryDates.current[`${mode}Date`] = modeDate[`${mode}Date`]\n }\n\n const fallback = temporaryDates.current[`${mode}Date`]\n\n // provide fallbacks to create a temp fallback\n const year =\n dateRefs.current[`${mode}Year`] ||\n (fallback && fallback.getFullYear())\n const month =\n dateRefs.current[`${mode}Month`] ||\n (fallback && fallback.getMonth() + 1)\n const day =\n dateRefs.current[`${mode}Day`] || (fallback && fallback.getDate())\n\n // calculate new date\n const date = new Date(\n parseFloat(String(year)),\n parseFloat(String(month)) - 1,\n parseFloat(String(day))\n )\n\n const isValidDate =\n !/[^0-9]/.test(String(day)) &&\n !/[^0-9]/.test(String(month)) &&\n !/[^0-9]/.test(String(year)) &&\n isValid(date) &&\n date.getDate() == parseFloat(String(day)) &&\n date.getMonth() + 1 == parseFloat(String(month)) &&\n date.getFullYear() == parseFloat(String(year))\n\n const dateString = `${year}-${month}-${day}`\n\n isDateFullyFilledOutRef.current =\n /^[0-9]{4}-[0-9]{2}-[0-9]{2}$/.test(dateString)\n\n // update the date\n if (isValidDate) {\n invalidDatesRef.current = {\n ...invalidDatesRef.current,\n ...(mode === 'start'\n ? { invalidStartDate: null }\n : { invalidEndDate: null }),\n }\n\n callOnChange({\n [`${mode}Date`]: date,\n event,\n })\n } else {\n updateDates({\n [`${mode}Date`]: null,\n })\n updateInputDates({ [`${mode}${type}`]: value })\n\n invalidDatesRef.current = {\n ...invalidDatesRef.current,\n ...(mode === 'start'\n ? { invalidStartDate: dateString }\n : { invalidEndDate: dateString }),\n }\n\n callOnChangeAsInvalid({\n [`${mode}Date`]: null,\n event,\n })\n }\n\n callOnType({ event })\n },\n [\n updateDates,\n callOnChange,\n callOnChangeAsInvalid,\n callOnType,\n modeDate,\n dateRefs,\n temporaryDates,\n updateInputDates,\n ]\n )\n\n const dateSetters = useMemo(\n () => ({\n set_startDay: (event: React.ChangeEvent<HTMLInputElement>) => {\n setDate(event, 'start', 'Day')\n },\n\n set_startMonth: (event: React.ChangeEvent<HTMLInputElement>) => {\n setDate(event, 'start', 'Month')\n },\n\n set_startYear: (event: React.ChangeEvent<HTMLInputElement>) => {\n setDate(event, 'start', 'Year')\n },\n\n set_endDay: (event: React.ChangeEvent<HTMLInputElement>) => {\n setDate(event, 'end', 'Day')\n },\n\n set_endMonth: (event: React.ChangeEvent<HTMLInputElement>) => {\n setDate(event, 'end', 'Month')\n },\n\n set_endYear: (event: React.ChangeEvent<HTMLInputElement>) => {\n setDate(event, 'end', 'Year')\n },\n }),\n [setDate]\n )\n\n const onFocusHandler = useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n setFocusState('focus')\n\n onFocus?.({\n ...event,\n ...getReturnObject({ event }),\n })\n\n if (isNaN(parseFloat(event.target.value))) {\n setCursorPosition(event.target)\n }\n },\n [getReturnObject, onFocus]\n )\n\n const onBlurHandler = useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n focusMode.current = null\n setFocusState('blur')\n\n onBlur?.({\n ...event,\n ...getReturnObject({ event, ...partialDatesRef.current }),\n })\n },\n [onBlur, getReturnObject, partialDatesRef]\n )\n\n const onKeyDownHandler = useCallback(\n async (event: React.KeyboardEvent<HTMLInputElement>) => {\n const keyCode = event.key\n const target = event.target as HTMLInputElement\n\n if (target.selectionStart !== target.selectionEnd) {\n setCursorPosition(target)\n }\n\n // The rest is for value entry\n\n const size = parseFloat(target.getAttribute('size'))\n const firstSelectionStart = target.selectionStart\n const firstSelectionEnd = target.selectionEnd\n\n // To get the correct position afterwards.\n // Use 10ms in order to make it work on iOS Safari\n await wait(IS_IOS ? 10 : 1)\n\n const secondSelectionStart = target.selectionStart\n\n // Always false (since the old keycode function set number keys to undefined) but needed to not break tests\n const isValid = /[0-9]/g.test(keyCode)\n const refListArray = refList.current\n\n const index = refListArray.findIndex(\n ({ current }) => current === target\n )\n\n const isLastChar = secondSelectionStart === size\n const isFirstChar = firstSelectionStart === size\n\n const isMovingForward =\n keyCode !== 'ArrowLeft' &&\n keyCode !== 'Backspace' &&\n isValid &&\n isLastChar\n\n const isExplicitForward =\n (keyCode === 'ArrowRight' || keyCode === 'Enter') && isFirstChar\n\n const hasNextField = index < refListArray.length - 1\n\n if (hasNextField && (isMovingForward || isExplicitForward)) {\n // stop in case there is no next input element\n if (!refListArray[index + 1].current) {\n return // stop here\n }\n const nextSibling = refListArray[index + 1]?.current\n\n if (nextSibling) {\n setCursorPosition(nextSibling, 0, { withoutDelay: true })\n }\n\n // When the cursor is at the end of the input\n // and the user types a number, we want to set the value on the next input.\n if (\n parseFloat(keyCode) <= 9 &&\n firstSelectionStart === target.size\n ) {\n const name = toCapitalized(\n nextSibling\n .getAttribute('class')\n .match(/__input--(day|month|year)($|\\s)/)[1]\n )\n const mode = nextSibling\n .getAttribute('id')\n .match(/-(start|end)-(day|month|year)/)[1]\n\n dateSetters[`set_${mode}${name}`]({\n persist: () => null,\n ...event,\n target: {\n value: keyCode + nextSibling.value.slice(1),\n },\n })\n\n setCursorPosition(nextSibling, 1)\n }\n } else if (index > 0 && firstSelectionStart === firstSelectionEnd) {\n const isMovingBackward =\n keyCode === 'ArrowLeft' && firstSelectionStart === 0\n const isPressingBackspace =\n keyCode === 'Backspace' && firstSelectionStart <= 1\n\n if (isMovingBackward || isPressingBackspace) {\n const prevSibling = refListArray[index - 1]?.current\n if (prevSibling) {\n const endPos = prevSibling.value.length\n setCursorPosition(prevSibling, endPos, {\n withoutDelay: true,\n })\n }\n }\n }\n },\n [dateSetters]\n )\n\n const onInputHandler = useCallback(\n (event) => {\n const target = event.currentTarget\n\n // Add support for \"backspace\" on Android virtual keyboard\n if (\n IS_ANDROID &&\n event.nativeEvent.inputType === 'deleteContentBackward' &&\n target.selectionStart === 0 &&\n target.selectionEnd === 0\n ) {\n onKeyDownHandler({\n ...event,\n key: 'Backspace',\n })\n }\n },\n [onKeyDownHandler]\n )\n\n const getPlaceholderChar = useCallback(\n (value: string) => {\n const index = maskOrder.indexOf(value)\n return maskPlaceholder[index]\n },\n [maskOrder, maskPlaceholder]\n )\n\n // TODO: Replace with MultiInputMask\n const generateDateList = useCallback(\n (\n element: Omit<React.HTMLProps<HTMLInputElement>, 'size'> &\n DatePickerEventAttributes,\n mode: 'start' | 'end'\n ) => {\n return maskList.map((value, i) => {\n const state = value.slice(0, 1)\n const placeholderChar = getPlaceholderChar(value)\n const { day, month, year } = translation\n const isRangeLabel = isRange ? `${translation[mode]} ` : ''\n\n if (!separatorRegExp.test(value)) {\n if (!inputElement) {\n element = {\n ...element,\n onInput: onInputHandler,\n onKeyDown: onKeyDownHandler,\n onFocus: (e) => {\n focusMode.current = mode\n onFocusHandler(e)\n },\n onBlur: onBlurHandler,\n onPaste: pasteHandler,\n onCopy: (event) => {\n copyHandler(event, mode)\n },\n placeholderChar,\n }\n }\n\n // this makes it possible to use a vanilla <input /> like: input_element=\"input\"\n const DateField =\n inputElement && React.isValidElement(inputElement)\n ? inputElement.type\n : InputElement\n\n const inputSizeClassName =\n size && `dnb-date-picker__input--${size}`\n\n switch (state) {\n case 'd':\n refList.current.push(inputRefs.current[`${mode}DayRef`])\n\n return (\n <React.Fragment key={'dd' + i}>\n <DateField\n {...element}\n id={`${id}-${mode}-day`}\n key={'di' + i}\n className={classnames(\n element.className,\n 'dnb-date-picker__input',\n 'dnb-date-picker__input--day',\n inputSizeClassName\n )}\n size={2}\n mask={[/[0-9]/, /[0-9]/]}\n inputRef={inputRefs.current[`${mode}DayRef`]}\n onChange={dateSetters[`set_${mode}Day`]}\n value={inputDates[`${mode}Day`] || ''}\n aria-labelledby={`${id}-${mode}-day-label`}\n />\n <label\n key={'dl' + i}\n hidden\n id={`${id}-${mode}-day-label`}\n htmlFor={`${id}-${mode}-day`}\n >\n {isRangeLabel + day}\n </label>\n </React.Fragment>\n )\n case 'm':\n refList.current.push(inputRefs.current[`${mode}MonthRef`])\n\n return (\n <React.Fragment key={'mm' + i}>\n <DateField\n {...element}\n id={`${id}-${mode}-month`}\n key={'mi' + i}\n className={classnames(\n element.className,\n 'dnb-date-picker__input',\n 'dnb-date-picker__input--month',\n inputSizeClassName\n )}\n size={2}\n mask={[/[0-9]/, /[0-9]/]}\n inputRef={inputRefs.current[`${mode}MonthRef`]}\n onChange={dateSetters[`set_${mode}Month`]}\n value={inputDates[`${mode}Month`] || ''}\n aria-labelledby={`${id}-${mode}-month-label`}\n />\n <label\n key={'ml' + i}\n hidden\n id={`${id}-${mode}-month-label`}\n htmlFor={`${id}-${mode}-month`}\n >\n {isRangeLabel + month}\n </label>\n </React.Fragment>\n )\n case 'y':\n refList.current.push(inputRefs.current[`${mode}YearRef`])\n\n return (\n <React.Fragment key={'yy' + i}>\n <DateField\n {...element}\n id={`${id}-${mode}-year`}\n key={'yi' + i}\n className={classnames(\n element.className,\n 'dnb-date-picker__input',\n 'dnb-date-picker__input--year',\n inputSizeClassName\n )}\n size={4}\n mask={[/[0-9]/, /[0-9]/, /[0-9]/, /[0-9]/]}\n inputRef={inputRefs.current[`${mode}YearRef`]}\n onChange={dateSetters[`set_${mode}Year`]}\n value={inputDates[`${mode}Year`] || ''}\n aria-labelledby={`${id}-${mode}-year-label`}\n />\n <label\n key={'yl' + i}\n hidden\n id={`${id}-${mode}-year-label`}\n htmlFor={`${id}-${mode}-year`}\n >\n {isRangeLabel + year}\n </label>\n </React.Fragment>\n )\n }\n }\n return (\n <span\n key={'s' + i}\n className=\"dnb-date-picker--separator\"\n aria-hidden\n >\n {placeholderChar}\n </span>\n )\n })\n },\n [\n maskList,\n getPlaceholderChar,\n translation,\n isRange,\n separatorRegExp,\n inputElement,\n size,\n onInputHandler,\n onKeyDownHandler,\n pasteHandler,\n onBlurHandler,\n onFocusHandler,\n id,\n dateSetters,\n inputDates,\n ]\n )\n\n const renderInputElement = useCallback(\n (\n element: React.HTMLProps<HTMLInputElement> &\n DatePickerEventAttributes\n ) => {\n refList.current = []\n const startDateList = generateDateList(element, 'start')\n const endDateList = generateDateList(element, 'end')\n\n return (\n <span\n id={`${id}-input`}\n className=\"dnb-date-picker__input__wrapper\"\n >\n {startDateList}\n {isRange && (\n <span className=\"dnb-date-picker--separator\" aria-hidden>\n {' – '}\n </span>\n )}\n {isRange && endDateList}\n </span>\n )\n },\n [id, isRange, generateDateList]\n )\n\n const ariaLabel = useMemo(\n () =>\n selectedDateTitle\n ? `${selectedDateTitle}, ${translation.openPickerText}`\n : translation.openPickerText,\n [selectedDateTitle, translation]\n )\n\n validateDOMAttributes(props, attributes)\n validateDOMAttributes(null, submitAttributes)\n\n const SubmitElement: React.ElementType = useMemo(\n () => (showInput ? SubmitButton : Button),\n [showInput]\n )\n\n if (!showInput) {\n // Use Button inner ref\n submitAttributes.innerRef = submitAttributes.ref\n submitAttributes.ref = null\n }\n\n return (\n <fieldset className=\"dnb-date-picker__fieldset\" lang={lang}>\n {label && <legend className=\"dnb-sr-only\">{label}</legend>}\n <Input\n id={`${id}__input`}\n input_state={disabled ? 'disabled' : focusState}\n input_element={\n inputElement && typeof inputElement !== 'string'\n ? typeof inputElement === 'function'\n ? inputElement(props)\n : inputElement\n : renderInputElement\n }\n disabled={disabled || skeleton}\n skeleton={skeleton}\n size={size}\n status={!opened ? status : null}\n status_state={statusState}\n {...statusProps}\n submit_element={\n <SubmitElement\n id={id}\n disabled={disabled}\n skeleton={skeleton}\n className={classnames(\n showInput && 'dnb-button--input-button',\n opened ? 'dnb-button--active' : null\n )}\n aria-label={ariaLabel}\n title={title}\n size={size}\n status={status}\n status_state={statusState}\n type=\"button\"\n icon=\"calendar\"\n variant=\"secondary\"\n on_submit={onSubmit}\n on_click={onSubmit}\n {...submitAttributes}\n {...statusProps}\n />\n }\n lang={lang}\n {...attributes}\n />\n </fieldset>\n )\n}\n\nexport default DatePickerInput\n\nfunction setCursorPosition(\n target: HTMLInputElement,\n position = 0,\n options?: { withoutDelay?: boolean }\n) {\n target.focus()\n\n const select = () => {\n target.setSelectionRange(position, position)\n }\n\n // Delay for correct iOS Safari appearance\n if (!options?.withoutDelay && process.env.NODE_ENV !== 'test') {\n setTimeout(select, 0)\n } else {\n select()\n }\n}\n\nfunction InputElement({ className, value, ...props }: TextMaskProps) {\n return (\n <TextMask\n guide={true}\n inputMode=\"numeric\"\n showMask={true}\n keepCharPositions={false} // so we can overwrite next value, if it already exists\n autoComplete=\"off\"\n autoCapitalize=\"none\"\n spellCheck={false}\n autoCorrect=\"off\"\n className={classnames(\n className,\n /\\d+/.test(String(value)) && 'dnb-date-picker__input--highlight'\n )}\n value={value}\n {...props}\n />\n )\n}\n\nfunction syncDateRefs(\n dateRefs: React.MutableRefObject<DatePickerInputDates>,\n inputDates: DatePickerInputDates\n) {\n for (const date in dateRefs.current) {\n const dateRefValue = dateRefs.current[date]\n const inputDateValue = inputDates[date]\n\n if (dateRefValue !== inputDateValue) {\n dateRefs.current[date] = inputDateValue\n }\n }\n}\n\nconst wait = (duration: number) =>\n new Promise((r) => setTimeout(r, duration))\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"DatePickerInput.js","names":["React","useCallback","useContext","useMemo","useRef","useState","isValid","parseISO","classnames","TextMask","Button","Input","SubmitButton","warn","validateDOMAttributes","toCapitalized","IS_ANDROID","IS_IOS","convertStringToDate","DatePickerContext","Context","useTranslation","usePartialDates","useInputDates","formatDate","defaultProps","separatorRegExp","statusState","opened","DatePickerInput","externalProps","props","_objectSpread","maskOrder","defaultMaskOrder","maskPlaceholder","defaultMaskPlaceholder","DatePicker","isRange","id","title","submitAttributes","onFocus","onBlur","onChange","onSubmit","selectedDateTitle","showInput","inputElement","lang","disabled","skeleton","size","status","statusProps","attributes","_objectWithoutProperties","_excluded","focusState","setFocusState","partialDatesRef","setPartialDates","invalidDatesRef","invalidStartDate","invalidEndDate","isDateFullyFilledOutRef","updateDates","callOnChangeHandler","getReturnObject","startDate","endDate","onType","label","inputDates","updateInputDates","translation","locale","hasHadValidDate","modeDate","inputRefs","startDayRef","current","undefined","startMonthRef","startYearRef","endDayRef","endMonthRef","endYearRef","dateRefs","startDay","startMonth","startYear","endDay","endMonth","endYear","syncDateRefs","temporaryDates","refList","focusMode","maskList","separators","match","split","reduce","acc","cur","push","length","shift","copyHandler","event","mode","date","preventDefault","valueToCopy","clipboardData","setData","pasteHandler","success","window","getData","possibleFormats","forEach","sep","replace","reverse","join","index","dateFormat","error","callOnChangeAsInvalid","params","datesFromContext","derivedStartDate","derivedEndDate","callOnChange","_ref","state","dates","callOnType","_ref2","getDates","partialStartDate","partialEndDate","parsedStartDate","parsedEndDate","isStartDateValid","isEndDateValid","_getReturnObject","is_valid","is_valid_start_date","is_valid_end_date","returnObject","_excluded2","typedDates","start_date","end_date","setDate","type","persist","value","target","fallback","year","getFullYear","month","getMonth","day","getDate","Date","parseFloat","String","isValidDate","test","dateString","dateSetters","set_startDay","set_startMonth","set_startYear","set_endDay","set_endMonth","set_endYear","onFocusHandler","isNaN","setCursorPosition","onBlurHandler","onKeyDownHandler","keyCode","key","selectionStart","selectionEnd","getAttribute","firstSelectionStart","firstSelectionEnd","wait","secondSelectionStart","refListArray","findIndex","_ref3","isLastChar","isFirstChar","isMovingForward","isExplicitForward","hasNextField","_refListArray","nextSibling","withoutDelay","name","slice","isMovingBackward","isPressingBackspace","_refListArray2","prevSibling","endPos","onInputHandler","currentTarget","nativeEvent","inputType","getPlaceholderChar","indexOf","generateDateList","element","map","i","placeholderChar","isRangeLabel","onInput","onKeyDown","e","onPaste","onCopy","DateField","isValidElement","InputElement","inputSizeClassName","createElement","Fragment","_extends","className","mask","inputRef","hidden","htmlFor","renderInputElement","startDateList","endDateList","_span","ariaLabel","openPickerText","SubmitElement","innerRef","ref","input_state","input_element","status_state","submit_element","icon","variant","on_submit","on_click","position","arguments","options","focus","select","setSelectionRange","process","env","NODE_ENV","setTimeout","_ref4","_excluded3","guide","inputMode","showMask","keepCharPositions","autoComplete","autoCapitalize","spellCheck","autoCorrect","dateRefValue","inputDateValue","duration","Promise","r"],"sources":["../../../../src/components/date-picker/DatePickerInput.tsx"],"sourcesContent":["/**\n * Web DatePicker Component\n *\n */\n\nimport React, {\n MutableRefObject,\n useCallback,\n useContext,\n useMemo,\n useRef,\n useState,\n} from 'react'\n\n// date-fns\nimport isValid from 'date-fns/isValid'\nimport parseISO from 'date-fns/parseISO'\n\nimport classnames from 'classnames'\nimport TextMask, { TextMaskProps } from '../input-masked/TextMask'\nimport Button from '../button/Button'\nimport Input, { SubmitButton } from '../input/Input'\nimport type { InputInputElement, InputSize } from '../Input'\nimport {\n warn,\n validateDOMAttributes,\n toCapitalized,\n} from '../../shared/component-helper'\nimport { IS_ANDROID, IS_IOS } from '../../shared/helpers'\nimport { convertStringToDate } from './DatePickerCalc'\nimport DatePickerContext from './DatePickerContext'\n\nimport type {\n FormStatusProps,\n FormStatusState,\n FormStatusText,\n} from '../FormStatus'\nimport type { SkeletonShow } from '../Skeleton'\nimport { ReturnObject } from './DatePickerProvider'\nimport { DatePickerEventAttributes, DatePickerProps } from './DatePicker'\nimport { Context, useTranslation } from '../../shared'\nimport usePartialDates from './hooks/usePartialDates'\nimport useInputDates, { DatePickerInputDates } from './hooks/useInputDates'\nimport { formatDate } from '../date-format/DateFormatUtils'\n\nexport type DatePickerInputProps = Omit<\n React.HTMLProps<HTMLInputElement>,\n | 'children'\n | 'ref'\n | 'value'\n | 'size'\n | 'onFocus'\n | 'onBlur'\n | 'onSubmit'\n | 'label'\n> & {\n selectedDateTitle?: string\n maskOrder?: DatePickerProps['maskOrder']\n maskPlaceholder?: DatePickerProps['maskPlaceholder']\n separatorRegExp?: RegExp\n submitAttributes?: Record<string, unknown>\n isRange?: boolean\n /**\n * The sizes you can choose is `small` (1.5rem), `default` (2rem), `medium` (2.5rem) and `large` (3rem) are supported component sizes. Defaults to `default` / `null`.\n */\n size?: InputSize\n /**\n * Text with a status message. The style defaults to an error message. You can use `true` to only get the status color, without a message.\n */\n status?: FormStatusText\n /**\n * Defines the state of the status. Currently, there are two statuses `[error, info]`. Defaults to `error`.\n */\n statusState?: FormStatusState\n /**\n * Use an object to define additional FormStatus properties.\n */\n statusProps?: FormStatusProps\n /**\n * Gives you the possibility to use a plain/vanilla `<input />` HTML element by defining it as a string `input_element=\"input\"`, a React element, or a render function `input_element={(internalProps) => (<Return />)}`. Can also be used in circumstances where the `react-text-mask` not should be used, e.g. in testing environments. Defaults to custom masked input.\n */\n inputElement?: InputInputElement\n /**\n * If set to `true`, an overlaying skeleton with animation will be shown.\n */\n skeleton?: SkeletonShow\n /**\n * To open the date-picker by default. Defaults to `false`.\n */\n opened?: boolean\n showInput?: boolean\n onSubmit?: (event: React.MouseEvent<HTMLButtonElement>) => void\n onChange?: (\n event: ReturnObject<React.ChangeEvent<HTMLInputElement>>\n ) => void\n /**\n * Will be called once the input gets focus.\n */\n onFocus?: (\n event: ReturnObject<React.FocusEvent<HTMLInputElement>>\n ) => void\n /**\n * Will be called once the input lose focus.\n */\n onBlur?: (\n event: ReturnObject<React.FocusEvent<HTMLInputElement>>\n ) => void\n}\n\nexport type InvalidDates = {\n invalidDate?: string\n invalidStartDate?: string\n invalidEndDate?: string\n}\n\nconst defaultProps: DatePickerInputProps = {\n separatorRegExp: /[-/ ]/g,\n statusState: 'error',\n opened: false,\n}\n\nfunction DatePickerInput(externalProps: DatePickerInputProps) {\n const props = { ...defaultProps, ...externalProps }\n\n const {\n maskOrder: defaultMaskOrder,\n maskPlaceholder: defaultMaskPlaceholder,\n } = useTranslation().DatePicker\n\n const {\n isRange,\n maskOrder = defaultMaskOrder,\n separatorRegExp,\n id,\n title,\n submitAttributes,\n maskPlaceholder = defaultMaskPlaceholder, // eslint-disable-line\n onFocus,\n onBlur,\n onChange, // eslint-disable-line\n onSubmit, // eslint-disable-line\n selectedDateTitle, // eslint-disable-line\n showInput, // eslint-disable-line\n inputElement,\n lang,\n disabled,\n skeleton,\n opened,\n size,\n status,\n statusState,\n statusProps,\n\n ...attributes\n } = props\n const [focusState, setFocusState] = useState<string>('virgin')\n\n const { partialDatesRef, setPartialDates } = usePartialDates()\n\n const invalidDatesRef = useRef<InvalidDates>({\n invalidStartDate: null,\n invalidEndDate: null,\n })\n const isDateFullyFilledOutRef = useRef(false)\n\n const {\n updateDates,\n callOnChangeHandler,\n getReturnObject,\n startDate,\n endDate,\n props: { onType, label },\n } = useContext(DatePickerContext)\n\n const { inputDates, updateInputDates } = useInputDates({\n startDate,\n endDate,\n })\n\n const translation = useTranslation().DatePicker\n const { locale } = useContext(Context)\n\n const hasHadValidDate = isValid(startDate) || isValid(endDate)\n\n const modeDate = useMemo(\n () => ({\n startDate,\n endDate,\n }),\n [startDate, endDate]\n )\n\n const inputRefs = useRef<\n Record<string, MutableRefObject<HTMLInputElement>>\n >({\n startDayRef: { current: undefined },\n startMonthRef: { current: undefined },\n startYearRef: { current: undefined },\n endDayRef: { current: undefined },\n endMonthRef: { current: undefined },\n endYearRef: { current: undefined },\n })\n\n const dateRefs = useRef<DatePickerInputDates>({\n startDay: '',\n startMonth: '',\n startYear: '',\n endDay: '',\n endMonth: '',\n endYear: '',\n })\n\n // Keep dateRefs in sync with inputDates on re-render\n syncDateRefs(dateRefs, inputDates)\n\n const temporaryDates = useRef<Record<string, Date>>({\n startDate: undefined,\n endDate: undefined,\n })\n\n const refList = useRef<Array<MutableRefObject<HTMLInputElement>>>()\n\n const focusMode = useRef<string>()\n\n const maskList = useMemo(() => {\n const separators = maskOrder.match(separatorRegExp)\n\n return maskOrder\n .split(separatorRegExp)\n .reduce<Array<string>>((acc, cur) => {\n if (!cur) {\n return acc\n }\n\n acc.push(cur)\n\n if (separators.length > 0) {\n // makes sure that separators are added at the correct places and removed from array when added\n acc.push(separators.shift())\n }\n\n return acc\n }, [])\n }, [maskOrder, separatorRegExp])\n\n const copyHandler = useCallback(\n (\n event: React.ClipboardEvent<HTMLInputElement>,\n mode: DatePickerEventAttributes['mode']\n ) => {\n const date = mode === 'end' ? endDate : startDate\n if (isValid(date)) {\n event.preventDefault()\n const valueToCopy = formatDate(date, { locale })\n event.clipboardData.setData('text/plain', valueToCopy)\n }\n },\n [endDate, locale, startDate]\n )\n\n const pasteHandler = useCallback(\n async (event: React.ClipboardEvent<HTMLInputElement>) => {\n if (!focusMode.current) {\n return // Stop here\n }\n\n const success = (\n event.clipboardData ||\n (typeof window !== 'undefined' && window['clipboardData'])\n ).getData('text/plain')\n\n if (!success) {\n return // Stop here\n }\n\n event.preventDefault()\n\n try {\n const separators = ['.', '/']\n const possibleFormats = ['yyyy-MM-dd']\n\n // TODO: Merge these loops\n possibleFormats.forEach((date) => {\n separators.forEach((sep) => {\n possibleFormats.push(date.replace(/-/g, sep))\n })\n })\n\n possibleFormats.forEach((date) => {\n possibleFormats.push(date.split('').reverse().join(''))\n })\n\n let date: Date\n let index = 0\n\n for (index; index < possibleFormats.length; ++index) {\n date = convertStringToDate(success, {\n dateFormat: possibleFormats[index],\n })\n\n if (date) {\n break\n }\n }\n\n const mode =\n focusMode.current === 'start' ? 'startDate' : 'endDate'\n\n if (date) {\n updateDates({\n [mode]: date,\n })\n }\n } catch (error: unknown) {\n warn(error)\n }\n },\n [updateDates]\n )\n\n const callOnChangeAsInvalid = useCallback(\n (params: {\n endDate?: Date\n startDate?: Date\n event: React.ChangeEvent<HTMLInputElement>\n }) => {\n // Should fire if user has filled out an invalid date,\n // or if the date was valid. Like if the user has pressed backspace or removed the valid date.\n if (isDateFullyFilledOutRef.current || hasHadValidDate) {\n const datesFromContext = { startDate, endDate }\n\n const {\n startDate: derivedStartDate,\n endDate: derivedEndDate,\n event,\n } = {\n ...datesFromContext,\n ...params,\n }\n\n callOnChangeHandler({\n startDate: derivedStartDate,\n endDate: derivedEndDate,\n event,\n ...invalidDatesRef.current,\n })\n }\n },\n [callOnChangeHandler, hasHadValidDate, startDate, endDate]\n )\n\n const callOnChange = useCallback(\n ({\n startDate,\n endDate,\n event,\n }: {\n startDate?: Date\n endDate?: Date\n event:\n | React.ChangeEvent<HTMLInputElement>\n | React.KeyboardEvent<HTMLInputElement>\n }) => {\n const state = {}\n if (typeof startDate !== 'undefined' && isValid(startDate)) {\n state['startDate'] = startDate\n }\n if (!isRange) {\n endDate = startDate\n }\n if (typeof endDate !== 'undefined' && isValid(endDate)) {\n state['endDate'] = endDate\n }\n\n updateDates(state, (dates) => {\n if (\n (typeof startDate !== 'undefined' && isValid(startDate)) ||\n (typeof endDate !== 'undefined' && isValid(endDate))\n ) {\n callOnChangeHandler({\n event,\n ...dates,\n ...invalidDatesRef.current,\n })\n }\n })\n },\n [updateDates, callOnChangeHandler, isRange]\n )\n\n const callOnType = useCallback(\n ({ event }: { event: React.ChangeEvent<HTMLInputElement> }) => {\n const getDates = () =>\n ['start', 'end'].reduce(\n (acc, mode) => {\n acc[`${mode}Date`] = [\n dateRefs.current[`${mode}Year`] ||\n inputDates[`${mode}Year`] ||\n 'yyyy',\n dateRefs.current[`${mode}Month`] ||\n inputDates[`${mode}Month`] ||\n 'mm',\n dateRefs.current[`${mode}Day`] ||\n inputDates[`${mode}Day`] ||\n 'dd',\n ].join('-')\n return acc\n },\n { startDate: undefined, endDate: undefined }\n )\n\n // Get the typed dates, so we can ...\n const { startDate, endDate } = getDates()\n\n // Get the partial dates, so we can know if something was typed or not in an optional date field\n setPartialDates({\n partialStartDate: startDate,\n // Only set endDate if in range mode\n ...(isRange && { partialEndDate: endDate }),\n })\n\n const parsedStartDate = parseISO(startDate)\n const parsedEndDate = parseISO(endDate)\n\n const isStartDateValid = isValid(parsedStartDate)\n const isEndDateValid = isValid(parsedEndDate)\n\n const {\n is_valid,\n is_valid_start_date,\n is_valid_end_date,\n ...returnObject\n } = getReturnObject({\n startDate: isStartDateValid ? parsedStartDate : null,\n endDate: isEndDateValid ? parsedEndDate : null,\n event,\n ...partialDatesRef.current,\n ...invalidDatesRef.current,\n })\n\n // Re-assigns dates to the typed date, instead of `null` from getReturnObject, if dates are invalid\n const typedDates = {\n ...(!isRange && is_valid === false && { date: startDate }),\n ...(isRange &&\n is_valid_start_date === false && { start_date: startDate }),\n ...(isRange &&\n is_valid_end_date === false && { end_date: endDate }),\n }\n\n onType?.({\n is_valid,\n is_valid_start_date,\n is_valid_end_date,\n ...returnObject,\n ...typedDates,\n })\n },\n [\n setPartialDates,\n isRange,\n getReturnObject,\n partialDatesRef,\n onType,\n inputDates,\n ]\n )\n\n const setDate = useCallback(\n (\n event: React.ChangeEvent<HTMLInputElement>,\n mode: 'start' | 'end',\n type: 'Day' | 'Month' | 'Year'\n ) => {\n event.persist() // since we have later a state update and afterwards the callback\n\n const value = (event.target as HTMLInputElement).value\n\n dateRefs.current[`${mode}${type}`] = value\n\n if (modeDate[`${mode}Date`]) {\n temporaryDates.current[`${mode}Date`] = modeDate[`${mode}Date`]\n }\n\n const fallback = temporaryDates.current[`${mode}Date`]\n\n // provide fallbacks to create a temp fallback\n const year =\n dateRefs.current[`${mode}Year`] ||\n (fallback && fallback.getFullYear())\n const month =\n dateRefs.current[`${mode}Month`] ||\n (fallback && fallback.getMonth() + 1)\n const day =\n dateRefs.current[`${mode}Day`] || (fallback && fallback.getDate())\n\n // calculate new date\n const date = new Date(\n parseFloat(String(year)),\n parseFloat(String(month)) - 1,\n parseFloat(String(day))\n )\n\n const isValidDate =\n !/[^0-9]/.test(String(day)) &&\n !/[^0-9]/.test(String(month)) &&\n !/[^0-9]/.test(String(year)) &&\n isValid(date) &&\n date.getDate() == parseFloat(String(day)) &&\n date.getMonth() + 1 == parseFloat(String(month)) &&\n date.getFullYear() == parseFloat(String(year))\n\n const dateString = `${year}-${month}-${day}`\n\n isDateFullyFilledOutRef.current =\n /^[0-9]{4}-[0-9]{2}-[0-9]{2}$/.test(dateString)\n\n // update the date\n if (isValidDate) {\n invalidDatesRef.current = {\n ...invalidDatesRef.current,\n ...(mode === 'start'\n ? { invalidStartDate: null }\n : { invalidEndDate: null }),\n }\n\n callOnChange({\n [`${mode}Date`]: date,\n event,\n })\n } else {\n updateDates({\n [`${mode}Date`]: null,\n })\n updateInputDates({ [`${mode}${type}`]: value })\n\n invalidDatesRef.current = {\n ...invalidDatesRef.current,\n ...(mode === 'start'\n ? { invalidStartDate: dateString }\n : { invalidEndDate: dateString }),\n }\n\n callOnChangeAsInvalid({\n [`${mode}Date`]: null,\n event,\n })\n }\n\n callOnType({ event })\n },\n [\n updateDates,\n callOnChange,\n callOnChangeAsInvalid,\n callOnType,\n modeDate,\n dateRefs,\n temporaryDates,\n updateInputDates,\n ]\n )\n\n const dateSetters = useMemo(\n () => ({\n set_startDay: (event: React.ChangeEvent<HTMLInputElement>) => {\n setDate(event, 'start', 'Day')\n },\n\n set_startMonth: (event: React.ChangeEvent<HTMLInputElement>) => {\n setDate(event, 'start', 'Month')\n },\n\n set_startYear: (event: React.ChangeEvent<HTMLInputElement>) => {\n setDate(event, 'start', 'Year')\n },\n\n set_endDay: (event: React.ChangeEvent<HTMLInputElement>) => {\n setDate(event, 'end', 'Day')\n },\n\n set_endMonth: (event: React.ChangeEvent<HTMLInputElement>) => {\n setDate(event, 'end', 'Month')\n },\n\n set_endYear: (event: React.ChangeEvent<HTMLInputElement>) => {\n setDate(event, 'end', 'Year')\n },\n }),\n [setDate]\n )\n\n const onFocusHandler = useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n setFocusState('focus')\n\n onFocus?.({\n ...event,\n ...getReturnObject({ event }),\n })\n\n if (isNaN(parseFloat(event.target.value))) {\n setCursorPosition(event.target)\n }\n },\n [getReturnObject, onFocus]\n )\n\n const onBlurHandler = useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n focusMode.current = null\n setFocusState('blur')\n\n onBlur?.({\n ...event,\n ...getReturnObject({ event, ...partialDatesRef.current }),\n })\n },\n [onBlur, getReturnObject, partialDatesRef]\n )\n\n const onKeyDownHandler = useCallback(\n async (event: React.KeyboardEvent<HTMLInputElement>) => {\n const keyCode = event.key\n const target = event.target as HTMLInputElement\n\n if (target.selectionStart !== target.selectionEnd) {\n setCursorPosition(target)\n }\n\n // The rest is for value entry\n\n const size = parseFloat(target.getAttribute('size'))\n const firstSelectionStart = target.selectionStart\n const firstSelectionEnd = target.selectionEnd\n\n // To get the correct position afterwards.\n // Use 10ms in order to make it work on iOS Safari\n await wait(IS_IOS ? 10 : 1)\n\n const secondSelectionStart = target.selectionStart\n\n // Always false (since the old keycode function set number keys to undefined) but needed to not break tests\n const isValid = /[0-9]/g.test(keyCode)\n const refListArray = refList.current\n\n const index = refListArray.findIndex(\n ({ current }) => current === target\n )\n\n const isLastChar = secondSelectionStart === size\n const isFirstChar = firstSelectionStart === size\n\n const isMovingForward =\n keyCode !== 'ArrowLeft' &&\n keyCode !== 'Backspace' &&\n isValid &&\n isLastChar\n\n const isExplicitForward =\n (keyCode === 'ArrowRight' || keyCode === 'Enter') && isFirstChar\n\n const hasNextField = index < refListArray.length - 1\n\n if (hasNextField && (isMovingForward || isExplicitForward)) {\n // stop in case there is no next input element\n if (!refListArray[index + 1].current) {\n return // stop here\n }\n const nextSibling = refListArray[index + 1]?.current\n\n if (nextSibling) {\n setCursorPosition(nextSibling, 0, { withoutDelay: true })\n }\n\n // When the cursor is at the end of the input\n // and the user types a number, we want to set the value on the next input.\n if (\n parseFloat(keyCode) <= 9 &&\n firstSelectionStart === target.size\n ) {\n const name = toCapitalized(\n nextSibling\n .getAttribute('class')\n .match(/__input--(day|month|year)($|\\s)/)[1]\n )\n const mode = nextSibling\n .getAttribute('id')\n .match(/-(start|end)-(day|month|year)/)[1]\n\n dateSetters[`set_${mode}${name}`]({\n persist: () => null,\n ...event,\n target: {\n value: keyCode + nextSibling.value.slice(1),\n },\n })\n\n setCursorPosition(nextSibling, 1)\n }\n } else if (index > 0 && firstSelectionStart === firstSelectionEnd) {\n const isMovingBackward =\n keyCode === 'ArrowLeft' && firstSelectionStart === 0\n const isPressingBackspace =\n keyCode === 'Backspace' && firstSelectionStart <= 1\n\n if (isMovingBackward || isPressingBackspace) {\n const prevSibling = refListArray[index - 1]?.current\n if (prevSibling) {\n const endPos = prevSibling.value.length\n setCursorPosition(prevSibling, endPos, {\n withoutDelay: true,\n })\n }\n }\n }\n },\n [dateSetters]\n )\n\n const onInputHandler = useCallback(\n (event) => {\n const target = event.currentTarget\n\n // Add support for \"backspace\" on Android virtual keyboard\n if (\n IS_ANDROID &&\n event.nativeEvent.inputType === 'deleteContentBackward' &&\n target.selectionStart === 0 &&\n target.selectionEnd === 0\n ) {\n onKeyDownHandler({\n ...event,\n key: 'Backspace',\n })\n }\n },\n [onKeyDownHandler]\n )\n\n const getPlaceholderChar = useCallback(\n (value: string) => {\n const index = maskOrder.indexOf(value)\n return maskPlaceholder[index]\n },\n [maskOrder, maskPlaceholder]\n )\n\n // TODO: Replace with MultiInputMask\n const generateDateList = useCallback(\n (\n element: Omit<React.HTMLProps<HTMLInputElement>, 'size'> &\n DatePickerEventAttributes,\n mode: 'start' | 'end'\n ) => {\n return maskList.map((value, i) => {\n const state = value.slice(0, 1)\n const placeholderChar = getPlaceholderChar(value)\n const { day, month, year } = translation\n const isRangeLabel = isRange ? `${translation[mode]} ` : ''\n\n if (!separatorRegExp.test(value)) {\n if (!inputElement) {\n element = {\n ...element,\n onInput: onInputHandler,\n onKeyDown: onKeyDownHandler,\n onFocus: (e) => {\n focusMode.current = mode\n onFocusHandler(e)\n },\n onBlur: onBlurHandler,\n onPaste: pasteHandler,\n onCopy: (event) => {\n copyHandler(event, mode)\n },\n placeholderChar,\n }\n }\n\n // this makes it possible to use a vanilla <input /> like: input_element=\"input\"\n const DateField =\n inputElement && React.isValidElement(inputElement)\n ? inputElement.type\n : InputElement\n\n const inputSizeClassName =\n size && `dnb-date-picker__input--${size}`\n\n switch (state) {\n case 'd':\n refList.current.push(inputRefs.current[`${mode}DayRef`])\n\n return (\n <React.Fragment key={'dd' + i}>\n <DateField\n {...element}\n id={`${id}-${mode}-day`}\n key={'di' + i}\n className={classnames(\n element.className,\n 'dnb-date-picker__input',\n 'dnb-date-picker__input--day',\n inputSizeClassName\n )}\n size={2}\n mask={[/[0-9]/, /[0-9]/]}\n inputRef={inputRefs.current[`${mode}DayRef`]}\n onChange={dateSetters[`set_${mode}Day`]}\n value={inputDates[`${mode}Day`] || ''}\n aria-labelledby={`${id}-${mode}-day-label`}\n />\n <label\n key={'dl' + i}\n hidden\n id={`${id}-${mode}-day-label`}\n htmlFor={`${id}-${mode}-day`}\n >\n {isRangeLabel + day}\n </label>\n </React.Fragment>\n )\n case 'm':\n refList.current.push(inputRefs.current[`${mode}MonthRef`])\n\n return (\n <React.Fragment key={'mm' + i}>\n <DateField\n {...element}\n id={`${id}-${mode}-month`}\n key={'mi' + i}\n className={classnames(\n element.className,\n 'dnb-date-picker__input',\n 'dnb-date-picker__input--month',\n inputSizeClassName\n )}\n size={2}\n mask={[/[0-9]/, /[0-9]/]}\n inputRef={inputRefs.current[`${mode}MonthRef`]}\n onChange={dateSetters[`set_${mode}Month`]}\n value={inputDates[`${mode}Month`] || ''}\n aria-labelledby={`${id}-${mode}-month-label`}\n />\n <label\n key={'ml' + i}\n hidden\n id={`${id}-${mode}-month-label`}\n htmlFor={`${id}-${mode}-month`}\n >\n {isRangeLabel + month}\n </label>\n </React.Fragment>\n )\n case 'y':\n refList.current.push(inputRefs.current[`${mode}YearRef`])\n\n return (\n <React.Fragment key={'yy' + i}>\n <DateField\n {...element}\n id={`${id}-${mode}-year`}\n key={'yi' + i}\n className={classnames(\n element.className,\n 'dnb-date-picker__input',\n 'dnb-date-picker__input--year',\n inputSizeClassName\n )}\n size={4}\n mask={[/[0-9]/, /[0-9]/, /[0-9]/, /[0-9]/]}\n inputRef={inputRefs.current[`${mode}YearRef`]}\n onChange={dateSetters[`set_${mode}Year`]}\n value={inputDates[`${mode}Year`] || ''}\n aria-labelledby={`${id}-${mode}-year-label`}\n />\n <label\n key={'yl' + i}\n hidden\n id={`${id}-${mode}-year-label`}\n htmlFor={`${id}-${mode}-year`}\n >\n {isRangeLabel + year}\n </label>\n </React.Fragment>\n )\n }\n }\n return (\n <span\n key={'s' + i}\n className=\"dnb-date-picker--separator\"\n aria-hidden\n >\n {placeholderChar}\n </span>\n )\n })\n },\n [\n maskList,\n getPlaceholderChar,\n translation,\n isRange,\n separatorRegExp,\n inputElement,\n size,\n onInputHandler,\n onKeyDownHandler,\n pasteHandler,\n onBlurHandler,\n onFocusHandler,\n id,\n dateSetters,\n inputDates,\n ]\n )\n\n const renderInputElement = useCallback(\n (\n element: React.HTMLProps<HTMLInputElement> &\n DatePickerEventAttributes\n ) => {\n refList.current = []\n const startDateList = generateDateList(element, 'start')\n const endDateList = generateDateList(element, 'end')\n\n return (\n <span\n id={`${id}-input`}\n className=\"dnb-date-picker__input__wrapper\"\n >\n {startDateList}\n {isRange && (\n <span className=\"dnb-date-picker--separator\" aria-hidden>\n {' – '}\n </span>\n )}\n {isRange && endDateList}\n </span>\n )\n },\n [id, isRange, generateDateList]\n )\n\n const ariaLabel = useMemo(\n () =>\n selectedDateTitle\n ? `${selectedDateTitle}, ${translation.openPickerText}`\n : translation.openPickerText,\n [selectedDateTitle, translation]\n )\n\n validateDOMAttributes(props, attributes)\n validateDOMAttributes(null, submitAttributes)\n\n const SubmitElement: React.ElementType = useMemo(\n () => (showInput ? SubmitButton : Button),\n [showInput]\n )\n\n if (!showInput) {\n // Use Button inner ref\n submitAttributes.innerRef = submitAttributes.ref\n submitAttributes.ref = null\n }\n\n return (\n <fieldset className=\"dnb-date-picker__fieldset\" lang={lang}>\n {label && <legend className=\"dnb-sr-only\">{label}</legend>}\n <Input\n id={`${id}__input`}\n input_state={disabled ? 'disabled' : focusState}\n input_element={\n inputElement && typeof inputElement !== 'string'\n ? typeof inputElement === 'function'\n ? inputElement(props)\n : inputElement\n : renderInputElement\n }\n disabled={disabled || skeleton}\n skeleton={skeleton}\n size={size}\n status={!opened ? status : null}\n status_state={statusState}\n {...statusProps}\n submit_element={\n <SubmitElement\n id={id}\n disabled={disabled}\n skeleton={skeleton}\n className={classnames(\n showInput && 'dnb-button--input-button',\n opened ? 'dnb-button--active' : null\n )}\n aria-label={ariaLabel}\n title={title}\n size={size}\n status={status}\n status_state={statusState}\n type=\"button\"\n icon=\"calendar\"\n variant=\"secondary\"\n on_submit={onSubmit}\n on_click={onSubmit}\n {...submitAttributes}\n {...statusProps}\n />\n }\n lang={lang}\n {...attributes}\n />\n </fieldset>\n )\n}\n\nexport default DatePickerInput\n\nfunction setCursorPosition(\n target: HTMLInputElement,\n position = 0,\n options?: { withoutDelay?: boolean }\n) {\n target.focus()\n\n const select = () => {\n target.setSelectionRange(position, position)\n }\n\n // Delay for correct iOS Safari appearance\n if (!options?.withoutDelay && process.env.NODE_ENV !== 'test') {\n setTimeout(select, 0)\n } else {\n select()\n }\n}\n\nfunction InputElement({ className, value, ...props }: TextMaskProps) {\n return (\n <TextMask\n guide={true}\n inputMode=\"numeric\"\n showMask={true}\n keepCharPositions={false} // so we can overwrite next value, if it already exists\n autoComplete=\"off\"\n autoCapitalize=\"none\"\n spellCheck={false}\n autoCorrect=\"off\"\n className={classnames(\n className,\n /\\d+/.test(String(value)) && 'dnb-date-picker__input--highlight'\n )}\n value={value}\n {...props}\n />\n )\n}\n\nfunction syncDateRefs(\n dateRefs: React.MutableRefObject<DatePickerInputDates>,\n inputDates: DatePickerInputDates\n) {\n for (const date in dateRefs.current) {\n const dateRefValue = dateRefs.current[date]\n const inputDateValue = inputDates[date]\n\n if (dateRefValue !== inputDateValue) {\n dateRefs.current[date] = inputDateValue\n }\n }\n}\n\nconst wait = (duration: number) =>\n new Promise((r) => setTimeout(r, duration))\n"],"mappings":"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","ignoreList":[]}
|