@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","onSelectRange","state","onMouseOver","onHoverDay","onFocus","daysToStartDate","daysToEndDate","range","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","onSelectRange","state","onMouseOver","onHoverDay","onFocus","daysToStartDate","daysToEndDate","range","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":[]}
|
|
@@ -8,7 +8,7 @@ import { addMonths, addYears, isSameMonth, isSameYear, subMonths, subYears } fro
|
|
|
8
8
|
import Button from '../Button';
|
|
9
9
|
import { useTranslation } from '../../shared';
|
|
10
10
|
import DatePickerContext from './DatePickerContext';
|
|
11
|
-
import { formatDate } from '
|
|
11
|
+
import { formatDate } from '../date-format/DateFormatUtils';
|
|
12
12
|
const titleFormats = {
|
|
13
13
|
both: {
|
|
14
14
|
month: 'long',
|
|
@@ -88,12 +88,12 @@ export function DatePickerCalendarNav({
|
|
|
88
88
|
className: "dnb-date-picker__header__title dnb-no-focus",
|
|
89
89
|
title: title.replace(/%s/, formatDate(date, {
|
|
90
90
|
locale,
|
|
91
|
-
|
|
91
|
+
options: titleFormat
|
|
92
92
|
})),
|
|
93
93
|
tabIndex: -1
|
|
94
94
|
}, formatDate(date, {
|
|
95
95
|
locale,
|
|
96
|
-
|
|
96
|
+
options: titleFormat
|
|
97
97
|
})), React.createElement("div", {
|
|
98
98
|
className: "dnb-date-picker__header__nav"
|
|
99
99
|
}, React.createElement(CalendarNavButton, {
|
|
@@ -127,7 +127,7 @@ function CalendarNavButton({
|
|
|
127
127
|
const dateHandler = dateHandlers[dateType][type];
|
|
128
128
|
const title = translations[translationKey].replace(/%s/, formatDate(dateHandler(date, 1), {
|
|
129
129
|
locale,
|
|
130
|
-
|
|
130
|
+
options: dateFormat
|
|
131
131
|
}));
|
|
132
132
|
const disabled = dateLimit && navButtonDisabledHandlers[dateType](date, dateLimit);
|
|
133
133
|
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","type","id","nr","date","locale","minDate","maxDate","views","setViews","props","link","isLinkedCalendars","selectedMonth","selectedYear","DatePicker","title","titleFormat","buttonDateType","onNav","navigationType","handlerType","updatedViews","map","view","_objectSpread","createElement","className","CalendarNavButton","dateLimit","dateType","dateFormat","onClick","replace","formatOptions","tabIndex","navButtonDisabledHandlers","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","type","id","nr","date","locale","minDate","maxDate","views","setViews","props","link","isLinkedCalendars","selectedMonth","selectedYear","DatePicker","title","titleFormat","buttonDateType","onNav","navigationType","handlerType","updatedViews","map","view","_objectSpread","createElement","className","CalendarNavButton","dateLimit","dateType","dateFormat","onClick","replace","options","tabIndex","navButtonDisabledHandlers","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":[]}
|
|
@@ -18,11 +18,12 @@ import Button from '../button/Button';
|
|
|
18
18
|
import Input, { SubmitButton } from '../input/Input';
|
|
19
19
|
import { warn, validateDOMAttributes, toCapitalized } from '../../shared/component-helper';
|
|
20
20
|
import { IS_ANDROID, IS_IOS } from '../../shared/helpers';
|
|
21
|
-
import { convertStringToDate
|
|
21
|
+
import { convertStringToDate } from './DatePickerCalc';
|
|
22
22
|
import DatePickerContext from './DatePickerContext';
|
|
23
23
|
import { Context, useTranslation } from '../../shared';
|
|
24
24
|
import usePartialDates from './hooks/usePartialDates';
|
|
25
25
|
import useInputDates from './hooks/useInputDates';
|
|
26
|
+
import { formatDate } from '../date-format/DateFormatUtils';
|
|
26
27
|
const defaultProps = {
|
|
27
28
|
separatorRegExp: /[-/ ]/g,
|
|
28
29
|
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","state","dates","callOnType","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","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","options","focus","select","setSelectionRange","process","env","NODE_ENV","setTimeout","_ref","_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","state","dates","callOnType","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","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","options","focus","select","setSelectionRange","process","env","NODE_ENV","setTimeout","_ref","_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":[]}
|