@dnb/eufemia 10.51.2 → 10.52.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +59 -0
- package/cjs/components/autocomplete/Autocomplete.js +4 -0
- package/cjs/components/autocomplete/Autocomplete.js.map +1 -1
- package/cjs/components/avatar/style/themes/dnb-avatar-theme-sbanken.css +2 -2
- package/cjs/components/avatar/style/themes/dnb-avatar-theme-sbanken.min.css +1 -1
- package/cjs/components/avatar/style/themes/dnb-avatar-theme-sbanken.scss +2 -2
- package/cjs/components/dialog/style/themes/dnb-dialog-theme-sbanken.css +6 -0
- package/cjs/components/dialog/style/themes/dnb-dialog-theme-sbanken.min.css +1 -1
- package/cjs/components/dialog/style/themes/dnb-dialog-theme-sbanken.scss +7 -0
- package/cjs/components/form-status/FormStatus.d.ts +5 -0
- package/cjs/components/icon/Icon.d.ts +2 -1
- package/cjs/components/icon/Icon.js.map +1 -1
- package/cjs/components/logo/Logo.js.map +1 -1
- package/cjs/components/number-format/NumberUtils.d.ts +14 -0
- package/cjs/components/number-format/NumberUtils.js +7 -8
- package/cjs/components/number-format/NumberUtils.js.map +1 -1
- package/cjs/components/skeleton/style/dnb-skeleton.css +3 -1
- package/cjs/components/skeleton/style/dnb-skeleton.min.css +1 -1
- package/cjs/components/skeleton/style/dnb-skeleton.scss +4 -2
- package/cjs/elements/typography/style/themes/dnb-typography-theme-sbanken.scss +21 -2
- package/cjs/extensions/forms/DataContext/Context.d.ts +5 -0
- package/cjs/extensions/forms/DataContext/Context.js.map +1 -1
- package/cjs/extensions/forms/DataContext/Provider/Provider.d.ts +12 -1
- package/cjs/extensions/forms/DataContext/Provider/Provider.js +86 -77
- package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
- package/cjs/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.d.ts +6 -1
- package/cjs/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js +112 -23
- package/cjs/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js.map +1 -1
- package/cjs/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumberDocs.js +5 -0
- package/cjs/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumberDocs.js.map +1 -1
- package/cjs/extensions/forms/Field/OrganizationNumber/OrganizationNumber.d.ts +3 -1
- package/cjs/extensions/forms/Field/OrganizationNumber/OrganizationNumber.js +28 -16
- package/cjs/extensions/forms/Field/OrganizationNumber/OrganizationNumber.js.map +1 -1
- package/cjs/extensions/forms/Field/OrganizationNumber/OrganizationNumberDocs.d.ts +2 -0
- package/cjs/extensions/forms/Field/OrganizationNumber/OrganizationNumberDocs.js +25 -0
- package/cjs/extensions/forms/Field/OrganizationNumber/OrganizationNumberDocs.js.map +1 -0
- package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.js +4 -3
- package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
- package/cjs/extensions/forms/Form/Isolation/Isolation.d.ts +4 -0
- package/cjs/extensions/forms/Form/Isolation/Isolation.js +26 -0
- package/cjs/extensions/forms/Form/Isolation/Isolation.js.map +1 -1
- package/cjs/extensions/forms/Form/Isolation/IsolationDocs.js +5 -0
- package/cjs/extensions/forms/Form/Isolation/IsolationDocs.js.map +1 -1
- package/cjs/extensions/forms/Form/Snapshot/Snapshot.d.ts +12 -0
- package/cjs/extensions/forms/Form/Snapshot/Snapshot.js +45 -0
- package/cjs/extensions/forms/Form/Snapshot/Snapshot.js.map +1 -0
- package/cjs/extensions/forms/Form/Snapshot/SnapshotContext.d.ts +12 -0
- package/cjs/extensions/forms/Form/Snapshot/SnapshotContext.js +12 -0
- package/cjs/extensions/forms/Form/Snapshot/SnapshotContext.js.map +1 -0
- package/cjs/extensions/forms/Form/Snapshot/SnapshotDocs.d.ts +3 -0
- package/cjs/extensions/forms/Form/Snapshot/SnapshotDocs.js +17 -0
- package/cjs/extensions/forms/Form/Snapshot/SnapshotDocs.js.map +1 -0
- package/cjs/extensions/forms/Form/Snapshot/index.d.ts +2 -0
- package/cjs/extensions/forms/Form/Snapshot/index.js +27 -0
- package/cjs/extensions/forms/Form/Snapshot/index.js.map +1 -0
- package/cjs/extensions/forms/Form/SubmitConfirmation/SubmitConfirmation.js +2 -2
- package/cjs/extensions/forms/Form/SubmitConfirmation/SubmitConfirmation.js.map +1 -1
- package/cjs/extensions/forms/Form/Visibility/Visibility.d.ts +10 -2
- package/cjs/extensions/forms/Form/Visibility/Visibility.js.map +1 -1
- package/cjs/extensions/forms/Form/Visibility/VisibilityDocs.js +10 -10
- package/cjs/extensions/forms/Form/Visibility/VisibilityDocs.js.map +1 -1
- package/cjs/extensions/forms/Form/Visibility/useVisibility.js +26 -14
- package/cjs/extensions/forms/Form/Visibility/useVisibility.js.map +1 -1
- package/cjs/extensions/forms/Form/data-context/clearData.js +2 -5
- package/cjs/extensions/forms/Form/data-context/clearData.js.map +1 -1
- package/cjs/extensions/forms/Form/data-context/getData.js.map +1 -1
- package/cjs/extensions/forms/Form/data-context/useData.js +3 -2
- package/cjs/extensions/forms/Form/data-context/useData.js.map +1 -1
- package/cjs/extensions/forms/Form/data-context/useValidation.js.map +1 -1
- package/cjs/extensions/forms/Form/index.d.ts +2 -0
- package/cjs/extensions/forms/Form/index.js +14 -0
- package/cjs/extensions/forms/Form/index.js.map +1 -1
- package/cjs/extensions/forms/Iterate/Array/Array.js +3 -1
- package/cjs/extensions/forms/Iterate/Array/Array.js.map +1 -1
- package/cjs/extensions/forms/Iterate/Array/ArrayItemArea.js +30 -17
- package/cjs/extensions/forms/Iterate/Array/ArrayItemArea.js.map +1 -1
- package/cjs/extensions/forms/Iterate/EditContainer/EditContainer.js +5 -6
- package/cjs/extensions/forms/Iterate/EditContainer/EditContainer.js.map +1 -1
- package/cjs/extensions/forms/Iterate/ItemNo/ItemNo.d.ts +9 -0
- package/cjs/extensions/forms/Iterate/ItemNo/ItemNo.js +33 -0
- package/cjs/extensions/forms/Iterate/ItemNo/ItemNo.js.map +1 -0
- package/cjs/extensions/forms/Iterate/ItemNo/index.d.ts +2 -0
- package/cjs/extensions/forms/Iterate/ItemNo/index.js +27 -0
- package/cjs/extensions/forms/Iterate/ItemNo/index.js.map +1 -0
- package/cjs/extensions/forms/Iterate/IterateItemContext.d.ts +1 -0
- package/cjs/extensions/forms/Iterate/IterateItemContext.js.map +1 -1
- package/cjs/extensions/forms/Iterate/PushContainer/PushContainer.d.ts +18 -2
- package/cjs/extensions/forms/Iterate/PushContainer/PushContainer.js +44 -18
- package/cjs/extensions/forms/Iterate/PushContainer/PushContainer.js.map +1 -1
- package/cjs/extensions/forms/Iterate/PushContainer/PushContainerDocs.js +24 -1
- package/cjs/extensions/forms/Iterate/PushContainer/PushContainerDocs.js.map +1 -1
- package/cjs/extensions/forms/Iterate/ViewContainer/ViewContainer.js +5 -6
- package/cjs/extensions/forms/Iterate/ViewContainer/ViewContainer.js.map +1 -1
- package/cjs/extensions/forms/Iterate/index.d.ts +1 -0
- package/cjs/extensions/forms/Iterate/index.js +7 -0
- package/cjs/extensions/forms/Iterate/index.js.map +1 -1
- package/cjs/extensions/forms/Tools/Log.d.ts +7 -2
- package/cjs/extensions/forms/Tools/Log.js +36 -4
- package/cjs/extensions/forms/Tools/Log.js.map +1 -1
- package/cjs/extensions/forms/Value/Provider/useValueProvider.d.ts +1 -0
- package/cjs/extensions/forms/Value/SummaryList/SummaryList.d.ts +4 -2
- package/cjs/extensions/forms/Value/SummaryList/SummaryList.js +3 -1
- package/cjs/extensions/forms/Value/SummaryList/SummaryList.js.map +1 -1
- package/cjs/extensions/forms/Value/SummaryList/SummaryListDocs.js +5 -0
- package/cjs/extensions/forms/Value/SummaryList/SummaryListDocs.js.map +1 -1
- package/cjs/extensions/forms/Value/ValueDocs.js +5 -0
- package/cjs/extensions/forms/Value/ValueDocs.js.map +1 -1
- package/cjs/extensions/forms/Wizard/Buttons/Buttons.js +2 -2
- package/cjs/extensions/forms/Wizard/Buttons/Buttons.js.map +1 -1
- package/cjs/extensions/forms/Wizard/Container/WizardContainer.js +78 -31
- package/cjs/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
- package/cjs/extensions/forms/Wizard/Container/WizardContainerDocs.js +1 -1
- package/cjs/extensions/forms/Wizard/Container/WizardContainerDocs.js.map +1 -1
- package/cjs/extensions/forms/Wizard/Container/useHandleLayoutEffect.d.ts +1 -2
- package/cjs/extensions/forms/Wizard/Container/useHandleLayoutEffect.js +0 -7
- package/cjs/extensions/forms/Wizard/Container/useHandleLayoutEffect.js.map +1 -1
- package/cjs/extensions/forms/Wizard/Container/useStepAnimation.d.ts +2 -1
- package/cjs/extensions/forms/Wizard/Container/useStepAnimation.js +11 -6
- package/cjs/extensions/forms/Wizard/Container/useStepAnimation.js.map +1 -1
- package/cjs/extensions/forms/Wizard/Context/WizardContext.d.ts +14 -3
- package/cjs/extensions/forms/Wizard/Context/WizardContext.js.map +1 -1
- package/cjs/extensions/forms/Wizard/Step/Step.js +4 -4
- package/cjs/extensions/forms/Wizard/Step/Step.js.map +1 -1
- package/cjs/extensions/forms/Wizard/hooks/useStep.js +4 -4
- package/cjs/extensions/forms/Wizard/hooks/useStep.js.map +1 -1
- package/cjs/extensions/forms/blocks/ChildrenWithAge/ChildrenWithAge.js +77 -58
- package/cjs/extensions/forms/blocks/ChildrenWithAge/ChildrenWithAge.js.map +1 -1
- package/cjs/extensions/forms/blocks/ChildrenWithAge/ChildrenWithAgeTranslations.d.ts +12 -12
- package/cjs/extensions/forms/blocks/ChildrenWithAge/ChildrenWithAgeTranslations.js +24 -24
- package/cjs/extensions/forms/blocks/ChildrenWithAge/ChildrenWithAgeTranslations.js.map +1 -1
- package/cjs/extensions/forms/constants/locales/en-GB.d.ts +6 -1
- package/cjs/extensions/forms/constants/locales/en-GB.js +9 -4
- package/cjs/extensions/forms/constants/locales/en-GB.js.map +1 -1
- package/cjs/extensions/forms/constants/locales/en-US.d.ts +6 -1
- package/cjs/extensions/forms/constants/locales/en-US.js +2 -1
- package/cjs/extensions/forms/constants/locales/en-US.js.map +1 -1
- package/cjs/extensions/forms/constants/locales/index.d.ts +12 -2
- package/cjs/extensions/forms/constants/locales/nb-NO.d.ts +6 -1
- package/cjs/extensions/forms/constants/locales/nb-NO.js +9 -4
- package/cjs/extensions/forms/constants/locales/nb-NO.js.map +1 -1
- package/cjs/extensions/forms/hooks/useDataContext.d.ts +6 -0
- package/cjs/extensions/forms/hooks/useDataContext.js +31 -0
- package/cjs/extensions/forms/hooks/useDataContext.js.map +1 -0
- package/cjs/extensions/forms/hooks/useExternalValue.js +12 -6
- package/cjs/extensions/forms/hooks/useExternalValue.js.map +1 -1
- package/cjs/extensions/forms/hooks/useFieldProps.js +82 -43
- package/cjs/extensions/forms/hooks/useFieldProps.js.map +1 -1
- package/cjs/extensions/forms/hooks/useSnapshot.d.ts +9 -0
- package/cjs/extensions/forms/hooks/useSnapshot.js +87 -0
- package/cjs/extensions/forms/hooks/useSnapshot.js.map +1 -0
- package/cjs/extensions/forms/hooks/useValueProps.js +6 -1
- package/cjs/extensions/forms/hooks/useValueProps.js.map +1 -1
- package/cjs/extensions/forms/types.d.ts +4 -0
- package/cjs/extensions/forms/types.js.map +1 -1
- package/cjs/extensions/payment-card/style/dnb-payment-card.css +3 -2
- package/cjs/extensions/payment-card/style/dnb-payment-card.min.css +1 -1
- package/cjs/shared/Eufemia.d.ts +1 -1
- package/cjs/shared/Eufemia.js +2 -2
- package/cjs/shared/Eufemia.js.map +1 -1
- package/cjs/shared/component-helper.js +1 -1
- package/cjs/shared/component-helper.js.map +1 -1
- package/cjs/style/core/scopes.scss +1 -1
- package/cjs/style/dnb-ui-basis.css +1 -1
- package/cjs/style/dnb-ui-basis.min.css +1 -1
- package/cjs/style/dnb-ui-body.css +1 -1
- package/cjs/style/dnb-ui-body.min.css +1 -1
- package/cjs/style/dnb-ui-components.css +3 -1
- package/cjs/style/dnb-ui-components.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/dnb-ui-extensions.css +3 -2
- package/cjs/style/dnb-ui-extensions.min.css +1 -1
- package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +3 -1
- package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +1 -1
- package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.css +3 -2
- package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
- package/cjs/style/themes/theme-eiendom/properties.d.ts +1 -0
- package/cjs/style/themes/theme-eiendom/properties.js +3 -2
- package/cjs/style/themes/theme-eiendom/properties.js.map +1 -1
- package/cjs/style/themes/theme-sbanken/properties.d.ts +1 -0
- package/cjs/style/themes/theme-sbanken/properties.js +3 -2
- package/cjs/style/themes/theme-sbanken/properties.js.map +1 -1
- package/cjs/style/themes/theme-sbanken/properties.scss +9 -8
- package/cjs/style/themes/theme-sbanken/sbanken-theme-basis.css +20 -4
- package/cjs/style/themes/theme-sbanken/sbanken-theme-basis.min.css +3 -1
- package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +11 -3
- package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
- package/cjs/style/themes/theme-sbanken/sbanken-theme-elements.css +17 -2
- package/cjs/style/themes/theme-sbanken/sbanken-theme-elements.min.css +3 -1
- package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.css +3 -2
- package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
- package/cjs/style/themes/theme-ui/properties.d.ts +1 -0
- package/cjs/style/themes/theme-ui/properties.js +3 -2
- package/cjs/style/themes/theme-ui/properties.js.map +1 -1
- package/cjs/style/themes/theme-ui/ui-theme-components.css +3 -1
- package/cjs/style/themes/theme-ui/ui-theme-components.min.css +1 -1
- package/cjs/style/themes/theme-ui/ui-theme-extensions.css +3 -2
- package/cjs/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
- package/components/autocomplete/Autocomplete.js +4 -0
- package/components/autocomplete/Autocomplete.js.map +1 -1
- package/components/avatar/style/themes/dnb-avatar-theme-sbanken.css +2 -2
- package/components/avatar/style/themes/dnb-avatar-theme-sbanken.min.css +1 -1
- package/components/avatar/style/themes/dnb-avatar-theme-sbanken.scss +2 -2
- package/components/dialog/style/themes/dnb-dialog-theme-sbanken.css +6 -0
- package/components/dialog/style/themes/dnb-dialog-theme-sbanken.min.css +1 -1
- package/components/dialog/style/themes/dnb-dialog-theme-sbanken.scss +7 -0
- package/components/form-status/FormStatus.d.ts +5 -0
- package/components/icon/Icon.d.ts +2 -1
- package/components/icon/Icon.js.map +1 -1
- package/components/logo/Logo.js.map +1 -1
- package/components/number-format/NumberUtils.d.ts +14 -0
- package/components/number-format/NumberUtils.js +7 -8
- package/components/number-format/NumberUtils.js.map +1 -1
- package/components/skeleton/style/dnb-skeleton.css +3 -1
- package/components/skeleton/style/dnb-skeleton.min.css +1 -1
- package/components/skeleton/style/dnb-skeleton.scss +4 -2
- package/elements/typography/style/themes/dnb-typography-theme-sbanken.scss +21 -2
- package/es/components/autocomplete/Autocomplete.js +4 -0
- package/es/components/autocomplete/Autocomplete.js.map +1 -1
- package/es/components/avatar/style/themes/dnb-avatar-theme-sbanken.css +2 -2
- package/es/components/avatar/style/themes/dnb-avatar-theme-sbanken.min.css +1 -1
- package/es/components/avatar/style/themes/dnb-avatar-theme-sbanken.scss +2 -2
- package/es/components/dialog/style/themes/dnb-dialog-theme-sbanken.css +6 -0
- package/es/components/dialog/style/themes/dnb-dialog-theme-sbanken.min.css +1 -1
- package/es/components/dialog/style/themes/dnb-dialog-theme-sbanken.scss +7 -0
- package/es/components/form-status/FormStatus.d.ts +5 -0
- package/es/components/icon/Icon.d.ts +2 -1
- package/es/components/icon/Icon.js.map +1 -1
- package/es/components/logo/Logo.js.map +1 -1
- package/es/components/number-format/NumberUtils.d.ts +14 -0
- package/es/components/number-format/NumberUtils.js +7 -8
- package/es/components/number-format/NumberUtils.js.map +1 -1
- package/es/components/skeleton/style/dnb-skeleton.css +3 -1
- package/es/components/skeleton/style/dnb-skeleton.min.css +1 -1
- package/es/components/skeleton/style/dnb-skeleton.scss +4 -2
- package/es/elements/typography/style/themes/dnb-typography-theme-sbanken.scss +21 -2
- package/es/extensions/forms/DataContext/Context.d.ts +5 -0
- package/es/extensions/forms/DataContext/Context.js.map +1 -1
- package/es/extensions/forms/DataContext/Provider/Provider.d.ts +12 -1
- package/es/extensions/forms/DataContext/Provider/Provider.js +84 -75
- package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
- package/es/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.d.ts +6 -1
- package/es/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js +109 -23
- package/es/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js.map +1 -1
- package/es/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumberDocs.js +5 -0
- package/es/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumberDocs.js.map +1 -1
- package/es/extensions/forms/Field/OrganizationNumber/OrganizationNumber.d.ts +3 -1
- package/es/extensions/forms/Field/OrganizationNumber/OrganizationNumber.js +28 -16
- package/es/extensions/forms/Field/OrganizationNumber/OrganizationNumber.js.map +1 -1
- package/es/extensions/forms/Field/OrganizationNumber/OrganizationNumberDocs.d.ts +2 -0
- package/es/extensions/forms/Field/OrganizationNumber/OrganizationNumberDocs.js +18 -0
- package/es/extensions/forms/Field/OrganizationNumber/OrganizationNumberDocs.js.map +1 -0
- package/es/extensions/forms/Field/SelectCountry/SelectCountry.js +4 -3
- package/es/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
- package/es/extensions/forms/Form/Isolation/Isolation.d.ts +4 -0
- package/es/extensions/forms/Form/Isolation/Isolation.js +28 -3
- package/es/extensions/forms/Form/Isolation/Isolation.js.map +1 -1
- package/es/extensions/forms/Form/Isolation/IsolationDocs.js +5 -0
- package/es/extensions/forms/Form/Isolation/IsolationDocs.js.map +1 -1
- package/es/extensions/forms/Form/Snapshot/Snapshot.d.ts +12 -0
- package/es/extensions/forms/Form/Snapshot/Snapshot.js +36 -0
- package/es/extensions/forms/Form/Snapshot/Snapshot.js.map +1 -0
- package/es/extensions/forms/Form/Snapshot/SnapshotContext.d.ts +12 -0
- package/es/extensions/forms/Form/Snapshot/SnapshotContext.js +6 -0
- package/es/extensions/forms/Form/Snapshot/SnapshotContext.js.map +1 -0
- package/es/extensions/forms/Form/Snapshot/SnapshotDocs.d.ts +3 -0
- package/es/extensions/forms/Form/Snapshot/SnapshotDocs.js +9 -0
- package/es/extensions/forms/Form/Snapshot/SnapshotDocs.js.map +1 -0
- package/es/extensions/forms/Form/Snapshot/index.d.ts +2 -0
- package/es/extensions/forms/Form/Snapshot/index.js +3 -0
- package/es/extensions/forms/Form/Snapshot/index.js.map +1 -0
- package/es/extensions/forms/Form/SubmitConfirmation/SubmitConfirmation.js +2 -2
- package/es/extensions/forms/Form/SubmitConfirmation/SubmitConfirmation.js.map +1 -1
- package/es/extensions/forms/Form/Visibility/Visibility.d.ts +10 -2
- package/es/extensions/forms/Form/Visibility/Visibility.js.map +1 -1
- package/es/extensions/forms/Form/Visibility/VisibilityDocs.js +10 -10
- package/es/extensions/forms/Form/Visibility/VisibilityDocs.js.map +1 -1
- package/es/extensions/forms/Form/Visibility/useVisibility.js +26 -14
- package/es/extensions/forms/Form/Visibility/useVisibility.js.map +1 -1
- package/es/extensions/forms/Form/data-context/clearData.js +2 -5
- package/es/extensions/forms/Form/data-context/clearData.js.map +1 -1
- package/es/extensions/forms/Form/data-context/getData.js.map +1 -1
- package/es/extensions/forms/Form/data-context/useData.js +1 -0
- package/es/extensions/forms/Form/data-context/useData.js.map +1 -1
- package/es/extensions/forms/Form/data-context/useValidation.js.map +1 -1
- package/es/extensions/forms/Form/index.d.ts +2 -0
- package/es/extensions/forms/Form/index.js +2 -0
- package/es/extensions/forms/Form/index.js.map +1 -1
- package/es/extensions/forms/Iterate/Array/Array.js +3 -1
- package/es/extensions/forms/Iterate/Array/Array.js.map +1 -1
- package/es/extensions/forms/Iterate/Array/ArrayItemArea.js +31 -18
- package/es/extensions/forms/Iterate/Array/ArrayItemArea.js.map +1 -1
- package/es/extensions/forms/Iterate/EditContainer/EditContainer.js +5 -6
- package/es/extensions/forms/Iterate/EditContainer/EditContainer.js.map +1 -1
- package/es/extensions/forms/Iterate/ItemNo/ItemNo.d.ts +9 -0
- package/es/extensions/forms/Iterate/ItemNo/ItemNo.js +22 -0
- package/es/extensions/forms/Iterate/ItemNo/ItemNo.js.map +1 -0
- package/es/extensions/forms/Iterate/ItemNo/index.d.ts +2 -0
- package/es/extensions/forms/Iterate/ItemNo/index.js +3 -0
- package/es/extensions/forms/Iterate/ItemNo/index.js.map +1 -0
- package/es/extensions/forms/Iterate/IterateItemContext.d.ts +1 -0
- package/es/extensions/forms/Iterate/IterateItemContext.js.map +1 -1
- package/es/extensions/forms/Iterate/PushContainer/PushContainer.d.ts +18 -2
- package/es/extensions/forms/Iterate/PushContainer/PushContainer.js +43 -16
- package/es/extensions/forms/Iterate/PushContainer/PushContainer.js.map +1 -1
- package/es/extensions/forms/Iterate/PushContainer/PushContainerDocs.js +24 -1
- package/es/extensions/forms/Iterate/PushContainer/PushContainerDocs.js.map +1 -1
- package/es/extensions/forms/Iterate/ViewContainer/ViewContainer.js +5 -6
- package/es/extensions/forms/Iterate/ViewContainer/ViewContainer.js.map +1 -1
- package/es/extensions/forms/Iterate/index.d.ts +1 -0
- package/es/extensions/forms/Iterate/index.js +1 -0
- package/es/extensions/forms/Iterate/index.js.map +1 -1
- package/es/extensions/forms/Tools/Log.d.ts +7 -2
- package/es/extensions/forms/Tools/Log.js +26 -3
- package/es/extensions/forms/Tools/Log.js.map +1 -1
- package/es/extensions/forms/Value/Provider/useValueProvider.d.ts +1 -0
- package/es/extensions/forms/Value/SummaryList/SummaryList.d.ts +4 -2
- package/es/extensions/forms/Value/SummaryList/SummaryList.js +3 -1
- package/es/extensions/forms/Value/SummaryList/SummaryList.js.map +1 -1
- package/es/extensions/forms/Value/SummaryList/SummaryListDocs.js +5 -0
- package/es/extensions/forms/Value/SummaryList/SummaryListDocs.js.map +1 -1
- package/es/extensions/forms/Value/ValueDocs.js +5 -0
- package/es/extensions/forms/Value/ValueDocs.js.map +1 -1
- package/es/extensions/forms/Wizard/Buttons/Buttons.js +2 -2
- package/es/extensions/forms/Wizard/Buttons/Buttons.js.map +1 -1
- package/es/extensions/forms/Wizard/Container/WizardContainer.js +67 -23
- package/es/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
- package/es/extensions/forms/Wizard/Container/WizardContainerDocs.js +1 -1
- package/es/extensions/forms/Wizard/Container/WizardContainerDocs.js.map +1 -1
- package/es/extensions/forms/Wizard/Container/useHandleLayoutEffect.d.ts +1 -2
- package/es/extensions/forms/Wizard/Container/useHandleLayoutEffect.js +0 -6
- package/es/extensions/forms/Wizard/Container/useHandleLayoutEffect.js.map +1 -1
- package/es/extensions/forms/Wizard/Container/useStepAnimation.d.ts +2 -1
- package/es/extensions/forms/Wizard/Container/useStepAnimation.js +12 -7
- package/es/extensions/forms/Wizard/Container/useStepAnimation.js.map +1 -1
- package/es/extensions/forms/Wizard/Context/WizardContext.d.ts +14 -3
- package/es/extensions/forms/Wizard/Context/WizardContext.js.map +1 -1
- package/es/extensions/forms/Wizard/Step/Step.js +4 -4
- package/es/extensions/forms/Wizard/Step/Step.js.map +1 -1
- package/es/extensions/forms/Wizard/hooks/useStep.js +4 -4
- package/es/extensions/forms/Wizard/hooks/useStep.js.map +1 -1
- package/es/extensions/forms/blocks/ChildrenWithAge/ChildrenWithAge.js +77 -58
- package/es/extensions/forms/blocks/ChildrenWithAge/ChildrenWithAge.js.map +1 -1
- package/es/extensions/forms/blocks/ChildrenWithAge/ChildrenWithAgeTranslations.d.ts +12 -12
- package/es/extensions/forms/blocks/ChildrenWithAge/ChildrenWithAgeTranslations.js +24 -24
- package/es/extensions/forms/blocks/ChildrenWithAge/ChildrenWithAgeTranslations.js.map +1 -1
- package/es/extensions/forms/constants/locales/en-GB.d.ts +6 -1
- package/es/extensions/forms/constants/locales/en-GB.js +9 -4
- package/es/extensions/forms/constants/locales/en-GB.js.map +1 -1
- package/es/extensions/forms/constants/locales/en-US.d.ts +6 -1
- package/es/extensions/forms/constants/locales/en-US.js +2 -1
- package/es/extensions/forms/constants/locales/en-US.js.map +1 -1
- package/es/extensions/forms/constants/locales/index.d.ts +12 -2
- package/es/extensions/forms/constants/locales/nb-NO.d.ts +6 -1
- package/es/extensions/forms/constants/locales/nb-NO.js +9 -4
- package/es/extensions/forms/constants/locales/nb-NO.js.map +1 -1
- package/es/extensions/forms/hooks/useDataContext.d.ts +6 -0
- package/es/extensions/forms/hooks/useDataContext.js +24 -0
- package/es/extensions/forms/hooks/useDataContext.js.map +1 -0
- package/es/extensions/forms/hooks/useExternalValue.js +12 -6
- package/es/extensions/forms/hooks/useExternalValue.js.map +1 -1
- package/es/extensions/forms/hooks/useFieldProps.js +83 -44
- package/es/extensions/forms/hooks/useFieldProps.js.map +1 -1
- package/es/extensions/forms/hooks/useSnapshot.d.ts +9 -0
- package/es/extensions/forms/hooks/useSnapshot.js +73 -0
- package/es/extensions/forms/hooks/useSnapshot.js.map +1 -0
- package/es/extensions/forms/hooks/useValueProps.js +6 -1
- package/es/extensions/forms/hooks/useValueProps.js.map +1 -1
- package/es/extensions/forms/types.d.ts +4 -0
- package/es/extensions/forms/types.js.map +1 -1
- package/es/extensions/payment-card/style/dnb-payment-card.css +3 -2
- package/es/extensions/payment-card/style/dnb-payment-card.min.css +1 -1
- package/es/shared/Eufemia.d.ts +1 -1
- package/es/shared/Eufemia.js +2 -2
- package/es/shared/Eufemia.js.map +1 -1
- package/es/shared/component-helper.js +1 -1
- package/es/shared/component-helper.js.map +1 -1
- package/es/style/core/scopes.scss +1 -1
- package/es/style/dnb-ui-basis.css +1 -1
- package/es/style/dnb-ui-basis.min.css +1 -1
- package/es/style/dnb-ui-body.css +1 -1
- package/es/style/dnb-ui-body.min.css +1 -1
- package/es/style/dnb-ui-components.css +3 -1
- package/es/style/dnb-ui-components.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/dnb-ui-extensions.css +3 -2
- package/es/style/dnb-ui-extensions.min.css +1 -1
- package/es/style/themes/theme-eiendom/eiendom-theme-components.css +3 -1
- package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +1 -1
- package/es/style/themes/theme-eiendom/eiendom-theme-extensions.css +3 -2
- package/es/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
- package/es/style/themes/theme-eiendom/properties.d.ts +1 -0
- package/es/style/themes/theme-eiendom/properties.js +3 -2
- package/es/style/themes/theme-eiendom/properties.js.map +1 -1
- package/es/style/themes/theme-sbanken/properties.d.ts +1 -0
- package/es/style/themes/theme-sbanken/properties.js +3 -2
- package/es/style/themes/theme-sbanken/properties.js.map +1 -1
- package/es/style/themes/theme-sbanken/properties.scss +9 -8
- package/es/style/themes/theme-sbanken/sbanken-theme-basis.css +20 -4
- package/es/style/themes/theme-sbanken/sbanken-theme-basis.min.css +3 -1
- package/es/style/themes/theme-sbanken/sbanken-theme-components.css +11 -3
- package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
- package/es/style/themes/theme-sbanken/sbanken-theme-elements.css +17 -2
- package/es/style/themes/theme-sbanken/sbanken-theme-elements.min.css +3 -1
- package/es/style/themes/theme-sbanken/sbanken-theme-extensions.css +3 -2
- package/es/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
- package/es/style/themes/theme-ui/properties.d.ts +1 -0
- package/es/style/themes/theme-ui/properties.js +3 -2
- package/es/style/themes/theme-ui/properties.js.map +1 -1
- package/es/style/themes/theme-ui/ui-theme-components.css +3 -1
- package/es/style/themes/theme-ui/ui-theme-components.min.css +1 -1
- package/es/style/themes/theme-ui/ui-theme-extensions.css +3 -2
- package/es/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
- package/esm/dnb-ui-basis.min.mjs +1 -1
- package/esm/dnb-ui-components.min.mjs +1 -1
- package/esm/dnb-ui-elements.min.mjs +1 -1
- package/esm/dnb-ui-extensions.min.mjs +2 -2
- package/esm/dnb-ui-lib.min.mjs +1 -1
- package/extensions/forms/DataContext/Context.d.ts +5 -0
- package/extensions/forms/DataContext/Context.js.map +1 -1
- package/extensions/forms/DataContext/Provider/Provider.d.ts +12 -1
- package/extensions/forms/DataContext/Provider/Provider.js +86 -77
- package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
- package/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.d.ts +6 -1
- package/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js +109 -23
- package/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js.map +1 -1
- package/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumberDocs.js +5 -0
- package/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumberDocs.js.map +1 -1
- package/extensions/forms/Field/OrganizationNumber/OrganizationNumber.d.ts +3 -1
- package/extensions/forms/Field/OrganizationNumber/OrganizationNumber.js +28 -16
- package/extensions/forms/Field/OrganizationNumber/OrganizationNumber.js.map +1 -1
- package/extensions/forms/Field/OrganizationNumber/OrganizationNumberDocs.d.ts +2 -0
- package/extensions/forms/Field/OrganizationNumber/OrganizationNumberDocs.js +18 -0
- package/extensions/forms/Field/OrganizationNumber/OrganizationNumberDocs.js.map +1 -0
- package/extensions/forms/Field/SelectCountry/SelectCountry.js +4 -3
- package/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
- package/extensions/forms/Form/Isolation/Isolation.d.ts +4 -0
- package/extensions/forms/Form/Isolation/Isolation.js +29 -3
- package/extensions/forms/Form/Isolation/Isolation.js.map +1 -1
- package/extensions/forms/Form/Isolation/IsolationDocs.js +5 -0
- package/extensions/forms/Form/Isolation/IsolationDocs.js.map +1 -1
- package/extensions/forms/Form/Snapshot/Snapshot.d.ts +12 -0
- package/extensions/forms/Form/Snapshot/Snapshot.js +36 -0
- package/extensions/forms/Form/Snapshot/Snapshot.js.map +1 -0
- package/extensions/forms/Form/Snapshot/SnapshotContext.d.ts +12 -0
- package/extensions/forms/Form/Snapshot/SnapshotContext.js +6 -0
- package/extensions/forms/Form/Snapshot/SnapshotContext.js.map +1 -0
- package/extensions/forms/Form/Snapshot/SnapshotDocs.d.ts +3 -0
- package/extensions/forms/Form/Snapshot/SnapshotDocs.js +9 -0
- package/extensions/forms/Form/Snapshot/SnapshotDocs.js.map +1 -0
- package/extensions/forms/Form/Snapshot/index.d.ts +2 -0
- package/extensions/forms/Form/Snapshot/index.js +3 -0
- package/extensions/forms/Form/Snapshot/index.js.map +1 -0
- package/extensions/forms/Form/SubmitConfirmation/SubmitConfirmation.js +2 -2
- package/extensions/forms/Form/SubmitConfirmation/SubmitConfirmation.js.map +1 -1
- package/extensions/forms/Form/Visibility/Visibility.d.ts +10 -2
- package/extensions/forms/Form/Visibility/Visibility.js.map +1 -1
- package/extensions/forms/Form/Visibility/VisibilityDocs.js +10 -10
- package/extensions/forms/Form/Visibility/VisibilityDocs.js.map +1 -1
- package/extensions/forms/Form/Visibility/useVisibility.js +26 -14
- package/extensions/forms/Form/Visibility/useVisibility.js.map +1 -1
- package/extensions/forms/Form/data-context/clearData.js +2 -5
- package/extensions/forms/Form/data-context/clearData.js.map +1 -1
- package/extensions/forms/Form/data-context/getData.js.map +1 -1
- package/extensions/forms/Form/data-context/useData.js +1 -0
- package/extensions/forms/Form/data-context/useData.js.map +1 -1
- package/extensions/forms/Form/data-context/useValidation.js.map +1 -1
- package/extensions/forms/Form/index.d.ts +2 -0
- package/extensions/forms/Form/index.js +2 -0
- package/extensions/forms/Form/index.js.map +1 -1
- package/extensions/forms/Iterate/Array/Array.js +3 -1
- package/extensions/forms/Iterate/Array/Array.js.map +1 -1
- package/extensions/forms/Iterate/Array/ArrayItemArea.js +31 -18
- package/extensions/forms/Iterate/Array/ArrayItemArea.js.map +1 -1
- package/extensions/forms/Iterate/EditContainer/EditContainer.js +5 -6
- package/extensions/forms/Iterate/EditContainer/EditContainer.js.map +1 -1
- package/extensions/forms/Iterate/ItemNo/ItemNo.d.ts +9 -0
- package/extensions/forms/Iterate/ItemNo/ItemNo.js +23 -0
- package/extensions/forms/Iterate/ItemNo/ItemNo.js.map +1 -0
- package/extensions/forms/Iterate/ItemNo/index.d.ts +2 -0
- package/extensions/forms/Iterate/ItemNo/index.js +3 -0
- package/extensions/forms/Iterate/ItemNo/index.js.map +1 -0
- package/extensions/forms/Iterate/IterateItemContext.d.ts +1 -0
- package/extensions/forms/Iterate/IterateItemContext.js.map +1 -1
- package/extensions/forms/Iterate/PushContainer/PushContainer.d.ts +18 -2
- package/extensions/forms/Iterate/PushContainer/PushContainer.js +44 -18
- package/extensions/forms/Iterate/PushContainer/PushContainer.js.map +1 -1
- package/extensions/forms/Iterate/PushContainer/PushContainerDocs.js +24 -1
- package/extensions/forms/Iterate/PushContainer/PushContainerDocs.js.map +1 -1
- package/extensions/forms/Iterate/ViewContainer/ViewContainer.js +5 -6
- package/extensions/forms/Iterate/ViewContainer/ViewContainer.js.map +1 -1
- package/extensions/forms/Iterate/index.d.ts +1 -0
- package/extensions/forms/Iterate/index.js +1 -0
- package/extensions/forms/Iterate/index.js.map +1 -1
- package/extensions/forms/Tools/Log.d.ts +7 -2
- package/extensions/forms/Tools/Log.js +30 -3
- package/extensions/forms/Tools/Log.js.map +1 -1
- package/extensions/forms/Value/Provider/useValueProvider.d.ts +1 -0
- package/extensions/forms/Value/SummaryList/SummaryList.d.ts +4 -2
- package/extensions/forms/Value/SummaryList/SummaryList.js +3 -1
- package/extensions/forms/Value/SummaryList/SummaryList.js.map +1 -1
- package/extensions/forms/Value/SummaryList/SummaryListDocs.js +5 -0
- package/extensions/forms/Value/SummaryList/SummaryListDocs.js.map +1 -1
- package/extensions/forms/Value/ValueDocs.js +5 -0
- package/extensions/forms/Value/ValueDocs.js.map +1 -1
- package/extensions/forms/Wizard/Buttons/Buttons.js +2 -2
- package/extensions/forms/Wizard/Buttons/Buttons.js.map +1 -1
- package/extensions/forms/Wizard/Container/WizardContainer.js +78 -31
- package/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
- package/extensions/forms/Wizard/Container/WizardContainerDocs.js +1 -1
- package/extensions/forms/Wizard/Container/WizardContainerDocs.js.map +1 -1
- package/extensions/forms/Wizard/Container/useHandleLayoutEffect.d.ts +1 -2
- package/extensions/forms/Wizard/Container/useHandleLayoutEffect.js +0 -6
- package/extensions/forms/Wizard/Container/useHandleLayoutEffect.js.map +1 -1
- package/extensions/forms/Wizard/Container/useStepAnimation.d.ts +2 -1
- package/extensions/forms/Wizard/Container/useStepAnimation.js +12 -7
- package/extensions/forms/Wizard/Container/useStepAnimation.js.map +1 -1
- package/extensions/forms/Wizard/Context/WizardContext.d.ts +14 -3
- package/extensions/forms/Wizard/Context/WizardContext.js.map +1 -1
- package/extensions/forms/Wizard/Step/Step.js +4 -4
- package/extensions/forms/Wizard/Step/Step.js.map +1 -1
- package/extensions/forms/Wizard/hooks/useStep.js +4 -4
- package/extensions/forms/Wizard/hooks/useStep.js.map +1 -1
- package/extensions/forms/blocks/ChildrenWithAge/ChildrenWithAge.js +77 -58
- package/extensions/forms/blocks/ChildrenWithAge/ChildrenWithAge.js.map +1 -1
- package/extensions/forms/blocks/ChildrenWithAge/ChildrenWithAgeTranslations.d.ts +12 -12
- package/extensions/forms/blocks/ChildrenWithAge/ChildrenWithAgeTranslations.js +24 -24
- package/extensions/forms/blocks/ChildrenWithAge/ChildrenWithAgeTranslations.js.map +1 -1
- package/extensions/forms/constants/locales/en-GB.d.ts +6 -1
- package/extensions/forms/constants/locales/en-GB.js +9 -4
- package/extensions/forms/constants/locales/en-GB.js.map +1 -1
- package/extensions/forms/constants/locales/en-US.d.ts +6 -1
- package/extensions/forms/constants/locales/en-US.js +2 -1
- package/extensions/forms/constants/locales/en-US.js.map +1 -1
- package/extensions/forms/constants/locales/index.d.ts +12 -2
- package/extensions/forms/constants/locales/nb-NO.d.ts +6 -1
- package/extensions/forms/constants/locales/nb-NO.js +9 -4
- package/extensions/forms/constants/locales/nb-NO.js.map +1 -1
- package/extensions/forms/hooks/useDataContext.d.ts +6 -0
- package/extensions/forms/hooks/useDataContext.js +25 -0
- package/extensions/forms/hooks/useDataContext.js.map +1 -0
- package/extensions/forms/hooks/useExternalValue.js +12 -6
- package/extensions/forms/hooks/useExternalValue.js.map +1 -1
- package/extensions/forms/hooks/useFieldProps.js +83 -44
- package/extensions/forms/hooks/useFieldProps.js.map +1 -1
- package/extensions/forms/hooks/useSnapshot.d.ts +9 -0
- package/extensions/forms/hooks/useSnapshot.js +81 -0
- package/extensions/forms/hooks/useSnapshot.js.map +1 -0
- package/extensions/forms/hooks/useValueProps.js +6 -1
- package/extensions/forms/hooks/useValueProps.js.map +1 -1
- package/extensions/forms/types.d.ts +4 -0
- package/extensions/forms/types.js.map +1 -1
- package/extensions/payment-card/style/dnb-payment-card.css +3 -2
- package/extensions/payment-card/style/dnb-payment-card.min.css +1 -1
- package/package.json +1 -1
- package/shared/Eufemia.d.ts +1 -1
- package/shared/Eufemia.js +2 -2
- package/shared/Eufemia.js.map +1 -1
- package/shared/component-helper.js +1 -1
- package/shared/component-helper.js.map +1 -1
- package/style/core/scopes.scss +1 -1
- package/style/dnb-ui-basis.css +1 -1
- package/style/dnb-ui-basis.min.css +1 -1
- package/style/dnb-ui-body.css +1 -1
- package/style/dnb-ui-body.min.css +1 -1
- package/style/dnb-ui-components.css +3 -1
- package/style/dnb-ui-components.min.css +1 -1
- package/style/dnb-ui-core.css +1 -1
- package/style/dnb-ui-core.min.css +1 -1
- package/style/dnb-ui-extensions.css +3 -2
- package/style/dnb-ui-extensions.min.css +1 -1
- package/style/themes/theme-eiendom/eiendom-theme-components.css +3 -1
- package/style/themes/theme-eiendom/eiendom-theme-components.min.css +1 -1
- package/style/themes/theme-eiendom/eiendom-theme-extensions.css +3 -2
- package/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
- package/style/themes/theme-eiendom/properties.d.ts +1 -0
- package/style/themes/theme-eiendom/properties.js +3 -2
- package/style/themes/theme-eiendom/properties.js.map +1 -1
- package/style/themes/theme-sbanken/properties.d.ts +1 -0
- package/style/themes/theme-sbanken/properties.js +3 -2
- package/style/themes/theme-sbanken/properties.js.map +1 -1
- package/style/themes/theme-sbanken/properties.scss +9 -8
- package/style/themes/theme-sbanken/sbanken-theme-basis.css +20 -4
- package/style/themes/theme-sbanken/sbanken-theme-basis.min.css +3 -1
- package/style/themes/theme-sbanken/sbanken-theme-components.css +11 -3
- package/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
- package/style/themes/theme-sbanken/sbanken-theme-elements.css +17 -2
- package/style/themes/theme-sbanken/sbanken-theme-elements.min.css +3 -1
- package/style/themes/theme-sbanken/sbanken-theme-extensions.css +3 -2
- package/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
- package/style/themes/theme-ui/properties.d.ts +1 -0
- package/style/themes/theme-ui/properties.js +3 -2
- package/style/themes/theme-ui/properties.js.map +1 -1
- package/style/themes/theme-ui/ui-theme-components.css +3 -1
- package/style/themes/theme-ui/ui-theme-components.min.css +1 -1
- package/style/themes/theme-ui/ui-theme-extensions.css +3 -2
- package/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
- package/umd/dnb-ui-basis.min.js +1 -1
- package/umd/dnb-ui-components.min.js +1 -1
- package/umd/dnb-ui-elements.min.js +1 -1
- package/umd/dnb-ui-extensions.min.js +2 -2
- package/umd/dnb-ui-lib.min.js +1 -1
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import { Props as StringFieldProps } from '../String';
|
|
2
|
-
|
|
2
|
+
import { FormError, Validator } from '../../types';
|
|
3
|
+
export type Props = Omit<StringFieldProps, 'onBlurValidator'> & {
|
|
3
4
|
omitMask?: boolean;
|
|
4
5
|
validate?: boolean;
|
|
6
|
+
onBlurValidator?: Validator<string> | false;
|
|
5
7
|
};
|
|
6
8
|
declare function NationalIdentityNumber(props: Props): import("react/jsx-runtime").JSX.Element;
|
|
7
9
|
declare namespace NationalIdentityNumber {
|
|
8
10
|
var _supportsSpacingProps: boolean;
|
|
9
11
|
}
|
|
12
|
+
export declare function getAgeByBirthDate(birthDate: Date): number;
|
|
13
|
+
export declare function getBirthDateByFnrOrDnr(value: string): Date;
|
|
14
|
+
export declare function createMinimumAgeValidator(age: number): (value: string) => FormError;
|
|
10
15
|
export default NationalIdentityNumber;
|
|
@@ -4,58 +4,144 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
4
4
|
import React, { useCallback, useMemo } from 'react';
|
|
5
5
|
import StringField from '../String';
|
|
6
6
|
import { dnr, fnr } from '@navikt/fnrvalidator';
|
|
7
|
+
import { FormError } from '../../types';
|
|
7
8
|
import useErrorMessage from '../../hooks/useErrorMessage';
|
|
8
9
|
import useTranslation from '../../hooks/useTranslation';
|
|
9
10
|
function NationalIdentityNumber(props) {
|
|
10
|
-
var _props$label, _props$width;
|
|
11
|
-
const {
|
|
12
|
-
validate = true,
|
|
13
|
-
omitMask
|
|
14
|
-
} = props;
|
|
15
11
|
const translations = useTranslation().NationalIdentityNumber;
|
|
16
12
|
const {
|
|
17
13
|
label,
|
|
18
14
|
errorRequired,
|
|
19
15
|
errorFnr,
|
|
20
|
-
|
|
16
|
+
errorFnrLength,
|
|
17
|
+
errorDnr,
|
|
18
|
+
errorDnrLength,
|
|
19
|
+
errorMinimumAgeValidator,
|
|
20
|
+
errorMinimumAgeValidatorLength
|
|
21
21
|
} = translations;
|
|
22
22
|
const errorMessages = useErrorMessage(props.path, props.errorMessages, {
|
|
23
23
|
required: errorRequired,
|
|
24
|
-
pattern:
|
|
24
|
+
pattern: errorFnr,
|
|
25
25
|
errorFnr,
|
|
26
|
-
|
|
26
|
+
errorFnrLength,
|
|
27
|
+
errorDnr,
|
|
28
|
+
errorDnrLength,
|
|
29
|
+
errorMinimumAgeValidator,
|
|
30
|
+
errorMinimumAgeValidatorLength
|
|
27
31
|
});
|
|
28
|
-
const
|
|
29
|
-
|
|
32
|
+
const identificationNumberIsOfLength = (identificationNumber, length) => {
|
|
33
|
+
return (identificationNumber === null || identificationNumber === void 0 ? void 0 : identificationNumber.length) === length;
|
|
34
|
+
};
|
|
30
35
|
const fnrValidator = useCallback(value => {
|
|
31
|
-
if (
|
|
32
|
-
|
|
36
|
+
if (value !== undefined) {
|
|
37
|
+
if (Number.parseInt(value.substring(0, 1)) > 3) {
|
|
38
|
+
return Error(errorFnr);
|
|
39
|
+
}
|
|
40
|
+
const fnrIs11Digits = identificationNumberIsOfLength(value, 11);
|
|
41
|
+
if (!fnrIs11Digits) {
|
|
42
|
+
return Error(errorFnrLength);
|
|
43
|
+
}
|
|
44
|
+
if (fnrIs11Digits && fnr(value).status === 'invalid') {
|
|
45
|
+
return Error(errorFnr);
|
|
46
|
+
}
|
|
33
47
|
}
|
|
34
|
-
}, [errorFnr]);
|
|
48
|
+
}, [errorFnr, errorFnrLength]);
|
|
35
49
|
const dnrValidator = useCallback(value => {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
50
|
+
if (value !== undefined) {
|
|
51
|
+
if (Number.parseInt(value.substring(0, 1)) < 4) {
|
|
52
|
+
return Error(errorDnr);
|
|
53
|
+
}
|
|
54
|
+
const dnrIs11Digits = identificationNumberIsOfLength(value, 11);
|
|
55
|
+
if (!dnrIs11Digits) {
|
|
56
|
+
return Error(errorDnrLength);
|
|
57
|
+
}
|
|
58
|
+
if (dnrIs11Digits && dnr(value).status === 'invalid') {
|
|
59
|
+
return Error(errorDnr);
|
|
60
|
+
}
|
|
39
61
|
}
|
|
40
|
-
}, [errorDnr]);
|
|
62
|
+
}, [errorDnr, errorDnrLength]);
|
|
41
63
|
const dnrAndFnrValidator = useCallback(value => {
|
|
42
|
-
|
|
64
|
+
const dnrValidationPattern = '^[4-9].*';
|
|
65
|
+
if (new RegExp(dnrValidationPattern).test(value)) {
|
|
66
|
+
return dnrValidator(value);
|
|
67
|
+
}
|
|
68
|
+
return fnrValidator(value);
|
|
43
69
|
}, [dnrValidator, fnrValidator]);
|
|
70
|
+
const {
|
|
71
|
+
validate = true,
|
|
72
|
+
omitMask,
|
|
73
|
+
onBlurValidator = dnrAndFnrValidator,
|
|
74
|
+
validator,
|
|
75
|
+
width,
|
|
76
|
+
label: labelProp
|
|
77
|
+
} = props;
|
|
78
|
+
const mask = useMemo(() => omitMask ? Array(11).fill(/\d/) : [/\d/, /\d/, /\d/, /\d/, /\d/, /\d/, ' ', /\d/, /\d/, /\d/, /\d/, /\d/], [omitMask]);
|
|
79
|
+
const onBlurValidatorToUse = onBlurValidator === false ? undefined : onBlurValidator;
|
|
44
80
|
const StringFieldProps = _objectSpread(_objectSpread({}, props), {}, {
|
|
45
|
-
|
|
46
|
-
label: (_props$label = props.label) !== null && _props$label !== void 0 ? _props$label : label,
|
|
81
|
+
label: labelProp !== null && labelProp !== void 0 ? labelProp : label,
|
|
47
82
|
errorMessages,
|
|
48
83
|
mask,
|
|
49
|
-
width:
|
|
84
|
+
width: width !== null && width !== void 0 ? width : 'medium',
|
|
50
85
|
inputMode: 'numeric',
|
|
51
|
-
validator: validate ?
|
|
86
|
+
validator: validate ? validator : undefined,
|
|
87
|
+
onBlurValidator: validate ? onBlurValidatorToUse : undefined,
|
|
52
88
|
exportValidators: {
|
|
53
89
|
dnrValidator,
|
|
54
|
-
fnrValidator
|
|
90
|
+
fnrValidator,
|
|
91
|
+
dnrAndFnrValidator
|
|
55
92
|
}
|
|
56
93
|
});
|
|
57
94
|
return React.createElement(StringField, StringFieldProps);
|
|
58
95
|
}
|
|
96
|
+
export function getAgeByBirthDate(birthDate) {
|
|
97
|
+
const today = new Date();
|
|
98
|
+
const age = today.getFullYear() - birthDate.getFullYear();
|
|
99
|
+
const month = today.getMonth() - birthDate.getMonth();
|
|
100
|
+
const day = today.getDate() - birthDate.getDate();
|
|
101
|
+
if (month < 0 || month === 0 && day < 0) {
|
|
102
|
+
return age - 1;
|
|
103
|
+
}
|
|
104
|
+
return age;
|
|
105
|
+
}
|
|
106
|
+
export function getBirthDateByFnrOrDnr(value) {
|
|
107
|
+
if (value === undefined) {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
const yearPart = value.substring(4, 6);
|
|
111
|
+
const centuryNumber = Number.parseInt(value.substring(6, 7));
|
|
112
|
+
const isBornIn20XX = centuryNumber >= 5;
|
|
113
|
+
const year = isBornIn20XX ? `20${yearPart}` : `19${yearPart}`;
|
|
114
|
+
const month = Number.parseInt(value.substring(2, 4));
|
|
115
|
+
const differentiatorValue = value.length > 0 ? Number.parseInt(value.substring(0, 1)) : undefined;
|
|
116
|
+
const isDnr = differentiatorValue && differentiatorValue > 3;
|
|
117
|
+
const day = isDnr ? Number.parseInt(value.substring(0, 2)) - 40 : Number.parseInt(value.substring(0, 2));
|
|
118
|
+
return new Date(Number.parseInt(year), month - 1, day);
|
|
119
|
+
}
|
|
120
|
+
export function createMinimumAgeValidator(age) {
|
|
121
|
+
return value => {
|
|
122
|
+
if (typeof value !== 'string') {
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
const identificationNumberIs7DigitsOrMore = (value === null || value === void 0 ? void 0 : value.length) >= 7;
|
|
126
|
+
if (!identificationNumberIs7DigitsOrMore) {
|
|
127
|
+
return new FormError('NationalIdentityNumber.errorMinimumAgeValidatorLength', {
|
|
128
|
+
validationRule: 'errorMinimumAgeValidatorLength'
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
if (identificationNumberIs7DigitsOrMore) {
|
|
132
|
+
const date = getBirthDateByFnrOrDnr(value);
|
|
133
|
+
if (getAgeByBirthDate(date) >= age) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return new FormError('NationalIdentityNumber.errorMinimumAgeValidator', {
|
|
138
|
+
validationRule: 'errorMinimumAgeValidator',
|
|
139
|
+
messageValues: {
|
|
140
|
+
age: String(age)
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
};
|
|
144
|
+
}
|
|
59
145
|
NationalIdentityNumber._supportsSpacingProps = true;
|
|
60
146
|
export default NationalIdentityNumber;
|
|
61
147
|
//# sourceMappingURL=NationalIdentityNumber.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NationalIdentityNumber.js","names":["React","useCallback","useMemo","StringField","dnr","fnr","useErrorMessage","useTranslation","NationalIdentityNumber","props","_props$label","_props$width","validate","omitMask","translations","label","errorRequired","errorFnr","errorDnr","errorMessages","path","required","pattern","mask","Array","fill","validationPattern","fnrValidator","value","RegExp","test","status","Error","dnrValidator","dnrAndFnrValidator","StringFieldProps","_objectSpread","validator","undefined","width","inputMode","exportValidators","createElement","_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'\n\nimport useErrorMessage from '../../hooks/useErrorMessage'\nimport useTranslation from '../../hooks/useTranslation'\n\nexport type Props = StringFieldProps & {\n omitMask?: boolean\n validate?: boolean\n}\n\nfunction NationalIdentityNumber(props: Props) {\n const { validate = true, omitMask } = props\n\n const translations = useTranslation().NationalIdentityNumber\n const { label, errorRequired, errorFnr, errorDnr } = translations\n const errorMessages = useErrorMessage(props.path, props.errorMessages, {\n required: errorRequired,\n pattern: errorRequired,\n errorFnr,\n errorDnr,\n })\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 const validationPattern = '^[0-9]{11}$'\n\n const fnrValidator = useCallback(\n (value: string) => {\n if (\n new RegExp(validationPattern).test(value) &&\n fnr(value).status === 'invalid'\n ) {\n return Error(errorFnr)\n }\n },\n [errorFnr]\n )\n\n const dnrValidator = useCallback(\n (value: string) => {\n const validationPattern = '^[4-7]([0-9]{10}$)' // 1st num is increased by 4. i.e, if 01.01.1985, D number would be 410185.\n if (\n new RegExp(validationPattern).test(value) &&\n dnr(value).status === 'invalid'\n ) {\n return Error(errorDnr)\n }\n },\n [errorDnr]\n )\n\n const dnrAndFnrValidator = useCallback(\n (value: string) => {\n return dnrValidator(value) || fnrValidator(value)\n },\n [dnrValidator, fnrValidator]\n )\n\n const StringFieldProps: Props = {\n ...props,\n pattern:\n validate && props.pattern\n ? props.pattern\n : validate && !props.validator\n ? validationPattern\n : undefined,\n label: props.label ?? label,\n errorMessages,\n mask,\n width: props.width ?? 'medium',\n inputMode: 'numeric',\n validator: validate\n ? props.validator || dnrAndFnrValidator\n : undefined,\n exportValidators: { dnrValidator, fnrValidator },\n }\n\n return <StringField {...StringFieldProps} />\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","useErrorMessage","useTranslation","NationalIdentityNumber","props","translations","label","errorRequired","errorFnr","errorFnrLength","errorDnr","errorDnrLength","errorMinimumAgeValidator","errorMinimumAgeValidatorLength","errorMessages","path","required","pattern","identificationNumberIsOfLength","identificationNumber","length","fnrValidator","value","undefined","Number","parseInt","substring","Error","fnrIs11Digits","status","dnrValidator","dnrIs11Digits","dnrAndFnrValidator","dnrValidationPattern","RegExp","test","validate","omitMask","onBlurValidator","validator","width","labelProp","mask","Array","fill","onBlurValidatorToUse","StringFieldProps","_objectSpread","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","_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 { FormError, Validator } from '../../types'\n\nimport useErrorMessage from '../../hooks/useErrorMessage'\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 errorMinimumAgeValidator,\n errorMinimumAgeValidatorLength,\n } = translations\n const errorMessages = useErrorMessage(props.path, props.errorMessages, {\n required: errorRequired,\n pattern: errorFnr,\n errorFnr,\n errorFnrLength,\n errorDnr,\n errorDnrLength,\n errorMinimumAgeValidator,\n errorMinimumAgeValidatorLength,\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 onBlurValidator = dnrAndFnrValidator,\n validator,\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 validator: validate ? validator : 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\nNationalIdentityNumber._supportsSpacingProps = true\nexport default NationalIdentityNumber\n"],"mappings":"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"}
|
|
@@ -8,6 +8,11 @@ export const NationalIdentityNumberProperties = {
|
|
|
8
8
|
doc: 'Provide a help button. Object consisting of `title` and `content`.',
|
|
9
9
|
type: 'object',
|
|
10
10
|
status: 'optional'
|
|
11
|
+
},
|
|
12
|
+
onBlurValidator: {
|
|
13
|
+
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 validation of the identification number(national identity numbers and D numbers), using `dnrAndFnrValidator`. Can be disabled using `false`.',
|
|
14
|
+
type: 'function',
|
|
15
|
+
status: 'optional'
|
|
11
16
|
}
|
|
12
17
|
};
|
|
13
18
|
//# sourceMappingURL=NationalIdentityNumberDocs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NationalIdentityNumberDocs.js","names":["NationalIdentityNumberProperties","validate","doc","type","status","help"],"sources":["../../../../../../src/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumberDocs.tsx"],"sourcesContent":["import { PropertiesTableProps } from '../../../../shared/types'\n\nexport const NationalIdentityNumberProperties: PropertiesTableProps = {\n validate: {\n doc: 'Using this prop you can disable the default validation.',\n type: 'boolean',\n status: 'optional',\n },\n help: {\n doc: 'Provide a help button. Object consisting of `title` and `content`.',\n type: 'object',\n status: 'optional',\n },\n}\n"],"mappings":"AAEA,OAAO,MAAMA,gCAAsD,GAAG;EACpEC,QAAQ,EAAE;IACRC,GAAG,EAAE,yDAAyD;IAC9DC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDC,IAAI,EAAE;IACJH,GAAG,EAAE,oEAAoE;IACzEC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV;AACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"NationalIdentityNumberDocs.js","names":["NationalIdentityNumberProperties","validate","doc","type","status","help","onBlurValidator"],"sources":["../../../../../../src/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumberDocs.tsx"],"sourcesContent":["import { PropertiesTableProps } from '../../../../shared/types'\n\nexport const NationalIdentityNumberProperties: PropertiesTableProps = {\n validate: {\n doc: 'Using this prop you can disable the default validation.',\n type: 'boolean',\n status: 'optional',\n },\n help: {\n doc: 'Provide a help button. Object consisting of `title` and `content`.',\n type: 'object',\n status: 'optional',\n },\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 validation of the identification number(national identity numbers and D numbers), using `dnrAndFnrValidator`. Can be disabled using `false`.',\n type: 'function',\n status: 'optional',\n },\n}\n"],"mappings":"AAEA,OAAO,MAAMA,gCAAsD,GAAG;EACpEC,QAAQ,EAAE;IACRC,GAAG,EAAE,yDAAyD;IAC9DC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDC,IAAI,EAAE;IACJH,GAAG,EAAE,oEAAoE;IACzEC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDE,eAAe,EAAE;IACfJ,GAAG,EAAE,wdAAwd;IAC7dC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV;AACF,CAAC"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { Props as StringFieldProps } from '../String';
|
|
2
|
-
|
|
2
|
+
import { Validator } from '../../types';
|
|
3
|
+
export type Props = Omit<StringFieldProps, 'onBlurValidator'> & {
|
|
3
4
|
validate?: boolean;
|
|
4
5
|
omitMask?: boolean;
|
|
6
|
+
onBlurValidator?: Validator<string> | false;
|
|
5
7
|
};
|
|
6
8
|
declare function OrganizationNumber(props: Props): import("react/jsx-runtime").JSX.Element;
|
|
7
9
|
declare namespace OrganizationNumber {
|
|
@@ -6,37 +6,49 @@ import StringField from '../String';
|
|
|
6
6
|
import useErrorMessage from '../../hooks/useErrorMessage';
|
|
7
7
|
import useTranslation from '../../hooks/useTranslation';
|
|
8
8
|
function OrganizationNumber(props) {
|
|
9
|
-
var _props$pattern, _props$label, _props$width;
|
|
10
9
|
const translations = useTranslation().OrganizationNumber;
|
|
11
10
|
const {
|
|
12
|
-
|
|
11
|
+
errorOrgNo,
|
|
12
|
+
errorOrgNoLength,
|
|
13
13
|
errorRequired,
|
|
14
14
|
label
|
|
15
15
|
} = translations;
|
|
16
|
-
const {
|
|
17
|
-
validate = true,
|
|
18
|
-
omitMask
|
|
19
|
-
} = props;
|
|
20
|
-
const validationPattern = '^[0-9]{9}$';
|
|
21
16
|
const errorMessages = useErrorMessage(props.path, props.errorMessages, {
|
|
22
17
|
required: errorRequired,
|
|
23
|
-
pattern:
|
|
18
|
+
pattern: errorOrgNo,
|
|
19
|
+
errorOrgNo,
|
|
20
|
+
errorOrgNoLength
|
|
24
21
|
});
|
|
25
|
-
const mask = useMemo(() => omitMask ? [/\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/] : [/\d/, /\d/, /\d/, ' ', /\d/, /\d/, /\d/, ' ', /\d/, /\d/, /\d/], [omitMask]);
|
|
26
22
|
const organizationNumberValidator = useCallback(value => {
|
|
27
|
-
if (
|
|
28
|
-
|
|
23
|
+
if (value !== undefined) {
|
|
24
|
+
const orgNoIs9Digits = (value === null || value === void 0 ? void 0 : value.length) === 9;
|
|
25
|
+
if (!orgNoIs9Digits) {
|
|
26
|
+
return Error(errorOrgNoLength);
|
|
27
|
+
}
|
|
28
|
+
if (orgNoIs9Digits && !isValidOrgNumber(value)) {
|
|
29
|
+
return Error(errorOrgNo);
|
|
30
|
+
}
|
|
29
31
|
}
|
|
30
|
-
}, [
|
|
32
|
+
}, [errorOrgNo, errorOrgNoLength]);
|
|
33
|
+
const {
|
|
34
|
+
validate = true,
|
|
35
|
+
omitMask,
|
|
36
|
+
validator,
|
|
37
|
+
onBlurValidator = organizationNumberValidator,
|
|
38
|
+
label: labelProp,
|
|
39
|
+
width
|
|
40
|
+
} = props;
|
|
41
|
+
const mask = useMemo(() => omitMask ? [/\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/] : [/\d/, /\d/, /\d/, ' ', /\d/, /\d/, /\d/, ' ', /\d/, /\d/, /\d/], [omitMask]);
|
|
42
|
+
const onBlurValidatorToUse = onBlurValidator === false ? undefined : onBlurValidator;
|
|
31
43
|
const StringFieldProps = _objectSpread(_objectSpread({}, props), {}, {
|
|
32
44
|
className: 'dnb-forms-field-organization-number',
|
|
33
|
-
|
|
34
|
-
label: (_props$label = props.label) !== null && _props$label !== void 0 ? _props$label : label,
|
|
45
|
+
label: labelProp !== null && labelProp !== void 0 ? labelProp : label,
|
|
35
46
|
errorMessages,
|
|
36
47
|
mask,
|
|
37
|
-
width:
|
|
48
|
+
width: width !== null && width !== void 0 ? width : 'medium',
|
|
38
49
|
inputMode: 'numeric',
|
|
39
|
-
|
|
50
|
+
validator: validate ? validator : undefined,
|
|
51
|
+
onBlurValidator: validate ? onBlurValidatorToUse : undefined,
|
|
40
52
|
exportValidators: {
|
|
41
53
|
organizationNumberValidator
|
|
42
54
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OrganizationNumber.js","names":["React","useCallback","useMemo","StringField","useErrorMessage","useTranslation","OrganizationNumber","props","
|
|
1
|
+
{"version":3,"file":"OrganizationNumber.js","names":["React","useCallback","useMemo","StringField","useErrorMessage","useTranslation","OrganizationNumber","props","translations","errorOrgNo","errorOrgNoLength","errorRequired","label","errorMessages","path","required","pattern","organizationNumberValidator","value","undefined","orgNoIs9Digits","length","Error","isValidOrgNumber","validate","omitMask","validator","onBlurValidator","labelProp","width","mask","onBlurValidatorToUse","StringFieldProps","_objectSpread","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 useErrorMessage from '../../hooks/useErrorMessage'\nimport useTranslation from '../../hooks/useTranslation'\nimport { Validator } from '../../types'\n\nexport type Props = Omit<StringFieldProps, 'onBlurValidator'> & {\n validate?: boolean\n omitMask?: boolean\n onBlurValidator?: Validator<string> | false\n}\n\nfunction OrganizationNumber(props: Props) {\n const translations = useTranslation().OrganizationNumber\n const { errorOrgNo, errorOrgNoLength, errorRequired, label } =\n translations\n\n const errorMessages = useErrorMessage(props.path, props.errorMessages, {\n required: errorRequired,\n pattern: errorOrgNo,\n errorOrgNo,\n errorOrgNoLength,\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 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 validator: validate ? validator : 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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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export const OrganizationNumberProperties = {
|
|
2
|
+
validate: {
|
|
3
|
+
doc: 'Using this prop you can disable the default validation.',
|
|
4
|
+
type: 'boolean',
|
|
5
|
+
status: 'optional'
|
|
6
|
+
},
|
|
7
|
+
help: {
|
|
8
|
+
doc: 'Provide a help button. Object consisting of `title` and `content`.',
|
|
9
|
+
type: 'object',
|
|
10
|
+
status: 'optional'
|
|
11
|
+
},
|
|
12
|
+
onBlurValidator: {
|
|
13
|
+
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 organization number validation, using `organizationNumberValidator`. Can be disabled using `false`.',
|
|
14
|
+
type: 'function',
|
|
15
|
+
status: 'optional'
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=OrganizationNumberDocs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OrganizationNumberDocs.js","names":["OrganizationNumberProperties","validate","doc","type","status","help","onBlurValidator"],"sources":["../../../../../../src/extensions/forms/Field/OrganizationNumber/OrganizationNumberDocs.tsx"],"sourcesContent":["import { PropertiesTableProps } from '../../../../shared/types'\n\nexport const OrganizationNumberProperties: PropertiesTableProps = {\n validate: {\n doc: 'Using this prop you can disable the default validation.',\n type: 'boolean',\n status: 'optional',\n },\n help: {\n doc: 'Provide a help button. Object consisting of `title` and `content`.',\n type: 'object',\n status: 'optional',\n },\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 organization number validation, using `organizationNumberValidator`. Can be disabled using `false`.',\n type: 'function',\n status: 'optional',\n },\n}\n"],"mappings":"AAEA,OAAO,MAAMA,4BAAkD,GAAG;EAChEC,QAAQ,EAAE;IACRC,GAAG,EAAE,yDAAyD;IAC9DC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDC,IAAI,EAAE;IACJH,GAAG,EAAE,oEAAoE;IACzEC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDE,eAAe,EAAE;IACfJ,GAAG,EAAE,+aAA+a;IACpbC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV;AACF,CAAC"}
|
|
@@ -7,6 +7,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
7
7
|
import React, { useCallback, useContext, useMemo, useRef } from 'react';
|
|
8
8
|
import classnames from 'classnames';
|
|
9
9
|
import SharedContext from '../../../../shared/Context';
|
|
10
|
+
import { LOCALE } from '../../../../shared/defaults';
|
|
10
11
|
import { Autocomplete, HelpButton } from '../../../../components';
|
|
11
12
|
import { pickSpacingProps } from '../../../../components/flex/utils';
|
|
12
13
|
import countries, { prioritizedCountries } from '../../constants/countries';
|
|
@@ -15,10 +16,9 @@ import FieldBlock from '../../FieldBlock';
|
|
|
15
16
|
import useErrorMessage from '../../hooks/useErrorMessage';
|
|
16
17
|
import useTranslation from '../../hooks/useTranslation';
|
|
17
18
|
function SelectCountry(props) {
|
|
18
|
-
var _sharedContext$locale;
|
|
19
19
|
const sharedContext = useContext(SharedContext);
|
|
20
20
|
const translations = useTranslation().SelectCountry;
|
|
21
|
-
const lang = (
|
|
21
|
+
const lang = (sharedContext.locale || LOCALE).split('-')[0];
|
|
22
22
|
const getCountryObjectByIso = useCallback(value => {
|
|
23
23
|
const country = countries.find(({
|
|
24
24
|
iso
|
|
@@ -184,6 +184,7 @@ export function getCountryData({
|
|
|
184
184
|
}, {
|
|
185
185
|
i18n: b
|
|
186
186
|
}) => {
|
|
187
|
+
var _String, _String$localeCompare;
|
|
187
188
|
if (sort === 'Prioritized') {
|
|
188
189
|
const indexA = prioritizedCountries.indexOf(a['en']);
|
|
189
190
|
const indexB = prioritizedCountries.indexOf(b['en']);
|
|
@@ -197,7 +198,7 @@ export function getCountryData({
|
|
|
197
198
|
return 1;
|
|
198
199
|
}
|
|
199
200
|
}
|
|
200
|
-
return a[lang].localeCompare(b[lang]);
|
|
201
|
+
return (_String = String(a[lang])) === null || _String === void 0 ? void 0 : (_String$localeCompare = _String.localeCompare) === null || _String$localeCompare === void 0 ? void 0 : _String$localeCompare.call(_String, b[lang]);
|
|
201
202
|
}).map(country => makeObject(country, lang));
|
|
202
203
|
}
|
|
203
204
|
export function countryFilter(country, filterCountries, ccFilter) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectCountry.js","names":["React","useCallback","useContext","useMemo","useRef","classnames","SharedContext","Autocomplete","HelpButton","pickSpacingProps","countries","prioritizedCountries","useFieldProps","FieldBlock","useErrorMessage","useTranslation","SelectCountry","props","_sharedContext$locale","sharedContext","translations","lang","locale","split","getCountryObjectByIso","value","country","find","iso","i18n","provideAdditionalArgs","errorMessages","path","required","errorRequired","defaultProps","preparedProps","_objectSpread","className","placeholder","label","ccFilter","info","warning","error","hasError","disabled","width","help","htmlAttributes","handleFocus","handleBlur","handleChange","updateValue","forceUpdate","filterCountries","dataRef","langRef","wasFilled","filter","countryFilter","isLangChange","current","getCountryData","sort","window","requestAnimationFrame","handleCountryChange","data","newValue","selectedKey","fillData","onFocusHandler","updateData","onTypeHandler","currentValue","setHidden","event","_event$nativeEvent","nativeEvent","search","toLowerCase","Object","values","some","s","includes","createElement","_extends","label_direction","input_icon","on_show","on_focus","on_blur","on_change","on_type","stretch","status","undefined","show_submit_button","keep_selection","suffix","title","content","autoComplete","no_animation","noAnimation","makeObject","_country$i18n$lang","en","a","b","indexA","indexOf","indexB","priorityA","priorityB","localeCompare","map","result","_country$regions","regions","continent","makeCountryFilterSet","_country$regions2","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/SelectCountry/SelectCountry.tsx"],"sourcesContent":["import React, { useCallback, useContext, useMemo, useRef } from 'react'\nimport classnames from 'classnames'\nimport SharedContext from '../../../../shared/Context'\nimport { Autocomplete, HelpButton } from '../../../../components'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport countries, {\n prioritizedCountries,\n type CountryType,\n type CountryLang,\n} from '../../constants/countries'\nimport { useFieldProps } from '../../hooks'\nimport {\n FieldBlockWidth,\n FieldHelpProps,\n FieldPropsWithExtraValue,\n} from '../../types'\nimport FieldBlock from '../../FieldBlock'\nimport useErrorMessage from '../../hooks/useErrorMessage'\nimport useTranslation from '../../hooks/useTranslation'\n\nexport type CountryFilterSet =\n | 'Scandinavia'\n | 'Nordic'\n | 'Europe'\n | 'Prioritized'\n\nexport type Props = FieldHelpProps &\n FieldPropsWithExtraValue<string, CountryType, undefined | string> & {\n /**\n * Lists only the countries you want to show. 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 * The width of the component.\n */\n width?: FieldBlockWidth\n }\n\nfunction SelectCountry(props: Props) {\n const sharedContext = useContext(SharedContext)\n const translations = useTranslation().SelectCountry\n const lang = sharedContext.locale?.split('-')[0] as CountryLang\n\n const getCountryObjectByIso = useCallback(\n (value: CountryType['iso']) => {\n const country = countries.find(({ iso }) => value === iso)\n if (country?.i18n) {\n country['name'] = country.i18n[lang]\n }\n return country\n },\n [lang]\n )\n\n const provideAdditionalArgs = useCallback(\n (value: CountryType['iso']) => {\n const country = getCountryObjectByIso(value)\n\n if (country?.iso) {\n return country\n }\n },\n [getCountryObjectByIso]\n )\n\n const errorMessages = useErrorMessage(props.path, props.errorMessages, {\n required: translations.errorRequired,\n })\n\n const defaultProps: Partial<Props> = {\n errorMessages,\n }\n const preparedProps: Props = {\n ...defaultProps,\n ...props,\n provideAdditionalArgs,\n }\n\n const {\n className,\n placeholder = translations.placeholder,\n label = translations.label,\n countries: ccFilter = 'Prioritized',\n info,\n warning,\n error,\n hasError,\n disabled,\n value,\n width = 'large',\n help,\n htmlAttributes,\n handleFocus,\n handleBlur,\n handleChange,\n updateValue,\n forceUpdate,\n filterCountries,\n } = useFieldProps(preparedProps)\n\n const dataRef = useRef(null)\n const langRef = useRef(lang)\n const wasFilled = useRef(false)\n\n const filter = useCallback(\n (country: CountryType) => {\n return countryFilter(country, filterCountries, ccFilter)\n },\n [ccFilter, filterCountries]\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 data set when value changes.\n */\n useMemo(() => {\n const isLangChange = lang !== langRef.current\n\n if (isLangChange || !wasFilled.current) {\n langRef.current = lang\n dataRef.current = getCountryData({\n lang,\n filter: !wasFilled.current\n ? (country) => country.iso === value\n : filter,\n sort: ccFilter as Extract<CountryFilterSet, 'Prioritized'>,\n })\n\n // To force Autocomplete to re-evaluate the internal data\n if (isLangChange && value && typeof window !== 'undefined') {\n updateValue(null)\n window.requestAnimationFrame(() => {\n updateValue(value)\n })\n }\n }\n }, [lang, filter, ccFilter, updateValue, value])\n\n const handleCountryChange = useCallback(\n ({ data }: { data: { selectedKey: string } }) => {\n const newValue = data?.selectedKey\n const country = getCountryObjectByIso(newValue)\n if (country?.iso) {\n handleChange(country.iso, country)\n }\n },\n [getCountryObjectByIso, handleChange]\n )\n\n const fillData = useCallback(() => {\n if (!wasFilled.current) {\n wasFilled.current = true\n dataRef.current = getCountryData({\n lang: langRef.current,\n filter,\n sort: ccFilter as Extract<CountryFilterSet, 'Prioritized'>,\n })\n forceUpdate()\n }\n }, [ccFilter, filter, forceUpdate])\n\n const onFocusHandler = useCallback(\n ({ updateData }) => {\n fillData()\n updateData(dataRef.current)\n handleFocus()\n },\n [fillData, handleFocus]\n )\n\n const onTypeHandler = useCallback(\n ({ value: currentValue, setHidden, event }) => {\n // Handle browser autofill/autocomplete\n if (typeof event?.nativeEvent?.data === 'undefined') {\n const search = currentValue.toLowerCase()\n const country = countries.find(({ i18n }) =>\n Object.values(i18n).some((s) => s.toLowerCase().includes(search))\n )\n if (country?.iso) {\n setHidden()\n handleChange(country.iso)\n }\n }\n },\n [handleChange]\n )\n\n return (\n <FieldBlock\n className={classnames('dnb-forms-field-select-country', className)}\n width={width}\n info={info}\n warning={warning}\n error={error}\n {...pickSpacingProps(props)}\n >\n <Autocomplete\n placeholder={placeholder}\n label_direction=\"vertical\"\n label={label}\n input_icon={false}\n data={dataRef.current}\n value={typeof value === 'string' ? value : null}\n disabled={disabled}\n on_show={fillData}\n on_focus={onFocusHandler}\n on_blur={handleBlur}\n on_change={handleCountryChange}\n on_type={onTypeHandler}\n stretch\n status={hasError ? 'error' : undefined}\n show_submit_button\n keep_selection\n suffix={\n help ? (\n <HelpButton title={help.title}>{help.content}</HelpButton>\n ) : undefined\n }\n autoComplete=\"country-name\"\n no_animation={props.noAnimation}\n {...htmlAttributes}\n />\n </FieldBlock>\n )\n}\n\ntype GetCountryData = {\n lang?: CountryLang\n filter?: Props['filterCountries']\n sort?: Extract<CountryFilterSet, 'Prioritized'>\n makeObject?: (\n country: CountryType,\n lang: string\n ) => {\n selectedKey: string\n selected_value?: string\n content: string\n }\n}\n\nexport function getCountryData({\n lang = 'nb',\n filter = null,\n sort = null,\n makeObject = (country: CountryType, lang: string) => {\n const content = country.i18n[lang] ?? country.i18n.en\n return {\n selectedKey: country.iso,\n content,\n }\n },\n}: GetCountryData = {}) {\n return countries\n .filter((country) => {\n if (typeof filter === 'function') {\n return filter(country)\n }\n\n return !filter\n })\n .sort(({ i18n: a }, { i18n: b }) => {\n if (sort === 'Prioritized') {\n const indexA = prioritizedCountries.indexOf(a['en'])\n const indexB = prioritizedCountries.indexOf(b['en'])\n\n const priorityA = indexA !== -1\n const priorityB = indexB !== -1\n\n if (priorityA && priorityB) {\n return indexA - indexB\n } else if (priorityA) {\n return -1\n } else if (priorityB) {\n return 1\n }\n }\n\n return a[lang].localeCompare(b[lang])\n })\n .map((country) => makeObject(country, lang))\n}\n\nexport function countryFilter(\n country: CountryType,\n filterCountries: (country: CountryType) => boolean,\n ccFilter: CountryFilterSet\n) {\n let result = true\n\n if (ccFilter !== 'Prioritized') {\n switch (ccFilter) {\n case 'Scandinavia':\n case 'Nordic': {\n result = country.regions?.includes(ccFilter)\n break\n }\n case 'Europe': {\n result = country.continent.includes(ccFilter)\n break\n }\n }\n }\n\n if (result && filterCountries) {\n result = filterCountries(country)\n }\n\n return result\n}\n\nexport function makeCountryFilterSet(ccFilter: CountryFilterSet) {\n return (country: CountryType) => {\n switch (ccFilter) {\n case 'Scandinavia':\n case 'Nordic':\n return country.regions?.includes(ccFilter)\n case 'Europe':\n return country.continent.includes(ccFilter)\n }\n return true\n }\n}\n\nSelectCountry._supportsSpacingProps = true\nexport default SelectCountry\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SelectCountry.js","names":["React","useCallback","useContext","useMemo","useRef","classnames","SharedContext","LOCALE","Autocomplete","HelpButton","pickSpacingProps","countries","prioritizedCountries","useFieldProps","FieldBlock","useErrorMessage","useTranslation","SelectCountry","props","sharedContext","translations","lang","locale","split","getCountryObjectByIso","value","country","find","iso","i18n","provideAdditionalArgs","errorMessages","path","required","errorRequired","defaultProps","preparedProps","_objectSpread","className","placeholder","label","ccFilter","info","warning","error","hasError","disabled","width","help","htmlAttributes","handleFocus","handleBlur","handleChange","updateValue","forceUpdate","filterCountries","dataRef","langRef","wasFilled","filter","countryFilter","isLangChange","current","getCountryData","sort","window","requestAnimationFrame","handleCountryChange","data","newValue","selectedKey","fillData","onFocusHandler","updateData","onTypeHandler","currentValue","setHidden","event","_event$nativeEvent","nativeEvent","search","toLowerCase","Object","values","some","s","includes","createElement","_extends","label_direction","input_icon","on_show","on_focus","on_blur","on_change","on_type","stretch","status","undefined","show_submit_button","keep_selection","suffix","title","content","autoComplete","no_animation","noAnimation","makeObject","_country$i18n$lang","en","a","b","_String","_String$localeCompare","indexA","indexOf","indexB","priorityA","priorityB","String","localeCompare","call","map","result","_country$regions","regions","continent","makeCountryFilterSet","_country$regions2","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/SelectCountry/SelectCountry.tsx"],"sourcesContent":["import React, { useCallback, useContext, useMemo, useRef } from 'react'\nimport classnames from 'classnames'\nimport SharedContext from '../../../../shared/Context'\nimport { LOCALE } from '../../../../shared/defaults'\nimport { Autocomplete, HelpButton } from '../../../../components'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport countries, {\n prioritizedCountries,\n type CountryType,\n type CountryLang,\n} from '../../constants/countries'\nimport { useFieldProps } from '../../hooks'\nimport {\n FieldBlockWidth,\n FieldHelpProps,\n FieldPropsWithExtraValue,\n} from '../../types'\nimport FieldBlock from '../../FieldBlock'\nimport useErrorMessage from '../../hooks/useErrorMessage'\nimport useTranslation from '../../hooks/useTranslation'\n\nexport type CountryFilterSet =\n | 'Scandinavia'\n | 'Nordic'\n | 'Europe'\n | 'Prioritized'\n\nexport type Props = FieldHelpProps &\n FieldPropsWithExtraValue<string, CountryType, undefined | string> & {\n /**\n * Lists only the countries you want to show. 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 * The width of the component.\n */\n width?: FieldBlockWidth\n }\n\nfunction SelectCountry(props: Props) {\n const sharedContext = useContext(SharedContext)\n const translations = useTranslation().SelectCountry\n const lang = (sharedContext.locale || LOCALE).split(\n '-'\n )[0] as CountryLang\n\n const getCountryObjectByIso = useCallback(\n (value: CountryType['iso']) => {\n const country = countries.find(({ iso }) => value === iso)\n if (country?.i18n) {\n country['name'] = country.i18n[lang]\n }\n return country\n },\n [lang]\n )\n\n const provideAdditionalArgs = useCallback(\n (value: CountryType['iso']) => {\n const country = getCountryObjectByIso(value)\n\n if (country?.iso) {\n return country\n }\n },\n [getCountryObjectByIso]\n )\n\n const errorMessages = useErrorMessage(props.path, props.errorMessages, {\n required: translations.errorRequired,\n })\n\n const defaultProps: Partial<Props> = {\n errorMessages,\n }\n const preparedProps: Props = {\n ...defaultProps,\n ...props,\n provideAdditionalArgs,\n }\n\n const {\n className,\n placeholder = translations.placeholder,\n label = translations.label,\n countries: ccFilter = 'Prioritized',\n info,\n warning,\n error,\n hasError,\n disabled,\n value,\n width = 'large',\n help,\n htmlAttributes,\n handleFocus,\n handleBlur,\n handleChange,\n updateValue,\n forceUpdate,\n filterCountries,\n } = useFieldProps(preparedProps)\n\n const dataRef = useRef(null)\n const langRef = useRef(lang)\n const wasFilled = useRef(false)\n\n const filter = useCallback(\n (country: CountryType) => {\n return countryFilter(country, filterCountries, ccFilter)\n },\n [ccFilter, filterCountries]\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 data set when value changes.\n */\n useMemo(() => {\n const isLangChange = lang !== langRef.current\n\n if (isLangChange || !wasFilled.current) {\n langRef.current = lang\n dataRef.current = getCountryData({\n lang,\n filter: !wasFilled.current\n ? (country) => country.iso === value\n : filter,\n sort: ccFilter as Extract<CountryFilterSet, 'Prioritized'>,\n })\n\n // To force Autocomplete to re-evaluate the internal data\n if (isLangChange && value && typeof window !== 'undefined') {\n updateValue(null)\n window.requestAnimationFrame(() => {\n updateValue(value)\n })\n }\n }\n }, [lang, filter, ccFilter, updateValue, value])\n\n const handleCountryChange = useCallback(\n ({ data }: { data: { selectedKey: string } }) => {\n const newValue = data?.selectedKey\n const country = getCountryObjectByIso(newValue)\n if (country?.iso) {\n handleChange(country.iso, country)\n }\n },\n [getCountryObjectByIso, handleChange]\n )\n\n const fillData = useCallback(() => {\n if (!wasFilled.current) {\n wasFilled.current = true\n dataRef.current = getCountryData({\n lang: langRef.current,\n filter,\n sort: ccFilter as Extract<CountryFilterSet, 'Prioritized'>,\n })\n forceUpdate()\n }\n }, [ccFilter, filter, forceUpdate])\n\n const onFocusHandler = useCallback(\n ({ updateData }) => {\n fillData()\n updateData(dataRef.current)\n handleFocus()\n },\n [fillData, handleFocus]\n )\n\n const onTypeHandler = useCallback(\n ({ value: currentValue, setHidden, event }) => {\n // Handle browser autofill/autocomplete\n if (typeof event?.nativeEvent?.data === 'undefined') {\n const search = currentValue.toLowerCase()\n const country = countries.find(({ i18n }) =>\n Object.values(i18n).some((s) => s.toLowerCase().includes(search))\n )\n if (country?.iso) {\n setHidden()\n handleChange(country.iso)\n }\n }\n },\n [handleChange]\n )\n\n return (\n <FieldBlock\n className={classnames('dnb-forms-field-select-country', className)}\n width={width}\n info={info}\n warning={warning}\n error={error}\n {...pickSpacingProps(props)}\n >\n <Autocomplete\n placeholder={placeholder}\n label_direction=\"vertical\"\n label={label}\n input_icon={false}\n data={dataRef.current}\n value={typeof value === 'string' ? value : null}\n disabled={disabled}\n on_show={fillData}\n on_focus={onFocusHandler}\n on_blur={handleBlur}\n on_change={handleCountryChange}\n on_type={onTypeHandler}\n stretch\n status={hasError ? 'error' : undefined}\n show_submit_button\n keep_selection\n suffix={\n help ? (\n <HelpButton title={help.title}>{help.content}</HelpButton>\n ) : undefined\n }\n autoComplete=\"country-name\"\n no_animation={props.noAnimation}\n {...htmlAttributes}\n />\n </FieldBlock>\n )\n}\n\ntype GetCountryData = {\n lang?: CountryLang\n filter?: Props['filterCountries']\n sort?: Extract<CountryFilterSet, 'Prioritized'>\n makeObject?: (\n country: CountryType,\n lang: string\n ) => {\n selectedKey: string\n selected_value?: string\n content: string\n }\n}\n\nexport function getCountryData({\n lang = 'nb',\n filter = null,\n sort = null,\n makeObject = (country: CountryType, lang: string) => {\n const content = country.i18n[lang] ?? country.i18n.en\n return {\n selectedKey: country.iso,\n content,\n }\n },\n}: GetCountryData = {}) {\n return countries\n .filter((country) => {\n if (typeof filter === 'function') {\n return filter(country)\n }\n\n return !filter\n })\n .sort(({ i18n: a }, { i18n: b }) => {\n if (sort === 'Prioritized') {\n const indexA = prioritizedCountries.indexOf(a['en'])\n const indexB = prioritizedCountries.indexOf(b['en'])\n\n const priorityA = indexA !== -1\n const priorityB = indexB !== -1\n\n if (priorityA && priorityB) {\n return indexA - indexB\n } else if (priorityA) {\n return -1\n } else if (priorityB) {\n return 1\n }\n }\n\n return String(a[lang])?.localeCompare?.(b[lang])\n })\n .map((country) => makeObject(country, lang))\n}\n\nexport function countryFilter(\n country: CountryType,\n filterCountries: (country: CountryType) => boolean,\n ccFilter: CountryFilterSet\n) {\n let result = true\n\n if (ccFilter !== 'Prioritized') {\n switch (ccFilter) {\n case 'Scandinavia':\n case 'Nordic': {\n result = country.regions?.includes(ccFilter)\n break\n }\n case 'Europe': {\n result = country.continent.includes(ccFilter)\n break\n }\n }\n }\n\n if (result && filterCountries) {\n result = filterCountries(country)\n }\n\n return result\n}\n\nexport function makeCountryFilterSet(ccFilter: CountryFilterSet) {\n return (country: CountryType) => {\n switch (ccFilter) {\n case 'Scandinavia':\n case 'Nordic':\n return country.regions?.includes(ccFilter)\n case 'Europe':\n return country.continent.includes(ccFilter)\n }\n return true\n }\n}\n\nSelectCountry._supportsSpacingProps = true\nexport default SelectCountry\n"],"mappings":"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"}
|
|
@@ -18,6 +18,10 @@ export type IsolationProviderProps<Data> = {
|
|
|
18
18
|
* You can use this to transform the data before it is committed.
|
|
19
19
|
*/
|
|
20
20
|
transformOnCommit?: (isolatedData: JsonObject, handlerData: JsonObject) => unknown;
|
|
21
|
+
/**
|
|
22
|
+
* Prevent the form from being submitted when there are fields with errors inside the Form.Isolation.
|
|
23
|
+
*/
|
|
24
|
+
bubbleValidation?: boolean;
|
|
21
25
|
/**
|
|
22
26
|
* Used internally by the Form.Isolation component
|
|
23
27
|
*/
|
|
@@ -7,8 +7,9 @@ import React, { useCallback, useContext, useEffect, useMemo, useReducer, useRef
|
|
|
7
7
|
import pointer from '../../utils/json-pointer';
|
|
8
8
|
import { extendDeep } from '../../../../shared/component-helper';
|
|
9
9
|
import { isAsync } from '../../../../shared/helpers/isAsync';
|
|
10
|
+
import useId from '../../../../shared/helpers/useId';
|
|
10
11
|
import useDataValue from '../../hooks/useDataValue';
|
|
11
|
-
import { Context, Provider } from '../../DataContext';
|
|
12
|
+
import { Context as DataContext, Provider } from '../../DataContext';
|
|
12
13
|
import SectionContext from '../Section/SectionContext';
|
|
13
14
|
import IsolationCommitButton from './IsolationCommitButton';
|
|
14
15
|
import { clearedData } from '../../DataContext/Provider';
|
|
@@ -21,6 +22,7 @@ function IsolationProvider(props) {
|
|
|
21
22
|
onClear: onClearProp,
|
|
22
23
|
transformOnCommit: transformOnCommitProp,
|
|
23
24
|
commitHandleRef,
|
|
25
|
+
bubbleValidation,
|
|
24
26
|
data,
|
|
25
27
|
defaultData
|
|
26
28
|
} = props;
|
|
@@ -28,7 +30,7 @@ function IsolationProvider(props) {
|
|
|
28
30
|
const internalDataRef = useRef();
|
|
29
31
|
const localDataRef = useRef({});
|
|
30
32
|
const dataContextRef = useRef(null);
|
|
31
|
-
const outerContext = useContext(
|
|
33
|
+
const outerContext = useContext(DataContext);
|
|
32
34
|
const {
|
|
33
35
|
path: pathSection
|
|
34
36
|
} = useContext(SectionContext) || {};
|
|
@@ -109,14 +111,37 @@ function IsolationProvider(props) {
|
|
|
109
111
|
onClear,
|
|
110
112
|
isolate: true
|
|
111
113
|
});
|
|
112
|
-
return React.createElement(Provider, providerProps, React.createElement(
|
|
114
|
+
return React.createElement(Provider, providerProps, React.createElement(DataContext.Consumer, null, dataContext => {
|
|
113
115
|
dataContextRef.current = dataContext;
|
|
114
116
|
if (commitHandleRef) {
|
|
115
117
|
commitHandleRef.current = dataContext === null || dataContext === void 0 ? void 0 : dataContext.handleSubmit;
|
|
116
118
|
}
|
|
117
119
|
return children;
|
|
120
|
+
}), bubbleValidation && React.createElement(BubbleValidation, {
|
|
121
|
+
outerContext: outerContext
|
|
118
122
|
}));
|
|
119
123
|
}
|
|
124
|
+
function BubbleValidation({
|
|
125
|
+
outerContext
|
|
126
|
+
}) {
|
|
127
|
+
const {
|
|
128
|
+
setMountedFieldState,
|
|
129
|
+
setFieldError
|
|
130
|
+
} = outerContext || {};
|
|
131
|
+
const dataContext = useContext(DataContext);
|
|
132
|
+
const id = useId();
|
|
133
|
+
useEffect(() => {
|
|
134
|
+
const path = `/${id}`;
|
|
135
|
+
const errors = dataContext.hasErrors();
|
|
136
|
+
if (errors) {
|
|
137
|
+
setMountedFieldState === null || setMountedFieldState === void 0 ? void 0 : setMountedFieldState(path, {
|
|
138
|
+
isMounted: true
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
setFieldError === null || setFieldError === void 0 ? void 0 : setFieldError(path, errors ? new Error('Form.Isolation') : undefined);
|
|
142
|
+
}, [dataContext, id, setFieldError, setMountedFieldState]);
|
|
143
|
+
return null;
|
|
144
|
+
}
|
|
120
145
|
IsolationProvider.CommitButton = IsolationCommitButton;
|
|
121
146
|
IsolationProvider._supportsSpacingProps = undefined;
|
|
122
147
|
export default IsolationProvider;
|