@dnb/eufemia 10.64.1 → 10.65.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +30 -0
- package/cjs/components/date-picker/DatePicker.js +1 -5
- package/cjs/components/date-picker/DatePicker.js.map +1 -1
- package/cjs/components/date-picker/DatePickerInput.js +2 -2
- package/cjs/components/date-picker/DatePickerInput.js.map +1 -1
- package/cjs/components/input-masked/MultiInputMask.d.ts +2 -1
- package/cjs/components/input-masked/MultiInputMask.js.map +1 -1
- package/cjs/components/radio/RadioGroup.d.ts +1 -1
- package/cjs/components/skeleton/style/themes/dnb-skeleton-theme-sbanken.css +4 -7
- package/cjs/components/skeleton/style/themes/dnb-skeleton-theme-sbanken.min.css +1 -0
- package/cjs/components/skeleton/style/themes/dnb-skeleton-theme-sbanken.scss +5 -7
- package/cjs/components/skeleton/style/themes/dnb-skeleton-theme-ui.css +4 -7
- package/cjs/components/skeleton/style/themes/dnb-skeleton-theme-ui.min.css +1 -0
- package/cjs/components/skeleton/style/themes/dnb-skeleton-theme-ui.scss +5 -7
- package/cjs/components/toggle-button/ToggleButtonGroup.d.ts +2 -0
- package/cjs/components/toggle-button/ToggleButtonGroup.js +5 -1
- package/cjs/components/toggle-button/ToggleButtonGroup.js.map +1 -1
- package/cjs/extensions/forms/Field/ArraySelection/ArraySelection.d.ts +8 -1
- package/cjs/extensions/forms/Field/ArraySelection/ArraySelection.js +9 -2
- package/cjs/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
- package/cjs/extensions/forms/Field/ArraySelection/ArraySelectionDocs.js +5 -0
- package/cjs/extensions/forms/Field/ArraySelection/ArraySelectionDocs.js.map +1 -1
- package/cjs/extensions/forms/Field/BankAccountNumber/BankAccountNumber.d.ts +2 -2
- package/cjs/extensions/forms/Field/BankAccountNumber/BankAccountNumber.js.map +1 -1
- package/cjs/extensions/forms/Field/Boolean/Boolean.d.ts +1 -0
- package/cjs/extensions/forms/Field/Boolean/Boolean.js.map +1 -1
- package/cjs/extensions/forms/Field/Boolean/BooleanDocs.js +3 -1
- package/cjs/extensions/forms/Field/Boolean/BooleanDocs.js.map +1 -1
- package/cjs/extensions/forms/Field/Date/Date.d.ts +5 -4
- package/cjs/extensions/forms/Field/Date/Date.js +123 -11
- package/cjs/extensions/forms/Field/Date/Date.js.map +1 -1
- package/cjs/extensions/forms/Field/Date/DateDocs.js +13 -4
- package/cjs/extensions/forms/Field/Date/DateDocs.js.map +1 -1
- package/cjs/extensions/forms/Field/Expiry/Expiry.d.ts +7 -1
- package/cjs/extensions/forms/Field/Expiry/Expiry.js +2 -0
- package/cjs/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
- package/cjs/extensions/forms/Field/Expiry/ExpiryDocs.d.ts +2 -0
- package/cjs/extensions/forms/Field/Expiry/ExpiryDocs.js +19 -0
- package/cjs/extensions/forms/Field/Expiry/ExpiryDocs.js.map +1 -0
- package/cjs/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.d.ts +2 -2
- package/cjs/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js.map +1 -1
- package/cjs/extensions/forms/Field/Number/NumberDocs.js +8 -1
- package/cjs/extensions/forms/Field/Number/NumberDocs.js.map +1 -1
- package/cjs/extensions/forms/Field/OrganizationNumber/OrganizationNumber.d.ts +2 -2
- package/cjs/extensions/forms/Field/OrganizationNumber/OrganizationNumber.js.map +1 -1
- package/cjs/extensions/forms/Field/Password/PasswordDocs.js +1 -1
- package/cjs/extensions/forms/Field/Password/PasswordDocs.js.map +1 -1
- package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.d.ts +1 -1
- package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.js +5 -2
- package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
- package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumberDocs.js +2 -0
- package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumberDocs.js.map +1 -1
- package/cjs/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.d.ts +1 -1
- package/cjs/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js +6 -2
- package/cjs/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js.map +1 -1
- package/cjs/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCityDocs.js +3 -1
- package/cjs/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCityDocs.js.map +1 -1
- package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.d.ts +5 -0
- package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.js +2 -0
- package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
- package/cjs/extensions/forms/Field/SelectCountry/SelectCountryDocs.js +10 -1
- package/cjs/extensions/forms/Field/SelectCountry/SelectCountryDocs.js.map +1 -1
- package/cjs/extensions/forms/Field/Selection/Selection.d.ts +9 -0
- package/cjs/extensions/forms/Field/Selection/Selection.js +14 -6
- package/cjs/extensions/forms/Field/Selection/Selection.js.map +1 -1
- package/cjs/extensions/forms/Field/Selection/SelectionDocs.js +5 -0
- package/cjs/extensions/forms/Field/Selection/SelectionDocs.js.map +1 -1
- package/cjs/extensions/forms/Field/String/StringDocs.js +8 -1
- package/cjs/extensions/forms/Field/String/StringDocs.js.map +1 -1
- package/cjs/extensions/forms/Field/Toggle/Toggle.d.ts +3 -0
- package/cjs/extensions/forms/Field/Toggle/Toggle.js +6 -1
- package/cjs/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
- package/cjs/extensions/forms/Field/Toggle/ToggleDocs.js +5 -0
- package/cjs/extensions/forms/Field/Toggle/ToggleDocs.js.map +1 -1
- package/cjs/extensions/forms/Form/Visibility/Visibility.d.ts +1 -1
- package/cjs/extensions/forms/Form/Visibility/Visibility.js.map +1 -1
- package/cjs/extensions/forms/Form/Visibility/VisibilityDocs.js +1 -1
- package/cjs/extensions/forms/Form/Visibility/VisibilityDocs.js.map +1 -1
- package/cjs/extensions/forms/Value/Date/Date.d.ts +3 -2
- package/cjs/extensions/forms/Value/Date/Date.js.map +1 -1
- package/cjs/extensions/forms/Wizard/Container/WizardContainer.js +20 -8
- package/cjs/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
- package/cjs/extensions/forms/Wizard/Context/WizardContext.d.ts +1 -0
- package/cjs/extensions/forms/Wizard/Context/WizardContext.js.map +1 -1
- package/cjs/extensions/forms/Wizard/Step/Step.d.ts +16 -1
- package/cjs/extensions/forms/Wizard/Step/Step.js +32 -10
- package/cjs/extensions/forms/Wizard/Step/Step.js.map +1 -1
- package/cjs/extensions/forms/Wizard/Step/StepDocs.js +18 -3
- package/cjs/extensions/forms/Wizard/Step/StepDocs.js.map +1 -1
- package/cjs/extensions/forms/constants/locales/en-GB.d.ts +6 -0
- package/cjs/extensions/forms/constants/locales/en-GB.js +7 -1
- package/cjs/extensions/forms/constants/locales/en-GB.js.map +1 -1
- package/cjs/extensions/forms/constants/locales/en-US.d.ts +6 -0
- package/cjs/extensions/forms/constants/locales/index.d.ts +12 -0
- package/cjs/extensions/forms/constants/locales/nb-NO.d.ts +6 -0
- package/cjs/extensions/forms/constants/locales/nb-NO.js +7 -1
- package/cjs/extensions/forms/constants/locales/nb-NO.js.map +1 -1
- package/cjs/extensions/forms/types.d.ts +1 -0
- package/cjs/extensions/forms/types.js.map +1 -1
- package/cjs/fragments/drawer-list/DrawerList.d.ts +6 -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-core.css +1 -1
- package/cjs/style/dnb-ui-core.min.css +1 -1
- package/cjs/style/themes/theme-eiendom/eiendom-theme-basis.css +0 -2
- package/cjs/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
- package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +5 -7
- package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +1 -1
- package/cjs/style/themes/theme-sbanken/globals.scss +0 -4
- package/cjs/style/themes/theme-sbanken/sbanken-theme-basis.css +0 -2
- package/cjs/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
- package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +5 -7
- package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +1 -1
- package/cjs/style/themes/theme-ui/globals.scss +0 -4
- package/cjs/style/themes/theme-ui/ui-theme-basis.css +0 -2
- package/cjs/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
- package/cjs/style/themes/theme-ui/ui-theme-components.css +5 -7
- package/cjs/style/themes/theme-ui/ui-theme-components.min.css +1 -1
- package/components/date-picker/DatePicker.js +1 -5
- package/components/date-picker/DatePicker.js.map +1 -1
- package/components/date-picker/DatePickerInput.js +2 -2
- package/components/date-picker/DatePickerInput.js.map +1 -1
- package/components/input-masked/MultiInputMask.d.ts +2 -1
- package/components/input-masked/MultiInputMask.js.map +1 -1
- package/components/radio/RadioGroup.d.ts +1 -1
- package/components/skeleton/style/themes/dnb-skeleton-theme-sbanken.css +4 -7
- package/components/skeleton/style/themes/dnb-skeleton-theme-sbanken.min.css +1 -0
- package/components/skeleton/style/themes/dnb-skeleton-theme-sbanken.scss +5 -7
- package/components/skeleton/style/themes/dnb-skeleton-theme-ui.css +4 -7
- package/components/skeleton/style/themes/dnb-skeleton-theme-ui.min.css +1 -0
- package/components/skeleton/style/themes/dnb-skeleton-theme-ui.scss +5 -7
- package/components/toggle-button/ToggleButtonGroup.d.ts +2 -0
- package/components/toggle-button/ToggleButtonGroup.js +5 -1
- package/components/toggle-button/ToggleButtonGroup.js.map +1 -1
- package/es/components/date-picker/DatePicker.js +1 -5
- package/es/components/date-picker/DatePicker.js.map +1 -1
- package/es/components/date-picker/DatePickerInput.js +2 -2
- package/es/components/date-picker/DatePickerInput.js.map +1 -1
- package/es/components/input-masked/MultiInputMask.d.ts +2 -1
- package/es/components/input-masked/MultiInputMask.js.map +1 -1
- package/es/components/radio/RadioGroup.d.ts +1 -1
- package/es/components/skeleton/style/themes/dnb-skeleton-theme-sbanken.css +4 -7
- package/es/components/skeleton/style/themes/dnb-skeleton-theme-sbanken.min.css +1 -0
- package/es/components/skeleton/style/themes/dnb-skeleton-theme-sbanken.scss +5 -7
- package/es/components/skeleton/style/themes/dnb-skeleton-theme-ui.css +4 -7
- package/es/components/skeleton/style/themes/dnb-skeleton-theme-ui.min.css +1 -0
- package/es/components/skeleton/style/themes/dnb-skeleton-theme-ui.scss +5 -7
- package/es/components/toggle-button/ToggleButtonGroup.d.ts +2 -0
- package/es/components/toggle-button/ToggleButtonGroup.js +5 -1
- package/es/components/toggle-button/ToggleButtonGroup.js.map +1 -1
- package/es/extensions/forms/Field/ArraySelection/ArraySelection.d.ts +8 -1
- package/es/extensions/forms/Field/ArraySelection/ArraySelection.js +9 -2
- package/es/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
- package/es/extensions/forms/Field/ArraySelection/ArraySelectionDocs.js +5 -0
- package/es/extensions/forms/Field/ArraySelection/ArraySelectionDocs.js.map +1 -1
- package/es/extensions/forms/Field/BankAccountNumber/BankAccountNumber.d.ts +2 -2
- package/es/extensions/forms/Field/BankAccountNumber/BankAccountNumber.js.map +1 -1
- package/es/extensions/forms/Field/Boolean/Boolean.d.ts +1 -0
- package/es/extensions/forms/Field/Boolean/Boolean.js.map +1 -1
- package/es/extensions/forms/Field/Boolean/BooleanDocs.js +3 -1
- package/es/extensions/forms/Field/Boolean/BooleanDocs.js.map +1 -1
- package/es/extensions/forms/Field/Date/Date.d.ts +5 -4
- package/es/extensions/forms/Field/Date/Date.js +124 -12
- package/es/extensions/forms/Field/Date/Date.js.map +1 -1
- package/es/extensions/forms/Field/Date/DateDocs.js +13 -4
- package/es/extensions/forms/Field/Date/DateDocs.js.map +1 -1
- package/es/extensions/forms/Field/Expiry/Expiry.d.ts +7 -1
- package/es/extensions/forms/Field/Expiry/Expiry.js +2 -0
- package/es/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
- package/es/extensions/forms/Field/Expiry/ExpiryDocs.d.ts +2 -0
- package/es/extensions/forms/Field/Expiry/ExpiryDocs.js +10 -0
- package/es/extensions/forms/Field/Expiry/ExpiryDocs.js.map +1 -0
- package/es/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.d.ts +2 -2
- package/es/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js.map +1 -1
- package/es/extensions/forms/Field/Number/NumberDocs.js +6 -1
- package/es/extensions/forms/Field/Number/NumberDocs.js.map +1 -1
- package/es/extensions/forms/Field/OrganizationNumber/OrganizationNumber.d.ts +2 -2
- package/es/extensions/forms/Field/OrganizationNumber/OrganizationNumber.js.map +1 -1
- package/es/extensions/forms/Field/Password/PasswordDocs.js +1 -1
- package/es/extensions/forms/Field/Password/PasswordDocs.js.map +1 -1
- package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.d.ts +1 -1
- package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.js +5 -2
- package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
- package/es/extensions/forms/Field/PhoneNumber/PhoneNumberDocs.js +2 -0
- package/es/extensions/forms/Field/PhoneNumber/PhoneNumberDocs.js.map +1 -1
- package/es/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.d.ts +1 -1
- package/es/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js +6 -2
- package/es/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js.map +1 -1
- package/es/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCityDocs.js +3 -1
- package/es/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCityDocs.js.map +1 -1
- package/es/extensions/forms/Field/SelectCountry/SelectCountry.d.ts +5 -0
- package/es/extensions/forms/Field/SelectCountry/SelectCountry.js +2 -0
- package/es/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
- package/es/extensions/forms/Field/SelectCountry/SelectCountryDocs.js +8 -1
- package/es/extensions/forms/Field/SelectCountry/SelectCountryDocs.js.map +1 -1
- package/es/extensions/forms/Field/Selection/Selection.d.ts +9 -0
- package/es/extensions/forms/Field/Selection/Selection.js +14 -6
- package/es/extensions/forms/Field/Selection/Selection.js.map +1 -1
- package/es/extensions/forms/Field/Selection/SelectionDocs.js +5 -0
- package/es/extensions/forms/Field/Selection/SelectionDocs.js.map +1 -1
- package/es/extensions/forms/Field/String/StringDocs.js +6 -1
- package/es/extensions/forms/Field/String/StringDocs.js.map +1 -1
- package/es/extensions/forms/Field/Toggle/Toggle.d.ts +3 -0
- package/es/extensions/forms/Field/Toggle/Toggle.js +6 -1
- package/es/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
- package/es/extensions/forms/Field/Toggle/ToggleDocs.js +5 -0
- package/es/extensions/forms/Field/Toggle/ToggleDocs.js.map +1 -1
- package/es/extensions/forms/Form/Visibility/Visibility.d.ts +1 -1
- package/es/extensions/forms/Form/Visibility/Visibility.js.map +1 -1
- package/es/extensions/forms/Form/Visibility/VisibilityDocs.js +1 -1
- package/es/extensions/forms/Form/Visibility/VisibilityDocs.js.map +1 -1
- package/es/extensions/forms/Value/Date/Date.d.ts +3 -2
- package/es/extensions/forms/Value/Date/Date.js.map +1 -1
- package/es/extensions/forms/Wizard/Container/WizardContainer.js +20 -8
- package/es/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
- package/es/extensions/forms/Wizard/Context/WizardContext.d.ts +1 -0
- package/es/extensions/forms/Wizard/Context/WizardContext.js.map +1 -1
- package/es/extensions/forms/Wizard/Step/Step.d.ts +16 -1
- 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/StepDocs.js +18 -3
- package/es/extensions/forms/Wizard/Step/StepDocs.js.map +1 -1
- package/es/extensions/forms/constants/locales/en-GB.d.ts +6 -0
- package/es/extensions/forms/constants/locales/en-GB.js +7 -1
- package/es/extensions/forms/constants/locales/en-GB.js.map +1 -1
- package/es/extensions/forms/constants/locales/en-US.d.ts +6 -0
- package/es/extensions/forms/constants/locales/index.d.ts +12 -0
- package/es/extensions/forms/constants/locales/nb-NO.d.ts +6 -0
- package/es/extensions/forms/constants/locales/nb-NO.js +7 -1
- package/es/extensions/forms/constants/locales/nb-NO.js.map +1 -1
- package/es/extensions/forms/types.d.ts +1 -0
- package/es/extensions/forms/types.js.map +1 -1
- package/es/fragments/drawer-list/DrawerList.d.ts +6 -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-core.css +1 -1
- package/es/style/dnb-ui-core.min.css +1 -1
- package/es/style/themes/theme-eiendom/eiendom-theme-basis.css +0 -2
- package/es/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
- package/es/style/themes/theme-eiendom/eiendom-theme-components.css +5 -7
- package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +1 -1
- package/es/style/themes/theme-sbanken/globals.scss +0 -4
- package/es/style/themes/theme-sbanken/sbanken-theme-basis.css +0 -2
- package/es/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
- package/es/style/themes/theme-sbanken/sbanken-theme-components.css +5 -7
- package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +1 -1
- package/es/style/themes/theme-ui/globals.scss +0 -4
- package/es/style/themes/theme-ui/ui-theme-basis.css +0 -2
- package/es/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
- package/es/style/themes/theme-ui/ui-theme-components.css +5 -7
- package/es/style/themes/theme-ui/ui-theme-components.min.css +1 -1
- package/esm/dnb-ui-basis.min.mjs +1 -1
- package/esm/dnb-ui-components.min.mjs +1 -1
- package/esm/dnb-ui-elements.min.mjs +1 -1
- package/esm/dnb-ui-extensions.min.mjs +3 -3
- package/esm/dnb-ui-lib.min.mjs +1 -1
- package/extensions/forms/Field/ArraySelection/ArraySelection.d.ts +8 -1
- package/extensions/forms/Field/ArraySelection/ArraySelection.js +9 -2
- package/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
- package/extensions/forms/Field/ArraySelection/ArraySelectionDocs.js +5 -0
- package/extensions/forms/Field/ArraySelection/ArraySelectionDocs.js.map +1 -1
- package/extensions/forms/Field/BankAccountNumber/BankAccountNumber.d.ts +2 -2
- package/extensions/forms/Field/BankAccountNumber/BankAccountNumber.js.map +1 -1
- package/extensions/forms/Field/Boolean/Boolean.d.ts +1 -0
- package/extensions/forms/Field/Boolean/Boolean.js.map +1 -1
- package/extensions/forms/Field/Boolean/BooleanDocs.js +3 -1
- package/extensions/forms/Field/Boolean/BooleanDocs.js.map +1 -1
- package/extensions/forms/Field/Date/Date.d.ts +5 -4
- package/extensions/forms/Field/Date/Date.js +124 -12
- package/extensions/forms/Field/Date/Date.js.map +1 -1
- package/extensions/forms/Field/Date/DateDocs.js +13 -4
- package/extensions/forms/Field/Date/DateDocs.js.map +1 -1
- package/extensions/forms/Field/Expiry/Expiry.d.ts +7 -1
- package/extensions/forms/Field/Expiry/Expiry.js +2 -0
- package/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
- package/extensions/forms/Field/Expiry/ExpiryDocs.d.ts +2 -0
- package/extensions/forms/Field/Expiry/ExpiryDocs.js +10 -0
- package/extensions/forms/Field/Expiry/ExpiryDocs.js.map +1 -0
- package/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.d.ts +2 -2
- package/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js.map +1 -1
- package/extensions/forms/Field/Number/NumberDocs.js +6 -1
- package/extensions/forms/Field/Number/NumberDocs.js.map +1 -1
- package/extensions/forms/Field/OrganizationNumber/OrganizationNumber.d.ts +2 -2
- package/extensions/forms/Field/OrganizationNumber/OrganizationNumber.js.map +1 -1
- package/extensions/forms/Field/Password/PasswordDocs.js +1 -1
- package/extensions/forms/Field/Password/PasswordDocs.js.map +1 -1
- package/extensions/forms/Field/PhoneNumber/PhoneNumber.d.ts +1 -1
- package/extensions/forms/Field/PhoneNumber/PhoneNumber.js +5 -2
- package/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
- package/extensions/forms/Field/PhoneNumber/PhoneNumberDocs.js +2 -0
- package/extensions/forms/Field/PhoneNumber/PhoneNumberDocs.js.map +1 -1
- package/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.d.ts +1 -1
- package/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js +6 -2
- package/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js.map +1 -1
- package/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCityDocs.js +3 -1
- package/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCityDocs.js.map +1 -1
- package/extensions/forms/Field/SelectCountry/SelectCountry.d.ts +5 -0
- package/extensions/forms/Field/SelectCountry/SelectCountry.js +2 -0
- package/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
- package/extensions/forms/Field/SelectCountry/SelectCountryDocs.js +8 -1
- package/extensions/forms/Field/SelectCountry/SelectCountryDocs.js.map +1 -1
- package/extensions/forms/Field/Selection/Selection.d.ts +9 -0
- package/extensions/forms/Field/Selection/Selection.js +14 -6
- package/extensions/forms/Field/Selection/Selection.js.map +1 -1
- package/extensions/forms/Field/Selection/SelectionDocs.js +5 -0
- package/extensions/forms/Field/Selection/SelectionDocs.js.map +1 -1
- package/extensions/forms/Field/String/StringDocs.js +6 -1
- package/extensions/forms/Field/String/StringDocs.js.map +1 -1
- package/extensions/forms/Field/Toggle/Toggle.d.ts +3 -0
- package/extensions/forms/Field/Toggle/Toggle.js +6 -1
- package/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
- package/extensions/forms/Field/Toggle/ToggleDocs.js +5 -0
- package/extensions/forms/Field/Toggle/ToggleDocs.js.map +1 -1
- package/extensions/forms/Form/Visibility/Visibility.d.ts +1 -1
- package/extensions/forms/Form/Visibility/Visibility.js.map +1 -1
- package/extensions/forms/Form/Visibility/VisibilityDocs.js +1 -1
- package/extensions/forms/Form/Visibility/VisibilityDocs.js.map +1 -1
- package/extensions/forms/Value/Date/Date.d.ts +3 -2
- package/extensions/forms/Value/Date/Date.js.map +1 -1
- package/extensions/forms/Wizard/Container/WizardContainer.js +20 -8
- package/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
- package/extensions/forms/Wizard/Context/WizardContext.d.ts +1 -0
- package/extensions/forms/Wizard/Context/WizardContext.js.map +1 -1
- package/extensions/forms/Wizard/Step/Step.d.ts +16 -1
- package/extensions/forms/Wizard/Step/Step.js +29 -10
- package/extensions/forms/Wizard/Step/Step.js.map +1 -1
- package/extensions/forms/Wizard/Step/StepDocs.js +18 -3
- package/extensions/forms/Wizard/Step/StepDocs.js.map +1 -1
- package/extensions/forms/constants/locales/en-GB.d.ts +6 -0
- package/extensions/forms/constants/locales/en-GB.js +7 -1
- package/extensions/forms/constants/locales/en-GB.js.map +1 -1
- package/extensions/forms/constants/locales/en-US.d.ts +6 -0
- package/extensions/forms/constants/locales/index.d.ts +12 -0
- package/extensions/forms/constants/locales/nb-NO.d.ts +6 -0
- package/extensions/forms/constants/locales/nb-NO.js +7 -1
- package/extensions/forms/constants/locales/nb-NO.js.map +1 -1
- package/extensions/forms/types.d.ts +1 -0
- package/extensions/forms/types.js.map +1 -1
- package/fragments/drawer-list/DrawerList.d.ts +6 -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-core.css +1 -1
- package/style/dnb-ui-core.min.css +1 -1
- package/style/themes/theme-eiendom/eiendom-theme-basis.css +0 -2
- package/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
- package/style/themes/theme-eiendom/eiendom-theme-components.css +5 -7
- package/style/themes/theme-eiendom/eiendom-theme-components.min.css +1 -1
- package/style/themes/theme-sbanken/globals.scss +0 -4
- package/style/themes/theme-sbanken/sbanken-theme-basis.css +0 -2
- package/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
- package/style/themes/theme-sbanken/sbanken-theme-components.css +5 -7
- package/style/themes/theme-sbanken/sbanken-theme-components.min.css +1 -1
- package/style/themes/theme-ui/globals.scss +0 -4
- package/style/themes/theme-ui/ui-theme-basis.css +0 -2
- package/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
- package/style/themes/theme-ui/ui-theme-components.css +5 -7
- package/style/themes/theme-ui/ui-theme-components.min.css +1 -1
- package/umd/dnb-ui-basis.min.js +1 -1
- package/umd/dnb-ui-components.min.js +1 -1
- package/umd/dnb-ui-elements.min.js +1 -1
- package/umd/dnb-ui-extensions.min.js +3 -3
- package/umd/dnb-ui-lib.min.js +1 -1
|
@@ -8,7 +8,6 @@ const {
|
|
|
8
8
|
showResetButton,
|
|
9
9
|
showInput,
|
|
10
10
|
range,
|
|
11
|
-
size,
|
|
12
11
|
skeleton,
|
|
13
12
|
tooltip,
|
|
14
13
|
globalStatus,
|
|
@@ -21,10 +20,11 @@ const {
|
|
|
21
20
|
labelSrOnly,
|
|
22
21
|
suffix,
|
|
23
22
|
stretch,
|
|
23
|
+
size,
|
|
24
24
|
'[Space](/uilib/layout/space/properties)': space
|
|
25
25
|
} = DatePickerProperties,
|
|
26
|
-
datePickerProperties = _objectWithoutProperties(DatePickerProperties, ["showCancelButton", "showResetButton", "showInput", "range", "
|
|
27
|
-
export const DateProperties = _objectSpread({
|
|
26
|
+
datePickerProperties = _objectWithoutProperties(DatePickerProperties, ["showCancelButton", "showResetButton", "showInput", "range", "skeleton", "tooltip", "globalStatus", "statusProps", "statusState", "status", "inputElement", "label", "labelDirection", "labelSrOnly", "suffix", "stretch", "size", "[Space](/uilib/layout/space/properties)"]);
|
|
27
|
+
export const DateProperties = _objectSpread(_objectSpread({
|
|
28
28
|
range: _objectSpread(_objectSpread({}, range), {}, {
|
|
29
29
|
doc: 'Defines if the Date field should support a value of two dates (starting and ending date). ' + 'The `value` needs to be a string containing two dates, separated by a pipe character (`|`) (`01-09-2024|30-09-2024`) when this is set to `true`. ' + 'Defaults to `false`.'
|
|
30
30
|
}),
|
|
@@ -36,8 +36,17 @@ export const DateProperties = _objectSpread({
|
|
|
36
36
|
}),
|
|
37
37
|
showResetButton: _objectSpread(_objectSpread({}, showResetButton), {}, {
|
|
38
38
|
doc: 'If set to `true`, a reset button will be shown. You can change the default text by using `resetButtonText="Tilbakestill"` Defaults to `true`.'
|
|
39
|
+
}),
|
|
40
|
+
size: _objectSpread(_objectSpread({}, size), {}, {
|
|
41
|
+
doc: `${size.doc} Consider rather setting field sizes with [Form.Appearance](/uilib/extensions/forms/Form/Appearance/).`
|
|
39
42
|
})
|
|
40
|
-
}, datePickerProperties)
|
|
43
|
+
}, datePickerProperties), {}, {
|
|
44
|
+
onBlurValidator: {
|
|
45
|
+
doc: 'Custom validator function that is triggered when the user leaves a field (e.g., blurring a text input or closing a dropdown). The function can be either asynchronous or synchronous. The first parameter is the value, and the second parameter returns an object containing { errorMessages, connectWithPath, validators }. Defaults to validating the date against `minDate` and `maxDate`, using `dateLimitValidator`. Can be disabled using `false`.',
|
|
46
|
+
type: 'function',
|
|
47
|
+
status: 'optional'
|
|
48
|
+
}
|
|
49
|
+
});
|
|
41
50
|
const {
|
|
42
51
|
onChange,
|
|
43
52
|
onBlur,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateDocs.js","names":["DatePickerProperties","DatePickerEvents","showCancelButton","showResetButton","showInput","range","
|
|
1
|
+
{"version":3,"file":"DateDocs.js","names":["DatePickerProperties","DatePickerEvents","showCancelButton","showResetButton","showInput","range","skeleton","tooltip","globalStatus","statusProps","statusState","status","inputElement","label","labelDirection","labelSrOnly","suffix","stretch","size","space","datePickerProperties","_objectWithoutProperties","DateProperties","_objectSpread","doc","onBlurValidator","type","onChange","onBlur","onFocus","datePickerEvents","DateEvents"],"sources":["../../../../../../src/extensions/forms/Field/Date/DateDocs.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\nimport {\n DatePickerProperties,\n DatePickerEvents,\n} from '../../../../components/date-picker/DatePickerDocs'\nimport { PropertiesTableProps } from '../../../../shared/types'\n\n// Filter out properties that are handled by `useFieldProps` or has a different default value\nconst {\n showCancelButton,\n showResetButton,\n showInput,\n range,\n skeleton,\n tooltip,\n globalStatus,\n statusProps,\n statusState,\n status,\n inputElement,\n label,\n labelDirection,\n labelSrOnly,\n suffix,\n stretch,\n size,\n '[Space](/uilib/layout/space/properties)': space,\n ...datePickerProperties\n} = DatePickerProperties\n\n// `range`, `showInput`, `showCancelButton` and `showResetButton` inherit from `DatePickerProperties`\n// Since they require `Field.Date` specific documentation, due to them having different default values\nexport const DateProperties: PropertiesTableProps = {\n range: {\n ...range,\n doc:\n 'Defines if the Date field should support a value of two dates (starting and ending date). ' +\n 'The `value` needs to be a string containing two dates, separated by a pipe character (`|`) (`01-09-2024|30-09-2024`) when this is set to `true`. ' +\n 'Defaults to `false`.',\n },\n showInput: {\n ...showInput,\n doc: 'If the input fields with the mask should be visible. Defaults to `true`.',\n },\n showCancelButton: {\n ...showCancelButton,\n doc: 'If set to `true`, a cancel button will be shown. You can change the default text by using `cancelButtonText=\"Avbryt\"` Defaults to `true`. If the `range` property is `true`, then the cancel button is shown.',\n },\n showResetButton: {\n ...showResetButton,\n doc: 'If set to `true`, a reset button will be shown. You can change the default text by using `resetButtonText=\"Tilbakestill\"` Defaults to `true`.',\n },\n size: {\n ...size,\n doc: `${size.doc} Consider rather setting field sizes with [Form.Appearance](/uilib/extensions/forms/Form/Appearance/).`,\n },\n ...datePickerProperties,\n onBlurValidator: {\n doc: 'Custom validator function that is triggered when the user leaves a field (e.g., blurring a text input or closing a dropdown). The function can be either asynchronous or synchronous. The first parameter is the value, and the second parameter returns an object containing { errorMessages, connectWithPath, validators }. Defaults to validating the date against `minDate` and `maxDate`, using `dateLimitValidator`. Can be disabled using `false`.',\n type: 'function',\n status: 'optional',\n },\n}\n// Filter out the events that are handled by `useFieldProps`\nconst { onChange, onBlur, onFocus, ...datePickerEvents } = DatePickerEvents\n\nexport const DateEvents = datePickerEvents\n"],"mappings":";;;;AACA,SACEA,oBAAoB,EACpBC,gBAAgB,QACX,mDAAmD;AAI1D,MAAM;IACJC,gBAAgB;IAChBC,eAAe;IACfC,SAAS;IACTC,KAAK;IACLC,QAAQ;IACRC,OAAO;IACPC,YAAY;IACZC,WAAW;IACXC,WAAW;IACXC,MAAM;IACNC,YAAY;IACZC,KAAK;IACLC,cAAc;IACdC,WAAW;IACXC,MAAM;IACNC,OAAO;IACPC,IAAI;IACJ,yCAAyC,EAAEC;EAE7C,CAAC,GAAGnB,oBAAoB;EADnBoB,oBAAoB,GAAAC,wBAAA,CACrBrB,oBAAoB;AAIxB,OAAO,MAAMsB,cAAoC,GAAAC,aAAA,CAAAA,aAAA;EAC/ClB,KAAK,EAAAkB,aAAA,CAAAA,aAAA,KACAlB,KAAK;IACRmB,GAAG,EACD,4FAA4F,GAC5F,mJAAmJ,GACnJ;EAAsB,EACzB;EACDpB,SAAS,EAAAmB,aAAA,CAAAA,aAAA,KACJnB,SAAS;IACZoB,GAAG,EAAE;EAA0E,EAChF;EACDtB,gBAAgB,EAAAqB,aAAA,CAAAA,aAAA,KACXrB,gBAAgB;IACnBsB,GAAG,EAAE;EAA+M,EACrN;EACDrB,eAAe,EAAAoB,aAAA,CAAAA,aAAA,KACVpB,eAAe;IAClBqB,GAAG,EAAE;EAA+I,EACrJ;EACDN,IAAI,EAAAK,aAAA,CAAAA,aAAA,KACCL,IAAI;IACPM,GAAG,EAAG,GAAEN,IAAI,CAACM,GAAI;EAAuG;AACzH,GACEJ,oBAAoB;EACvBK,eAAe,EAAE;IACfD,GAAG,EAAE,2bAA2b;IAChcE,IAAI,EAAE,UAAU;IAChBf,MAAM,EAAE;EACV;AAAC,EACF;AAED,MAAM;IAAEgB,QAAQ;IAAEC,MAAM;IAAEC;EAA6B,CAAC,GAAG5B,gBAAgB;EAArC6B,gBAAgB,GAAAT,wBAAA,CAAKpB,gBAAgB;AAE3E,OAAO,MAAM8B,UAAU,GAAGD,gBAAgB"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { FieldProps } from '../../types';
|
|
2
|
-
|
|
2
|
+
import type { MultiInputMaskProps } from '../../../../components/input-masked';
|
|
3
|
+
export type ExpiryProps = FieldProps<string, undefined | ''> & {
|
|
4
|
+
/**
|
|
5
|
+
* The size of the component.
|
|
6
|
+
*/
|
|
7
|
+
size?: MultiInputMaskProps<'month' | 'year'>['size'];
|
|
8
|
+
};
|
|
3
9
|
declare function Expiry(props: ExpiryProps): import("react/jsx-runtime").JSX.Element;
|
|
4
10
|
declare namespace Expiry {
|
|
5
11
|
var _supportsEufemiaSpacingProps: boolean;
|
|
@@ -85,6 +85,7 @@ function Expiry(props) {
|
|
|
85
85
|
info,
|
|
86
86
|
warning,
|
|
87
87
|
disabled,
|
|
88
|
+
size,
|
|
88
89
|
value = '',
|
|
89
90
|
htmlAttributes,
|
|
90
91
|
handleFocus,
|
|
@@ -112,6 +113,7 @@ function Expiry(props) {
|
|
|
112
113
|
status: status,
|
|
113
114
|
statusState: disabled ? 'disabled' : undefined,
|
|
114
115
|
disabled: disabled,
|
|
116
|
+
size: size,
|
|
115
117
|
onChange: handleChange,
|
|
116
118
|
onBlur: handleBlur,
|
|
117
119
|
onFocus: handleFocus,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Expiry.js","names":["React","useCallback","useMemo","pickSpacingProps","useFieldProps","classnames","FieldBlock","MultiInputMask","useTranslation","useSharedTranslation","FormError","Expiry","props","Date","errorRequired","label","expiryLabel","DatePicker","placeholderCharacters","placeholders","month","monthLabel","year","yearLabel","errorMessages","_objectSpread","handleInput","values","expiryValueToString","isFieldEmpty","validateRequired","value","_ref","required","error","undefined","monthAndYearValidator","validateMonthAndYear","validateInitially","valueProp","_props$value","stringToExpiryValue","defaultValue","monthString","yearString","preparedProps","fromInput","onBlurValidator","id","path","itemPath","className","hasError","info","warning","disabled","htmlAttributes","handleFocus","handleBlur","handleChange","setDisplayValue","expiry","status","fieldBlockProps","forId","createElement","stretch","statusState","onChange","onBlur","onFocus","delimiter","inputMode","inputs","mask","placeholderCharacter","autoComplete","placeholder","_value$substring","_value$substring2","substring","length","date","monthNumber","Number","messages","includes","push","messageValues","_supportsEufemiaSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Expiry/Expiry.tsx"],"sourcesContent":["import React, { useCallback, useMemo } from 'react'\nimport { FieldProps } from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport { useFieldProps } from '../../hooks'\nimport classnames from 'classnames'\nimport FieldBlock, { Props as FieldBlockProps } from '../../FieldBlock'\nimport { MultiInputMask } from '../../../../components/input-masked'\nimport type { MultiInputMaskValue } from '../../../../components/input-masked'\nimport { useTranslation as useSharedTranslation } from '../../../../shared'\nimport useTranslation from '../../hooks/useTranslation'\nimport { FormError } from '../../utils'\n\ntype ExpiryValue = MultiInputMaskValue<'month' | 'year'>\n\nexport type ExpiryProps = FieldProps<string, undefined | ''>\n\nfunction Expiry(props: ExpiryProps) {\n const {\n Date: { errorRequired },\n Expiry: { label: expiryLabel },\n } = useTranslation()\n\n const {\n DatePicker: {\n placeholderCharacters: placeholders,\n month: monthLabel,\n year: yearLabel,\n },\n } = useSharedTranslation()\n\n const errorMessages = useMemo(\n () => ({\n 'Field.errorRequired': errorRequired,\n ...props.errorMessages,\n }),\n [errorRequired, props.errorMessages]\n )\n\n const handleInput = useCallback(\n (values: ExpiryValue) => {\n const month = expiryValueToString(values.month, placeholders.month)\n const year = expiryValueToString(values.year, placeholders.year)\n\n if (\n isFieldEmpty(month, placeholders.month) &&\n isFieldEmpty(year, placeholders.year)\n ) {\n return ''\n }\n\n return `${month}${year}`\n },\n [placeholders.month, placeholders.year]\n )\n\n const validateRequired = useCallback(\n (value: string, { required, error }) => {\n return required && !value ? error : undefined\n },\n []\n )\n\n const monthAndYearValidator = useCallback(\n (value: string) => validateMonthAndYear(value, placeholders),\n [placeholders]\n )\n\n const validateInitially = useMemo(() => {\n if (props.validateInitially) {\n return props.validateInitially\n }\n\n if (props.value) {\n return true\n }\n\n return undefined\n }, [props.validateInitially, props.value])\n\n const valueProp = useMemo(() => {\n const { month, year } = stringToExpiryValue(\n props.value ?? props.defaultValue\n )\n const monthString = expiryValueToString(month, placeholders.month)\n const yearString = expiryValueToString(year, placeholders.year)\n\n if (\n isFieldEmpty(monthString, placeholders.month) &&\n isFieldEmpty(yearString, placeholders.year)\n ) {\n return ''\n }\n\n return `${monthString}${yearString}`\n }, [\n props.value,\n props.defaultValue,\n placeholders.month,\n placeholders.year,\n ])\n\n const preparedProps: ExpiryProps = {\n ...props,\n errorMessages,\n value: valueProp,\n fromInput: handleInput,\n validateRequired,\n validateInitially: validateInitially,\n onBlurValidator: monthAndYearValidator,\n }\n\n const {\n id,\n path,\n itemPath,\n className,\n label = expiryLabel,\n hasError,\n info,\n warning,\n disabled,\n value = '',\n htmlAttributes,\n handleFocus,\n handleBlur,\n handleChange,\n setDisplayValue,\n } = useFieldProps(preparedProps)\n\n const expiry: ExpiryValue = useMemo(\n () => stringToExpiryValue(value),\n [value]\n )\n\n useMemo(() => {\n if ((path || itemPath) && expiry.month && expiry.year) {\n setDisplayValue(`${expiry.month}/${expiry.year}`)\n }\n }, [expiry.month, expiry.year, itemPath, path, setDisplayValue])\n\n const status = hasError\n ? 'error'\n : warning\n ? 'warn'\n : info\n ? 'info'\n : null\n\n const fieldBlockProps: FieldBlockProps = {\n id,\n forId: `${id}-input-month`,\n className: classnames('dnb-forms-field-expiry', className),\n label,\n ...pickSpacingProps(props),\n }\n\n return (\n <FieldBlock {...fieldBlockProps}>\n <MultiInputMask\n stretch\n id={`${id}-input`}\n values={expiry}\n status={status}\n statusState={disabled ? 'disabled' : undefined}\n disabled={disabled}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n delimiter=\"/\"\n inputMode=\"numeric\"\n inputs={[\n {\n id: 'month',\n label: monthLabel,\n mask: [/[0-9]/, /[0-9]/],\n placeholderCharacter: placeholders['month'],\n autoComplete: 'cc-exp-month',\n ...htmlAttributes,\n },\n {\n id: 'year',\n label: yearLabel,\n mask: [/[0-9]/, /[0-9]/],\n placeholderCharacter: placeholders['year'],\n autoComplete: 'cc-exp-year',\n ...htmlAttributes,\n },\n ]}\n />\n </FieldBlock>\n )\n}\n\nfunction isFieldEmpty(value: string, placeholder: string) {\n return value === `${placeholder}${placeholder}`\n}\n\nfunction stringToExpiryValue(value: string) {\n const month = value?.substring(0, 2) ?? ''\n const year = value?.substring(2, 4) ?? ''\n\n return {\n month,\n year,\n }\n}\n\nfunction expiryValueToString(value: string, placeholder: string) {\n if (!value) {\n return `${placeholder}${placeholder}`\n }\n\n if (value.length === 1) {\n return `${value}${placeholder}`\n }\n\n return value\n}\n\nfunction validateMonthAndYear(\n date: string,\n placeholders: Record<'month' | 'year', string>\n) {\n const { month, year } = stringToExpiryValue(date)\n\n const monthNumber = Number(month)\n\n const messages: Array<FormError> = []\n\n if (\n month.includes(placeholders.month) ||\n monthNumber < 1 ||\n monthNumber > 12\n ) {\n messages.push(\n new FormError('Expiry.errorMonth', {\n messageValues: { month: month },\n })\n )\n }\n\n if (year.includes(placeholders.year)) {\n messages.push(\n new FormError('Expiry.errorYear', {\n messageValues: { year: year },\n })\n )\n }\n\n if (messages.length) {\n return messages\n }\n}\n\nExpiry._supportsEufemiaSpacingProps = true\nexport default Expiry\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Expiry.js","names":["React","useCallback","useMemo","pickSpacingProps","useFieldProps","classnames","FieldBlock","MultiInputMask","useTranslation","useSharedTranslation","FormError","Expiry","props","Date","errorRequired","label","expiryLabel","DatePicker","placeholderCharacters","placeholders","month","monthLabel","year","yearLabel","errorMessages","_objectSpread","handleInput","values","expiryValueToString","isFieldEmpty","validateRequired","value","_ref","required","error","undefined","monthAndYearValidator","validateMonthAndYear","validateInitially","valueProp","_props$value","stringToExpiryValue","defaultValue","monthString","yearString","preparedProps","fromInput","onBlurValidator","id","path","itemPath","className","hasError","info","warning","disabled","size","htmlAttributes","handleFocus","handleBlur","handleChange","setDisplayValue","expiry","status","fieldBlockProps","forId","createElement","stretch","statusState","onChange","onBlur","onFocus","delimiter","inputMode","inputs","mask","placeholderCharacter","autoComplete","placeholder","_value$substring","_value$substring2","substring","length","date","monthNumber","Number","messages","includes","push","messageValues","_supportsEufemiaSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Expiry/Expiry.tsx"],"sourcesContent":["import React, { useCallback, useMemo } from 'react'\nimport { FieldProps } from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport { useFieldProps } from '../../hooks'\nimport classnames from 'classnames'\nimport FieldBlock, { Props as FieldBlockProps } from '../../FieldBlock'\nimport { MultiInputMask } from '../../../../components/input-masked'\nimport type {\n MultiInputMaskProps,\n MultiInputMaskValue,\n} from '../../../../components/input-masked'\nimport { useTranslation as useSharedTranslation } from '../../../../shared'\nimport useTranslation from '../../hooks/useTranslation'\nimport { FormError } from '../../utils'\n\ntype ExpiryValue = MultiInputMaskValue<'month' | 'year'>\n\nexport type ExpiryProps = FieldProps<string, undefined | ''> & {\n /**\n * The size of the component.\n */\n size?: MultiInputMaskProps<'month' | 'year'>['size']\n}\n\nfunction Expiry(props: ExpiryProps) {\n const {\n Date: { errorRequired },\n Expiry: { label: expiryLabel },\n } = useTranslation()\n\n const {\n DatePicker: {\n placeholderCharacters: placeholders,\n month: monthLabel,\n year: yearLabel,\n },\n } = useSharedTranslation()\n\n const errorMessages = useMemo(\n () => ({\n 'Field.errorRequired': errorRequired,\n ...props.errorMessages,\n }),\n [errorRequired, props.errorMessages]\n )\n\n const handleInput = useCallback(\n (values: ExpiryValue) => {\n const month = expiryValueToString(values.month, placeholders.month)\n const year = expiryValueToString(values.year, placeholders.year)\n\n if (\n isFieldEmpty(month, placeholders.month) &&\n isFieldEmpty(year, placeholders.year)\n ) {\n return ''\n }\n\n return `${month}${year}`\n },\n [placeholders.month, placeholders.year]\n )\n\n const validateRequired = useCallback(\n (value: string, { required, error }) => {\n return required && !value ? error : undefined\n },\n []\n )\n\n const monthAndYearValidator = useCallback(\n (value: string) => validateMonthAndYear(value, placeholders),\n [placeholders]\n )\n\n const validateInitially = useMemo(() => {\n if (props.validateInitially) {\n return props.validateInitially\n }\n\n if (props.value) {\n return true\n }\n\n return undefined\n }, [props.validateInitially, props.value])\n\n const valueProp = useMemo(() => {\n const { month, year } = stringToExpiryValue(\n props.value ?? props.defaultValue\n )\n const monthString = expiryValueToString(month, placeholders.month)\n const yearString = expiryValueToString(year, placeholders.year)\n\n if (\n isFieldEmpty(monthString, placeholders.month) &&\n isFieldEmpty(yearString, placeholders.year)\n ) {\n return ''\n }\n\n return `${monthString}${yearString}`\n }, [\n props.value,\n props.defaultValue,\n placeholders.month,\n placeholders.year,\n ])\n\n const preparedProps: ExpiryProps = {\n ...props,\n errorMessages,\n value: valueProp,\n fromInput: handleInput,\n validateRequired,\n validateInitially: validateInitially,\n onBlurValidator: monthAndYearValidator,\n }\n\n const {\n id,\n path,\n itemPath,\n className,\n label = expiryLabel,\n hasError,\n info,\n warning,\n disabled,\n size,\n value = '',\n htmlAttributes,\n handleFocus,\n handleBlur,\n handleChange,\n setDisplayValue,\n } = useFieldProps(preparedProps)\n\n const expiry: ExpiryValue = useMemo(\n () => stringToExpiryValue(value),\n [value]\n )\n\n useMemo(() => {\n if ((path || itemPath) && expiry.month && expiry.year) {\n setDisplayValue(`${expiry.month}/${expiry.year}`)\n }\n }, [expiry.month, expiry.year, itemPath, path, setDisplayValue])\n\n const status = hasError\n ? 'error'\n : warning\n ? 'warn'\n : info\n ? 'info'\n : null\n\n const fieldBlockProps: FieldBlockProps = {\n id,\n forId: `${id}-input-month`,\n className: classnames('dnb-forms-field-expiry', className),\n label,\n ...pickSpacingProps(props),\n }\n\n return (\n <FieldBlock {...fieldBlockProps}>\n <MultiInputMask\n stretch\n id={`${id}-input`}\n values={expiry}\n status={status}\n statusState={disabled ? 'disabled' : undefined}\n disabled={disabled}\n size={size}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n delimiter=\"/\"\n inputMode=\"numeric\"\n inputs={[\n {\n id: 'month',\n label: monthLabel,\n mask: [/[0-9]/, /[0-9]/],\n placeholderCharacter: placeholders['month'],\n autoComplete: 'cc-exp-month',\n ...htmlAttributes,\n },\n {\n id: 'year',\n label: yearLabel,\n mask: [/[0-9]/, /[0-9]/],\n placeholderCharacter: placeholders['year'],\n autoComplete: 'cc-exp-year',\n ...htmlAttributes,\n },\n ]}\n />\n </FieldBlock>\n )\n}\n\nfunction isFieldEmpty(value: string, placeholder: string) {\n return value === `${placeholder}${placeholder}`\n}\n\nfunction stringToExpiryValue(value: string) {\n const month = value?.substring(0, 2) ?? ''\n const year = value?.substring(2, 4) ?? ''\n\n return {\n month,\n year,\n }\n}\n\nfunction expiryValueToString(value: string, placeholder: string) {\n if (!value) {\n return `${placeholder}${placeholder}`\n }\n\n if (value.length === 1) {\n return `${value}${placeholder}`\n }\n\n return value\n}\n\nfunction validateMonthAndYear(\n date: string,\n placeholders: Record<'month' | 'year', string>\n) {\n const { month, year } = stringToExpiryValue(date)\n\n const monthNumber = Number(month)\n\n const messages: Array<FormError> = []\n\n if (\n month.includes(placeholders.month) ||\n monthNumber < 1 ||\n monthNumber > 12\n ) {\n messages.push(\n new FormError('Expiry.errorMonth', {\n messageValues: { month: month },\n })\n )\n }\n\n if (year.includes(placeholders.year)) {\n messages.push(\n new FormError('Expiry.errorYear', {\n messageValues: { year: year },\n })\n )\n }\n\n if (messages.length) {\n return messages\n }\n}\n\nExpiry._supportsEufemiaSpacingProps = true\nexport default Expiry\n"],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
+
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; }
|
|
3
|
+
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; }
|
|
4
|
+
import { inputProperties } from '../../../../components/input/InputDocs';
|
|
5
|
+
export const ExpiryProperties = {
|
|
6
|
+
size: _objectSpread(_objectSpread({}, inputProperties.size), {}, {
|
|
7
|
+
doc: `${inputProperties.size.doc} Consider rather setting field sizes with [Form.Appearance](/uilib/extensions/forms/Form/Appearance/).`
|
|
8
|
+
})
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=ExpiryDocs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExpiryDocs.js","names":["inputProperties","ExpiryProperties","size","_objectSpread","doc"],"sources":["../../../../../../src/extensions/forms/Field/Expiry/ExpiryDocs.tsx"],"sourcesContent":["import { PropertiesTableProps } from '../../../../shared/types'\nimport { inputProperties } from '../../../../components/input/InputDocs'\n\nexport const ExpiryProperties: PropertiesTableProps = {\n size: {\n ...inputProperties.size,\n doc: `${inputProperties.size.doc} Consider rather setting field sizes with [Form.Appearance](/uilib/extensions/forms/Form/Appearance/).`,\n },\n}\n"],"mappings":";;;AACA,SAASA,eAAe,QAAQ,wCAAwC;AAExE,OAAO,MAAMC,gBAAsC,GAAG;EACpDC,IAAI,EAAAC,aAAA,CAAAA,aAAA,KACCH,eAAe,CAACE,IAAI;IACvBE,GAAG,EAAG,GAAEJ,eAAe,CAACE,IAAI,CAACE,GAAI;EAAuG;AAE5I,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Props as StringFieldProps } from '../String';
|
|
2
|
-
import {
|
|
2
|
+
import type { ValidatorDisableable } from '../../types';
|
|
3
3
|
import { FormError } from '../../utils';
|
|
4
4
|
export type Props = Omit<StringFieldProps, 'onBlurValidator'> & {
|
|
5
5
|
omitMask?: boolean;
|
|
6
6
|
validate?: boolean;
|
|
7
|
-
onBlurValidator?:
|
|
7
|
+
onBlurValidator?: ValidatorDisableable<string>;
|
|
8
8
|
};
|
|
9
9
|
declare function NationalIdentityNumber(props: Props): import("react/jsx-runtime").JSX.Element;
|
|
10
10
|
declare namespace NationalIdentityNumber {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NationalIdentityNumber.js","names":["React","useCallback","useMemo","StringField","dnr","fnr","FormError","useTranslation","NationalIdentityNumber","props","translations","label","errorRequired","errorFnr","errorFnrLength","errorDnr","errorDnrLength","errorMessages","_objectSpread","identificationNumberIsOfLength","identificationNumber","length","fnrValidator","value","undefined","Number","parseInt","substring","Error","fnrIs11Digits","status","dnrValidator","dnrIs11Digits","dnrAndFnrValidator","dnrValidationPattern","RegExp","test","validate","omitMask","validator","onChangeValidator","onBlurValidator","width","labelProp","mask","Array","fill","onBlurValidatorToUse","StringFieldProps","inputMode","exportValidators","createElement","getAgeByBirthDate","birthDate","today","Date","age","getFullYear","month","getMonth","day","getDate","getBirthDateByFnrOrDnr","yearPart","centuryNumber","isBornIn20XX","year","differentiatorValue","isDnr","createMinimumAgeValidator","identificationNumberIs7DigitsOrMore","validationRule","date","messageValues","String","createMinimumAgeVerifier","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.tsx"],"sourcesContent":["import React, { useCallback, useMemo } from 'react'\nimport StringField, { Props as StringFieldProps } from '../String'\nimport { dnr, fnr } from '@navikt/fnrvalidator'\nimport { Validator } from '../../types'\nimport { FormError } from '../../utils'\nimport useTranslation from '../../hooks/useTranslation'\n\nexport type Props = Omit<StringFieldProps, 'onBlurValidator'> & {\n omitMask?: boolean\n validate?: boolean\n onBlurValidator?: Validator<string> | false\n}\n\nfunction NationalIdentityNumber(props: Props) {\n const translations = useTranslation().NationalIdentityNumber\n const {\n label,\n errorRequired,\n errorFnr,\n errorFnrLength,\n errorDnr,\n errorDnrLength,\n } = translations\n const errorMessages = useMemo(\n () => ({\n 'Field.errorRequired': errorRequired,\n 'Field.errorPattern': errorFnr,\n ...props.errorMessages,\n }),\n [errorRequired, errorFnr, props.errorMessages]\n )\n\n const identificationNumberIsOfLength = (\n identificationNumber: string,\n length: number\n ) => {\n return identificationNumber?.length === length\n }\n\n const fnrValidator = useCallback(\n (value: string) => {\n if (value !== undefined) {\n if (Number.parseInt(value.substring(0, 1)) > 3) {\n return Error(errorFnr)\n }\n\n const fnrIs11Digits = identificationNumberIsOfLength(value, 11)\n\n if (!fnrIs11Digits) {\n return Error(errorFnrLength)\n }\n if (fnrIs11Digits && fnr(value).status === 'invalid') {\n return Error(errorFnr)\n }\n }\n },\n [errorFnr, errorFnrLength]\n )\n\n const dnrValidator = useCallback(\n (value: string) => {\n if (value !== undefined) {\n if (Number.parseInt(value.substring(0, 1)) < 4) {\n return Error(errorDnr)\n }\n\n const dnrIs11Digits = identificationNumberIsOfLength(value, 11)\n\n if (!dnrIs11Digits) {\n return Error(errorDnrLength)\n }\n if (dnrIs11Digits && dnr(value).status === 'invalid') {\n return Error(errorDnr)\n }\n }\n },\n [errorDnr, errorDnrLength]\n )\n\n const dnrAndFnrValidator = useCallback(\n (value: string) => {\n const dnrValidationPattern = '^[4-9].*' // 1st num is increased by 4. i.e, if 01.01.1985, D number would be 410185.\n\n if (new RegExp(dnrValidationPattern).test(value)) {\n return dnrValidator(value)\n }\n return fnrValidator(value)\n },\n [dnrValidator, fnrValidator]\n )\n\n const {\n validate = true,\n omitMask,\n // Deprecated – can be removed in v11\n validator,\n onChangeValidator = validator,\n onBlurValidator = dnrAndFnrValidator,\n width,\n label: labelProp,\n } = props\n\n const mask = useMemo(\n () =>\n omitMask\n ? Array(11).fill(/\\d/)\n : [\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n ' ',\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n ],\n [omitMask]\n )\n\n const onBlurValidatorToUse =\n onBlurValidator === false ? undefined : onBlurValidator\n\n const StringFieldProps: StringFieldProps = {\n ...props,\n label: labelProp ?? label,\n errorMessages,\n mask,\n width: width ?? 'medium',\n inputMode: 'numeric',\n onChangeValidator: validate ? onChangeValidator : undefined,\n onBlurValidator: validate ? onBlurValidatorToUse : undefined,\n exportValidators: {\n dnrValidator,\n fnrValidator,\n dnrAndFnrValidator,\n },\n }\n\n return <StringField {...StringFieldProps} />\n}\n\nexport function getAgeByBirthDate(birthDate: Date): number {\n const today = new Date()\n const age = today.getFullYear() - birthDate.getFullYear()\n const month = today.getMonth() - birthDate.getMonth()\n const day = today.getDate() - birthDate.getDate()\n\n if (month < 0 || (month === 0 && day < 0)) {\n return age - 1\n }\n\n return age\n}\n\nexport function getBirthDateByFnrOrDnr(value: string) {\n if (value === undefined) {\n return // stop here\n }\n\n const yearPart = value.substring(4, 6)\n const centuryNumber = Number.parseInt(value.substring(6, 7))\n\n const isBornIn20XX = centuryNumber >= 5\n const year = isBornIn20XX ? `20${yearPart}` : `19${yearPart}`\n const month = Number.parseInt(value.substring(2, 4))\n\n const differentiatorValue =\n value.length > 0 ? Number.parseInt(value.substring(0, 1)) : undefined\n const isDnr = differentiatorValue && differentiatorValue > 3\n\n const day = isDnr\n ? Number.parseInt(value.substring(0, 2)) - 40\n : Number.parseInt(value.substring(0, 2))\n\n return new Date(Number.parseInt(year), month - 1, day)\n}\n\nexport function createMinimumAgeValidator(age: number) {\n return (value: string) => {\n if (typeof value !== 'string') {\n return // stop here\n }\n\n const identificationNumberIs7DigitsOrMore = value?.length >= 7\n\n if (!identificationNumberIs7DigitsOrMore) {\n return new FormError(\n 'NationalIdentityNumber.errorMinimumAgeValidatorLength',\n {\n validationRule: 'errorMinimumAgeValidatorLength', // \"validationRule\" Will be removed in future PR\n }\n )\n }\n\n if (identificationNumberIs7DigitsOrMore) {\n const date = getBirthDateByFnrOrDnr(value)\n if (getAgeByBirthDate(date) >= age) {\n return // stop here\n }\n }\n\n return new FormError(\n 'NationalIdentityNumber.errorMinimumAgeValidator',\n {\n validationRule: 'errorMinimumAgeValidator', // \"validationRule\" Will be removed in future PR\n messageValues: { age: String(age) },\n }\n )\n }\n}\n\nexport function createMinimumAgeVerifier(age: number) {\n const validator = createMinimumAgeValidator(age)\n return (value: string) => {\n if (value?.length >= 7) {\n return !(validator(value) instanceof Error)\n }\n\n return false\n }\n}\n\nNationalIdentityNumber._supportsSpacingProps = true\nexport default NationalIdentityNumber\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NationalIdentityNumber.js","names":["React","useCallback","useMemo","StringField","dnr","fnr","FormError","useTranslation","NationalIdentityNumber","props","translations","label","errorRequired","errorFnr","errorFnrLength","errorDnr","errorDnrLength","errorMessages","_objectSpread","identificationNumberIsOfLength","identificationNumber","length","fnrValidator","value","undefined","Number","parseInt","substring","Error","fnrIs11Digits","status","dnrValidator","dnrIs11Digits","dnrAndFnrValidator","dnrValidationPattern","RegExp","test","validate","omitMask","validator","onChangeValidator","onBlurValidator","width","labelProp","mask","Array","fill","onBlurValidatorToUse","StringFieldProps","inputMode","exportValidators","createElement","getAgeByBirthDate","birthDate","today","Date","age","getFullYear","month","getMonth","day","getDate","getBirthDateByFnrOrDnr","yearPart","centuryNumber","isBornIn20XX","year","differentiatorValue","isDnr","createMinimumAgeValidator","identificationNumberIs7DigitsOrMore","validationRule","date","messageValues","String","createMinimumAgeVerifier","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.tsx"],"sourcesContent":["import React, { useCallback, useMemo } from 'react'\nimport StringField, { Props as StringFieldProps } from '../String'\nimport { dnr, fnr } from '@navikt/fnrvalidator'\nimport type { ValidatorDisableable } from '../../types'\nimport { FormError } from '../../utils'\nimport useTranslation from '../../hooks/useTranslation'\n\nexport type Props = Omit<StringFieldProps, 'onBlurValidator'> & {\n omitMask?: boolean\n validate?: boolean\n onBlurValidator?: ValidatorDisableable<string>\n}\n\nfunction NationalIdentityNumber(props: Props) {\n const translations = useTranslation().NationalIdentityNumber\n const {\n label,\n errorRequired,\n errorFnr,\n errorFnrLength,\n errorDnr,\n errorDnrLength,\n } = translations\n const errorMessages = useMemo(\n () => ({\n 'Field.errorRequired': errorRequired,\n 'Field.errorPattern': errorFnr,\n ...props.errorMessages,\n }),\n [errorRequired, errorFnr, props.errorMessages]\n )\n\n const identificationNumberIsOfLength = (\n identificationNumber: string,\n length: number\n ) => {\n return identificationNumber?.length === length\n }\n\n const fnrValidator = useCallback(\n (value: string) => {\n if (value !== undefined) {\n if (Number.parseInt(value.substring(0, 1)) > 3) {\n return Error(errorFnr)\n }\n\n const fnrIs11Digits = identificationNumberIsOfLength(value, 11)\n\n if (!fnrIs11Digits) {\n return Error(errorFnrLength)\n }\n if (fnrIs11Digits && fnr(value).status === 'invalid') {\n return Error(errorFnr)\n }\n }\n },\n [errorFnr, errorFnrLength]\n )\n\n const dnrValidator = useCallback(\n (value: string) => {\n if (value !== undefined) {\n if (Number.parseInt(value.substring(0, 1)) < 4) {\n return Error(errorDnr)\n }\n\n const dnrIs11Digits = identificationNumberIsOfLength(value, 11)\n\n if (!dnrIs11Digits) {\n return Error(errorDnrLength)\n }\n if (dnrIs11Digits && dnr(value).status === 'invalid') {\n return Error(errorDnr)\n }\n }\n },\n [errorDnr, errorDnrLength]\n )\n\n const dnrAndFnrValidator = useCallback(\n (value: string) => {\n const dnrValidationPattern = '^[4-9].*' // 1st num is increased by 4. i.e, if 01.01.1985, D number would be 410185.\n\n if (new RegExp(dnrValidationPattern).test(value)) {\n return dnrValidator(value)\n }\n return fnrValidator(value)\n },\n [dnrValidator, fnrValidator]\n )\n\n const {\n validate = true,\n omitMask,\n // Deprecated – can be removed in v11\n validator,\n onChangeValidator = validator,\n onBlurValidator = dnrAndFnrValidator,\n width,\n label: labelProp,\n } = props\n\n const mask = useMemo(\n () =>\n omitMask\n ? Array(11).fill(/\\d/)\n : [\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n ' ',\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n ],\n [omitMask]\n )\n\n const onBlurValidatorToUse =\n onBlurValidator === false ? undefined : onBlurValidator\n\n const StringFieldProps: StringFieldProps = {\n ...props,\n label: labelProp ?? label,\n errorMessages,\n mask,\n width: width ?? 'medium',\n inputMode: 'numeric',\n onChangeValidator: validate ? onChangeValidator : undefined,\n onBlurValidator: validate ? onBlurValidatorToUse : undefined,\n exportValidators: {\n dnrValidator,\n fnrValidator,\n dnrAndFnrValidator,\n },\n }\n\n return <StringField {...StringFieldProps} />\n}\n\nexport function getAgeByBirthDate(birthDate: Date): number {\n const today = new Date()\n const age = today.getFullYear() - birthDate.getFullYear()\n const month = today.getMonth() - birthDate.getMonth()\n const day = today.getDate() - birthDate.getDate()\n\n if (month < 0 || (month === 0 && day < 0)) {\n return age - 1\n }\n\n return age\n}\n\nexport function getBirthDateByFnrOrDnr(value: string) {\n if (value === undefined) {\n return // stop here\n }\n\n const yearPart = value.substring(4, 6)\n const centuryNumber = Number.parseInt(value.substring(6, 7))\n\n const isBornIn20XX = centuryNumber >= 5\n const year = isBornIn20XX ? `20${yearPart}` : `19${yearPart}`\n const month = Number.parseInt(value.substring(2, 4))\n\n const differentiatorValue =\n value.length > 0 ? Number.parseInt(value.substring(0, 1)) : undefined\n const isDnr = differentiatorValue && differentiatorValue > 3\n\n const day = isDnr\n ? Number.parseInt(value.substring(0, 2)) - 40\n : Number.parseInt(value.substring(0, 2))\n\n return new Date(Number.parseInt(year), month - 1, day)\n}\n\nexport function createMinimumAgeValidator(age: number) {\n return (value: string) => {\n if (typeof value !== 'string') {\n return // stop here\n }\n\n const identificationNumberIs7DigitsOrMore = value?.length >= 7\n\n if (!identificationNumberIs7DigitsOrMore) {\n return new FormError(\n 'NationalIdentityNumber.errorMinimumAgeValidatorLength',\n {\n validationRule: 'errorMinimumAgeValidatorLength', // \"validationRule\" Will be removed in future PR\n }\n )\n }\n\n if (identificationNumberIs7DigitsOrMore) {\n const date = getBirthDateByFnrOrDnr(value)\n if (getAgeByBirthDate(date) >= age) {\n return // stop here\n }\n }\n\n return new FormError(\n 'NationalIdentityNumber.errorMinimumAgeValidator',\n {\n validationRule: 'errorMinimumAgeValidator', // \"validationRule\" Will be removed in future PR\n messageValues: { age: String(age) },\n }\n )\n }\n}\n\nexport function createMinimumAgeVerifier(age: number) {\n const validator = createMinimumAgeValidator(age)\n return (value: string) => {\n if (value?.length >= 7) {\n return !(validator(value) instanceof Error)\n }\n\n return false\n }\n}\n\nNationalIdentityNumber._supportsSpacingProps = true\nexport default NationalIdentityNumber\n"],"mappings":"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"}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
+
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; }
|
|
3
|
+
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; }
|
|
1
4
|
import { inputProperties } from '../../../../components/input/InputDocs';
|
|
2
5
|
export const numberProperties = {
|
|
3
6
|
decimalLimit: {
|
|
@@ -55,7 +58,9 @@ export const numberProperties = {
|
|
|
55
58
|
type: ['string', 'false'],
|
|
56
59
|
status: 'optional'
|
|
57
60
|
},
|
|
58
|
-
size: inputProperties.size,
|
|
61
|
+
size: _objectSpread(_objectSpread({}, inputProperties.size), {}, {
|
|
62
|
+
doc: `${inputProperties.size.doc} Consider rather setting field sizes with [Form.Appearance](/uilib/extensions/forms/Form/Appearance/).`
|
|
63
|
+
}),
|
|
59
64
|
align: {
|
|
60
65
|
doc: 'Lateral alignment of contents of input field, one of `left` (default), `center`, or `right`.',
|
|
61
66
|
type: 'string',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NumberDocs.js","names":["inputProperties","numberProperties","decimalLimit","doc","type","status","percent","currency","allowNegative","disallowLeadingZeroes","minimum","maximum","exclusiveMinimum","exclusiveMaximum","multipleOf","width","size","align","autoComplete","prefix","suffix","step","startWith","showStepControls"],"sources":["../../../../../../src/extensions/forms/Field/Number/NumberDocs.ts"],"sourcesContent":["import { inputProperties } from '../../../../components/input/InputDocs'\nimport { PropertiesTableProps } from '../../../../shared/types'\n\nexport const numberProperties: PropertiesTableProps = {\n decimalLimit: {\n doc: 'Max number of decimals. Values with more decimals will be rounded. Defaults to `12`.',\n type: 'number',\n status: 'optional',\n },\n percent: {\n doc: 'Format a number as percentage.',\n type: 'boolean',\n status: 'optional',\n },\n currency: {\n doc: 'Currency code (ISO 4217) or `true` to use the default `NOK`. Uses two decimals by default.',\n type: ['boolean', 'string'],\n status: 'optional',\n },\n allowNegative: {\n doc: 'Whether or not to allow negative numbers. Defaults to `true`.',\n type: 'boolean',\n status: 'optional',\n },\n disallowLeadingZeroes: {\n doc: 'Whether or not to allow leading zeroes. Defaults to `false`.',\n type: 'boolean',\n status: 'optional',\n },\n minimum: {\n doc: 'Validation for inclusive minimum number value (greater than or equal). Defaults to `Number.MIN_SAFE_INTEGER`.',\n type: 'number',\n status: 'optional',\n },\n maximum: {\n doc: 'Validation for inclusive maximum number value (less than or equal). Defaults to `Number.MAX_SAFE_INTEGER`.',\n type: 'number',\n status: 'optional',\n },\n exclusiveMinimum: {\n doc: 'Validation for exclusive minimum number value (greater than).',\n type: 'number',\n status: 'optional',\n },\n exclusiveMaximum: {\n doc: 'Validation for exclusive maximum number value (less than).',\n type: 'number',\n status: 'optional',\n },\n multipleOf: {\n doc: 'Validation that requires the number to be a multiple of given value.',\n type: 'number',\n status: 'optional',\n },\n width: {\n doc: '`false` for no width (use browser default), `small`, `medium` or `large` for predefined standard widths, `stretch` for fill available width.',\n type: ['string', 'false'],\n status: 'optional',\n },\n size: inputProperties.size,\n align: {\n doc: 'Lateral alignment of contents of input field, one of `left` (default), `center`, or `right`.',\n type: 'string',\n status: 'optional',\n },\n autoComplete: {\n doc: 'For HTML `autocomplete` attributes.',\n type: ['on', 'string'],\n status: 'optional',\n },\n prefix: {\n doc: 'Text added before the value input.',\n type: 'string',\n status: 'optional',\n },\n suffix: {\n doc: 'Text added after the value input.',\n type: 'string',\n status: 'optional',\n },\n step: {\n doc: 'Determines step granularity when in/decreasing value input through step controls buttons or arrow keys. Defaults to 1.',\n type: 'number',\n status: 'optional',\n },\n startWith: {\n doc: 'When no `value` or `defaultValue` is given, start with a given value when in/decreasing value input through step controls buttons or arrow keys. Defaults to `null`.',\n type: 'number',\n status: 'optional',\n },\n showStepControls: {\n doc: 'Show buttons that in/decreases value input by the step value.',\n type: 'boolean',\n status: 'optional',\n },\n}\n"],"mappings":"AAAA,SAASA,eAAe,QAAQ,wCAAwC;AAGxE,OAAO,MAAMC,gBAAsC,GAAG;EACpDC,YAAY,EAAE;IACZC,GAAG,EAAE,sFAAsF;IAC3FC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDC,OAAO,EAAE;IACPH,GAAG,EAAE,gCAAgC;IACrCC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDE,QAAQ,EAAE;IACRJ,GAAG,EAAE,4FAA4F;IACjGC,IAAI,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;IAC3BC,MAAM,EAAE;EACV,CAAC;EACDG,aAAa,EAAE;IACbL,GAAG,EAAE,+DAA+D;IACpEC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDI,qBAAqB,EAAE;IACrBN,GAAG,EAAE,8DAA8D;IACnEC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDK,OAAO,EAAE;IACPP,GAAG,EAAE,+GAA+G;IACpHC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDM,OAAO,EAAE;IACPR,GAAG,EAAE,4GAA4G;IACjHC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDO,gBAAgB,EAAE;IAChBT,GAAG,EAAE,+DAA+D;IACpEC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDQ,gBAAgB,EAAE;IAChBV,GAAG,EAAE,4DAA4D;IACjEC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDS,UAAU,EAAE;IACVX,GAAG,EAAE,sEAAsE;IAC3EC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDU,KAAK,EAAE;IACLZ,GAAG,EAAE,8IAA8I;IACnJC,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;IACzBC,MAAM,EAAE;EACV,CAAC;EACDW,IAAI,
|
|
1
|
+
{"version":3,"file":"NumberDocs.js","names":["inputProperties","numberProperties","decimalLimit","doc","type","status","percent","currency","allowNegative","disallowLeadingZeroes","minimum","maximum","exclusiveMinimum","exclusiveMaximum","multipleOf","width","size","_objectSpread","align","autoComplete","prefix","suffix","step","startWith","showStepControls"],"sources":["../../../../../../src/extensions/forms/Field/Number/NumberDocs.ts"],"sourcesContent":["import { inputProperties } from '../../../../components/input/InputDocs'\nimport { PropertiesTableProps } from '../../../../shared/types'\n\nexport const numberProperties: PropertiesTableProps = {\n decimalLimit: {\n doc: 'Max number of decimals. Values with more decimals will be rounded. Defaults to `12`.',\n type: 'number',\n status: 'optional',\n },\n percent: {\n doc: 'Format a number as percentage.',\n type: 'boolean',\n status: 'optional',\n },\n currency: {\n doc: 'Currency code (ISO 4217) or `true` to use the default `NOK`. Uses two decimals by default.',\n type: ['boolean', 'string'],\n status: 'optional',\n },\n allowNegative: {\n doc: 'Whether or not to allow negative numbers. Defaults to `true`.',\n type: 'boolean',\n status: 'optional',\n },\n disallowLeadingZeroes: {\n doc: 'Whether or not to allow leading zeroes. Defaults to `false`.',\n type: 'boolean',\n status: 'optional',\n },\n minimum: {\n doc: 'Validation for inclusive minimum number value (greater than or equal). Defaults to `Number.MIN_SAFE_INTEGER`.',\n type: 'number',\n status: 'optional',\n },\n maximum: {\n doc: 'Validation for inclusive maximum number value (less than or equal). Defaults to `Number.MAX_SAFE_INTEGER`.',\n type: 'number',\n status: 'optional',\n },\n exclusiveMinimum: {\n doc: 'Validation for exclusive minimum number value (greater than).',\n type: 'number',\n status: 'optional',\n },\n exclusiveMaximum: {\n doc: 'Validation for exclusive maximum number value (less than).',\n type: 'number',\n status: 'optional',\n },\n multipleOf: {\n doc: 'Validation that requires the number to be a multiple of given value.',\n type: 'number',\n status: 'optional',\n },\n width: {\n doc: '`false` for no width (use browser default), `small`, `medium` or `large` for predefined standard widths, `stretch` for fill available width.',\n type: ['string', 'false'],\n status: 'optional',\n },\n size: {\n ...inputProperties.size,\n doc: `${inputProperties.size.doc} Consider rather setting field sizes with [Form.Appearance](/uilib/extensions/forms/Form/Appearance/).`,\n },\n align: {\n doc: 'Lateral alignment of contents of input field, one of `left` (default), `center`, or `right`.',\n type: 'string',\n status: 'optional',\n },\n autoComplete: {\n doc: 'For HTML `autocomplete` attributes.',\n type: ['on', 'string'],\n status: 'optional',\n },\n prefix: {\n doc: 'Text added before the value input.',\n type: 'string',\n status: 'optional',\n },\n suffix: {\n doc: 'Text added after the value input.',\n type: 'string',\n status: 'optional',\n },\n step: {\n doc: 'Determines step granularity when in/decreasing value input through step controls buttons or arrow keys. Defaults to 1.',\n type: 'number',\n status: 'optional',\n },\n startWith: {\n doc: 'When no `value` or `defaultValue` is given, start with a given value when in/decreasing value input through step controls buttons or arrow keys. Defaults to `null`.',\n type: 'number',\n status: 'optional',\n },\n showStepControls: {\n doc: 'Show buttons that in/decreases value input by the step value.',\n type: 'boolean',\n status: 'optional',\n },\n}\n"],"mappings":";;;AAAA,SAASA,eAAe,QAAQ,wCAAwC;AAGxE,OAAO,MAAMC,gBAAsC,GAAG;EACpDC,YAAY,EAAE;IACZC,GAAG,EAAE,sFAAsF;IAC3FC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDC,OAAO,EAAE;IACPH,GAAG,EAAE,gCAAgC;IACrCC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDE,QAAQ,EAAE;IACRJ,GAAG,EAAE,4FAA4F;IACjGC,IAAI,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;IAC3BC,MAAM,EAAE;EACV,CAAC;EACDG,aAAa,EAAE;IACbL,GAAG,EAAE,+DAA+D;IACpEC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDI,qBAAqB,EAAE;IACrBN,GAAG,EAAE,8DAA8D;IACnEC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDK,OAAO,EAAE;IACPP,GAAG,EAAE,+GAA+G;IACpHC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDM,OAAO,EAAE;IACPR,GAAG,EAAE,4GAA4G;IACjHC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDO,gBAAgB,EAAE;IAChBT,GAAG,EAAE,+DAA+D;IACpEC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDQ,gBAAgB,EAAE;IAChBV,GAAG,EAAE,4DAA4D;IACjEC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDS,UAAU,EAAE;IACVX,GAAG,EAAE,sEAAsE;IAC3EC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDU,KAAK,EAAE;IACLZ,GAAG,EAAE,8IAA8I;IACnJC,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;IACzBC,MAAM,EAAE;EACV,CAAC;EACDW,IAAI,EAAAC,aAAA,CAAAA,aAAA,KACCjB,eAAe,CAACgB,IAAI;IACvBb,GAAG,EAAG,GAAEH,eAAe,CAACgB,IAAI,CAACb,GAAI;EAAuG,EACzI;EACDe,KAAK,EAAE;IACLf,GAAG,EAAE,8FAA8F;IACnGC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDc,YAAY,EAAE;IACZhB,GAAG,EAAE,qCAAqC;IAC1CC,IAAI,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC;IACtBC,MAAM,EAAE;EACV,CAAC;EACDe,MAAM,EAAE;IACNjB,GAAG,EAAE,oCAAoC;IACzCC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDgB,MAAM,EAAE;IACNlB,GAAG,EAAE,mCAAmC;IACxCC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDiB,IAAI,EAAE;IACJnB,GAAG,EAAE,wHAAwH;IAC7HC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDkB,SAAS,EAAE;IACTpB,GAAG,EAAE,sKAAsK;IAC3KC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDmB,gBAAgB,EAAE;IAChBrB,GAAG,EAAE,+DAA+D;IACpEC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV;AACF,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Props as StringFieldProps } from '../String';
|
|
2
|
-
import {
|
|
2
|
+
import type { ValidatorDisableable } from '../../types';
|
|
3
3
|
export type Props = Omit<StringFieldProps, 'onBlurValidator'> & {
|
|
4
4
|
validate?: boolean;
|
|
5
5
|
omitMask?: boolean;
|
|
6
|
-
onBlurValidator?:
|
|
6
|
+
onBlurValidator?: ValidatorDisableable<string>;
|
|
7
7
|
};
|
|
8
8
|
declare function OrganizationNumber(props: Props): import("react/jsx-runtime").JSX.Element;
|
|
9
9
|
declare namespace OrganizationNumber {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OrganizationNumber.js","names":["React","useCallback","useMemo","StringField","useTranslation","OrganizationNumber","props","translations","errorOrgNo","errorOrgNoLength","errorRequired","label","errorMessages","_objectSpread","organizationNumberValidator","value","undefined","orgNoIs9Digits","length","Error","isValidOrgNumber","validate","omitMask","validator","onChangeValidator","onBlurValidator","labelProp","width","mask","onBlurValidatorToUse","StringFieldProps","className","inputMode","exportValidators","createElement","digits","checkDigit","sum","i","parseInt","charAt","result","finalCheckDigit","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/OrganizationNumber/OrganizationNumber.tsx"],"sourcesContent":["import React, { useCallback, useMemo } from 'react'\nimport StringField, { Props as StringFieldProps } from '../String'\nimport useTranslation from '../../hooks/useTranslation'\nimport {
|
|
1
|
+
{"version":3,"file":"OrganizationNumber.js","names":["React","useCallback","useMemo","StringField","useTranslation","OrganizationNumber","props","translations","errorOrgNo","errorOrgNoLength","errorRequired","label","errorMessages","_objectSpread","organizationNumberValidator","value","undefined","orgNoIs9Digits","length","Error","isValidOrgNumber","validate","omitMask","validator","onChangeValidator","onBlurValidator","labelProp","width","mask","onBlurValidatorToUse","StringFieldProps","className","inputMode","exportValidators","createElement","digits","checkDigit","sum","i","parseInt","charAt","result","finalCheckDigit","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/OrganizationNumber/OrganizationNumber.tsx"],"sourcesContent":["import React, { useCallback, useMemo } from 'react'\nimport StringField, { Props as StringFieldProps } from '../String'\nimport useTranslation from '../../hooks/useTranslation'\nimport type { ValidatorDisableable } from '../../types'\n\nexport type Props = Omit<StringFieldProps, 'onBlurValidator'> & {\n validate?: boolean\n omitMask?: boolean\n onBlurValidator?: ValidatorDisableable<string>\n}\n\nfunction OrganizationNumber(props: Props) {\n const translations = useTranslation().OrganizationNumber\n const { errorOrgNo, errorOrgNoLength, errorRequired, label } =\n translations\n\n const errorMessages = useMemo(\n () => ({\n 'Field.errorRequired': errorRequired,\n 'Field.errorPattern': errorOrgNo,\n ...props.errorMessages,\n }),\n [errorRequired, errorOrgNo, props.errorMessages]\n )\n\n const organizationNumberValidator = useCallback(\n (value: string) => {\n if (value !== undefined) {\n const orgNoIs9Digits = value?.length === 9\n\n if (!orgNoIs9Digits) {\n return Error(errorOrgNoLength)\n }\n if (orgNoIs9Digits && !isValidOrgNumber(value)) {\n return Error(errorOrgNo)\n }\n }\n },\n [errorOrgNo, errorOrgNoLength]\n )\n\n const {\n validate = true,\n omitMask,\n // Deprecated – can be removed in v11\n validator,\n onChangeValidator = validator,\n onBlurValidator = organizationNumberValidator,\n label: labelProp,\n width,\n } = props\n\n const mask = useMemo(\n () =>\n omitMask\n ? [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n : [/\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/],\n [omitMask]\n )\n\n const onBlurValidatorToUse =\n onBlurValidator === false ? undefined : onBlurValidator\n\n const StringFieldProps: StringFieldProps = {\n ...props,\n className: 'dnb-forms-field-organization-number',\n label: labelProp ?? label,\n errorMessages,\n mask,\n width: width ?? 'medium',\n inputMode: 'numeric',\n onChangeValidator: validate ? onChangeValidator : undefined,\n onBlurValidator: validate ? onBlurValidatorToUse : undefined,\n exportValidators: { organizationNumberValidator },\n }\n\n return <StringField {...StringFieldProps} />\n}\n\n/**\n * Source:\n * www.brreg.no/om-oss/registrene-vare/om-enhetsregisteret/organisasjonsnummeret/\n */\nfunction isValidOrgNumber(digits: string) {\n let checkDigit = 2\n let sum = 0\n\n for (let i = digits.length - 2; i >= 0; --i) {\n sum += parseInt(digits.charAt(i)) * checkDigit\n\n checkDigit += 1\n\n if (checkDigit > 7) {\n checkDigit = 2\n }\n }\n\n const result = 11 - (sum % 11)\n const finalCheckDigit = result === 11 ? 0 : result\n\n return parseInt(digits.charAt(digits.length - 1), 10) === finalCheckDigit\n}\n\nOrganizationNumber._supportsSpacingProps = true\nexport default OrganizationNumber\n"],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ export const PasswordProperties = {
|
|
|
5
5
|
status: 'optional'
|
|
6
6
|
},
|
|
7
7
|
size: {
|
|
8
|
-
doc: '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. Also, if you define a number like size="2" then it will be forwarded as the input element attribute.',
|
|
8
|
+
doc: '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. Also, if you define a number like size="2" then it will be forwarded as the input element attribute. Consider rather setting field sizes with [Form.Appearance](/uilib/extensions/forms/Form/Appearance/).',
|
|
9
9
|
type: ['string', 'number'],
|
|
10
10
|
status: 'optional'
|
|
11
11
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PasswordDocs.js","names":["PasswordProperties","pattern","doc","type","status","size","innerRef"],"sources":["../../../../../../src/extensions/forms/Field/Password/PasswordDocs.tsx"],"sourcesContent":["import { PropertiesTableProps } from '../../../../shared/types'\n\nexport const PasswordProperties: PropertiesTableProps = {\n pattern: {\n doc: 'Validation based on regex pattern for the number field e.g. `pattern=\"w{8}d{4}\"`.',\n type: 'string',\n status: 'optional',\n },\n size: {\n doc: '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. Also, if you define a number like size=\"2\" then it will be forwarded as the input element attribute.',\n type: ['string', 'number'],\n status: 'optional',\n },\n innerRef: {\n doc: '`ElementRef` passed on to the password `input` element.',\n type: 'object',\n status: 'optional',\n },\n '[Space](/uilib/layout/space/properties)': {\n doc: 'Spacing properties like `top` or `bottom` are supported.',\n type: ['string', 'object'],\n status: 'optional',\n },\n}\n"],"mappings":"AAEA,OAAO,MAAMA,kBAAwC,GAAG;EACtDC,OAAO,EAAE;IACPC,GAAG,EAAE,mFAAmF;IACxFC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDC,IAAI,EAAE;IACJH,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"PasswordDocs.js","names":["PasswordProperties","pattern","doc","type","status","size","innerRef"],"sources":["../../../../../../src/extensions/forms/Field/Password/PasswordDocs.tsx"],"sourcesContent":["import { PropertiesTableProps } from '../../../../shared/types'\n\nexport const PasswordProperties: PropertiesTableProps = {\n pattern: {\n doc: 'Validation based on regex pattern for the number field e.g. `pattern=\"w{8}d{4}\"`.',\n type: 'string',\n status: 'optional',\n },\n size: {\n doc: '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. Also, if you define a number like size=\"2\" then it will be forwarded as the input element attribute. Consider rather setting field sizes with [Form.Appearance](/uilib/extensions/forms/Form/Appearance/).',\n type: ['string', 'number'],\n status: 'optional',\n },\n innerRef: {\n doc: '`ElementRef` passed on to the password `input` element.',\n type: 'object',\n status: 'optional',\n },\n '[Space](/uilib/layout/space/properties)': {\n doc: 'Spacing properties like `top` or `bottom` are supported.',\n type: ['string', 'object'],\n status: 'optional',\n },\n}\n"],"mappings":"AAEA,OAAO,MAAMA,kBAAwC,GAAG;EACtDC,OAAO,EAAE;IACPC,GAAG,EAAE,mFAAmF;IACxFC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDC,IAAI,EAAE;IACJH,GAAG,EAAE,oWAAoW;IACzWC,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC1BC,MAAM,EAAE;EACV,CAAC;EACDE,QAAQ,EAAE;IACRJ,GAAG,EAAE,yDAAyD;IAC9DC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACD,yCAAyC,EAAE;IACzCF,GAAG,EAAE,0DAA0D;IAC/DC,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC1BC,MAAM,EAAE;EACV;AACF,CAAC"}
|
|
@@ -32,7 +32,7 @@ export type Props = Omit<FieldPropsWithExtraValue<string, {
|
|
|
32
32
|
* For internal testing purposes
|
|
33
33
|
*/
|
|
34
34
|
noAnimation?: boolean;
|
|
35
|
-
}
|
|
35
|
+
} & Pick<StringFieldProps, 'size'>;
|
|
36
36
|
declare function PhoneNumber(props: Props): import("react/jsx-runtime").JSX.Element;
|
|
37
37
|
declare namespace PhoneNumber {
|
|
38
38
|
var _supportsSpacingProps: boolean;
|
|
@@ -105,6 +105,7 @@ function PhoneNumber(props) {
|
|
|
105
105
|
emptyValue,
|
|
106
106
|
info,
|
|
107
107
|
warning,
|
|
108
|
+
size,
|
|
108
109
|
error,
|
|
109
110
|
hasError,
|
|
110
111
|
disabled,
|
|
@@ -271,7 +272,8 @@ function PhoneNumber(props) {
|
|
|
271
272
|
keep_selection: true,
|
|
272
273
|
autoComplete: "tel-country-code",
|
|
273
274
|
no_animation: props.noAnimation,
|
|
274
|
-
stretch: width === 'stretch'
|
|
275
|
+
stretch: width === 'stretch',
|
|
276
|
+
size: size
|
|
275
277
|
}), React.createElement(StringField, {
|
|
276
278
|
className: classnames('dnb-forms-field-phone-number__number', numberFieldClassName),
|
|
277
279
|
type: "tel",
|
|
@@ -300,7 +302,8 @@ function PhoneNumber(props) {
|
|
|
300
302
|
validateInitially: validateInitially,
|
|
301
303
|
validateContinuously: continuousValidation || validateContinuously,
|
|
302
304
|
validateUnchanged: validateUnchanged,
|
|
303
|
-
inputMode: "tel"
|
|
305
|
+
inputMode: "tel",
|
|
306
|
+
size: size
|
|
304
307
|
})));
|
|
305
308
|
}
|
|
306
309
|
function makeObject(country, lang) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PhoneNumber.js","names":["React","useMemo","useContext","useCallback","useEffect","useRef","Autocomplete","Flex","classnames","countries","StringField","FieldBlock","useFieldProps","pickSpacingProps","SharedContext","countryFilter","getCountryData","useTranslation","defaultCountryCode","defaultPlaceholder","defaultMask","PhoneNumber","props","_sharedContext$locale","_props$inputRef","_countryCodeRef$curre","_props$width","sharedContext","label","defaultLabel","countryCodeLabel","defaultCountryCodeLabel","errorRequired","lang","locale","split","countryCodeRef","emptyValue","numberRef","dataRef","langRef","wasFilled","errorMessages","_objectSpread","validateRequired","value","_ref","required","isChanged","error","countryCode","phoneNumber","splitValue","prevCountryCodeRef","current","undefined","fromExternal","external","omitCountryCodeField","toEvent","schema","_props$schema","type","pattern","defaultProps","ref","preparedProps","inputRef","id","path","itemPath","className","countryCodeFieldClassName","numberFieldClassName","countryCodePlaceholder","placeholder","numberMask","ccFilter","info","warning","hasError","disabled","width","help","validateInitially","continuousValidation","validateContinuously","validateUnchanged","setHasFocus","handleChange","setDisplayValue","onCountryCodeChange","onNumberChange","filterCountries","_inputRef$current","number","length","joinValue","filter","country","updateCurrentDataSet","formatCountryCode","cdc","sort","makeObject","getEventValues","arguments","callOnChange","_ref2","eventValues","callOnBlurOrFocus","hasFocus","handleCountryCodeChange","_ref3","_data$selectedKey","data","selectedKey","trim","handleNumberChange","handleOnBlur","handleOnFocus","handleCountryCodeFocus","_ref4","updateData","onTypeHandler","_ref5","_event$nativeEvent","revalidateInputValue","event","nativeEvent","cdcVal","test","find","_ref6","window","requestAnimationFrame","isDefault","includes","fieldBlockProps","createElement","Horizontal","align","mode","label_direction","status","on_focus","on_blur","on_change","on_type","independent_width","search_numbers","keep_selection","autoComplete","no_animation","noAnimation","stretch","layout","mask","Array","fill","onFocus","onBlur","onChange","innerRef","breakout","outset","inputMode","_country$i18n$lang","selected_value","iso","content","i18n","en","match","slice","array","Boolean","join","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/PhoneNumber/PhoneNumber.tsx"],"sourcesContent":["import React, {\n useMemo,\n useContext,\n useCallback,\n useEffect,\n useRef,\n} from 'react'\nimport { Autocomplete, Flex } from '../../../../components'\nimport { InputMaskedProps } from '../../../../components/InputMasked'\nimport classnames from 'classnames'\nimport countries, {\n type CountryLang,\n type CountryType,\n} from '../../constants/countries'\nimport StringField, { Props as StringFieldProps } from '../String'\nimport FieldBlock, { Props as FieldBlockProps } from '../../FieldBlock'\nimport { useFieldProps } from '../../hooks'\nimport {\n FieldPropsWithExtraValue,\n AllJSONSchemaVersions,\n} from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport SharedContext from '../../../../shared/Context'\nimport {\n countryFilter,\n CountryFilterSet,\n getCountryData,\n} from '../SelectCountry'\nimport useTranslation from '../../hooks/useTranslation'\nimport { DrawerListDataArrayItem } from '../../../../fragments/DrawerList'\n\nexport type Props = Omit<\n FieldPropsWithExtraValue<\n string,\n { country: string; phone: string },\n undefined | string\n >,\n 'layout' | 'layoutOptions'\n> & {\n countryCodeFieldClassName?: string\n numberFieldClassName?: string\n countryCodePlaceholder?: string\n countryCodeLabel?: string\n numberMask?: InputMaskedProps['mask']\n pattern?: StringFieldProps['pattern']\n width?: 'large' | 'stretch'\n inputRef?: React.RefObject<HTMLInputElement>\n omitCountryCodeField?: boolean\n onCountryCodeChange?: (value: string | undefined) => void\n onNumberChange?: (value: string | undefined) => void\n\n /**\n * Defines the countries to filter. Can be `Scandinavia`, `Nordic`, `Europe` or `Prioritized`.\n * Defaults to `Prioritized`.\n */\n countries?: CountryFilterSet\n\n /**\n * Use this prop to filter out certain countries. The function receives the country object and should return a boolean. Returning `false` will omit the country.\n */\n filterCountries?: (country: CountryType) => boolean\n\n /**\n * For internal testing purposes\n */\n noAnimation?: boolean\n}\n\n// Important for the default value to be defined here, and not after the useFieldProps call, to avoid the UI jumping\n// back to +47 once the user empty the field so handleChange send out undefined.\nconst defaultCountryCode = '+47'\nconst defaultPlaceholder = '00 00 00 00'\nconst defaultMask = [\n /\\d/,\n /\\d/,\n ' ',\n /\\d/,\n /\\d/,\n ' ',\n /\\d/,\n /\\d/,\n ' ',\n /\\d/,\n /\\d/,\n]\n\nfunction PhoneNumber(props: Props) {\n const sharedContext = useContext(SharedContext)\n const {\n label: defaultLabel,\n countryCodeLabel: defaultCountryCodeLabel,\n errorRequired,\n } = useTranslation().PhoneNumber\n const lang = sharedContext.locale?.split('-')[0] as CountryLang\n\n const countryCodeRef = useRef<Props['value']>(props?.emptyValue)\n const numberRef = useRef<Props['value']>(props?.emptyValue)\n const dataRef = useRef<Array<DrawerListDataArrayItem>>(null)\n const langRef = useRef<string>(lang)\n const wasFilled = useRef<boolean>(false)\n\n const errorMessages = useMemo(\n () => ({\n 'Field.errorRequired': errorRequired,\n 'Field.errorPattern': errorRequired,\n ...props.errorMessages,\n }),\n [errorRequired, props.errorMessages]\n )\n\n const validateRequired = useCallback(\n (value: string, { required, isChanged, error }) => {\n if (required) {\n const [countryCode, phoneNumber] = splitValue(value)\n\n if (countryCode !== prevCountryCodeRef.current) {\n if (countryCode) {\n prevCountryCodeRef.current = countryCode\n }\n return undefined\n }\n\n if (isChanged && !phoneNumber) {\n return error\n }\n }\n\n return undefined\n },\n []\n )\n\n const fromExternal = useCallback(\n (external: string) => {\n const [, phoneNumber] = splitValue(external)\n if (!phoneNumber && !props.omitCountryCodeField) {\n return countryCodeRef.current\n }\n return external\n },\n [props.omitCountryCodeField]\n )\n\n const toEvent = useCallback(\n (value: string) => {\n const [, phoneNumber] = splitValue(value)\n if (!phoneNumber) {\n return props.emptyValue\n }\n return value\n },\n [props.emptyValue]\n )\n\n const schema = useMemo<AllJSONSchemaVersions>(\n () =>\n props.schema ?? {\n type: 'string',\n pattern: props.pattern,\n },\n [props.schema, props.pattern]\n )\n const defaultProps: Partial<Props> = {\n schema,\n errorMessages,\n }\n const ref = useRef<HTMLInputElement>()\n const preparedProps: Props = {\n ...props,\n ...defaultProps,\n validateRequired,\n fromExternal,\n toEvent,\n inputRef: props.inputRef ?? ref,\n }\n\n const {\n id,\n path,\n itemPath,\n value,\n className,\n inputRef,\n countryCodeFieldClassName,\n numberFieldClassName,\n countryCodePlaceholder,\n placeholder,\n countryCodeLabel,\n label = defaultLabel,\n numberMask,\n countries: ccFilter = 'Prioritized',\n emptyValue,\n info,\n warning,\n error,\n hasError,\n disabled,\n width = 'large',\n help,\n required,\n validateInitially,\n continuousValidation,\n validateContinuously,\n validateUnchanged,\n omitCountryCodeField,\n setHasFocus,\n handleChange,\n setDisplayValue,\n onCountryCodeChange,\n onNumberChange,\n filterCountries,\n } = useFieldProps(preparedProps)\n\n useEffect(() => {\n if (path || itemPath) {\n const number = inputRef.current?.value\n setDisplayValue(\n number?.length > 0\n ? joinValue([countryCodeRef.current, number])\n : undefined\n )\n }\n }, [inputRef, itemPath, path, setDisplayValue, value])\n\n const filter = useCallback(\n (country: CountryType) => {\n return countryFilter(country, filterCountries, ccFilter)\n },\n [ccFilter, filterCountries]\n )\n\n const updateCurrentDataSet = useCallback(() => {\n dataRef.current = getCountryData({\n lang,\n filter:\n // Make sure the whole cc list is displayed when cc filter is set to specific region\n ccFilter === 'Prioritized' && !wasFilled.current\n ? (country) =>\n `${formatCountryCode(country.cdc)}` ===\n countryCodeRef.current\n : filter,\n sort: ccFilter as Extract<CountryFilterSet, 'Prioritized'>,\n makeObject,\n })\n }, [lang, filter, ccFilter])\n\n const getEventValues = useCallback(\n ({\n countryCode = countryCodeRef.current || emptyValue,\n phoneNumber = numberRef.current || emptyValue,\n } = {}) => {\n return {\n ...(!omitCountryCodeField ? { countryCode } : {}),\n phoneNumber,\n }\n },\n [omitCountryCodeField, emptyValue]\n )\n\n const callOnChange = useCallback(\n ({ countryCode = undefined, phoneNumber = undefined }) => {\n const eventValues = getEventValues({ countryCode, phoneNumber })\n handleChange(\n joinValue([eventValues.countryCode, eventValues.phoneNumber]),\n eventValues\n )\n },\n [getEventValues, handleChange]\n )\n\n const callOnBlurOrFocus = useCallback(\n (hasFocus: boolean) => {\n setHasFocus(hasFocus, undefined, getEventValues())\n },\n [setHasFocus, getEventValues]\n )\n\n /**\n * We do not process the whole country list at the first render.\n * Only when the Autocomplete opens (focus).\n * To achieve this, we use memo instead of effect to update refs in sync.\n *\n * We set or update the data list depending on if the countrycode changes or lang changes.\n * We then update countryCode and phoneNumber when value changes.\n */\n useMemo(() => {\n const [countryCode, phoneNumber] = splitValue(props.value || value)\n numberRef.current = phoneNumber\n\n if (lang !== langRef.current || !wasFilled.current) {\n if (!countryCodeRef.current || countryCode) {\n countryCodeRef.current = countryCode || defaultCountryCode\n }\n langRef.current = lang\n\n updateCurrentDataSet()\n }\n }, [value, props.value, lang, updateCurrentDataSet])\n\n const prevCountryCodeRef = useRef(countryCodeRef.current)\n\n const handleCountryCodeChange = useCallback(\n ({ data }: { data: { selectedKey: string } }) => {\n const countryCode = (countryCodeRef.current =\n data?.selectedKey?.trim() || emptyValue)\n\n callOnChange({ countryCode })\n onCountryCodeChange?.(countryCode)\n },\n [emptyValue, callOnChange, onCountryCodeChange]\n )\n\n const handleNumberChange = useCallback(\n (value: string) => {\n const phoneNumber = (numberRef.current = value || emptyValue)\n\n callOnChange({ phoneNumber })\n onNumberChange?.(phoneNumber)\n },\n [emptyValue, callOnChange, onNumberChange]\n )\n\n const handleOnBlur = useCallback(() => {\n callOnBlurOrFocus(false)\n }, [callOnBlurOrFocus])\n\n const handleOnFocus = useCallback(() => {\n callOnBlurOrFocus(true)\n }, [callOnBlurOrFocus])\n\n const handleCountryCodeFocus = useCallback(\n ({ updateData }) => {\n if (!wasFilled.current) {\n wasFilled.current = true\n updateCurrentDataSet()\n updateData(dataRef.current)\n }\n handleOnFocus()\n },\n [handleOnFocus, updateCurrentDataSet]\n )\n\n const onTypeHandler = useCallback(\n ({ value, updateData, revalidateInputValue, event }) => {\n // Handle browser autofill/autocomplete\n if (typeof event?.nativeEvent?.data === 'undefined') {\n const cdcVal = /\\+\\d{1,3}\\s{1}\\d+/.test(value)\n ? splitValue(value)[0]\n : value\n const country = countries.find(({ cdc }) => cdc === cdcVal)\n if (country?.cdc) {\n const countryCode = (countryCodeRef.current = formatCountryCode(\n country.cdc\n ))\n\n updateCurrentDataSet()\n updateData(dataRef.current)\n callOnChange({ countryCode })\n\n // To ensure correct input value,\n // regardless if there is changed data before or not.\n window.requestAnimationFrame(() => {\n revalidateInputValue()\n })\n }\n }\n },\n [callOnChange, updateCurrentDataSet]\n )\n\n const isDefault = countryCodeRef.current?.includes(defaultCountryCode)\n\n const fieldBlockProps: FieldBlockProps = {\n id,\n className: classnames('dnb-forms-field-phone-number', className),\n width: omitCountryCodeField || props.width ? undefined : width,\n label: undefined,\n help: undefined,\n ...pickSpacingProps(props),\n }\n\n return (\n <FieldBlock {...fieldBlockProps}>\n <Flex.Horizontal align=\"flex-end\">\n {!omitCountryCodeField && (\n <Autocomplete\n className={classnames(\n 'dnb-forms-field-phone-number__country-code',\n countryCodeFieldClassName\n )}\n mode=\"async\"\n placeholder={countryCodePlaceholder}\n label_direction=\"vertical\"\n label={countryCodeLabel ?? defaultCountryCodeLabel}\n data={dataRef.current}\n value={countryCodeRef.current}\n status={hasError ? 'error' : undefined}\n disabled={disabled}\n on_focus={handleCountryCodeFocus}\n on_blur={handleOnBlur}\n on_change={handleCountryCodeChange}\n on_type={onTypeHandler}\n independent_width\n search_numbers\n keep_selection\n autoComplete=\"tel-country-code\"\n no_animation={props.noAnimation}\n stretch={width === 'stretch'}\n />\n )}\n\n <StringField\n className={classnames(\n 'dnb-forms-field-phone-number__number',\n numberFieldClassName\n )}\n type=\"tel\"\n autoComplete=\"tel-national\"\n emptyValue={emptyValue}\n layout=\"vertical\"\n label={label}\n placeholder={\n placeholder ?? (isDefault ? defaultPlaceholder : undefined)\n }\n mask={\n numberMask ?? (isDefault ? defaultMask : Array(12).fill(/\\d/))\n }\n onFocus={handleOnFocus}\n onBlur={handleOnBlur}\n onChange={handleNumberChange}\n value={numberRef.current}\n innerRef={inputRef}\n info={info}\n warning={warning}\n error={error}\n disabled={disabled}\n width={\n omitCountryCodeField ? 'medium' : props.width ?? 'stretch'\n }\n help={{ ...help, breakout: false, outset: false }}\n required={required}\n errorMessages={errorMessages}\n validateInitially={validateInitially}\n validateContinuously={\n continuousValidation || validateContinuously\n }\n validateUnchanged={validateUnchanged}\n inputMode=\"tel\"\n />\n </Flex.Horizontal>\n </FieldBlock>\n )\n}\n\nfunction makeObject(country: CountryType, lang: string) {\n return {\n selectedKey: formatCountryCode(country.cdc),\n selected_value: `${country.iso} (${formatCountryCode(country.cdc)})`,\n content: `${formatCountryCode(country.cdc)} ${\n country.i18n[lang] ?? country.i18n.en\n }`,\n }\n}\n\nfunction formatCountryCode(value: string) {\n return `+${value}`\n}\n\nfunction splitValue(value: string) {\n return (\n typeof value === 'string'\n ? value.match(/^(\\+[^ ]+)? ?(.*)$/)\n : [undefined, '', '']\n ).slice(1)\n}\n\nfunction joinValue(array: Array<string>) {\n return array.filter(Boolean).join(' ')\n}\n\nPhoneNumber._supportsSpacingProps = true\nexport default PhoneNumber\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PhoneNumber.js","names":["React","useMemo","useContext","useCallback","useEffect","useRef","Autocomplete","Flex","classnames","countries","StringField","FieldBlock","useFieldProps","pickSpacingProps","SharedContext","countryFilter","getCountryData","useTranslation","defaultCountryCode","defaultPlaceholder","defaultMask","PhoneNumber","props","_sharedContext$locale","_props$inputRef","_countryCodeRef$curre","_props$width","sharedContext","label","defaultLabel","countryCodeLabel","defaultCountryCodeLabel","errorRequired","lang","locale","split","countryCodeRef","emptyValue","numberRef","dataRef","langRef","wasFilled","errorMessages","_objectSpread","validateRequired","value","_ref","required","isChanged","error","countryCode","phoneNumber","splitValue","prevCountryCodeRef","current","undefined","fromExternal","external","omitCountryCodeField","toEvent","schema","_props$schema","type","pattern","defaultProps","ref","preparedProps","inputRef","id","path","itemPath","className","countryCodeFieldClassName","numberFieldClassName","countryCodePlaceholder","placeholder","numberMask","ccFilter","info","warning","size","hasError","disabled","width","help","validateInitially","continuousValidation","validateContinuously","validateUnchanged","setHasFocus","handleChange","setDisplayValue","onCountryCodeChange","onNumberChange","filterCountries","_inputRef$current","number","length","joinValue","filter","country","updateCurrentDataSet","formatCountryCode","cdc","sort","makeObject","getEventValues","arguments","callOnChange","_ref2","eventValues","callOnBlurOrFocus","hasFocus","handleCountryCodeChange","_ref3","_data$selectedKey","data","selectedKey","trim","handleNumberChange","handleOnBlur","handleOnFocus","handleCountryCodeFocus","_ref4","updateData","onTypeHandler","_ref5","_event$nativeEvent","revalidateInputValue","event","nativeEvent","cdcVal","test","find","_ref6","window","requestAnimationFrame","isDefault","includes","fieldBlockProps","createElement","Horizontal","align","mode","label_direction","status","on_focus","on_blur","on_change","on_type","independent_width","search_numbers","keep_selection","autoComplete","no_animation","noAnimation","stretch","layout","mask","Array","fill","onFocus","onBlur","onChange","innerRef","breakout","outset","inputMode","_country$i18n$lang","selected_value","iso","content","i18n","en","match","slice","array","Boolean","join","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/PhoneNumber/PhoneNumber.tsx"],"sourcesContent":["import React, {\n useMemo,\n useContext,\n useCallback,\n useEffect,\n useRef,\n} from 'react'\nimport { Autocomplete, Flex } from '../../../../components'\nimport { InputMaskedProps } from '../../../../components/InputMasked'\nimport classnames from 'classnames'\nimport countries, {\n type CountryLang,\n type CountryType,\n} from '../../constants/countries'\nimport StringField, { Props as StringFieldProps } from '../String'\nimport FieldBlock, { Props as FieldBlockProps } from '../../FieldBlock'\nimport { useFieldProps } from '../../hooks'\nimport {\n FieldPropsWithExtraValue,\n AllJSONSchemaVersions,\n} from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport SharedContext from '../../../../shared/Context'\nimport {\n countryFilter,\n CountryFilterSet,\n getCountryData,\n} from '../SelectCountry'\nimport useTranslation from '../../hooks/useTranslation'\nimport { DrawerListDataArrayItem } from '../../../../fragments/DrawerList'\n\nexport type Props = Omit<\n FieldPropsWithExtraValue<\n string,\n { country: string; phone: string },\n undefined | string\n >,\n 'layout' | 'layoutOptions'\n> & {\n countryCodeFieldClassName?: string\n numberFieldClassName?: string\n countryCodePlaceholder?: string\n countryCodeLabel?: string\n numberMask?: InputMaskedProps['mask']\n pattern?: StringFieldProps['pattern']\n width?: 'large' | 'stretch'\n inputRef?: React.RefObject<HTMLInputElement>\n omitCountryCodeField?: boolean\n onCountryCodeChange?: (value: string | undefined) => void\n onNumberChange?: (value: string | undefined) => void\n\n /**\n * Defines the countries to filter. Can be `Scandinavia`, `Nordic`, `Europe` or `Prioritized`.\n * Defaults to `Prioritized`.\n */\n countries?: CountryFilterSet\n\n /**\n * Use this prop to filter out certain countries. The function receives the country object and should return a boolean. Returning `false` will omit the country.\n */\n filterCountries?: (country: CountryType) => boolean\n\n /**\n * For internal testing purposes\n */\n noAnimation?: boolean\n} & Pick<StringFieldProps, 'size'>\n\n// Important for the default value to be defined here, and not after the useFieldProps call, to avoid the UI jumping\n// back to +47 once the user empty the field so handleChange send out undefined.\nconst defaultCountryCode = '+47'\nconst defaultPlaceholder = '00 00 00 00'\nconst defaultMask = [\n /\\d/,\n /\\d/,\n ' ',\n /\\d/,\n /\\d/,\n ' ',\n /\\d/,\n /\\d/,\n ' ',\n /\\d/,\n /\\d/,\n]\n\nfunction PhoneNumber(props: Props) {\n const sharedContext = useContext(SharedContext)\n const {\n label: defaultLabel,\n countryCodeLabel: defaultCountryCodeLabel,\n errorRequired,\n } = useTranslation().PhoneNumber\n const lang = sharedContext.locale?.split('-')[0] as CountryLang\n\n const countryCodeRef = useRef<Props['value']>(props?.emptyValue)\n const numberRef = useRef<Props['value']>(props?.emptyValue)\n const dataRef = useRef<Array<DrawerListDataArrayItem>>(null)\n const langRef = useRef<string>(lang)\n const wasFilled = useRef<boolean>(false)\n\n const errorMessages = useMemo(\n () => ({\n 'Field.errorRequired': errorRequired,\n 'Field.errorPattern': errorRequired,\n ...props.errorMessages,\n }),\n [errorRequired, props.errorMessages]\n )\n\n const validateRequired = useCallback(\n (value: string, { required, isChanged, error }) => {\n if (required) {\n const [countryCode, phoneNumber] = splitValue(value)\n\n if (countryCode !== prevCountryCodeRef.current) {\n if (countryCode) {\n prevCountryCodeRef.current = countryCode\n }\n return undefined\n }\n\n if (isChanged && !phoneNumber) {\n return error\n }\n }\n\n return undefined\n },\n []\n )\n\n const fromExternal = useCallback(\n (external: string) => {\n const [, phoneNumber] = splitValue(external)\n if (!phoneNumber && !props.omitCountryCodeField) {\n return countryCodeRef.current\n }\n return external\n },\n [props.omitCountryCodeField]\n )\n\n const toEvent = useCallback(\n (value: string) => {\n const [, phoneNumber] = splitValue(value)\n if (!phoneNumber) {\n return props.emptyValue\n }\n return value\n },\n [props.emptyValue]\n )\n\n const schema = useMemo<AllJSONSchemaVersions>(\n () =>\n props.schema ?? {\n type: 'string',\n pattern: props.pattern,\n },\n [props.schema, props.pattern]\n )\n const defaultProps: Partial<Props> = {\n schema,\n errorMessages,\n }\n const ref = useRef<HTMLInputElement>()\n const preparedProps: Props = {\n ...props,\n ...defaultProps,\n validateRequired,\n fromExternal,\n toEvent,\n inputRef: props.inputRef ?? ref,\n }\n\n const {\n id,\n path,\n itemPath,\n value,\n className,\n inputRef,\n countryCodeFieldClassName,\n numberFieldClassName,\n countryCodePlaceholder,\n placeholder,\n countryCodeLabel,\n label = defaultLabel,\n numberMask,\n countries: ccFilter = 'Prioritized',\n emptyValue,\n info,\n warning,\n size,\n error,\n hasError,\n disabled,\n width = 'large',\n help,\n required,\n validateInitially,\n continuousValidation,\n validateContinuously,\n validateUnchanged,\n omitCountryCodeField,\n setHasFocus,\n handleChange,\n setDisplayValue,\n onCountryCodeChange,\n onNumberChange,\n filterCountries,\n } = useFieldProps(preparedProps)\n\n useEffect(() => {\n if (path || itemPath) {\n const number = inputRef.current?.value\n setDisplayValue(\n number?.length > 0\n ? joinValue([countryCodeRef.current, number])\n : undefined\n )\n }\n }, [inputRef, itemPath, path, setDisplayValue, value])\n\n const filter = useCallback(\n (country: CountryType) => {\n return countryFilter(country, filterCountries, ccFilter)\n },\n [ccFilter, filterCountries]\n )\n\n const updateCurrentDataSet = useCallback(() => {\n dataRef.current = getCountryData({\n lang,\n filter:\n // Make sure the whole cc list is displayed when cc filter is set to specific region\n ccFilter === 'Prioritized' && !wasFilled.current\n ? (country) =>\n `${formatCountryCode(country.cdc)}` ===\n countryCodeRef.current\n : filter,\n sort: ccFilter as Extract<CountryFilterSet, 'Prioritized'>,\n makeObject,\n })\n }, [lang, filter, ccFilter])\n\n const getEventValues = useCallback(\n ({\n countryCode = countryCodeRef.current || emptyValue,\n phoneNumber = numberRef.current || emptyValue,\n } = {}) => {\n return {\n ...(!omitCountryCodeField ? { countryCode } : {}),\n phoneNumber,\n }\n },\n [omitCountryCodeField, emptyValue]\n )\n\n const callOnChange = useCallback(\n ({ countryCode = undefined, phoneNumber = undefined }) => {\n const eventValues = getEventValues({ countryCode, phoneNumber })\n handleChange(\n joinValue([eventValues.countryCode, eventValues.phoneNumber]),\n eventValues\n )\n },\n [getEventValues, handleChange]\n )\n\n const callOnBlurOrFocus = useCallback(\n (hasFocus: boolean) => {\n setHasFocus(hasFocus, undefined, getEventValues())\n },\n [setHasFocus, getEventValues]\n )\n\n /**\n * We do not process the whole country list at the first render.\n * Only when the Autocomplete opens (focus).\n * To achieve this, we use memo instead of effect to update refs in sync.\n *\n * We set or update the data list depending on if the countrycode changes or lang changes.\n * We then update countryCode and phoneNumber when value changes.\n */\n useMemo(() => {\n const [countryCode, phoneNumber] = splitValue(props.value || value)\n numberRef.current = phoneNumber\n\n if (lang !== langRef.current || !wasFilled.current) {\n if (!countryCodeRef.current || countryCode) {\n countryCodeRef.current = countryCode || defaultCountryCode\n }\n langRef.current = lang\n\n updateCurrentDataSet()\n }\n }, [value, props.value, lang, updateCurrentDataSet])\n\n const prevCountryCodeRef = useRef(countryCodeRef.current)\n\n const handleCountryCodeChange = useCallback(\n ({ data }: { data: { selectedKey: string } }) => {\n const countryCode = (countryCodeRef.current =\n data?.selectedKey?.trim() || emptyValue)\n\n callOnChange({ countryCode })\n onCountryCodeChange?.(countryCode)\n },\n [emptyValue, callOnChange, onCountryCodeChange]\n )\n\n const handleNumberChange = useCallback(\n (value: string) => {\n const phoneNumber = (numberRef.current = value || emptyValue)\n\n callOnChange({ phoneNumber })\n onNumberChange?.(phoneNumber)\n },\n [emptyValue, callOnChange, onNumberChange]\n )\n\n const handleOnBlur = useCallback(() => {\n callOnBlurOrFocus(false)\n }, [callOnBlurOrFocus])\n\n const handleOnFocus = useCallback(() => {\n callOnBlurOrFocus(true)\n }, [callOnBlurOrFocus])\n\n const handleCountryCodeFocus = useCallback(\n ({ updateData }) => {\n if (!wasFilled.current) {\n wasFilled.current = true\n updateCurrentDataSet()\n updateData(dataRef.current)\n }\n handleOnFocus()\n },\n [handleOnFocus, updateCurrentDataSet]\n )\n\n const onTypeHandler = useCallback(\n ({ value, updateData, revalidateInputValue, event }) => {\n // Handle browser autofill/autocomplete\n if (typeof event?.nativeEvent?.data === 'undefined') {\n const cdcVal = /\\+\\d{1,3}\\s{1}\\d+/.test(value)\n ? splitValue(value)[0]\n : value\n const country = countries.find(({ cdc }) => cdc === cdcVal)\n if (country?.cdc) {\n const countryCode = (countryCodeRef.current = formatCountryCode(\n country.cdc\n ))\n\n updateCurrentDataSet()\n updateData(dataRef.current)\n callOnChange({ countryCode })\n\n // To ensure correct input value,\n // regardless if there is changed data before or not.\n window.requestAnimationFrame(() => {\n revalidateInputValue()\n })\n }\n }\n },\n [callOnChange, updateCurrentDataSet]\n )\n\n const isDefault = countryCodeRef.current?.includes(defaultCountryCode)\n\n const fieldBlockProps: FieldBlockProps = {\n id,\n className: classnames('dnb-forms-field-phone-number', className),\n width: omitCountryCodeField || props.width ? undefined : width,\n label: undefined,\n help: undefined,\n ...pickSpacingProps(props),\n }\n\n return (\n <FieldBlock {...fieldBlockProps}>\n <Flex.Horizontal align=\"flex-end\">\n {!omitCountryCodeField && (\n <Autocomplete\n className={classnames(\n 'dnb-forms-field-phone-number__country-code',\n countryCodeFieldClassName\n )}\n mode=\"async\"\n placeholder={countryCodePlaceholder}\n label_direction=\"vertical\"\n label={countryCodeLabel ?? defaultCountryCodeLabel}\n data={dataRef.current}\n value={countryCodeRef.current}\n status={hasError ? 'error' : undefined}\n disabled={disabled}\n on_focus={handleCountryCodeFocus}\n on_blur={handleOnBlur}\n on_change={handleCountryCodeChange}\n on_type={onTypeHandler}\n independent_width\n search_numbers\n keep_selection\n autoComplete=\"tel-country-code\"\n no_animation={props.noAnimation}\n stretch={width === 'stretch'}\n size={size}\n />\n )}\n\n <StringField\n className={classnames(\n 'dnb-forms-field-phone-number__number',\n numberFieldClassName\n )}\n type=\"tel\"\n autoComplete=\"tel-national\"\n emptyValue={emptyValue}\n layout=\"vertical\"\n label={label}\n placeholder={\n placeholder ?? (isDefault ? defaultPlaceholder : undefined)\n }\n mask={\n numberMask ?? (isDefault ? defaultMask : Array(12).fill(/\\d/))\n }\n onFocus={handleOnFocus}\n onBlur={handleOnBlur}\n onChange={handleNumberChange}\n value={numberRef.current}\n innerRef={inputRef}\n info={info}\n warning={warning}\n error={error}\n disabled={disabled}\n width={\n omitCountryCodeField ? 'medium' : props.width ?? 'stretch'\n }\n help={{ ...help, breakout: false, outset: false }}\n required={required}\n errorMessages={errorMessages}\n validateInitially={validateInitially}\n validateContinuously={\n continuousValidation || validateContinuously\n }\n validateUnchanged={validateUnchanged}\n inputMode=\"tel\"\n size={size}\n />\n </Flex.Horizontal>\n </FieldBlock>\n )\n}\n\nfunction makeObject(country: CountryType, lang: string) {\n return {\n selectedKey: formatCountryCode(country.cdc),\n selected_value: `${country.iso} (${formatCountryCode(country.cdc)})`,\n content: `${formatCountryCode(country.cdc)} ${\n country.i18n[lang] ?? country.i18n.en\n }`,\n }\n}\n\nfunction formatCountryCode(value: string) {\n return `+${value}`\n}\n\nfunction splitValue(value: string) {\n return (\n typeof value === 'string'\n ? value.match(/^(\\+[^ ]+)? ?(.*)$/)\n : [undefined, '', '']\n ).slice(1)\n}\n\nfunction joinValue(array: Array<string>) {\n return array.filter(Boolean).join(' ')\n}\n\nPhoneNumber._supportsSpacingProps = true\nexport default PhoneNumber\n"],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { getFieldEventsWithTypes } from '../FieldDocs';
|
|
2
|
+
import { stringProperties } from '../String/StringDocs';
|
|
2
3
|
export const PhoneNumberProperties = {
|
|
3
4
|
countries: {
|
|
4
5
|
doc: 'List only a certain set of countries: `Scandinavia`, `Nordic`, `Europe` or `Prioritized`(all countries [sorted by priority](/uilib/extensions/forms/feature-fields/SelectCountry/#filter-or-prioritize-country-listing)). Defaults to `Prioritized`.',
|
|
@@ -50,6 +51,7 @@ export const PhoneNumberProperties = {
|
|
|
50
51
|
type: 'string | false',
|
|
51
52
|
status: 'optional'
|
|
52
53
|
},
|
|
54
|
+
size: stringProperties.size,
|
|
53
55
|
'[Space](/uilib/layout/space/properties)': {
|
|
54
56
|
doc: 'Spacing properties like `top` or `bottom` are supported.',
|
|
55
57
|
type: ['string', 'object'],
|