@dnb/eufemia 10.65.1 → 10.66.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 +43 -0
- package/cjs/components/card/Card.js +1 -1
- package/cjs/components/card/Card.js.map +1 -1
- package/cjs/components/date-picker/DatePickerInput.d.ts +5 -0
- package/cjs/components/date-picker/DatePickerInput.js +103 -76
- package/cjs/components/date-picker/DatePickerInput.js.map +1 -1
- package/cjs/components/date-picker/DatePickerProvider.d.ts +4 -3
- package/cjs/components/date-picker/DatePickerProvider.js +7 -2
- package/cjs/components/date-picker/DatePickerProvider.js.map +1 -1
- package/cjs/components/date-picker/hooks/useDates.js.map +1 -1
- package/cjs/components/flex/Container.d.ts +2 -1
- package/cjs/components/flex/Container.js +31 -24
- package/cjs/components/flex/Container.js.map +1 -1
- package/cjs/components/flex/ContainerDocs.d.ts +2 -0
- package/cjs/components/flex/ContainerDocs.js +81 -0
- package/cjs/components/flex/ContainerDocs.js.map +1 -0
- package/cjs/components/flex/style/dnb-flex.css +36 -4
- package/cjs/components/flex/style/dnb-flex.min.css +1 -1
- package/cjs/components/flex/style/flex-container.scss +39 -4
- package/cjs/components/help-button/HelpButtonInline.d.ts +7 -0
- package/cjs/components/help-button/HelpButtonInline.js +53 -20
- package/cjs/components/help-button/HelpButtonInline.js.map +1 -1
- package/cjs/components/help-button/HelpButtonInstance.js +1 -1
- package/cjs/components/help-button/HelpButtonInstance.js.map +1 -1
- package/cjs/components/slider/SliderDocs.js +2 -2
- package/cjs/components/slider/SliderDocs.js.map +1 -1
- package/cjs/components/slider/SliderProvider.js +0 -2
- package/cjs/components/slider/SliderProvider.js.map +1 -1
- package/cjs/components/slider/types.d.ts +2 -2
- package/cjs/components/slider/types.js.map +1 -1
- package/cjs/components/step-indicator/StepIndicator.d.ts +6 -0
- package/cjs/components/step-indicator/StepIndicator.js.map +1 -1
- package/cjs/components/step-indicator/StepIndicatorContext.d.ts +2 -0
- package/cjs/components/step-indicator/StepIndicatorContext.js.map +1 -1
- package/cjs/components/step-indicator/StepIndicatorTriggerButton.js +4 -3
- package/cjs/components/step-indicator/StepIndicatorTriggerButton.js.map +1 -1
- package/cjs/components/toggle-button/ToggleButton.d.ts +9 -1
- package/cjs/components/toggle-button/ToggleButtonDocs.js +1 -0
- package/cjs/components/toggle-button/ToggleButtonDocs.js.map +1 -1
- package/cjs/components/upload/Upload.js +4 -5
- package/cjs/components/upload/Upload.js.map +1 -1
- package/cjs/components/upload/UploadFileInput.d.ts +4 -1
- package/cjs/components/upload/UploadFileInput.js +11 -3
- package/cjs/components/upload/UploadFileInput.js.map +1 -1
- package/cjs/components/upload/types.d.ts +1 -1
- package/cjs/components/upload/types.js.map +1 -1
- package/cjs/extensions/forms/DataContext/Context.d.ts +10 -4
- package/cjs/extensions/forms/DataContext/Context.js.map +1 -1
- package/cjs/extensions/forms/DataContext/Provider/Provider.d.ts +2 -2
- package/cjs/extensions/forms/DataContext/Provider/Provider.js +44 -40
- package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
- package/cjs/extensions/forms/DataContext/Provider/ProviderDocs.js +1 -1
- package/cjs/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
- package/cjs/extensions/forms/Field/Composition/Composition.js +2 -1
- package/cjs/extensions/forms/Field/Composition/Composition.js.map +1 -1
- package/cjs/extensions/forms/Field/Date/Date.d.ts +1 -1
- package/cjs/extensions/forms/Field/Date/Date.js +1 -1
- package/cjs/extensions/forms/Field/Date/Date.js.map +1 -1
- package/cjs/extensions/forms/Field/Slider/Slider.js +13 -4
- package/cjs/extensions/forms/Field/Slider/Slider.js.map +1 -1
- package/cjs/extensions/forms/Field/Upload/Upload.js +2 -1
- package/cjs/extensions/forms/Field/Upload/Upload.js.map +1 -1
- package/cjs/extensions/forms/Field/Upload/style/dnb-upload.css +5 -0
- package/cjs/extensions/forms/Field/Upload/style/dnb-upload.min.css +1 -1
- package/cjs/extensions/forms/Field/Upload/style/dnb-upload.scss +6 -0
- package/cjs/extensions/forms/FieldBlock/FieldBlock.js +17 -13
- package/cjs/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
- package/cjs/extensions/forms/Value/Provider/useValueProvider.d.ts +1 -0
- package/cjs/extensions/forms/Value/ValueDocs.js +5 -0
- package/cjs/extensions/forms/Value/ValueDocs.js.map +1 -1
- package/cjs/extensions/forms/ValueBlock/ValueBlock.d.ts +14 -1
- package/cjs/extensions/forms/ValueBlock/ValueBlock.js +40 -10
- package/cjs/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
- package/cjs/extensions/forms/ValueBlock/style/dnb-value-block.css +17 -0
- package/cjs/extensions/forms/ValueBlock/style/dnb-value-block.min.css +1 -1
- package/cjs/extensions/forms/ValueBlock/style/dnb-value-block.scss +24 -0
- package/cjs/extensions/forms/Wizard/Container/DisplaySteps.d.ts +7 -0
- package/cjs/extensions/forms/Wizard/Container/DisplaySteps.js +78 -0
- package/cjs/extensions/forms/Wizard/Container/DisplaySteps.js.map +1 -0
- package/cjs/extensions/forms/Wizard/Container/IterateOverSteps.d.ts +3 -0
- package/cjs/extensions/forms/Wizard/Container/IterateOverSteps.js +94 -0
- package/cjs/extensions/forms/Wizard/Container/IterateOverSteps.js.map +1 -0
- package/cjs/extensions/forms/Wizard/Container/PrerenderFieldPropsOfOtherSteps.d.ts +4 -0
- package/cjs/extensions/forms/Wizard/Container/PrerenderFieldPropsOfOtherSteps.js +67 -0
- package/cjs/extensions/forms/Wizard/Container/PrerenderFieldPropsOfOtherSteps.js.map +1 -0
- package/cjs/extensions/forms/Wizard/Container/WizardContainer.d.ts +9 -1
- package/cjs/extensions/forms/Wizard/Container/WizardContainer.js +102 -206
- package/cjs/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
- package/cjs/extensions/forms/Wizard/Container/WizardContainerDocs.js +10 -0
- package/cjs/extensions/forms/Wizard/Container/WizardContainerDocs.js.map +1 -1
- package/cjs/extensions/forms/Wizard/Context/WizardContext.d.ts +7 -23
- package/cjs/extensions/forms/Wizard/Context/WizardContext.js.map +1 -1
- package/cjs/extensions/forms/Wizard/Context/types.d.ts +35 -0
- package/cjs/extensions/forms/Wizard/Context/types.js +1 -0
- package/cjs/extensions/forms/Wizard/Context/types.js.map +1 -0
- package/cjs/extensions/forms/Wizard/EditButton/EditButton.d.ts +1 -1
- package/cjs/extensions/forms/Wizard/EditButton/EditButton.js.map +1 -1
- package/cjs/extensions/forms/Wizard/Step/Step.d.ts +4 -0
- package/cjs/extensions/forms/Wizard/Step/Step.js +28 -9
- package/cjs/extensions/forms/Wizard/Step/Step.js.map +1 -1
- package/cjs/extensions/forms/Wizard/Step/StepContext.d.ts +7 -0
- package/cjs/extensions/forms/Wizard/Step/StepContext.js +12 -0
- package/cjs/extensions/forms/Wizard/Step/StepContext.js.map +1 -0
- package/cjs/extensions/forms/Wizard/Step/StepDocs.js +5 -0
- package/cjs/extensions/forms/Wizard/Step/StepDocs.js.map +1 -1
- package/cjs/extensions/forms/Wizard/hooks/useStep.d.ts +2 -1
- package/cjs/extensions/forms/Wizard/hooks/useStep.js.map +1 -1
- package/cjs/extensions/forms/constants/locales/en-GB.d.ts +1 -0
- package/cjs/extensions/forms/constants/locales/en-GB.js +2 -1
- package/cjs/extensions/forms/constants/locales/en-GB.js.map +1 -1
- package/cjs/extensions/forms/constants/locales/en-US.d.ts +1 -0
- package/cjs/extensions/forms/constants/locales/index.d.ts +2 -0
- package/cjs/extensions/forms/constants/locales/nb-NO.d.ts +1 -0
- package/cjs/extensions/forms/constants/locales/nb-NO.js +2 -1
- package/cjs/extensions/forms/constants/locales/nb-NO.js.map +1 -1
- package/cjs/extensions/forms/hooks/useFieldProps.js +35 -17
- package/cjs/extensions/forms/hooks/useFieldProps.js.map +1 -1
- package/cjs/extensions/forms/style/dnb-forms.css +22 -0
- package/cjs/extensions/forms/style/dnb-forms.min.css +1 -1
- package/cjs/extensions/forms/types.d.ts +9 -1
- package/cjs/extensions/forms/types.js.map +1 -1
- package/cjs/fragments/drawer-list/DrawerList.d.ts +6 -1
- package/cjs/fragments/drawer-list/DrawerList.js +1 -0
- package/cjs/fragments/drawer-list/DrawerList.js.map +1 -1
- package/cjs/shared/Eufemia.d.ts +1 -1
- package/cjs/shared/Eufemia.js +2 -2
- package/cjs/shared/Eufemia.js.map +1 -1
- package/cjs/style/core/scopes.scss +1 -1
- package/cjs/style/dnb-ui-basis.css +1 -1
- package/cjs/style/dnb-ui-basis.min.css +1 -1
- package/cjs/style/dnb-ui-body.css +1 -1
- package/cjs/style/dnb-ui-body.min.css +1 -1
- package/cjs/style/dnb-ui-components.css +58 -4
- package/cjs/style/dnb-ui-components.min.css +2 -2
- package/cjs/style/dnb-ui-core.css +1 -1
- package/cjs/style/dnb-ui-core.min.css +1 -1
- package/cjs/style/dnb-ui-extensions.css +22 -0
- package/cjs/style/dnb-ui-extensions.min.css +1 -1
- package/cjs/style/dnb-ui-forms.css +22 -0
- package/cjs/style/dnb-ui-forms.min.css +1 -1
- package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +80 -4
- package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
- package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.css +22 -0
- package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
- package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.css +22 -0
- package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
- package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +80 -4
- package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
- package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.css +22 -0
- package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
- package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.css +22 -0
- package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
- package/cjs/style/themes/theme-ui/ui-theme-components.css +80 -4
- package/cjs/style/themes/theme-ui/ui-theme-components.min.css +2 -2
- package/cjs/style/themes/theme-ui/ui-theme-extensions.css +22 -0
- package/cjs/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
- package/cjs/style/themes/theme-ui/ui-theme-forms.css +22 -0
- package/cjs/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
- package/components/card/Card.js +1 -1
- package/components/card/Card.js.map +1 -1
- package/components/date-picker/DatePickerInput.d.ts +5 -0
- package/components/date-picker/DatePickerInput.js +103 -76
- package/components/date-picker/DatePickerInput.js.map +1 -1
- package/components/date-picker/DatePickerProvider.d.ts +4 -3
- package/components/date-picker/DatePickerProvider.js +7 -2
- package/components/date-picker/DatePickerProvider.js.map +1 -1
- package/components/date-picker/hooks/useDates.js.map +1 -1
- package/components/flex/Container.d.ts +2 -1
- package/components/flex/Container.js +32 -25
- package/components/flex/Container.js.map +1 -1
- package/components/flex/ContainerDocs.d.ts +2 -0
- package/components/flex/ContainerDocs.js +74 -0
- package/components/flex/ContainerDocs.js.map +1 -0
- package/components/flex/style/dnb-flex.css +36 -4
- package/components/flex/style/dnb-flex.min.css +1 -1
- package/components/flex/style/flex-container.scss +39 -4
- package/components/help-button/HelpButtonInline.d.ts +7 -0
- package/components/help-button/HelpButtonInline.js +53 -20
- package/components/help-button/HelpButtonInline.js.map +1 -1
- package/components/help-button/HelpButtonInstance.js +1 -1
- package/components/help-button/HelpButtonInstance.js.map +1 -1
- package/components/slider/SliderDocs.js +2 -2
- package/components/slider/SliderDocs.js.map +1 -1
- package/components/slider/SliderProvider.js +0 -2
- package/components/slider/SliderProvider.js.map +1 -1
- package/components/slider/types.d.ts +2 -2
- package/components/slider/types.js.map +1 -1
- package/components/step-indicator/StepIndicator.d.ts +6 -0
- package/components/step-indicator/StepIndicator.js.map +1 -1
- package/components/step-indicator/StepIndicatorContext.d.ts +2 -0
- package/components/step-indicator/StepIndicatorContext.js.map +1 -1
- package/components/step-indicator/StepIndicatorTriggerButton.js +4 -3
- package/components/step-indicator/StepIndicatorTriggerButton.js.map +1 -1
- package/components/toggle-button/ToggleButton.d.ts +9 -1
- package/components/toggle-button/ToggleButtonDocs.js +1 -0
- package/components/toggle-button/ToggleButtonDocs.js.map +1 -1
- package/components/upload/Upload.js +3 -4
- package/components/upload/Upload.js.map +1 -1
- package/components/upload/UploadFileInput.d.ts +4 -1
- package/components/upload/UploadFileInput.js +10 -3
- package/components/upload/UploadFileInput.js.map +1 -1
- package/components/upload/types.d.ts +1 -1
- package/components/upload/types.js.map +1 -1
- package/es/components/card/Card.js +1 -1
- package/es/components/card/Card.js.map +1 -1
- package/es/components/date-picker/DatePickerInput.d.ts +5 -0
- package/es/components/date-picker/DatePickerInput.js +103 -76
- package/es/components/date-picker/DatePickerInput.js.map +1 -1
- package/es/components/date-picker/DatePickerProvider.d.ts +4 -3
- package/es/components/date-picker/DatePickerProvider.js +7 -2
- package/es/components/date-picker/DatePickerProvider.js.map +1 -1
- package/es/components/date-picker/hooks/useDates.js.map +1 -1
- package/es/components/flex/Container.d.ts +2 -1
- package/es/components/flex/Container.js +32 -25
- package/es/components/flex/Container.js.map +1 -1
- package/es/components/flex/ContainerDocs.d.ts +2 -0
- package/es/components/flex/ContainerDocs.js +74 -0
- package/es/components/flex/ContainerDocs.js.map +1 -0
- package/es/components/flex/style/dnb-flex.css +36 -4
- package/es/components/flex/style/dnb-flex.min.css +1 -1
- package/es/components/flex/style/flex-container.scss +39 -4
- package/es/components/help-button/HelpButtonInline.d.ts +7 -0
- package/es/components/help-button/HelpButtonInline.js +52 -19
- package/es/components/help-button/HelpButtonInline.js.map +1 -1
- package/es/components/help-button/HelpButtonInstance.js +1 -1
- package/es/components/help-button/HelpButtonInstance.js.map +1 -1
- package/es/components/slider/SliderDocs.js +2 -2
- package/es/components/slider/SliderDocs.js.map +1 -1
- package/es/components/slider/SliderProvider.js +0 -2
- package/es/components/slider/SliderProvider.js.map +1 -1
- package/es/components/slider/types.d.ts +2 -2
- package/es/components/slider/types.js.map +1 -1
- package/es/components/step-indicator/StepIndicator.d.ts +6 -0
- package/es/components/step-indicator/StepIndicator.js.map +1 -1
- package/es/components/step-indicator/StepIndicatorContext.d.ts +2 -0
- package/es/components/step-indicator/StepIndicatorContext.js.map +1 -1
- package/es/components/step-indicator/StepIndicatorTriggerButton.js +4 -3
- package/es/components/step-indicator/StepIndicatorTriggerButton.js.map +1 -1
- package/es/components/toggle-button/ToggleButton.d.ts +9 -1
- package/es/components/toggle-button/ToggleButtonDocs.js +1 -0
- package/es/components/toggle-button/ToggleButtonDocs.js.map +1 -1
- package/es/components/upload/Upload.js +3 -4
- package/es/components/upload/Upload.js.map +1 -1
- package/es/components/upload/UploadFileInput.d.ts +4 -1
- package/es/components/upload/UploadFileInput.js +10 -3
- package/es/components/upload/UploadFileInput.js.map +1 -1
- package/es/components/upload/types.d.ts +1 -1
- package/es/components/upload/types.js.map +1 -1
- package/es/extensions/forms/DataContext/Context.d.ts +10 -4
- package/es/extensions/forms/DataContext/Context.js.map +1 -1
- package/es/extensions/forms/DataContext/Provider/Provider.d.ts +2 -2
- package/es/extensions/forms/DataContext/Provider/Provider.js +34 -33
- package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
- package/es/extensions/forms/DataContext/Provider/ProviderDocs.js +1 -1
- package/es/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
- package/es/extensions/forms/Field/Composition/Composition.js +2 -1
- package/es/extensions/forms/Field/Composition/Composition.js.map +1 -1
- package/es/extensions/forms/Field/Date/Date.d.ts +1 -1
- package/es/extensions/forms/Field/Date/Date.js +1 -1
- package/es/extensions/forms/Field/Date/Date.js.map +1 -1
- package/es/extensions/forms/Field/Slider/Slider.js +13 -4
- package/es/extensions/forms/Field/Slider/Slider.js.map +1 -1
- package/es/extensions/forms/Field/Upload/Upload.js +2 -1
- package/es/extensions/forms/Field/Upload/Upload.js.map +1 -1
- package/es/extensions/forms/Field/Upload/style/dnb-upload.css +5 -0
- package/es/extensions/forms/Field/Upload/style/dnb-upload.min.css +1 -1
- package/es/extensions/forms/Field/Upload/style/dnb-upload.scss +6 -0
- package/es/extensions/forms/FieldBlock/FieldBlock.js +17 -13
- package/es/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
- package/es/extensions/forms/Value/Provider/useValueProvider.d.ts +1 -0
- package/es/extensions/forms/Value/ValueDocs.js +5 -0
- package/es/extensions/forms/Value/ValueDocs.js.map +1 -1
- package/es/extensions/forms/ValueBlock/ValueBlock.d.ts +14 -1
- package/es/extensions/forms/ValueBlock/ValueBlock.js +40 -10
- package/es/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
- package/es/extensions/forms/ValueBlock/style/dnb-value-block.css +17 -0
- package/es/extensions/forms/ValueBlock/style/dnb-value-block.min.css +1 -1
- package/es/extensions/forms/ValueBlock/style/dnb-value-block.scss +24 -0
- package/es/extensions/forms/Wizard/Container/DisplaySteps.d.ts +7 -0
- package/es/extensions/forms/Wizard/Container/DisplaySteps.js +66 -0
- package/es/extensions/forms/Wizard/Container/DisplaySteps.js.map +1 -0
- package/es/extensions/forms/Wizard/Container/IterateOverSteps.d.ts +3 -0
- package/es/extensions/forms/Wizard/Container/IterateOverSteps.js +85 -0
- package/es/extensions/forms/Wizard/Container/IterateOverSteps.js.map +1 -0
- package/es/extensions/forms/Wizard/Container/PrerenderFieldPropsOfOtherSteps.d.ts +4 -0
- package/es/extensions/forms/Wizard/Container/PrerenderFieldPropsOfOtherSteps.js +54 -0
- package/es/extensions/forms/Wizard/Container/PrerenderFieldPropsOfOtherSteps.js.map +1 -0
- package/es/extensions/forms/Wizard/Container/WizardContainer.d.ts +9 -1
- package/es/extensions/forms/Wizard/Container/WizardContainer.js +97 -194
- package/es/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
- package/es/extensions/forms/Wizard/Container/WizardContainerDocs.js +10 -0
- package/es/extensions/forms/Wizard/Container/WizardContainerDocs.js.map +1 -1
- package/es/extensions/forms/Wizard/Context/WizardContext.d.ts +7 -23
- package/es/extensions/forms/Wizard/Context/WizardContext.js.map +1 -1
- package/es/extensions/forms/Wizard/Context/types.d.ts +35 -0
- package/es/extensions/forms/Wizard/Context/types.js +1 -0
- package/es/extensions/forms/Wizard/Context/types.js.map +1 -0
- package/es/extensions/forms/Wizard/EditButton/EditButton.d.ts +1 -1
- package/es/extensions/forms/Wizard/EditButton/EditButton.js.map +1 -1
- package/es/extensions/forms/Wizard/Step/Step.d.ts +4 -0
- package/es/extensions/forms/Wizard/Step/Step.js +29 -10
- package/es/extensions/forms/Wizard/Step/Step.js.map +1 -1
- package/es/extensions/forms/Wizard/Step/StepContext.d.ts +7 -0
- package/es/extensions/forms/Wizard/Step/StepContext.js +4 -0
- package/es/extensions/forms/Wizard/Step/StepContext.js.map +1 -0
- package/es/extensions/forms/Wizard/Step/StepDocs.js +5 -0
- package/es/extensions/forms/Wizard/Step/StepDocs.js.map +1 -1
- package/es/extensions/forms/Wizard/hooks/useStep.d.ts +2 -1
- package/es/extensions/forms/Wizard/hooks/useStep.js.map +1 -1
- package/es/extensions/forms/constants/locales/en-GB.d.ts +1 -0
- package/es/extensions/forms/constants/locales/en-GB.js +2 -1
- package/es/extensions/forms/constants/locales/en-GB.js.map +1 -1
- package/es/extensions/forms/constants/locales/en-US.d.ts +1 -0
- package/es/extensions/forms/constants/locales/index.d.ts +2 -0
- package/es/extensions/forms/constants/locales/nb-NO.d.ts +1 -0
- package/es/extensions/forms/constants/locales/nb-NO.js +2 -1
- package/es/extensions/forms/constants/locales/nb-NO.js.map +1 -1
- package/es/extensions/forms/hooks/useFieldProps.js +36 -16
- package/es/extensions/forms/hooks/useFieldProps.js.map +1 -1
- package/es/extensions/forms/style/dnb-forms.css +22 -0
- package/es/extensions/forms/style/dnb-forms.min.css +1 -1
- package/es/extensions/forms/types.d.ts +9 -1
- package/es/extensions/forms/types.js.map +1 -1
- package/es/fragments/drawer-list/DrawerList.d.ts +6 -1
- package/es/fragments/drawer-list/DrawerList.js +1 -0
- package/es/fragments/drawer-list/DrawerList.js.map +1 -1
- package/es/shared/Eufemia.d.ts +1 -1
- package/es/shared/Eufemia.js +2 -2
- package/es/shared/Eufemia.js.map +1 -1
- package/es/style/core/scopes.scss +1 -1
- package/es/style/dnb-ui-basis.css +1 -1
- package/es/style/dnb-ui-basis.min.css +1 -1
- package/es/style/dnb-ui-body.css +1 -1
- package/es/style/dnb-ui-body.min.css +1 -1
- package/es/style/dnb-ui-components.css +58 -4
- package/es/style/dnb-ui-components.min.css +2 -2
- package/es/style/dnb-ui-core.css +1 -1
- package/es/style/dnb-ui-core.min.css +1 -1
- package/es/style/dnb-ui-extensions.css +22 -0
- package/es/style/dnb-ui-extensions.min.css +1 -1
- package/es/style/dnb-ui-forms.css +22 -0
- package/es/style/dnb-ui-forms.min.css +1 -1
- package/es/style/themes/theme-eiendom/eiendom-theme-components.css +80 -4
- package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
- package/es/style/themes/theme-eiendom/eiendom-theme-extensions.css +22 -0
- package/es/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
- package/es/style/themes/theme-eiendom/eiendom-theme-forms.css +22 -0
- package/es/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
- package/es/style/themes/theme-sbanken/sbanken-theme-components.css +80 -4
- package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
- package/es/style/themes/theme-sbanken/sbanken-theme-extensions.css +22 -0
- package/es/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
- package/es/style/themes/theme-sbanken/sbanken-theme-forms.css +22 -0
- package/es/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
- package/es/style/themes/theme-ui/ui-theme-components.css +80 -4
- package/es/style/themes/theme-ui/ui-theme-components.min.css +2 -2
- package/es/style/themes/theme-ui/ui-theme-extensions.css +22 -0
- package/es/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
- package/es/style/themes/theme-ui/ui-theme-forms.css +22 -0
- package/es/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
- package/esm/dnb-ui-basis.min.mjs +1 -1
- package/esm/dnb-ui-components.min.mjs +1 -1
- package/esm/dnb-ui-elements.min.mjs +1 -1
- package/esm/dnb-ui-extensions.min.mjs +2 -2
- package/esm/dnb-ui-lib.min.mjs +1 -1
- package/extensions/forms/DataContext/Context.d.ts +10 -4
- package/extensions/forms/DataContext/Context.js.map +1 -1
- package/extensions/forms/DataContext/Provider/Provider.d.ts +2 -2
- package/extensions/forms/DataContext/Provider/Provider.js +44 -40
- package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
- package/extensions/forms/DataContext/Provider/ProviderDocs.js +1 -1
- package/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
- package/extensions/forms/Field/Composition/Composition.js +2 -1
- package/extensions/forms/Field/Composition/Composition.js.map +1 -1
- package/extensions/forms/Field/Date/Date.d.ts +1 -1
- package/extensions/forms/Field/Date/Date.js +1 -1
- package/extensions/forms/Field/Date/Date.js.map +1 -1
- package/extensions/forms/Field/Slider/Slider.js +13 -4
- package/extensions/forms/Field/Slider/Slider.js.map +1 -1
- package/extensions/forms/Field/Upload/Upload.js +2 -1
- package/extensions/forms/Field/Upload/Upload.js.map +1 -1
- package/extensions/forms/Field/Upload/style/dnb-upload.css +5 -0
- package/extensions/forms/Field/Upload/style/dnb-upload.min.css +1 -1
- package/extensions/forms/Field/Upload/style/dnb-upload.scss +6 -0
- package/extensions/forms/FieldBlock/FieldBlock.js +17 -13
- package/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
- package/extensions/forms/Value/Provider/useValueProvider.d.ts +1 -0
- package/extensions/forms/Value/ValueDocs.js +5 -0
- package/extensions/forms/Value/ValueDocs.js.map +1 -1
- package/extensions/forms/ValueBlock/ValueBlock.d.ts +14 -1
- package/extensions/forms/ValueBlock/ValueBlock.js +40 -10
- package/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
- package/extensions/forms/ValueBlock/style/dnb-value-block.css +17 -0
- package/extensions/forms/ValueBlock/style/dnb-value-block.min.css +1 -1
- package/extensions/forms/ValueBlock/style/dnb-value-block.scss +24 -0
- package/extensions/forms/Wizard/Container/DisplaySteps.d.ts +7 -0
- package/extensions/forms/Wizard/Container/DisplaySteps.js +70 -0
- package/extensions/forms/Wizard/Container/DisplaySteps.js.map +1 -0
- package/extensions/forms/Wizard/Container/IterateOverSteps.d.ts +3 -0
- package/extensions/forms/Wizard/Container/IterateOverSteps.js +86 -0
- package/extensions/forms/Wizard/Container/IterateOverSteps.js.map +1 -0
- package/extensions/forms/Wizard/Container/PrerenderFieldPropsOfOtherSteps.d.ts +4 -0
- package/extensions/forms/Wizard/Container/PrerenderFieldPropsOfOtherSteps.js +57 -0
- package/extensions/forms/Wizard/Container/PrerenderFieldPropsOfOtherSteps.js.map +1 -0
- package/extensions/forms/Wizard/Container/WizardContainer.d.ts +9 -1
- package/extensions/forms/Wizard/Container/WizardContainer.js +103 -207
- package/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
- package/extensions/forms/Wizard/Container/WizardContainerDocs.js +10 -0
- package/extensions/forms/Wizard/Container/WizardContainerDocs.js.map +1 -1
- package/extensions/forms/Wizard/Context/WizardContext.d.ts +7 -23
- package/extensions/forms/Wizard/Context/WizardContext.js.map +1 -1
- package/extensions/forms/Wizard/Context/types.d.ts +35 -0
- package/extensions/forms/Wizard/Context/types.js +1 -0
- package/extensions/forms/Wizard/Context/types.js.map +1 -0
- package/extensions/forms/Wizard/EditButton/EditButton.d.ts +1 -1
- package/extensions/forms/Wizard/EditButton/EditButton.js.map +1 -1
- package/extensions/forms/Wizard/Step/Step.d.ts +4 -0
- package/extensions/forms/Wizard/Step/Step.js +29 -10
- package/extensions/forms/Wizard/Step/Step.js.map +1 -1
- package/extensions/forms/Wizard/Step/StepContext.d.ts +7 -0
- package/extensions/forms/Wizard/Step/StepContext.js +4 -0
- package/extensions/forms/Wizard/Step/StepContext.js.map +1 -0
- package/extensions/forms/Wizard/Step/StepDocs.js +5 -0
- package/extensions/forms/Wizard/Step/StepDocs.js.map +1 -1
- package/extensions/forms/Wizard/hooks/useStep.d.ts +2 -1
- package/extensions/forms/Wizard/hooks/useStep.js.map +1 -1
- package/extensions/forms/constants/locales/en-GB.d.ts +1 -0
- package/extensions/forms/constants/locales/en-GB.js +2 -1
- package/extensions/forms/constants/locales/en-GB.js.map +1 -1
- package/extensions/forms/constants/locales/en-US.d.ts +1 -0
- package/extensions/forms/constants/locales/index.d.ts +2 -0
- package/extensions/forms/constants/locales/nb-NO.d.ts +1 -0
- package/extensions/forms/constants/locales/nb-NO.js +2 -1
- package/extensions/forms/constants/locales/nb-NO.js.map +1 -1
- package/extensions/forms/hooks/useFieldProps.js +35 -17
- package/extensions/forms/hooks/useFieldProps.js.map +1 -1
- package/extensions/forms/style/dnb-forms.css +22 -0
- package/extensions/forms/style/dnb-forms.min.css +1 -1
- package/extensions/forms/types.d.ts +9 -1
- package/extensions/forms/types.js.map +1 -1
- package/fragments/drawer-list/DrawerList.d.ts +6 -1
- package/fragments/drawer-list/DrawerList.js +1 -0
- package/fragments/drawer-list/DrawerList.js.map +1 -1
- package/package.json +1 -1
- package/shared/Eufemia.d.ts +1 -1
- package/shared/Eufemia.js +2 -2
- package/shared/Eufemia.js.map +1 -1
- package/style/core/scopes.scss +1 -1
- package/style/dnb-ui-basis.css +1 -1
- package/style/dnb-ui-basis.min.css +1 -1
- package/style/dnb-ui-body.css +1 -1
- package/style/dnb-ui-body.min.css +1 -1
- package/style/dnb-ui-components.css +58 -4
- package/style/dnb-ui-components.min.css +2 -2
- package/style/dnb-ui-core.css +1 -1
- package/style/dnb-ui-core.min.css +1 -1
- package/style/dnb-ui-extensions.css +22 -0
- package/style/dnb-ui-extensions.min.css +1 -1
- package/style/dnb-ui-forms.css +22 -0
- package/style/dnb-ui-forms.min.css +1 -1
- package/style/themes/theme-eiendom/eiendom-theme-components.css +80 -4
- package/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
- package/style/themes/theme-eiendom/eiendom-theme-extensions.css +22 -0
- package/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
- package/style/themes/theme-eiendom/eiendom-theme-forms.css +22 -0
- package/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
- package/style/themes/theme-sbanken/sbanken-theme-components.css +80 -4
- package/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
- package/style/themes/theme-sbanken/sbanken-theme-extensions.css +22 -0
- package/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
- package/style/themes/theme-sbanken/sbanken-theme-forms.css +22 -0
- package/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
- package/style/themes/theme-ui/ui-theme-components.css +80 -4
- package/style/themes/theme-ui/ui-theme-components.min.css +2 -2
- package/style/themes/theme-ui/ui-theme-extensions.css +22 -0
- package/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
- package/style/themes/theme-ui/ui-theme-forms.css +22 -0
- package/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
- package/umd/dnb-ui-basis.min.js +1 -1
- package/umd/dnb-ui-components.min.js +1 -1
- package/umd/dnb-ui-elements.min.js +1 -1
- package/umd/dnb-ui-extensions.min.js +2 -2
- package/umd/dnb-ui-lib.min.js +1 -1
|
@@ -5,7 +5,8 @@ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutPr
|
|
|
5
5
|
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
6
6
|
var _span;
|
|
7
7
|
const _excluded = ["isRange", "maskOrder", "separatorRexExp", "id", "title", "submitAttributes", "maskPlaceholder", "onFocus", "onBlur", "onChange", "onSubmit", "selectedDateTitle", "showInput", "inputElement", "lang", "disabled", "skeleton", "opened", "size", "status", "statusState", "statusProps"],
|
|
8
|
-
_excluded2 = ["
|
|
8
|
+
_excluded2 = ["is_valid", "is_valid_start_date", "is_valid_end_date"],
|
|
9
|
+
_excluded3 = ["className", "value"];
|
|
9
10
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
10
11
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
11
12
|
import React, { useCallback, useContext, useMemo, useRef, useState } from 'react';
|
|
@@ -61,6 +62,11 @@ function DatePickerInput(externalProps) {
|
|
|
61
62
|
partialStartDate: '',
|
|
62
63
|
partialEndDate: ''
|
|
63
64
|
});
|
|
65
|
+
const invalidDatesRef = useRef({
|
|
66
|
+
invalidStartDate: null,
|
|
67
|
+
invalidEndDate: null
|
|
68
|
+
});
|
|
69
|
+
const isDateFullyFilledOutRef = useRef(false);
|
|
64
70
|
const {
|
|
65
71
|
updateDates,
|
|
66
72
|
callOnChangeHandler,
|
|
@@ -92,34 +98,35 @@ function DatePickerInput(externalProps) {
|
|
|
92
98
|
__endMonth,
|
|
93
99
|
__endYear
|
|
94
100
|
}), [__startDay, __startMonth, __startYear, __endDay, __endMonth, __endYear]);
|
|
95
|
-
const
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
endDayRef
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
const dateRefs =
|
|
116
|
-
startDay:
|
|
117
|
-
startMonth:
|
|
118
|
-
startYear:
|
|
119
|
-
endDay:
|
|
120
|
-
endMonth:
|
|
121
|
-
endYear:
|
|
122
|
-
})
|
|
101
|
+
const inputRefs = useRef({
|
|
102
|
+
startDayRef: {
|
|
103
|
+
current: undefined
|
|
104
|
+
},
|
|
105
|
+
startMonthRef: {
|
|
106
|
+
current: undefined
|
|
107
|
+
},
|
|
108
|
+
startYearRef: {
|
|
109
|
+
current: undefined
|
|
110
|
+
},
|
|
111
|
+
endDayRef: {
|
|
112
|
+
current: undefined
|
|
113
|
+
},
|
|
114
|
+
endMonthRef: {
|
|
115
|
+
current: undefined
|
|
116
|
+
},
|
|
117
|
+
endYearRef: {
|
|
118
|
+
current: undefined
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
const dateRefs = useRef({
|
|
122
|
+
startDay: '',
|
|
123
|
+
startMonth: '',
|
|
124
|
+
startYear: '',
|
|
125
|
+
endDay: '',
|
|
126
|
+
endMonth: '',
|
|
127
|
+
endYear: ''
|
|
128
|
+
});
|
|
129
|
+
syncDateRefs(dateRefs, inputDates);
|
|
123
130
|
const startDateRef = useRef();
|
|
124
131
|
const endDateRef = useRef();
|
|
125
132
|
const temporaryDates = useMemo(() => ({
|
|
@@ -185,17 +192,17 @@ function DatePickerInput(externalProps) {
|
|
|
185
192
|
updateDates({
|
|
186
193
|
hoverDate: null
|
|
187
194
|
}, dates => {
|
|
188
|
-
if (hasHadValidDate) {
|
|
195
|
+
if (isDateFullyFilledOutRef.current || hasHadValidDate) {
|
|
189
196
|
const {
|
|
190
197
|
startDate,
|
|
191
198
|
endDate,
|
|
192
199
|
event
|
|
193
200
|
} = _objectSpread(_objectSpread({}, state), dates);
|
|
194
|
-
callOnChangeHandler({
|
|
201
|
+
callOnChangeHandler(_objectSpread({
|
|
195
202
|
startDate,
|
|
196
203
|
endDate,
|
|
197
204
|
event
|
|
198
|
-
});
|
|
205
|
+
}, invalidDatesRef.current));
|
|
199
206
|
}
|
|
200
207
|
});
|
|
201
208
|
}, [updateDates, callOnChangeHandler, hasHadValidDate]);
|
|
@@ -216,9 +223,9 @@ function DatePickerInput(externalProps) {
|
|
|
216
223
|
}
|
|
217
224
|
updateDates(state, dates => {
|
|
218
225
|
if (typeof startDate !== 'undefined' && isValid(startDate) || typeof endDate !== 'undefined' && isValid(endDate)) {
|
|
219
|
-
callOnChangeHandler(_objectSpread({
|
|
226
|
+
callOnChangeHandler(_objectSpread(_objectSpread({
|
|
220
227
|
event
|
|
221
|
-
}, dates));
|
|
228
|
+
}, dates), invalidDatesRef.current));
|
|
222
229
|
}
|
|
223
230
|
});
|
|
224
231
|
}, [updateDates, callOnChangeHandler, isRange]);
|
|
@@ -226,13 +233,13 @@ function DatePickerInput(externalProps) {
|
|
|
226
233
|
event
|
|
227
234
|
}) => {
|
|
228
235
|
const getDates = () => ['start', 'end'].reduce((acc, mode) => {
|
|
229
|
-
acc[`${mode}Date`] = [dateRefs[`${mode}Year`]
|
|
236
|
+
acc[`${mode}Date`] = [dateRefs.current[`${mode}Year`] || inputDates[`__${mode}Year`] || 'yyyy', dateRefs.current[`${mode}Month`] || inputDates[`__${mode}Month`] || 'mm', dateRefs.current[`${mode}Day`] || inputDates[`__${mode}Day`] || 'dd'].join('-');
|
|
230
237
|
return acc;
|
|
231
238
|
}, {
|
|
232
239
|
startDate: undefined,
|
|
233
240
|
endDate: undefined
|
|
234
241
|
});
|
|
235
|
-
|
|
242
|
+
const {
|
|
236
243
|
startDate,
|
|
237
244
|
endDate
|
|
238
245
|
} = getDates();
|
|
@@ -242,35 +249,35 @@ function DatePickerInput(externalProps) {
|
|
|
242
249
|
partialStartDate,
|
|
243
250
|
partialEndDate
|
|
244
251
|
});
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
252
|
+
const parsedStartDate = parseISO(startDate);
|
|
253
|
+
const parsedEndDate = parseISO(endDate);
|
|
254
|
+
const isStartDateValid = isValid(parsedStartDate);
|
|
255
|
+
const isEndDateValid = isValid(parsedEndDate);
|
|
256
|
+
const _getReturnObject = getReturnObject(_objectSpread({
|
|
257
|
+
startDate: isStartDateValid ? parsedStartDate : null,
|
|
258
|
+
endDate: isEndDateValid ? parsedEndDate : null,
|
|
259
|
+
event,
|
|
260
|
+
partialStartDate,
|
|
261
|
+
partialEndDate
|
|
262
|
+
}, invalidDatesRef.current)),
|
|
263
|
+
{
|
|
264
|
+
is_valid,
|
|
265
|
+
is_valid_start_date,
|
|
266
|
+
is_valid_end_date
|
|
267
|
+
} = _getReturnObject,
|
|
268
|
+
returnObject = _objectWithoutProperties(_getReturnObject, _excluded2);
|
|
269
|
+
const typedDates = _objectSpread(_objectSpread(_objectSpread({}, !isRange && is_valid === false && {
|
|
270
|
+
date: startDate
|
|
271
|
+
}), isRange && is_valid_start_date === false && {
|
|
272
|
+
start_date: startDate
|
|
273
|
+
}), isRange && is_valid_end_date === false && {
|
|
274
|
+
end_date: endDate
|
|
259
275
|
});
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
const typedDates = isRange ? {
|
|
266
|
-
start_date: startDate,
|
|
267
|
-
end_date: endDate
|
|
268
|
-
} : {
|
|
269
|
-
date: startDate
|
|
270
|
-
};
|
|
271
|
-
returnObject = _objectSpread(_objectSpread({}, returnObject), typedDates);
|
|
272
|
-
}
|
|
273
|
-
onType === null || onType === void 0 ? void 0 : onType(_objectSpread({}, returnObject));
|
|
276
|
+
onType === null || onType === void 0 ? void 0 : onType(_objectSpread(_objectSpread({
|
|
277
|
+
is_valid,
|
|
278
|
+
is_valid_start_date,
|
|
279
|
+
is_valid_end_date
|
|
280
|
+
}, returnObject), typedDates));
|
|
274
281
|
}, [isRange, dateRefs, getReturnObject, inputDates, onType]);
|
|
275
282
|
const prepareCounting = useCallback(async ({
|
|
276
283
|
keyCode,
|
|
@@ -391,20 +398,26 @@ function DatePickerInput(externalProps) {
|
|
|
391
398
|
}
|
|
392
399
|
}, [prepareCounting, selectStart]);
|
|
393
400
|
const setDate = useCallback((event, mode, type) => {
|
|
394
|
-
var _dateRefs, _dateRefs2, _dateRefs3;
|
|
395
401
|
event.persist();
|
|
396
402
|
const value = event.target.value;
|
|
397
|
-
dateRefs[`${mode}${type}`]
|
|
403
|
+
dateRefs.current[`${mode}${type}`] = value;
|
|
398
404
|
if (modeDate[`${mode}Date`]) {
|
|
399
405
|
temporaryDates[`${mode}Date`].current = modeDate[`${mode}Date`];
|
|
400
406
|
}
|
|
401
407
|
const fallback = temporaryDates[`${mode}Date`].current;
|
|
402
|
-
const year =
|
|
403
|
-
const month =
|
|
404
|
-
const day =
|
|
408
|
+
const year = dateRefs.current[`${mode}Year`] || fallback && fallback.getFullYear();
|
|
409
|
+
const month = dateRefs.current[`${mode}Month`] || fallback && fallback.getMonth() + 1;
|
|
410
|
+
const day = dateRefs.current[`${mode}Day`] || fallback && fallback.getDate();
|
|
405
411
|
const date = new Date(parseFloat(String(year)), parseFloat(String(month)) - 1, parseFloat(String(day)));
|
|
406
412
|
const isValidDate = !/[^0-9]/.test(String(day)) && !/[^0-9]/.test(String(month)) && !/[^0-9]/.test(String(year)) && isValid(date) && date.getDate() == parseFloat(String(day)) && date.getMonth() + 1 == parseFloat(String(month)) && date.getFullYear() == parseFloat(String(year));
|
|
413
|
+
const dateString = `${year}-${month}-${day}`;
|
|
414
|
+
isDateFullyFilledOutRef.current = /^[0-9]{4}-[0-9]{2}-[0-9]{2}$/.test(dateString);
|
|
407
415
|
if (isValidDate) {
|
|
416
|
+
invalidDatesRef.current = _objectSpread(_objectSpread({}, invalidDatesRef.current), mode === 'start' ? {
|
|
417
|
+
invalidStartDate: null
|
|
418
|
+
} : {
|
|
419
|
+
invalidEndDate: null
|
|
420
|
+
});
|
|
408
421
|
callOnChange({
|
|
409
422
|
[`${mode}Date`]: date,
|
|
410
423
|
event
|
|
@@ -414,6 +427,11 @@ function DatePickerInput(externalProps) {
|
|
|
414
427
|
[`${mode}Date`]: null,
|
|
415
428
|
[`__${mode}${type}`]: value
|
|
416
429
|
});
|
|
430
|
+
invalidDatesRef.current = _objectSpread(_objectSpread({}, invalidDatesRef.current), mode === 'start' ? {
|
|
431
|
+
invalidStartDate: dateString
|
|
432
|
+
} : {
|
|
433
|
+
invalidEndDate: dateString
|
|
434
|
+
});
|
|
417
435
|
callOnChangeAsInvalid({
|
|
418
436
|
[`${mode}Date`]: null,
|
|
419
437
|
event
|
|
@@ -474,7 +492,7 @@ function DatePickerInput(externalProps) {
|
|
|
474
492
|
const inputSizeClassName = size && `dnb-date-picker__input--${size}`;
|
|
475
493
|
switch (state) {
|
|
476
494
|
case 'd':
|
|
477
|
-
refList.current.push(inputRefs[`${mode}DayRef`]);
|
|
495
|
+
refList.current.push(inputRefs.current[`${mode}DayRef`]);
|
|
478
496
|
return React.createElement(React.Fragment, {
|
|
479
497
|
key: 'dd' + i
|
|
480
498
|
}, React.createElement(DateField, _extends({}, element, {
|
|
@@ -483,7 +501,7 @@ function DatePickerInput(externalProps) {
|
|
|
483
501
|
className: classnames("dnb-date-picker__input dnb-date-picker__input--day", element.className, inputSizeClassName),
|
|
484
502
|
size: 2,
|
|
485
503
|
mask: [/[0-3]/, /[0-9]/],
|
|
486
|
-
inputRef: inputRefs[`${mode}DayRef`],
|
|
504
|
+
inputRef: inputRefs.current[`${mode}DayRef`],
|
|
487
505
|
onChange: dateSetters[`set_${mode}Day`],
|
|
488
506
|
value: inputDates[`__${mode}Day`] || '',
|
|
489
507
|
"aria-labelledby": `${id}-${mode}-day-label`
|
|
@@ -494,7 +512,7 @@ function DatePickerInput(externalProps) {
|
|
|
494
512
|
htmlFor: `${id}-${mode}-day`
|
|
495
513
|
}, isRangeLabel + day));
|
|
496
514
|
case 'm':
|
|
497
|
-
refList.current.push(inputRefs[`${mode}MonthRef`]);
|
|
515
|
+
refList.current.push(inputRefs.current[`${mode}MonthRef`]);
|
|
498
516
|
return React.createElement(React.Fragment, {
|
|
499
517
|
key: 'mm' + i
|
|
500
518
|
}, React.createElement(DateField, _extends({}, element, {
|
|
@@ -503,7 +521,7 @@ function DatePickerInput(externalProps) {
|
|
|
503
521
|
className: classnames("dnb-date-picker__input dnb-date-picker__input--month", element.className, inputSizeClassName),
|
|
504
522
|
size: 2,
|
|
505
523
|
mask: [/[0-1]/, /[0-9]/],
|
|
506
|
-
inputRef: inputRefs[`${mode}MonthRef`],
|
|
524
|
+
inputRef: inputRefs.current[`${mode}MonthRef`],
|
|
507
525
|
onChange: dateSetters[`set_${mode}Month`],
|
|
508
526
|
value: inputDates[`__${mode}Month`] || '',
|
|
509
527
|
"aria-labelledby": `${id}-${mode}-month-label`
|
|
@@ -514,7 +532,7 @@ function DatePickerInput(externalProps) {
|
|
|
514
532
|
htmlFor: `${id}-${mode}-month`
|
|
515
533
|
}, isRangeLabel + month));
|
|
516
534
|
case 'y':
|
|
517
|
-
refList.current.push(inputRefs[`${mode}YearRef`]);
|
|
535
|
+
refList.current.push(inputRefs.current[`${mode}YearRef`]);
|
|
518
536
|
return React.createElement(React.Fragment, {
|
|
519
537
|
key: 'yy' + i
|
|
520
538
|
}, React.createElement(DateField, _extends({}, element, {
|
|
@@ -523,7 +541,7 @@ function DatePickerInput(externalProps) {
|
|
|
523
541
|
className: classnames("dnb-date-picker__input dnb-date-picker__input--year", element.className, inputSizeClassName),
|
|
524
542
|
size: 4,
|
|
525
543
|
mask: [/[1-2]/, /[0-9]/, /[0-9]/, /[0-9]/],
|
|
526
|
-
inputRef: inputRefs[`${mode}YearRef`],
|
|
544
|
+
inputRef: inputRefs.current[`${mode}YearRef`],
|
|
527
545
|
onChange: dateSetters[`set_${mode}Year`],
|
|
528
546
|
value: inputDates[`__${mode}Year`] || '',
|
|
529
547
|
"aria-labelledby": `${id}-${mode}-year-label`
|
|
@@ -606,7 +624,7 @@ function InputElement(_ref) {
|
|
|
606
624
|
className,
|
|
607
625
|
value
|
|
608
626
|
} = _ref,
|
|
609
|
-
props = _objectWithoutProperties(_ref,
|
|
627
|
+
props = _objectWithoutProperties(_ref, _excluded3);
|
|
610
628
|
return React.createElement(TextMask, _extends({
|
|
611
629
|
guide: true,
|
|
612
630
|
showMask: true,
|
|
@@ -619,5 +637,14 @@ function InputElement(_ref) {
|
|
|
619
637
|
value: value
|
|
620
638
|
}, props));
|
|
621
639
|
}
|
|
640
|
+
function syncDateRefs(dateRefs, inputDates) {
|
|
641
|
+
for (const date in dateRefs.current) {
|
|
642
|
+
const dateRefValue = dateRefs.current[date];
|
|
643
|
+
const inputDateValue = inputDates[`__${date}`];
|
|
644
|
+
if (dateRefValue !== inputDateValue) {
|
|
645
|
+
dateRefs.current[date] = inputDateValue;
|
|
646
|
+
}
|
|
647
|
+
}
|
|
648
|
+
}
|
|
622
649
|
const wait = duration => new Promise(r => setTimeout(r, duration));
|
|
623
650
|
//# sourceMappingURL=DatePickerInput.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePickerInput.js","names":["React","useCallback","useContext","useMemo","useRef","useState","addDays","addMonths","addYears","isValid","parseISO","classnames","TextMask","Button","Input","SubmitButton","warn","validateDOMAttributes","convertStringToDate","DatePickerContext","useTranslation","defaultProps","maskOrder","maskPlaceholder","separatorRexExp","statusState","opened","DatePickerInput","externalProps","props","_objectSpread","isRange","id","title","submitAttributes","onFocus","onBlur","onChange","onSubmit","selectedDateTitle","showInput","inputElement","lang","disabled","skeleton","size","status","statusProps","attributes","_objectWithoutProperties","_excluded","focusState","setFocusState","partialDates","setPartialDates","partialStartDate","partialEndDate","updateDates","callOnChangeHandler","hasHadValidDate","getReturnObject","__startDay","__startMonth","__startYear","__endDay","__endMonth","__endYear","startDate","endDate","onType","label","translation","DatePicker","modeDate","inputDates","startDayRef","startMonthRef","startYearRef","endDayRef","endMonthRef","endYearRef","inputRefs","startDayDateRef","endDayDateRef","startMonthDateRef","endMonthDateRef","startYearDateRef","endYearDateRef","dateRefs","startDay","startMonth","startYear","endDay","endMonth","endYear","startDateRef","endDateRef","temporaryDates","refList","focusMode","maskList","separators","match","split","reduce","acc","cur","push","length","shift","pasteHandler","event","current","success","clipboardData","window","getData","preventDefault","possibleFormats","forEach","date","sep","replace","reverse","join","index","dateFormat","mode","error","callOnChangeAsInvalid","state","hoverDate","dates","callOnChange","callOnType","getDates","undefined","returnObject","is_valid","is_valid_start_date","is_valid_end_date","typedDates","start_date","end_date","prepareCounting","keyCode","target","isDate","getAttribute","isInRange","count","wait","selectAll","e","selectStart","focus","setSelectionRange","onFocusHandler","onBlurHandler","onKeyDownHandler","key","selectionStart","selectionEnd","persist","parseFloat","firstSelectionStart","secondSelectionStart","test","refListArray","findIndex","nextSibling","prevSibling","endPos","value","setDate","type","_dateRefs","_dateRefs2","_dateRefs3","fallback","year","getFullYear","month","getMonth","day","getDate","Date","String","isValidDate","dateSetters","set_startDay","set_startMonth","set_startYear","set_endDay","set_endMonth","set_endYear","getPlaceholderChar","indexOf","generateDateList","element","map","i","slice","placeholderChar","isRangeLabel","onKeyDown","onPaste","DateField","isValidElement","InputElement","inputSizeClassName","createElement","Fragment","_extends","className","mask","inputRef","hidden","htmlFor","renderInputElement","startDateList","endDateList","_span","formatDate","openPickerText","SubmitElement","innerRef","ref","input_state","input_element","status_state","submit_element","icon","variant","on_submit","on_click","select","_ref","_excluded2","guide","showMask","keepCharPositions","autoComplete","autoCapitalize","spellCheck","autoCorrect","duration","Promise","r","setTimeout"],"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 addDays from 'date-fns/addDays'\nimport addMonths from 'date-fns/addMonths'\nimport addYears from 'date-fns/addYears'\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 { warn, validateDOMAttributes } from '../../shared/component-helper'\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 } from './DatePicker'\nimport { useTranslation } from '../../shared'\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?: string\n maskPlaceholder?: string\n separatorRexExp?: 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\nconst defaultProps: DatePickerInputProps = {\n maskOrder: 'dd/mm/yyyy',\n maskPlaceholder: 'dd/mm/åååå',\n separatorRexExp: /[-/ ]/g,\n statusState: 'error',\n opened: false,\n}\n\nfunction DatePickerInput(externalProps: DatePickerInputProps) {\n const props = { ...defaultProps, ...externalProps }\n\n const {\n isRange,\n maskOrder,\n separatorRexExp,\n id,\n title,\n submitAttributes,\n maskPlaceholder, // 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\n const [focusState, setFocusState] = useState<string>('virgin')\n const [partialDates, setPartialDates] = useState({\n partialStartDate: '',\n partialEndDate: '',\n })\n\n const {\n updateDates,\n callOnChangeHandler,\n hasHadValidDate,\n getReturnObject,\n __startDay,\n __startMonth,\n __startYear,\n __endDay,\n __endMonth,\n __endYear,\n startDate,\n endDate,\n props: { onType, label },\n } = useContext(DatePickerContext)\n\n const translation = useTranslation().DatePicker\n\n const modeDate = useMemo(\n () => ({\n startDate,\n endDate,\n }),\n [startDate, endDate]\n )\n\n const inputDates = useMemo(\n () => ({\n __startDay,\n __startMonth,\n __startYear,\n __endDay,\n __endMonth,\n __endYear,\n }),\n [\n __startDay,\n __startMonth,\n __startYear,\n __endDay,\n __endMonth,\n __endYear,\n ]\n )\n\n // Used in refList, and initiated inside object to to maintain the way of accessing mimic `this`, used in this component\n // Should probably refactor at one point, or move to own hook\n const startDayRef = useRef<HTMLInputElement>()\n const startMonthRef = useRef<HTMLInputElement>()\n const startYearRef = useRef<HTMLInputElement>()\n const endDayRef = useRef<HTMLInputElement>()\n const endMonthRef = useRef<HTMLInputElement>()\n const endYearRef = useRef<HTMLInputElement>()\n\n const inputRefs = useMemo(\n () => ({\n startDayRef,\n startMonthRef,\n startYearRef,\n endDayRef,\n endMonthRef,\n endYearRef,\n }),\n []\n )\n\n const startDayDateRef = useRef<string>()\n const endDayDateRef = useRef<string>()\n const startMonthDateRef = useRef<string>()\n const endMonthDateRef = useRef<string>()\n const startYearDateRef = useRef<string>()\n const endYearDateRef = useRef<string>()\n\n const dateRefs = useMemo(\n () => ({\n startDay: startDayDateRef,\n startMonth: endDayDateRef,\n startYear: startMonthDateRef,\n endDay: endMonthDateRef,\n endMonth: startYearDateRef,\n endYear: endYearDateRef,\n }),\n []\n )\n\n const startDateRef = useRef<Date>()\n const endDateRef = useRef<Date>()\n\n const temporaryDates = useMemo(\n () => ({ startDate: startDateRef, endDate: endDateRef }),\n []\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(separatorRexExp)\n\n return maskOrder\n .split(separatorRexExp)\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, separatorRexExp])\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')\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 (state: {\n endDate?: Date\n starDate?: Date\n event: React.ChangeEvent<HTMLInputElement>\n }) => {\n updateDates(\n {\n hoverDate: null,\n },\n (dates) => {\n if (hasHadValidDate) {\n const { startDate, endDate, event } = {\n ...state,\n ...dates,\n }\n callOnChangeHandler({ startDate, endDate, event })\n }\n }\n )\n },\n [updateDates, callOnChangeHandler, hasHadValidDate]\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({ event, ...dates })\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[`${mode}Year`].current ||\n inputDates[`__${mode}Year`] ||\n 'yyyy',\n dateRefs[`${mode}Month`].current ||\n inputDates[`__${mode}Month`] ||\n 'mm',\n dateRefs[`${mode}Day`].current ||\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 let { startDate, endDate } = getDates()\n // Get the partial dates, so we can know if something was typed or not in an optional date field\n const partialStartDate = startDate\n const partialEndDate = endDate\n\n setPartialDates({\n partialStartDate,\n partialEndDate,\n })\n\n startDate = parseISO(startDate)\n endDate = parseISO(endDate)\n\n // ... check if they were valid\n if (!isValid(startDate)) {\n startDate = null\n }\n if (!isValid(endDate)) {\n endDate = null\n }\n\n let returnObject = getReturnObject({\n startDate,\n endDate,\n event,\n partialStartDate,\n partialEndDate,\n })\n\n // Now, lets correct\n if (\n returnObject.is_valid === false ||\n returnObject.is_valid_start_date === false ||\n returnObject.is_valid_end_date === false\n ) {\n const { startDate, endDate } = getDates()\n\n const typedDates = isRange\n ? {\n start_date: startDate,\n end_date: endDate,\n }\n : { date: startDate }\n\n returnObject = {\n ...returnObject,\n ...typedDates,\n }\n }\n\n onType?.({ ...returnObject })\n },\n [isRange, dateRefs, getReturnObject, inputDates, onType]\n )\n\n const prepareCounting = useCallback(\n async ({\n keyCode,\n target,\n event,\n }: {\n keyCode: string\n target: HTMLInputElement\n event: React.KeyboardEvent<HTMLInputElement>\n }) => {\n try {\n const isDate = target\n .getAttribute('class')\n .match(/__input--(day|month|year)($|\\s)/)[1]\n\n const isInRange = target\n .getAttribute('id')\n .match(/-(start|end)-(day|month|year)/)[1]\n\n let date = isInRange === 'start' ? startDate : endDate\n\n // do nothing if date is not set yet\n if (!date) {\n return\n }\n\n const count = keyCode === 'ArrowUp' ? 1 : -1\n\n if (keyCode === 'ArrowUp' || keyCode === 'ArrowDown') {\n switch (isDate) {\n case 'day':\n date = addDays(date, count)\n break\n case 'month':\n date = addMonths(date, count)\n break\n case 'year':\n date = addYears(date, count)\n break\n }\n }\n\n callOnChange({\n [isInRange === 'start' ? 'startDate' : 'endDate']: date,\n event,\n })\n\n await wait(1) // to get the correct position afterwards\n\n selectAll(target)\n } catch (e) {\n warn(e)\n }\n },\n [startDate, endDate, callOnChange]\n )\n\n const selectStart = useCallback((target: HTMLInputElement) => {\n target.focus()\n target.setSelectionRange(0, 0)\n }, [])\n\n const onFocusHandler = useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n try {\n selectAll(event.target)\n } catch (e) {\n warn(e)\n }\n\n setFocusState('focus')\n\n onFocus?.({\n ...event,\n ...getReturnObject({ event }),\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 }),\n ...partialDates,\n })\n },\n [onBlur, getReturnObject, partialDates]\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 selectStart(target)\n }\n\n // only to process key up and down press\n switch (keyCode) {\n case 'ArrowUp':\n case 'ArrowDown':\n event.persist()\n event.preventDefault()\n prepareCounting({ event, keyCode, target })\n return false\n case 'Tab':\n return false\n }\n\n // the rest is for value entry\n\n const size = parseFloat(target.getAttribute('size'))\n const firstSelectionStart = target.selectionStart\n\n await wait(1) // to get the correct position afterwards\n\n const secondSelectionStart = target.selectionStart\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 if (\n index < refListArray.length - 1 &&\n ((secondSelectionStart === size &&\n isValid &&\n keyCode !== 'ArrowLeft' &&\n keyCode !== 'Backspace') ||\n (firstSelectionStart === size && keyCode === 'ArrowRight'))\n ) {\n try {\n // stop in case there is no next input element\n if (!refListArray[index + 1].current) {\n return\n }\n const nextSibling = refListArray[index + 1].current\n if (nextSibling) {\n nextSibling.focus()\n nextSibling.setSelectionRange(0, 0)\n }\n } catch (e) {\n warn(e)\n }\n } else if (firstSelectionStart === 0 && index > 0) {\n switch (keyCode) {\n case 'ArrowLeft':\n case 'Backspace':\n try {\n const prevSibling = refListArray[index - 1].current\n if (prevSibling) {\n const endPos = prevSibling.value.length\n prevSibling.focus()\n prevSibling.setSelectionRange(endPos, endPos)\n }\n } catch (e) {\n warn(e)\n }\n break\n }\n }\n },\n [prepareCounting, selectStart]\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[`${mode}${type}`].current = value\n\n if (modeDate[`${mode}Date`]) {\n temporaryDates[`${mode}Date`].current = modeDate[`${mode}Date`]\n }\n\n const fallback = temporaryDates[`${mode}Date`].current\n\n // provide fallbacks to create a temp fallback\n const year =\n dateRefs[`${mode}Year`]?.current ||\n (fallback && fallback.getFullYear())\n const month =\n dateRefs[`${mode}Month`]?.current ||\n (fallback && fallback.getMonth() + 1)\n const day =\n dateRefs[`${mode}Day`]?.current || (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 // update the date\n if (isValidDate) {\n callOnChange({\n [`${mode}Date`]: date,\n event,\n })\n } else {\n updateDates({\n [`${mode}Date`]: null,\n [`__${mode}${type}`]: value,\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 ]\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 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 MutliInputMask\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 (!separatorRexExp.test(value)) {\n if (!inputElement) {\n element = {\n ...element,\n onKeyDown: onKeyDownHandler,\n onPaste: pasteHandler,\n onFocus: (e) => {\n focusMode.current = mode\n onFocusHandler(e)\n },\n onBlur: onBlurHandler,\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[`${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-3]/, /[0-9]/]}\n inputRef={inputRefs[`${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[`${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-1]/, /[0-9]/]}\n inputRef={inputRefs[`${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[`${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={[/[1-2]/, /[0-9]/, /[0-9]/, /[0-9]/]}\n inputRef={inputRefs[`${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 id,\n inputElement,\n isRange,\n size,\n translation,\n separatorRexExp,\n dateSetters,\n inputRefs,\n maskList,\n onBlurHandler,\n onFocusHandler,\n getPlaceholderChar,\n pasteHandler,\n onKeyDownHandler,\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 formatDate = 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={formatDate}\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 selectAll(target: HTMLInputElement) {\n target.focus()\n target.select()\n}\n\nfunction InputElement({ className, value, ...props }: TextMaskProps) {\n return (\n <TextMask\n guide={true}\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\nconst wait = (duration: number) =>\n new Promise((r) => setTimeout(r, duration))\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DatePickerInput.js","names":["React","useCallback","useContext","useMemo","useRef","useState","addDays","addMonths","addYears","isValid","parseISO","classnames","TextMask","Button","Input","SubmitButton","warn","validateDOMAttributes","convertStringToDate","DatePickerContext","useTranslation","defaultProps","maskOrder","maskPlaceholder","separatorRexExp","statusState","opened","DatePickerInput","externalProps","props","_objectSpread","isRange","id","title","submitAttributes","onFocus","onBlur","onChange","onSubmit","selectedDateTitle","showInput","inputElement","lang","disabled","skeleton","size","status","statusProps","attributes","_objectWithoutProperties","_excluded","focusState","setFocusState","partialDates","setPartialDates","partialStartDate","partialEndDate","invalidDatesRef","invalidStartDate","invalidEndDate","isDateFullyFilledOutRef","updateDates","callOnChangeHandler","hasHadValidDate","getReturnObject","__startDay","__startMonth","__startYear","__endDay","__endMonth","__endYear","startDate","endDate","onType","label","translation","DatePicker","modeDate","inputDates","inputRefs","startDayRef","current","undefined","startMonthRef","startYearRef","endDayRef","endMonthRef","endYearRef","dateRefs","startDay","startMonth","startYear","endDay","endMonth","endYear","syncDateRefs","startDateRef","endDateRef","temporaryDates","refList","focusMode","maskList","separators","match","split","reduce","acc","cur","push","length","shift","pasteHandler","event","success","clipboardData","window","getData","preventDefault","possibleFormats","forEach","date","sep","replace","reverse","join","index","dateFormat","mode","error","callOnChangeAsInvalid","state","hoverDate","dates","callOnChange","callOnType","getDates","parsedStartDate","parsedEndDate","isStartDateValid","isEndDateValid","_getReturnObject","is_valid","is_valid_start_date","is_valid_end_date","returnObject","_excluded2","typedDates","start_date","end_date","prepareCounting","keyCode","target","isDate","getAttribute","isInRange","count","wait","selectAll","e","selectStart","focus","setSelectionRange","onFocusHandler","onBlurHandler","onKeyDownHandler","key","selectionStart","selectionEnd","persist","parseFloat","firstSelectionStart","secondSelectionStart","test","refListArray","findIndex","nextSibling","prevSibling","endPos","value","setDate","type","fallback","year","getFullYear","month","getMonth","day","getDate","Date","String","isValidDate","dateString","dateSetters","set_startDay","set_startMonth","set_startYear","set_endDay","set_endMonth","set_endYear","getPlaceholderChar","indexOf","generateDateList","element","map","i","slice","placeholderChar","isRangeLabel","onKeyDown","onPaste","DateField","isValidElement","InputElement","inputSizeClassName","createElement","Fragment","_extends","className","mask","inputRef","hidden","htmlFor","renderInputElement","startDateList","endDateList","_span","formatDate","openPickerText","SubmitElement","innerRef","ref","input_state","input_element","status_state","submit_element","icon","variant","on_submit","on_click","select","_ref","_excluded3","guide","showMask","keepCharPositions","autoComplete","autoCapitalize","spellCheck","autoCorrect","dateRefValue","inputDateValue","duration","Promise","r","setTimeout"],"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 addDays from 'date-fns/addDays'\nimport addMonths from 'date-fns/addMonths'\nimport addYears from 'date-fns/addYears'\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 { warn, validateDOMAttributes } from '../../shared/component-helper'\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 } from './DatePicker'\nimport { useTranslation } from '../../shared'\nimport { DatePickerInputDates } from './hooks/useDates'\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?: string\n maskPlaceholder?: string\n separatorRexExp?: 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 maskOrder: 'dd/mm/yyyy',\n maskPlaceholder: 'dd/mm/åååå',\n separatorRexExp: /[-/ ]/g,\n statusState: 'error',\n opened: false,\n}\n\nfunction DatePickerInput(externalProps: DatePickerInputProps) {\n const props = { ...defaultProps, ...externalProps }\n\n const {\n isRange,\n maskOrder,\n separatorRexExp,\n id,\n title,\n submitAttributes,\n maskPlaceholder, // 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\n const [focusState, setFocusState] = useState<string>('virgin')\n // TODO: Turn into a ref, as these values should not trigger a rerender\n const [partialDates, setPartialDates] = useState({\n partialStartDate: '',\n partialEndDate: '',\n })\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 hasHadValidDate,\n getReturnObject,\n __startDay,\n __startMonth,\n __startYear,\n __endDay,\n __endMonth,\n __endYear,\n startDate,\n endDate,\n props: { onType, label },\n } = useContext(DatePickerContext)\n\n const translation = useTranslation().DatePicker\n\n const modeDate = useMemo(\n () => ({\n startDate,\n endDate,\n }),\n [startDate, endDate]\n )\n\n const inputDates = useMemo(\n () => ({\n __startDay,\n __startMonth,\n __startYear,\n __endDay,\n __endMonth,\n __endYear,\n }),\n [\n __startDay,\n __startMonth,\n __startYear,\n __endDay,\n __endMonth,\n __endYear,\n ]\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<Record<string, string>>({\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 startDateRef = useRef<Date>()\n const endDateRef = useRef<Date>()\n\n const temporaryDates = useMemo(\n () => ({ startDate: startDateRef, endDate: endDateRef }),\n []\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(separatorRexExp)\n\n return maskOrder\n .split(separatorRexExp)\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, separatorRexExp])\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')\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 (state: {\n endDate?: Date\n starDate?: Date\n event: React.ChangeEvent<HTMLInputElement>\n }) => {\n updateDates(\n {\n hoverDate: null,\n },\n (dates) => {\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 { startDate, endDate, event } = {\n ...state,\n ...dates,\n }\n callOnChangeHandler({\n startDate,\n endDate,\n event,\n ...invalidDatesRef.current,\n })\n }\n }\n )\n },\n [updateDates, callOnChangeHandler, hasHadValidDate]\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 // Get the partial dates, so we can know if something was typed or not in an optional date field\n const partialStartDate = startDate\n const partialEndDate = endDate\n\n setPartialDates({\n partialStartDate,\n partialEndDate,\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 partialStartDate,\n partialEndDate,\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 [isRange, dateRefs, getReturnObject, inputDates, onType]\n )\n\n const prepareCounting = useCallback(\n async ({\n keyCode,\n target,\n event,\n }: {\n keyCode: string\n target: HTMLInputElement\n event: React.KeyboardEvent<HTMLInputElement>\n }) => {\n try {\n const isDate = target\n .getAttribute('class')\n .match(/__input--(day|month|year)($|\\s)/)[1]\n\n const isInRange = target\n .getAttribute('id')\n .match(/-(start|end)-(day|month|year)/)[1]\n\n let date = isInRange === 'start' ? startDate : endDate\n\n // do nothing if date is not set yet\n if (!date) {\n return\n }\n\n const count = keyCode === 'ArrowUp' ? 1 : -1\n\n if (keyCode === 'ArrowUp' || keyCode === 'ArrowDown') {\n switch (isDate) {\n case 'day':\n date = addDays(date, count)\n break\n case 'month':\n date = addMonths(date, count)\n break\n case 'year':\n date = addYears(date, count)\n break\n }\n }\n\n callOnChange({\n [isInRange === 'start' ? 'startDate' : 'endDate']: date,\n event,\n })\n\n await wait(1) // to get the correct position afterwards\n\n selectAll(target)\n } catch (e) {\n warn(e)\n }\n },\n [startDate, endDate, callOnChange]\n )\n\n const selectStart = useCallback((target: HTMLInputElement) => {\n target.focus()\n target.setSelectionRange(0, 0)\n }, [])\n\n const onFocusHandler = useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n try {\n selectAll(event.target)\n } catch (e) {\n warn(e)\n }\n\n setFocusState('focus')\n\n onFocus?.({\n ...event,\n ...getReturnObject({ event }),\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 }),\n ...partialDates,\n })\n },\n [onBlur, getReturnObject, partialDates]\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 selectStart(target)\n }\n\n // only to process key up and down press\n switch (keyCode) {\n case 'ArrowUp':\n case 'ArrowDown':\n event.persist()\n event.preventDefault()\n prepareCounting({ event, keyCode, target })\n return false\n case 'Tab':\n return false\n }\n\n // the rest is for value entry\n\n const size = parseFloat(target.getAttribute('size'))\n const firstSelectionStart = target.selectionStart\n\n await wait(1) // to get the correct position afterwards\n\n const secondSelectionStart = target.selectionStart\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 if (\n index < refListArray.length - 1 &&\n ((secondSelectionStart === size &&\n isValid &&\n keyCode !== 'ArrowLeft' &&\n keyCode !== 'Backspace') ||\n (firstSelectionStart === size && keyCode === 'ArrowRight'))\n ) {\n try {\n // stop in case there is no next input element\n if (!refListArray[index + 1].current) {\n return\n }\n const nextSibling = refListArray[index + 1].current\n if (nextSibling) {\n nextSibling.focus()\n nextSibling.setSelectionRange(0, 0)\n }\n } catch (e) {\n warn(e)\n }\n } else if (firstSelectionStart === 0 && index > 0) {\n switch (keyCode) {\n case 'ArrowLeft':\n case 'Backspace':\n try {\n const prevSibling = refListArray[index - 1].current\n if (prevSibling) {\n const endPos = prevSibling.value.length\n prevSibling.focus()\n prevSibling.setSelectionRange(endPos, endPos)\n }\n } catch (e) {\n warn(e)\n }\n break\n }\n }\n },\n [prepareCounting, selectStart]\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[`${mode}Date`].current = modeDate[`${mode}Date`]\n }\n\n const fallback = temporaryDates[`${mode}Date`].current\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 [`__${mode}${type}`]: value,\n })\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 ]\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 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 MutliInputMask\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 (!separatorRexExp.test(value)) {\n if (!inputElement) {\n element = {\n ...element,\n onKeyDown: onKeyDownHandler,\n onPaste: pasteHandler,\n onFocus: (e) => {\n focusMode.current = mode\n onFocusHandler(e)\n },\n onBlur: onBlurHandler,\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-3]/, /[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-1]/, /[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={[/[1-2]/, /[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 id,\n inputElement,\n isRange,\n size,\n translation,\n separatorRexExp,\n dateSetters,\n inputRefs,\n maskList,\n onBlurHandler,\n onFocusHandler,\n getPlaceholderChar,\n pasteHandler,\n onKeyDownHandler,\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 formatDate = 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={formatDate}\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 selectAll(target: HTMLInputElement) {\n target.focus()\n target.select()\n}\n\nfunction InputElement({ className, value, ...props }: TextMaskProps) {\n return (\n <TextMask\n guide={true}\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<Record<string, string>>,\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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"}
|
|
@@ -8,21 +8,22 @@ import { DatePickerContextValues } from './DatePickerContext';
|
|
|
8
8
|
import { CalendarView } from './hooks/useViews';
|
|
9
9
|
import { DatePickerDates } from './hooks/useDates';
|
|
10
10
|
import { LastEventCallCache } from './hooks/useLastEventCallCache';
|
|
11
|
+
import { InvalidDates } from './DatePickerInput';
|
|
11
12
|
type DatePickerProviderProps = DatePickerAllProps & {
|
|
12
13
|
setReturnObject: (func: DatePickerContextValues['getReturnObject']) => DatePickerContextValues['getReturnObject'];
|
|
13
14
|
hidePicker?: DatePickerContextValues['hidePicker'];
|
|
14
15
|
attributes?: DatePickerEventAttributes;
|
|
15
16
|
children: React.ReactNode;
|
|
16
17
|
};
|
|
17
|
-
export type DatePickerChangeEvent<E> = DatePickerDates & {
|
|
18
|
+
export type DatePickerChangeEvent<E> = DatePickerDates & InvalidDates & {
|
|
18
19
|
nr?: number;
|
|
19
20
|
hidePicker?: boolean;
|
|
20
21
|
event?: E;
|
|
21
22
|
};
|
|
22
|
-
export type GetReturnObjectParams<E> = DatePickerDates & {
|
|
23
|
+
export type GetReturnObjectParams<E> = DatePickerDates & InvalidDates & {
|
|
23
24
|
event?: E;
|
|
24
25
|
};
|
|
25
|
-
export type ReturnObject<E> = {
|
|
26
|
+
export type ReturnObject<E> = InvalidDates & {
|
|
26
27
|
event?: E;
|
|
27
28
|
attributes?: Record<string, unknown>;
|
|
28
29
|
days_between?: number;
|