@dnb/eufemia 10.68.0 → 10.69.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +37 -0
- package/cjs/components/autocomplete/Autocomplete.js +1 -1
- package/cjs/components/autocomplete/Autocomplete.js.map +1 -1
- package/cjs/components/info-card/InfoCard.d.ts +4 -0
- package/cjs/components/info-card/InfoCard.js +29 -25
- package/cjs/components/info-card/InfoCard.js.map +1 -1
- package/cjs/components/info-card/style/dnb-info-card.css +5 -0
- package/cjs/components/info-card/style/dnb-info-card.min.css +1 -1
- package/cjs/components/info-card/style/dnb-info-card.scss +7 -0
- package/cjs/components/number-format/NumberFormat.js +4 -2
- package/cjs/components/number-format/NumberFormat.js.map +1 -1
- package/cjs/components/number-format/NumberUtils.d.ts +3 -0
- package/cjs/components/number-format/NumberUtils.js +6 -4
- package/cjs/components/number-format/NumberUtils.js.map +1 -1
- package/cjs/components/table/TableClickableHead.js +14 -3
- package/cjs/components/table/TableClickableHead.js.map +1 -1
- package/cjs/components/table/TableTr.js +4 -4
- package/cjs/components/table/TableTr.js.map +1 -1
- package/cjs/components/table/table-accordion/TableAccordionHead.d.ts +5 -0
- package/cjs/components/table/table-accordion/TableAccordionHead.js +27 -20
- package/cjs/components/table/table-accordion/TableAccordionHead.js.map +1 -1
- package/cjs/components/table/table-navigation/TableNavigationHead.js +7 -4
- package/cjs/components/table/table-navigation/TableNavigationHead.js.map +1 -1
- package/cjs/extensions/forms/Field/Currency/Currency.d.ts +9 -1
- package/cjs/extensions/forms/Field/Currency/Currency.js +8 -3
- package/cjs/extensions/forms/Field/Currency/Currency.js.map +1 -1
- package/cjs/extensions/forms/Field/Currency/CurrencyDocs.js +1 -1
- package/cjs/extensions/forms/Field/Currency/CurrencyDocs.js.map +1 -1
- package/cjs/extensions/forms/Field/Provider/useFieldProvider.d.ts +61 -3
- package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.d.ts +2 -4
- package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.js +4 -2
- package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
- package/cjs/extensions/forms/Field/SelectCurrency/SelectCurrency.d.ts +51 -0
- package/cjs/extensions/forms/Field/SelectCurrency/SelectCurrency.js +289 -0
- package/cjs/extensions/forms/Field/SelectCurrency/SelectCurrency.js.map +1 -0
- package/cjs/extensions/forms/Field/SelectCurrency/SelectCurrencyDocs.d.ts +3 -0
- package/cjs/extensions/forms/Field/SelectCurrency/SelectCurrencyDocs.js +36 -0
- package/cjs/extensions/forms/Field/SelectCurrency/SelectCurrencyDocs.js.map +1 -0
- package/cjs/extensions/forms/Field/SelectCurrency/index.d.ts +2 -0
- package/cjs/extensions/forms/Field/SelectCurrency/index.js +28 -0
- package/cjs/extensions/forms/Field/SelectCurrency/index.js.map +1 -0
- package/cjs/extensions/forms/Field/index.d.ts +1 -0
- package/cjs/extensions/forms/Field/index.js +7 -0
- package/cjs/extensions/forms/Field/index.js.map +1 -1
- package/cjs/extensions/forms/FieldBlock/FieldBlock.d.ts +2 -2
- package/cjs/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
- package/cjs/extensions/forms/Value/Currency/Currency.d.ts +7 -1
- package/cjs/extensions/forms/Value/Currency/Currency.js.map +1 -1
- package/cjs/extensions/forms/Value/SelectCountry/SelectCountry.d.ts +2 -1
- package/cjs/extensions/forms/Value/SelectCountry/SelectCountry.js.map +1 -1
- package/cjs/extensions/forms/Value/SelectCurrency/SelectCurrency.d.ts +9 -0
- package/cjs/extensions/forms/Value/SelectCurrency/SelectCurrency.js +37 -0
- package/cjs/extensions/forms/Value/SelectCurrency/SelectCurrency.js.map +1 -0
- package/cjs/extensions/forms/Value/SelectCurrency/index.d.ts +2 -0
- package/cjs/extensions/forms/Value/SelectCurrency/index.js +28 -0
- package/cjs/extensions/forms/Value/SelectCurrency/index.js.map +1 -0
- package/cjs/extensions/forms/Value/SelectCurrency/useCurrency.d.ts +4 -0
- package/cjs/extensions/forms/Value/SelectCurrency/useCurrency.js +32 -0
- package/cjs/extensions/forms/Value/SelectCurrency/useCurrency.js.map +1 -0
- package/cjs/extensions/forms/Value/index.d.ts +1 -0
- package/cjs/extensions/forms/Value/index.js +7 -0
- package/cjs/extensions/forms/Value/index.js.map +1 -1
- package/cjs/extensions/forms/Wizard/Container/DisplaySteps.js +4 -0
- package/cjs/extensions/forms/Wizard/Container/DisplaySteps.js.map +1 -1
- package/cjs/extensions/forms/Wizard/Container/IterateOverSteps.js +6 -1
- package/cjs/extensions/forms/Wizard/Container/IterateOverSteps.js.map +1 -1
- package/cjs/extensions/forms/Wizard/Container/WizardContainer.js +5 -3
- package/cjs/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
- package/cjs/extensions/forms/Wizard/Context/WizardContext.d.ts +1 -0
- package/cjs/extensions/forms/Wizard/Context/WizardContext.js.map +1 -1
- package/cjs/extensions/forms/constants/allCurrencies.d.ts +1786 -0
- package/cjs/extensions/forms/constants/allCurrencies.js +1447 -0
- package/cjs/extensions/forms/constants/allCurrencies.js.map +1 -0
- package/cjs/extensions/forms/constants/countries.d.ts +4023 -4
- package/cjs/extensions/forms/constants/countries.js.map +1 -1
- package/cjs/extensions/forms/constants/currencies.d.ts +716 -0
- package/cjs/extensions/forms/constants/currencies.js +12 -0
- package/cjs/extensions/forms/constants/currencies.js.map +1 -0
- package/cjs/extensions/forms/constants/locales/en-GB.d.ts +5 -0
- package/cjs/extensions/forms/constants/locales/en-GB.js +5 -0
- package/cjs/extensions/forms/constants/locales/en-GB.js.map +1 -1
- package/cjs/extensions/forms/constants/locales/en-US.d.ts +5 -0
- package/cjs/extensions/forms/constants/locales/index.d.ts +10 -0
- package/cjs/extensions/forms/constants/locales/nb-NO.d.ts +5 -0
- package/cjs/extensions/forms/constants/locales/nb-NO.js +5 -0
- package/cjs/extensions/forms/constants/locales/nb-NO.js.map +1 -1
- package/cjs/extensions/forms/constants/locales/sv-SE.d.ts +5 -0
- package/cjs/extensions/forms/constants/locales/sv-SE.js +5 -0
- package/cjs/extensions/forms/constants/locales/sv-SE.js.map +1 -1
- package/cjs/extensions/forms/hooks/useFieldProps.js +18 -17
- package/cjs/extensions/forms/hooks/useFieldProps.js.map +1 -1
- package/cjs/extensions/forms/types.d.ts +4 -4
- package/cjs/extensions/forms/types.js.map +1 -1
- package/cjs/shared/Eufemia.d.ts +1 -1
- package/cjs/shared/Eufemia.js +2 -2
- package/cjs/shared/Eufemia.js.map +1 -1
- package/cjs/shared/Translation.js +5 -6
- package/cjs/shared/Translation.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 +5 -0
- 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/themes/theme-eiendom/eiendom-theme-components.css +5 -0
- package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +1 -1
- package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +5 -0
- package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +1 -1
- package/cjs/style/themes/theme-ui/ui-theme-components.css +5 -0
- package/cjs/style/themes/theme-ui/ui-theme-components.min.css +1 -1
- package/components/autocomplete/Autocomplete.js +1 -1
- package/components/autocomplete/Autocomplete.js.map +1 -1
- package/components/info-card/InfoCard.d.ts +4 -0
- package/components/info-card/InfoCard.js +26 -25
- package/components/info-card/InfoCard.js.map +1 -1
- package/components/info-card/style/dnb-info-card.css +5 -0
- package/components/info-card/style/dnb-info-card.min.css +1 -1
- package/components/info-card/style/dnb-info-card.scss +7 -0
- package/components/number-format/NumberFormat.js +4 -2
- package/components/number-format/NumberFormat.js.map +1 -1
- package/components/number-format/NumberUtils.d.ts +3 -0
- package/components/number-format/NumberUtils.js +6 -4
- package/components/number-format/NumberUtils.js.map +1 -1
- package/components/table/TableClickableHead.js +12 -3
- package/components/table/TableClickableHead.js.map +1 -1
- package/components/table/TableTr.js +4 -4
- package/components/table/TableTr.js.map +1 -1
- package/components/table/table-accordion/TableAccordionHead.d.ts +5 -0
- package/components/table/table-accordion/TableAccordionHead.js +28 -21
- package/components/table/table-accordion/TableAccordionHead.js.map +1 -1
- package/components/table/table-navigation/TableNavigationHead.js +4 -4
- package/components/table/table-navigation/TableNavigationHead.js.map +1 -1
- package/es/components/autocomplete/Autocomplete.js +1 -1
- package/es/components/autocomplete/Autocomplete.js.map +1 -1
- package/es/components/info-card/InfoCard.d.ts +4 -0
- package/es/components/info-card/InfoCard.js +26 -25
- package/es/components/info-card/InfoCard.js.map +1 -1
- package/es/components/info-card/style/dnb-info-card.css +5 -0
- package/es/components/info-card/style/dnb-info-card.min.css +1 -1
- package/es/components/info-card/style/dnb-info-card.scss +7 -0
- package/es/components/number-format/NumberFormat.js +4 -2
- package/es/components/number-format/NumberFormat.js.map +1 -1
- package/es/components/number-format/NumberUtils.d.ts +3 -0
- package/es/components/number-format/NumberUtils.js +6 -4
- package/es/components/number-format/NumberUtils.js.map +1 -1
- package/es/components/table/TableClickableHead.js +12 -3
- package/es/components/table/TableClickableHead.js.map +1 -1
- package/es/components/table/TableTr.js +4 -4
- package/es/components/table/TableTr.js.map +1 -1
- package/es/components/table/table-accordion/TableAccordionHead.d.ts +5 -0
- package/es/components/table/table-accordion/TableAccordionHead.js +28 -21
- package/es/components/table/table-accordion/TableAccordionHead.js.map +1 -1
- package/es/components/table/table-navigation/TableNavigationHead.js +4 -4
- package/es/components/table/table-navigation/TableNavigationHead.js.map +1 -1
- package/es/extensions/forms/Field/Currency/Currency.d.ts +9 -1
- package/es/extensions/forms/Field/Currency/Currency.js +8 -3
- package/es/extensions/forms/Field/Currency/Currency.js.map +1 -1
- package/es/extensions/forms/Field/Currency/CurrencyDocs.js +1 -1
- package/es/extensions/forms/Field/Currency/CurrencyDocs.js.map +1 -1
- package/es/extensions/forms/Field/Provider/useFieldProvider.d.ts +61 -3
- package/es/extensions/forms/Field/SelectCountry/SelectCountry.d.ts +2 -4
- package/es/extensions/forms/Field/SelectCountry/SelectCountry.js +4 -2
- package/es/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
- package/es/extensions/forms/Field/SelectCurrency/SelectCurrency.d.ts +51 -0
- package/es/extensions/forms/Field/SelectCurrency/SelectCurrency.js +263 -0
- package/es/extensions/forms/Field/SelectCurrency/SelectCurrency.js.map +1 -0
- package/es/extensions/forms/Field/SelectCurrency/SelectCurrencyDocs.d.ts +3 -0
- package/es/extensions/forms/Field/SelectCurrency/SelectCurrencyDocs.js +28 -0
- package/es/extensions/forms/Field/SelectCurrency/SelectCurrencyDocs.js.map +1 -0
- package/es/extensions/forms/Field/SelectCurrency/index.d.ts +2 -0
- package/es/extensions/forms/Field/SelectCurrency/index.js +3 -0
- package/es/extensions/forms/Field/SelectCurrency/index.js.map +1 -0
- package/es/extensions/forms/Field/index.d.ts +1 -0
- package/es/extensions/forms/Field/index.js +1 -0
- package/es/extensions/forms/Field/index.js.map +1 -1
- package/es/extensions/forms/FieldBlock/FieldBlock.d.ts +2 -2
- package/es/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
- package/es/extensions/forms/Value/Currency/Currency.d.ts +7 -1
- package/es/extensions/forms/Value/Currency/Currency.js.map +1 -1
- package/es/extensions/forms/Value/SelectCountry/SelectCountry.d.ts +2 -1
- package/es/extensions/forms/Value/SelectCountry/SelectCountry.js.map +1 -1
- package/es/extensions/forms/Value/SelectCurrency/SelectCurrency.d.ts +9 -0
- package/es/extensions/forms/Value/SelectCurrency/SelectCurrency.js +29 -0
- package/es/extensions/forms/Value/SelectCurrency/SelectCurrency.js.map +1 -0
- package/es/extensions/forms/Value/SelectCurrency/index.d.ts +2 -0
- package/es/extensions/forms/Value/SelectCurrency/index.js +3 -0
- package/es/extensions/forms/Value/SelectCurrency/index.js.map +1 -0
- package/es/extensions/forms/Value/SelectCurrency/useCurrency.d.ts +4 -0
- package/es/extensions/forms/Value/SelectCurrency/useCurrency.js +26 -0
- package/es/extensions/forms/Value/SelectCurrency/useCurrency.js.map +1 -0
- package/es/extensions/forms/Value/index.d.ts +1 -0
- package/es/extensions/forms/Value/index.js +1 -0
- package/es/extensions/forms/Value/index.js.map +1 -1
- package/es/extensions/forms/Wizard/Container/DisplaySteps.js +4 -0
- package/es/extensions/forms/Wizard/Container/DisplaySteps.js.map +1 -1
- package/es/extensions/forms/Wizard/Container/IterateOverSteps.js +6 -1
- package/es/extensions/forms/Wizard/Container/IterateOverSteps.js.map +1 -1
- package/es/extensions/forms/Wizard/Container/WizardContainer.js +5 -3
- package/es/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
- package/es/extensions/forms/Wizard/Context/WizardContext.d.ts +1 -0
- package/es/extensions/forms/Wizard/Context/WizardContext.js.map +1 -1
- package/es/extensions/forms/constants/allCurrencies.d.ts +1786 -0
- package/es/extensions/forms/constants/allCurrencies.js +1440 -0
- package/es/extensions/forms/constants/allCurrencies.js.map +1 -0
- package/es/extensions/forms/constants/countries.d.ts +4023 -4
- package/es/extensions/forms/constants/countries.js.map +1 -1
- package/es/extensions/forms/constants/currencies.d.ts +716 -0
- package/es/extensions/forms/constants/currencies.js +5 -0
- package/es/extensions/forms/constants/currencies.js.map +1 -0
- package/es/extensions/forms/constants/locales/en-GB.d.ts +5 -0
- package/es/extensions/forms/constants/locales/en-GB.js +5 -0
- package/es/extensions/forms/constants/locales/en-GB.js.map +1 -1
- package/es/extensions/forms/constants/locales/en-US.d.ts +5 -0
- package/es/extensions/forms/constants/locales/index.d.ts +10 -0
- package/es/extensions/forms/constants/locales/nb-NO.d.ts +5 -0
- package/es/extensions/forms/constants/locales/nb-NO.js +5 -0
- package/es/extensions/forms/constants/locales/nb-NO.js.map +1 -1
- package/es/extensions/forms/constants/locales/sv-SE.d.ts +5 -0
- package/es/extensions/forms/constants/locales/sv-SE.js +5 -0
- package/es/extensions/forms/constants/locales/sv-SE.js.map +1 -1
- package/es/extensions/forms/hooks/useFieldProps.js +18 -17
- package/es/extensions/forms/hooks/useFieldProps.js.map +1 -1
- package/es/extensions/forms/types.d.ts +4 -4
- package/es/extensions/forms/types.js.map +1 -1
- package/es/shared/Eufemia.d.ts +1 -1
- package/es/shared/Eufemia.js +2 -2
- package/es/shared/Eufemia.js.map +1 -1
- package/es/shared/Translation.js +5 -4
- package/es/shared/Translation.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 +5 -0
- 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/themes/theme-eiendom/eiendom-theme-components.css +5 -0
- package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +1 -1
- package/es/style/themes/theme-sbanken/sbanken-theme-components.css +5 -0
- package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +1 -1
- package/es/style/themes/theme-ui/ui-theme-components.css +5 -0
- package/es/style/themes/theme-ui/ui-theme-components.min.css +1 -1
- package/esm/dnb-ui-basis.min.mjs +1 -1
- package/esm/dnb-ui-components.min.mjs +1 -1
- package/esm/dnb-ui-elements.min.mjs +1 -1
- package/esm/dnb-ui-extensions.min.mjs +1 -1
- package/esm/dnb-ui-lib.min.mjs +1 -1
- package/extensions/forms/Field/Currency/Currency.d.ts +9 -1
- package/extensions/forms/Field/Currency/Currency.js +8 -3
- package/extensions/forms/Field/Currency/Currency.js.map +1 -1
- package/extensions/forms/Field/Currency/CurrencyDocs.js +1 -1
- package/extensions/forms/Field/Currency/CurrencyDocs.js.map +1 -1
- package/extensions/forms/Field/Provider/useFieldProvider.d.ts +61 -3
- package/extensions/forms/Field/SelectCountry/SelectCountry.d.ts +2 -4
- package/extensions/forms/Field/SelectCountry/SelectCountry.js +4 -2
- package/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
- package/extensions/forms/Field/SelectCurrency/SelectCurrency.d.ts +51 -0
- package/extensions/forms/Field/SelectCurrency/SelectCurrency.js +275 -0
- package/extensions/forms/Field/SelectCurrency/SelectCurrency.js.map +1 -0
- package/extensions/forms/Field/SelectCurrency/SelectCurrencyDocs.d.ts +3 -0
- package/extensions/forms/Field/SelectCurrency/SelectCurrencyDocs.js +28 -0
- package/extensions/forms/Field/SelectCurrency/SelectCurrencyDocs.js.map +1 -0
- package/extensions/forms/Field/SelectCurrency/index.d.ts +2 -0
- package/extensions/forms/Field/SelectCurrency/index.js +3 -0
- package/extensions/forms/Field/SelectCurrency/index.js.map +1 -0
- package/extensions/forms/Field/index.d.ts +1 -0
- package/extensions/forms/Field/index.js +1 -0
- package/extensions/forms/Field/index.js.map +1 -1
- package/extensions/forms/FieldBlock/FieldBlock.d.ts +2 -2
- package/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
- package/extensions/forms/Value/Currency/Currency.d.ts +7 -1
- package/extensions/forms/Value/Currency/Currency.js.map +1 -1
- package/extensions/forms/Value/SelectCountry/SelectCountry.d.ts +2 -1
- package/extensions/forms/Value/SelectCountry/SelectCountry.js.map +1 -1
- package/extensions/forms/Value/SelectCurrency/SelectCurrency.d.ts +9 -0
- package/extensions/forms/Value/SelectCurrency/SelectCurrency.js +29 -0
- package/extensions/forms/Value/SelectCurrency/SelectCurrency.js.map +1 -0
- package/extensions/forms/Value/SelectCurrency/index.d.ts +2 -0
- package/extensions/forms/Value/SelectCurrency/index.js +3 -0
- package/extensions/forms/Value/SelectCurrency/index.js.map +1 -0
- package/extensions/forms/Value/SelectCurrency/useCurrency.d.ts +4 -0
- package/extensions/forms/Value/SelectCurrency/useCurrency.js +26 -0
- package/extensions/forms/Value/SelectCurrency/useCurrency.js.map +1 -0
- package/extensions/forms/Value/index.d.ts +1 -0
- package/extensions/forms/Value/index.js +1 -0
- package/extensions/forms/Value/index.js.map +1 -1
- package/extensions/forms/Wizard/Container/DisplaySteps.js +4 -0
- package/extensions/forms/Wizard/Container/DisplaySteps.js.map +1 -1
- package/extensions/forms/Wizard/Container/IterateOverSteps.js +6 -1
- package/extensions/forms/Wizard/Container/IterateOverSteps.js.map +1 -1
- package/extensions/forms/Wizard/Container/WizardContainer.js +5 -3
- package/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
- package/extensions/forms/Wizard/Context/WizardContext.d.ts +1 -0
- package/extensions/forms/Wizard/Context/WizardContext.js.map +1 -1
- package/extensions/forms/constants/allCurrencies.d.ts +1786 -0
- package/extensions/forms/constants/allCurrencies.js +1441 -0
- package/extensions/forms/constants/allCurrencies.js.map +1 -0
- package/extensions/forms/constants/countries.d.ts +4023 -4
- package/extensions/forms/constants/countries.js.map +1 -1
- package/extensions/forms/constants/currencies.d.ts +716 -0
- package/extensions/forms/constants/currencies.js +6 -0
- package/extensions/forms/constants/currencies.js.map +1 -0
- package/extensions/forms/constants/locales/en-GB.d.ts +5 -0
- package/extensions/forms/constants/locales/en-GB.js +5 -0
- package/extensions/forms/constants/locales/en-GB.js.map +1 -1
- package/extensions/forms/constants/locales/en-US.d.ts +5 -0
- package/extensions/forms/constants/locales/index.d.ts +10 -0
- package/extensions/forms/constants/locales/nb-NO.d.ts +5 -0
- package/extensions/forms/constants/locales/nb-NO.js +5 -0
- package/extensions/forms/constants/locales/nb-NO.js.map +1 -1
- package/extensions/forms/constants/locales/sv-SE.d.ts +5 -0
- package/extensions/forms/constants/locales/sv-SE.js +5 -0
- package/extensions/forms/constants/locales/sv-SE.js.map +1 -1
- package/extensions/forms/hooks/useFieldProps.js +18 -17
- package/extensions/forms/hooks/useFieldProps.js.map +1 -1
- package/extensions/forms/types.d.ts +4 -4
- package/extensions/forms/types.js.map +1 -1
- package/package.json +2 -2
- package/shared/Eufemia.d.ts +1 -1
- package/shared/Eufemia.js +2 -2
- package/shared/Eufemia.js.map +1 -1
- package/shared/Translation.js +5 -4
- package/shared/Translation.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 +5 -0
- 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/themes/theme-eiendom/eiendom-theme-components.css +5 -0
- package/style/themes/theme-eiendom/eiendom-theme-components.min.css +1 -1
- package/style/themes/theme-sbanken/sbanken-theme-components.css +5 -0
- package/style/themes/theme-sbanken/sbanken-theme-components.min.css +1 -1
- package/style/themes/theme-ui/ui-theme-components.css +5 -0
- package/style/themes/theme-ui/ui-theme-components.min.css +1 -1
- package/umd/dnb-ui-basis.min.js +1 -1
- package/umd/dnb-ui-components.min.js +1 -1
- package/umd/dnb-ui-elements.min.js +1 -1
- package/umd/dnb-ui-extensions.min.js +1 -1
- package/umd/dnb-ui-lib.min.js +1 -1
|
@@ -1,5 +1,13 @@
|
|
|
1
|
+
import { CurrencyISO } from '../../constants/currencies';
|
|
1
2
|
import { Props as NumberFieldProps } from '../Number';
|
|
2
|
-
|
|
3
|
+
import { PathStrict } from '../../types';
|
|
4
|
+
export type Props = NumberFieldProps & {
|
|
5
|
+
/**
|
|
6
|
+
* Will change the currency.
|
|
7
|
+
* You can also set a path as the value, e.g. `/myCurrencyPath`.
|
|
8
|
+
*/
|
|
9
|
+
currency?: PathStrict | CurrencyISO;
|
|
10
|
+
};
|
|
3
11
|
declare function Currency(props: Props): import("react/jsx-runtime").JSX.Element;
|
|
4
12
|
declare namespace Currency {
|
|
5
13
|
var _supportsSpacingProps: boolean;
|
|
@@ -9,13 +9,18 @@ import classnames from 'classnames';
|
|
|
9
9
|
import SharedContext from '../../../../shared/Context';
|
|
10
10
|
import { getCurrencySymbol } from '../../../../components/number-format/NumberUtils';
|
|
11
11
|
import { CURRENCY } from '../../../../shared/defaults';
|
|
12
|
+
import useDataValue from '../../hooks/useDataValue';
|
|
12
13
|
import NumberField from '../Number';
|
|
13
14
|
function Currency(props) {
|
|
14
|
-
var _props$
|
|
15
|
+
var _props$placeholder;
|
|
15
16
|
const sharedContext = useContext(SharedContext);
|
|
17
|
+
const {
|
|
18
|
+
getSourceValue
|
|
19
|
+
} = useDataValue();
|
|
20
|
+
const currencyValue = getSourceValue(props.currency);
|
|
16
21
|
const preparedProps = _objectSpread(_objectSpread({}, props), {}, {
|
|
17
|
-
currency:
|
|
18
|
-
placeholder: (_props$placeholder = props.placeholder) !== null && _props$placeholder !== void 0 ? _props$placeholder : getCurrencySymbol(sharedContext === null || sharedContext === void 0 ? void 0 : sharedContext.locale,
|
|
22
|
+
currency: currencyValue !== null && currencyValue !== void 0 ? currencyValue : CURRENCY,
|
|
23
|
+
placeholder: (_props$placeholder = props.placeholder) !== null && _props$placeholder !== void 0 ? _props$placeholder : getCurrencySymbol(sharedContext === null || sharedContext === void 0 ? void 0 : sharedContext.locale, currencyValue, props.currencyDisplay)
|
|
19
24
|
});
|
|
20
25
|
return React.createElement(NumberField, _extends({}, preparedProps, {
|
|
21
26
|
className: classnames('dnb-forms-field-currency', props.className)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Currency.js","names":["React","useContext","classnames","SharedContext","getCurrencySymbol","CURRENCY","NumberField","Currency","props","_props$
|
|
1
|
+
{"version":3,"file":"Currency.js","names":["React","useContext","classnames","SharedContext","getCurrencySymbol","CURRENCY","useDataValue","NumberField","Currency","props","_props$placeholder","sharedContext","getSourceValue","currencyValue","currency","preparedProps","_objectSpread","placeholder","locale","currencyDisplay","createElement","_extends","className","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Currency/Currency.tsx"],"sourcesContent":["import React, { useContext } from 'react'\nimport classnames from 'classnames'\nimport SharedContext from '../../../../shared/Context'\nimport { getCurrencySymbol } from '../../../../components/number-format/NumberUtils'\nimport { CURRENCY } from '../../../../shared/defaults'\nimport { CurrencyISO } from '../../constants/currencies'\nimport useDataValue from '../../hooks/useDataValue'\nimport NumberField, { Props as NumberFieldProps } from '../Number'\nimport { PathStrict } from '../../types'\n\nexport type Props = NumberFieldProps & {\n /**\n * Will change the currency.\n * You can also set a path as the value, e.g. `/myCurrencyPath`.\n */\n currency?: PathStrict | CurrencyISO\n}\n\nfunction Currency(props: Props) {\n const sharedContext = useContext(SharedContext)\n const { getSourceValue } = useDataValue()\n\n const currencyValue = getSourceValue(props.currency)\n\n const preparedProps = {\n ...props,\n currency: currencyValue ?? CURRENCY,\n placeholder:\n props.placeholder ??\n getCurrencySymbol(\n sharedContext?.locale,\n currencyValue,\n props.currencyDisplay\n ),\n }\n\n return (\n <NumberField\n {...preparedProps}\n className={classnames('dnb-forms-field-currency', props.className)}\n />\n )\n}\n\nCurrency._supportsSpacingProps = true\nexport default Currency\n"],"mappings":";;;;;;AAAA,OAAOA,KAAK,IAAIC,UAAU,QAAQ,OAAO;AACzC,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,aAAa,MAAM,4BAA4B;AACtD,SAASC,iBAAiB,QAAQ,kDAAkD;AACpF,SAASC,QAAQ,QAAQ,6BAA6B;AAEtD,OAAOC,YAAY,MAAM,0BAA0B;AACnD,OAAOC,WAAW,MAAqC,WAAW;AAWlE,SAASC,QAAQA,CAACC,KAAY,EAAE;EAAA,IAAAC,kBAAA;EAC9B,MAAMC,aAAa,GAAGV,UAAU,CAACE,aAAa,CAAC;EAC/C,MAAM;IAAES;EAAe,CAAC,GAAGN,YAAY,CAAC,CAAC;EAEzC,MAAMO,aAAa,GAAGD,cAAc,CAACH,KAAK,CAACK,QAAQ,CAAC;EAEpD,MAAMC,aAAa,GAAAC,aAAA,CAAAA,aAAA,KACdP,KAAK;IACRK,QAAQ,EAAED,aAAa,aAAbA,aAAa,cAAbA,aAAa,GAAIR,QAAQ;IACnCY,WAAW,GAAAP,kBAAA,GACTD,KAAK,CAACQ,WAAW,cAAAP,kBAAA,cAAAA,kBAAA,GACjBN,iBAAiB,CACfO,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEO,MAAM,EACrBL,aAAa,EACbJ,KAAK,CAACU,eACR;EAAC,EACJ;EAED,OACEnB,KAAA,CAAAoB,aAAA,CAACb,WAAW,EAAAc,QAAA,KACNN,aAAa;IACjBO,SAAS,EAAEpB,UAAU,CAAC,0BAA0B,EAAEO,KAAK,CAACa,SAAS;EAAE,EACpE,CAAC;AAEN;AAEAd,QAAQ,CAACe,qBAAqB,GAAG,IAAI;AACrC,eAAef,QAAQ","ignoreList":[]}
|
|
@@ -4,7 +4,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
4
4
|
import { numberProperties } from '../Number/NumberDocs';
|
|
5
5
|
export const currencyProperties = _objectSpread({
|
|
6
6
|
currency: {
|
|
7
|
-
doc: 'Defines what format to show the currency value in I.e `NOK` or `USD`.',
|
|
7
|
+
doc: 'Defines what format to show the currency value in I.e `NOK` or `USD`. You can also set a path as the value, e.g. `/myCurrencyPath`.',
|
|
8
8
|
type: 'string',
|
|
9
9
|
status: 'optional'
|
|
10
10
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CurrencyDocs.js","names":["numberProperties","currencyProperties","_objectSpread","currency","doc","type","status","currencyDisplay"],"sources":["../../../../../../src/extensions/forms/Field/Currency/CurrencyDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../../../shared/types'\nimport { numberProperties } from '../Number/NumberDocs'\n\nexport const currencyProperties: PropertiesTableProps = {\n currency: {\n doc: 'Defines what format to show the currency value in I.e `NOK` or `USD`.',\n type: 'string',\n status: 'optional',\n },\n currencyDisplay: {\n doc: 'Defined the currency display style. Defaults to `code`.',\n type: ['code', 'symbol', 'narrowSymbol', 'name'],\n status: 'optional',\n },\n ...numberProperties,\n}\n"],"mappings":";;;AACA,SAASA,gBAAgB,QAAQ,sBAAsB;AAEvD,OAAO,MAAMC,kBAAwC,GAAAC,aAAA;EACnDC,QAAQ,EAAE;IACRC,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"CurrencyDocs.js","names":["numberProperties","currencyProperties","_objectSpread","currency","doc","type","status","currencyDisplay"],"sources":["../../../../../../src/extensions/forms/Field/Currency/CurrencyDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../../../shared/types'\nimport { numberProperties } from '../Number/NumberDocs'\n\nexport const currencyProperties: PropertiesTableProps = {\n currency: {\n doc: 'Defines what format to show the currency value in I.e `NOK` or `USD`. You can also set a path as the value, e.g. `/myCurrencyPath`.',\n type: 'string',\n status: 'optional',\n },\n currencyDisplay: {\n doc: 'Defined the currency display style. Defaults to `code`.',\n type: ['code', 'symbol', 'narrowSymbol', 'name'],\n status: 'optional',\n },\n ...numberProperties,\n}\n"],"mappings":";;;AACA,SAASA,gBAAgB,QAAQ,sBAAsB;AAEvD,OAAO,MAAMC,kBAAwC,GAAAC,aAAA;EACnDC,QAAQ,EAAE;IACRC,GAAG,EAAE,qIAAqI;IAC1IC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDC,eAAe,EAAE;IACfH,GAAG,EAAE,yDAAyD;IAC9DC,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,CAAC;IAChDC,MAAM,EAAE;EACV;AAAC,GACEN,gBAAgB,CACpB","ignoreList":[]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
+
import { ContextState } from '../../DataContext/Context';
|
|
2
3
|
import { ContextProps } from '../../../../shared/Context';
|
|
3
4
|
import type { FieldProps } from '../../types';
|
|
4
5
|
import { FieldProviderProps } from './FieldProvider';
|
|
@@ -74,9 +75,66 @@ declare function useFieldProvider(props?: Omit<FieldProviderProps, 'children'>):
|
|
|
74
75
|
'aria-valuemin'?: number;
|
|
75
76
|
'aria-valuenow'?: number;
|
|
76
77
|
'aria-valuetext'?: string;
|
|
77
|
-
onFocus?: (value: unknown, additionalArgs?: import("../../types").
|
|
78
|
-
|
|
79
|
-
|
|
78
|
+
onFocus?: (value: unknown, additionalArgs?: import("../../types").ProvideAdditionalEventArgs & {
|
|
79
|
+
errorMessages: import("../../types").DefaultErrorMessages;
|
|
80
|
+
connectWithPath: (path: string) => {
|
|
81
|
+
getValue: () => unknown;
|
|
82
|
+
};
|
|
83
|
+
connectWithItemPath: (path: string) => {
|
|
84
|
+
getValue: () => unknown;
|
|
85
|
+
};
|
|
86
|
+
getValueByPath: import("../../hooks/useDataValue").GetValueByPath<unknown>;
|
|
87
|
+
getSourceValue: import("../../hooks/useDataValue").GetValueByPath<unknown>;
|
|
88
|
+
setFieldEventListener: (path: string, type: "onSubmit" | "onPathChange" | "onMount", callback: (params?: {
|
|
89
|
+
value: unknown;
|
|
90
|
+
}) => void | Promise<void | Error>) => void;
|
|
91
|
+
validators: Record<string, import("../../types").Validator<unknown, import("../../types").DefaultErrorMessages>>;
|
|
92
|
+
props: import("../../types").UseFieldProps<unknown, unknown, import("../../types").DefaultErrorMessages>;
|
|
93
|
+
dataContext: ContextState;
|
|
94
|
+
} & {
|
|
95
|
+
pattern?: string;
|
|
96
|
+
required?: string;
|
|
97
|
+
}) => void;
|
|
98
|
+
onBlur?: (value: unknown, additionalArgs?: import("../../types").ProvideAdditionalEventArgs & {
|
|
99
|
+
errorMessages: import("../../types").DefaultErrorMessages;
|
|
100
|
+
connectWithPath: (path: string) => {
|
|
101
|
+
getValue: () => unknown;
|
|
102
|
+
};
|
|
103
|
+
connectWithItemPath: (path: string) => {
|
|
104
|
+
getValue: () => unknown;
|
|
105
|
+
};
|
|
106
|
+
getValueByPath: import("../../hooks/useDataValue").GetValueByPath<unknown>;
|
|
107
|
+
getSourceValue: import("../../hooks/useDataValue").GetValueByPath<unknown>;
|
|
108
|
+
setFieldEventListener: (path: string, type: "onSubmit" | "onPathChange" | "onMount", callback: (params?: {
|
|
109
|
+
value: unknown;
|
|
110
|
+
}) => void | Promise<void | Error>) => void;
|
|
111
|
+
validators: Record<string, import("../../types").Validator<unknown, import("../../types").DefaultErrorMessages>>;
|
|
112
|
+
props: import("../../types").UseFieldProps<unknown, unknown, import("../../types").DefaultErrorMessages>;
|
|
113
|
+
dataContext: ContextState;
|
|
114
|
+
} & {
|
|
115
|
+
pattern?: string;
|
|
116
|
+
required?: string;
|
|
117
|
+
}) => void;
|
|
118
|
+
onChange?: (value: unknown, additionalArgs?: import("../../types").ProvideAdditionalEventArgs & {
|
|
119
|
+
errorMessages: import("../../types").DefaultErrorMessages;
|
|
120
|
+
connectWithPath: (path: string) => {
|
|
121
|
+
getValue: () => unknown;
|
|
122
|
+
};
|
|
123
|
+
connectWithItemPath: (path: string) => {
|
|
124
|
+
getValue: () => unknown;
|
|
125
|
+
};
|
|
126
|
+
getValueByPath: import("../../hooks/useDataValue").GetValueByPath<unknown>;
|
|
127
|
+
getSourceValue: import("../../hooks/useDataValue").GetValueByPath<unknown>;
|
|
128
|
+
setFieldEventListener: (path: string, type: "onSubmit" | "onPathChange" | "onMount", callback: (params?: {
|
|
129
|
+
value: unknown;
|
|
130
|
+
}) => void | Promise<void | Error>) => void;
|
|
131
|
+
validators: Record<string, import("../../types").Validator<unknown, import("../../types").DefaultErrorMessages>>;
|
|
132
|
+
props: import("../../types").UseFieldProps<unknown, unknown, import("../../types").DefaultErrorMessages>;
|
|
133
|
+
dataContext: ContextState;
|
|
134
|
+
} & {
|
|
135
|
+
pattern?: string;
|
|
136
|
+
required?: string;
|
|
137
|
+
}) => void | import("../../types").EventReturnWithStateObjectAndSuccess | Promise<void | import("../../types").EventReturnWithStateObjectAndSuccess>;
|
|
80
138
|
help?: import("../../../../components/help-button/HelpButtonInline").HelpProps;
|
|
81
139
|
locale?: string;
|
|
82
140
|
autoComplete?: AutoFill;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { type CountryType, type CountryLang } from '../../constants/countries';
|
|
1
|
+
import { type CountryType, type CountryLang, type CountryISO } from '../../constants/countries';
|
|
2
2
|
import { FieldPropsWithExtraValue } from '../../types';
|
|
3
3
|
import { FieldBlockWidth } from '../../FieldBlock';
|
|
4
4
|
import { AutocompleteAllProps } from '../../../../components/autocomplete/Autocomplete';
|
|
5
5
|
export type CountryFilterSet = 'Scandinavia' | 'Nordic' | 'Europe' | 'Prioritized';
|
|
6
6
|
export type { CountryType };
|
|
7
|
-
export type Props = FieldPropsWithExtraValue<
|
|
7
|
+
export type Props = FieldPropsWithExtraValue<CountryISO, CountryType, undefined | string> & {
|
|
8
8
|
/**
|
|
9
9
|
* Lists only the countries you want to show. Can be `Scandinavia`, `Nordic`, `Europe` or `Prioritized`.
|
|
10
10
|
* Defaults to `Prioritized`.
|
|
@@ -37,13 +37,11 @@ type GetCountryData = {
|
|
|
37
37
|
sort?: Extract<CountryFilterSet, 'Prioritized'>;
|
|
38
38
|
makeObject?: (country: CountryType, lang: string) => {
|
|
39
39
|
selectedKey: string;
|
|
40
|
-
selected_value?: string;
|
|
41
40
|
content: string;
|
|
42
41
|
};
|
|
43
42
|
};
|
|
44
43
|
export declare function getCountryData({ lang, filter, sort, makeObject, }?: GetCountryData): {
|
|
45
44
|
selectedKey: string;
|
|
46
|
-
selected_value?: string;
|
|
47
45
|
content: string;
|
|
48
46
|
}[];
|
|
49
47
|
export declare function countryFilter(country: CountryType, filterCountries: (country: CountryType) => boolean, ccFilter: CountryFilterSet): boolean;
|
|
@@ -65,6 +65,8 @@ function SelectCountry(props) {
|
|
|
65
65
|
size,
|
|
66
66
|
value,
|
|
67
67
|
width,
|
|
68
|
+
noAnimation,
|
|
69
|
+
autoComplete,
|
|
68
70
|
htmlAttributes,
|
|
69
71
|
handleFocus,
|
|
70
72
|
handleBlur,
|
|
@@ -177,8 +179,8 @@ function SelectCountry(props) {
|
|
|
177
179
|
status: hasError ? 'error' : undefined,
|
|
178
180
|
show_submit_button: true,
|
|
179
181
|
keep_selection: true,
|
|
180
|
-
autoComplete:
|
|
181
|
-
no_animation:
|
|
182
|
+
autoComplete: autoComplete !== null && autoComplete !== void 0 ? autoComplete : 'country-name',
|
|
183
|
+
no_animation: noAnimation
|
|
182
184
|
}, htmlAttributes)));
|
|
183
185
|
}
|
|
184
186
|
export function getCountryData() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectCountry.js","names":["React","useCallback","useContext","useMemo","useRef","classnames","SharedContext","FieldBlockContext","LOCALE","Autocomplete","pickSpacingProps","countries","prioritizedCountries","useFieldProps","FieldBlock","useTranslation","SelectCountry","props","_props$width","sharedContext","fieldBlockContext","label","defaultLabel","placeholder","defaultPlaceholder","errorRequired","lang","locale","split","getCountryObjectByIso","value","country","find","_ref","iso","i18n","provideAdditionalArgs","errorMessages","required","preparedProps","_objectSpread","width","composition","id","path","itemPath","className","ccFilter","hasError","disabled","size","htmlAttributes","handleFocus","handleBlur","handleChange","updateValue","setDisplayValue","forceUpdate","filterCountries","dataRef","langRef","wasFilled","filter","countryFilter","isLangChange","current","getCountryData","sort","window","requestAnimationFrame","handleCountryChange","_ref2","data","newValue","selectedKey","fillData","onFocusHandler","_ref3","updateData","onTypeHandler","_ref4","_event$nativeEvent","currentValue","setHidden","event","nativeEvent","search","toLowerCase","_ref5","Object","values","some","s","includes","_getCountryObjectByIs","_getCountryObjectByIs2","fieldBlockProps","forId","undefined","contentWidth","createElement","_extends","input_icon","on_show","on_focus","on_blur","on_change","on_type","stretch","status","show_submit_button","keep_selection","autoComplete","no_animation","noAnimation","makeObject","_country$i18n$lang","content","en","arguments","length","sortedCountries","_ref6","_ref7","_String","_String$localeCompare","a","b","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 FieldBlockContext from '../../FieldBlock/FieldBlockContext'\nimport { LOCALE } from '../../../../shared/defaults'\nimport { Autocomplete } 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 { FieldPropsWithExtraValue } from '../../types'\nimport FieldBlock, {\n Props as FieldBlockProps,\n FieldBlockWidth,\n} from '../../FieldBlock'\nimport useTranslation from '../../hooks/useTranslation'\nimport { AutocompleteAllProps } from '../../../../components/autocomplete/Autocomplete'\n\nexport type CountryFilterSet =\n | 'Scandinavia'\n | 'Nordic'\n | 'Europe'\n | 'Prioritized'\nexport type { CountryType }\n\nexport type Props = FieldPropsWithExtraValue<\n string,\n CountryType,\n undefined | string\n> & {\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 /**\n * The size of the component.\n */\n size?: AutocompleteAllProps['size']\n}\n\nfunction SelectCountry(props: Props) {\n const sharedContext = useContext(SharedContext)\n const fieldBlockContext = useContext(FieldBlockContext)\n const {\n label: defaultLabel,\n placeholder: defaultPlaceholder,\n errorRequired,\n } = 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 = useMemo(\n () => ({\n required: errorRequired,\n }),\n [errorRequired]\n )\n\n const preparedProps: Props = {\n errorMessages,\n ...props,\n width:\n props.width ??\n (fieldBlockContext?.composition ? 'stretch' : 'large'),\n provideAdditionalArgs,\n }\n\n const {\n id,\n path,\n itemPath,\n className,\n placeholder = defaultPlaceholder,\n label = defaultLabel,\n countries: ccFilter = 'Prioritized',\n hasError,\n disabled,\n size,\n value,\n width,\n htmlAttributes,\n handleFocus,\n handleBlur,\n handleChange,\n updateValue,\n setDisplayValue,\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 useMemo(() => {\n if (path || itemPath) {\n setDisplayValue(\n getCountryObjectByIso(value)?.i18n?.[langRef.current]\n )\n }\n }, [getCountryObjectByIso, itemPath, path, setDisplayValue, value])\n\n const fieldBlockProps: FieldBlockProps = {\n forId: id,\n className: classnames('dnb-forms-field-select-country', className),\n label,\n width:\n width === 'stretch' || fieldBlockContext?.composition\n ? width\n : undefined,\n contentWidth: width !== false ? width : undefined,\n ...pickSpacingProps(props),\n }\n\n return (\n <FieldBlock {...fieldBlockProps}>\n <Autocomplete\n id={id}\n placeholder={placeholder}\n input_icon={false}\n data={dataRef.current}\n value={typeof value === 'string' ? value : null}\n disabled={disabled}\n size={size}\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 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 const sortedCountries = 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], 'nb') // Always sort by nb, because åøæ (for Åland) is not in the en alphabet\n })\n .map((country) => makeObject(country, lang))\n\n if (sortedCountries.length === 0) {\n return undefined\n }\n\n return sortedCountries\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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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"SelectCountry.js","names":["React","useCallback","useContext","useMemo","useRef","classnames","SharedContext","FieldBlockContext","LOCALE","Autocomplete","pickSpacingProps","countries","prioritizedCountries","useFieldProps","FieldBlock","useTranslation","SelectCountry","props","_props$width","sharedContext","fieldBlockContext","label","defaultLabel","placeholder","defaultPlaceholder","errorRequired","lang","locale","split","getCountryObjectByIso","value","country","find","_ref","iso","i18n","provideAdditionalArgs","errorMessages","required","preparedProps","_objectSpread","width","composition","id","path","itemPath","className","ccFilter","hasError","disabled","size","noAnimation","autoComplete","htmlAttributes","handleFocus","handleBlur","handleChange","updateValue","setDisplayValue","forceUpdate","filterCountries","dataRef","langRef","wasFilled","filter","countryFilter","isLangChange","current","getCountryData","sort","window","requestAnimationFrame","handleCountryChange","_ref2","data","newValue","selectedKey","fillData","onFocusHandler","_ref3","updateData","onTypeHandler","_ref4","_event$nativeEvent","currentValue","setHidden","event","nativeEvent","search","toLowerCase","_ref5","Object","values","some","s","includes","_getCountryObjectByIs","_getCountryObjectByIs2","fieldBlockProps","forId","undefined","contentWidth","createElement","_extends","input_icon","on_show","on_focus","on_blur","on_change","on_type","stretch","status","show_submit_button","keep_selection","no_animation","makeObject","_country$i18n$lang","content","en","arguments","length","sortedCountries","_ref6","_ref7","_String","_String$localeCompare","a","b","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 FieldBlockContext from '../../FieldBlock/FieldBlockContext'\nimport { LOCALE } from '../../../../shared/defaults'\nimport { Autocomplete } from '../../../../components'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport countries, {\n prioritizedCountries,\n type CountryType,\n type CountryLang,\n type CountryISO,\n} from '../../constants/countries'\nimport { useFieldProps } from '../../hooks'\nimport { FieldPropsWithExtraValue } from '../../types'\nimport FieldBlock, {\n Props as FieldBlockProps,\n FieldBlockWidth,\n} from '../../FieldBlock'\nimport useTranslation from '../../hooks/useTranslation'\nimport { AutocompleteAllProps } from '../../../../components/autocomplete/Autocomplete'\n\nexport type CountryFilterSet =\n | 'Scandinavia'\n | 'Nordic'\n | 'Europe'\n | 'Prioritized'\nexport type { CountryType }\n\nexport type Props = FieldPropsWithExtraValue<\n CountryISO,\n CountryType,\n undefined | string\n> & {\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 /**\n * The size of the component.\n */\n size?: AutocompleteAllProps['size']\n}\n\nfunction SelectCountry(props: Props) {\n const sharedContext = useContext(SharedContext)\n const fieldBlockContext = useContext(FieldBlockContext)\n const {\n label: defaultLabel,\n placeholder: defaultPlaceholder,\n errorRequired,\n } = 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 = useMemo(\n () => ({\n required: errorRequired,\n }),\n [errorRequired]\n )\n\n const preparedProps: Props = {\n errorMessages,\n ...props,\n width:\n props.width ??\n (fieldBlockContext?.composition ? 'stretch' : 'large'),\n provideAdditionalArgs,\n }\n\n const {\n id,\n path,\n itemPath,\n className,\n placeholder = defaultPlaceholder,\n label = defaultLabel,\n countries: ccFilter = 'Prioritized',\n hasError,\n disabled,\n size,\n value,\n width,\n noAnimation,\n autoComplete,\n htmlAttributes,\n handleFocus,\n handleBlur,\n handleChange,\n updateValue,\n setDisplayValue,\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 useMemo(() => {\n if (path || itemPath) {\n setDisplayValue(\n getCountryObjectByIso(value)?.i18n?.[langRef.current]\n )\n }\n }, [getCountryObjectByIso, itemPath, path, setDisplayValue, value])\n\n const fieldBlockProps: FieldBlockProps = {\n forId: id,\n className: classnames('dnb-forms-field-select-country', className),\n label,\n width:\n width === 'stretch' || fieldBlockContext?.composition\n ? width\n : undefined,\n contentWidth: width !== false ? width : undefined,\n ...pickSpacingProps(props),\n }\n\n return (\n <FieldBlock {...fieldBlockProps}>\n <Autocomplete\n id={id}\n placeholder={placeholder}\n input_icon={false}\n data={dataRef.current}\n value={typeof value === 'string' ? value : null}\n disabled={disabled}\n size={size}\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 autoComplete={autoComplete ?? 'country-name'}\n no_animation={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 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 const sortedCountries = 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], 'nb') // Always sort by nb, because åøæ (for Åland) is not in the en alphabet\n })\n .map((country) => makeObject(country, lang))\n\n if (sortedCountries.length === 0) {\n return undefined\n }\n\n return sortedCountries\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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","ignoreList":[]}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { type CurrencyType, type CurrencyLang, type CurrencyISO } from '../../constants/currencies';
|
|
2
|
+
import { FieldPropsWithExtraValue } from '../../types';
|
|
3
|
+
import { FieldBlockWidth } from '../../FieldBlock';
|
|
4
|
+
import { AutocompleteAllProps } from '../../../../components/autocomplete/Autocomplete';
|
|
5
|
+
export type CurrencyFilterSet = 'Scandinavia' | 'Nordic' | 'Europe' | 'Prioritized';
|
|
6
|
+
export type { CurrencyType };
|
|
7
|
+
export type Props = FieldPropsWithExtraValue<CurrencyISO, CurrencyType, undefined | string> & {
|
|
8
|
+
/**
|
|
9
|
+
* Lists only the currencies you want to show. Can be `Scandinavia`, `Nordic`, `Europe` or `Prioritized`.
|
|
10
|
+
* Defaults to `Prioritized`.
|
|
11
|
+
*/
|
|
12
|
+
currencies?: CurrencyFilterSet;
|
|
13
|
+
/**
|
|
14
|
+
* Use this prop to filter out certain currencies. The function receives the currency object and should return a boolean. Returning `false` will omit the currency.
|
|
15
|
+
*/
|
|
16
|
+
filterCurrencies?: (currency: CurrencyType) => boolean;
|
|
17
|
+
/**
|
|
18
|
+
* For internal testing purposes
|
|
19
|
+
*/
|
|
20
|
+
noAnimation?: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* The width of the component.
|
|
23
|
+
*/
|
|
24
|
+
width?: FieldBlockWidth;
|
|
25
|
+
/**
|
|
26
|
+
* The size of the component.
|
|
27
|
+
*/
|
|
28
|
+
size?: AutocompleteAllProps['size'];
|
|
29
|
+
};
|
|
30
|
+
declare function SelectCurrency(props: Props): import("react/jsx-runtime").JSX.Element;
|
|
31
|
+
declare namespace SelectCurrency {
|
|
32
|
+
var _supportsSpacingProps: boolean;
|
|
33
|
+
}
|
|
34
|
+
type GetCurrencyData = {
|
|
35
|
+
lang?: CurrencyLang;
|
|
36
|
+
filter?: Props['filterCurrencies'];
|
|
37
|
+
sort?: Extract<CurrencyFilterSet, 'Prioritized'>;
|
|
38
|
+
makeObject?: (currency: CurrencyType, lang: string) => {
|
|
39
|
+
selectedKey: string;
|
|
40
|
+
selected_value: string;
|
|
41
|
+
content: string[];
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
export declare function getCurrencyData({ lang, filter, sort, makeObject, }?: GetCurrencyData): {
|
|
45
|
+
selectedKey: string;
|
|
46
|
+
selected_value: string;
|
|
47
|
+
content: string[];
|
|
48
|
+
}[];
|
|
49
|
+
export declare function currencyFilter(currency: CurrencyType, filterCurrencies: (currency: CurrencyType) => boolean, ccFilter: CurrencyFilterSet): boolean;
|
|
50
|
+
export declare function makeCurrencyFilterSet(ccFilter: CurrencyFilterSet): (currency: CurrencyType) => boolean;
|
|
51
|
+
export default SelectCurrency;
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
5
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
6
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
7
|
+
import React, { useCallback, useContext, useMemo, useRef } from 'react';
|
|
8
|
+
import classnames from 'classnames';
|
|
9
|
+
import SharedContext from '../../../../shared/Context';
|
|
10
|
+
import FieldBlockContext from '../../FieldBlock/FieldBlockContext';
|
|
11
|
+
import { LOCALE } from '../../../../shared/defaults';
|
|
12
|
+
import { Autocomplete } from '../../../../components';
|
|
13
|
+
import { pickSpacingProps } from '../../../../components/flex/utils';
|
|
14
|
+
import currencies, { prioritizedCurrencies } from '../../constants/currencies';
|
|
15
|
+
import { useFieldProps } from '../../hooks';
|
|
16
|
+
import FieldBlock from '../../FieldBlock';
|
|
17
|
+
import useTranslation from '../../hooks/useTranslation';
|
|
18
|
+
function SelectCurrency(props) {
|
|
19
|
+
var _props$width;
|
|
20
|
+
const sharedContext = useContext(SharedContext);
|
|
21
|
+
const fieldBlockContext = useContext(FieldBlockContext);
|
|
22
|
+
const {
|
|
23
|
+
label: defaultLabel,
|
|
24
|
+
placeholder: defaultPlaceholder,
|
|
25
|
+
errorRequired
|
|
26
|
+
} = useTranslation().SelectCurrency;
|
|
27
|
+
const lang = (sharedContext.locale || LOCALE).split('-')[0];
|
|
28
|
+
const getCurrencyObjectByIso = useCallback(value => {
|
|
29
|
+
const currency = currencies.find(_ref => {
|
|
30
|
+
let {
|
|
31
|
+
iso
|
|
32
|
+
} = _ref;
|
|
33
|
+
return value === iso;
|
|
34
|
+
});
|
|
35
|
+
if (currency !== null && currency !== void 0 && currency.i18n) {
|
|
36
|
+
currency['name'] = currency.i18n[lang];
|
|
37
|
+
}
|
|
38
|
+
return currency;
|
|
39
|
+
}, [lang]);
|
|
40
|
+
const provideAdditionalArgs = useCallback(value => {
|
|
41
|
+
const currency = getCurrencyObjectByIso(value);
|
|
42
|
+
if (currency !== null && currency !== void 0 && currency.iso) {
|
|
43
|
+
return currency;
|
|
44
|
+
}
|
|
45
|
+
}, [getCurrencyObjectByIso]);
|
|
46
|
+
const errorMessages = useMemo(() => ({
|
|
47
|
+
required: errorRequired
|
|
48
|
+
}), [errorRequired]);
|
|
49
|
+
const preparedProps = _objectSpread(_objectSpread({
|
|
50
|
+
errorMessages
|
|
51
|
+
}, props), {}, {
|
|
52
|
+
width: (_props$width = props.width) !== null && _props$width !== void 0 ? _props$width : fieldBlockContext !== null && fieldBlockContext !== void 0 && fieldBlockContext.composition ? 'stretch' : 'large',
|
|
53
|
+
provideAdditionalArgs
|
|
54
|
+
});
|
|
55
|
+
const {
|
|
56
|
+
id,
|
|
57
|
+
path,
|
|
58
|
+
itemPath,
|
|
59
|
+
className,
|
|
60
|
+
placeholder = defaultPlaceholder,
|
|
61
|
+
label = defaultLabel,
|
|
62
|
+
currencies: ccFilter = 'Prioritized',
|
|
63
|
+
hasError,
|
|
64
|
+
disabled,
|
|
65
|
+
size,
|
|
66
|
+
value,
|
|
67
|
+
width,
|
|
68
|
+
noAnimation,
|
|
69
|
+
autoComplete,
|
|
70
|
+
htmlAttributes,
|
|
71
|
+
handleFocus,
|
|
72
|
+
handleBlur,
|
|
73
|
+
handleChange,
|
|
74
|
+
updateValue,
|
|
75
|
+
setDisplayValue,
|
|
76
|
+
forceUpdate,
|
|
77
|
+
filterCurrencies
|
|
78
|
+
} = useFieldProps(preparedProps);
|
|
79
|
+
const dataRef = useRef(null);
|
|
80
|
+
const langRef = useRef(lang);
|
|
81
|
+
const wasFilled = useRef(false);
|
|
82
|
+
const filter = useCallback(currency => {
|
|
83
|
+
return currencyFilter(currency, filterCurrencies, ccFilter);
|
|
84
|
+
}, [ccFilter, filterCurrencies]);
|
|
85
|
+
useMemo(() => {
|
|
86
|
+
const isLangChange = lang !== langRef.current;
|
|
87
|
+
if (isLangChange || !wasFilled.current) {
|
|
88
|
+
langRef.current = lang;
|
|
89
|
+
dataRef.current = getCurrencyData({
|
|
90
|
+
lang,
|
|
91
|
+
filter: !wasFilled.current ? currency => currency.iso === value : filter,
|
|
92
|
+
sort: ccFilter
|
|
93
|
+
});
|
|
94
|
+
if (isLangChange && value && typeof window !== 'undefined') {
|
|
95
|
+
updateValue(null);
|
|
96
|
+
window.requestAnimationFrame(() => {
|
|
97
|
+
updateValue(value);
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}, [lang, filter, ccFilter, updateValue, value]);
|
|
102
|
+
const handleCurrencyChange = useCallback(_ref2 => {
|
|
103
|
+
let {
|
|
104
|
+
data
|
|
105
|
+
} = _ref2;
|
|
106
|
+
const newValue = data === null || data === void 0 ? void 0 : data.selectedKey;
|
|
107
|
+
const currency = getCurrencyObjectByIso(newValue);
|
|
108
|
+
if (currency !== null && currency !== void 0 && currency.iso) {
|
|
109
|
+
handleChange(currency.iso, currency);
|
|
110
|
+
}
|
|
111
|
+
}, [getCurrencyObjectByIso, handleChange]);
|
|
112
|
+
const fillData = useCallback(() => {
|
|
113
|
+
if (!wasFilled.current) {
|
|
114
|
+
wasFilled.current = true;
|
|
115
|
+
dataRef.current = getCurrencyData({
|
|
116
|
+
lang: langRef.current,
|
|
117
|
+
filter,
|
|
118
|
+
sort: ccFilter
|
|
119
|
+
});
|
|
120
|
+
forceUpdate();
|
|
121
|
+
}
|
|
122
|
+
}, [ccFilter, filter, forceUpdate]);
|
|
123
|
+
const onFocusHandler = useCallback(_ref3 => {
|
|
124
|
+
let {
|
|
125
|
+
updateData
|
|
126
|
+
} = _ref3;
|
|
127
|
+
fillData();
|
|
128
|
+
updateData(dataRef.current);
|
|
129
|
+
handleFocus();
|
|
130
|
+
}, [fillData, handleFocus]);
|
|
131
|
+
const onTypeHandler = useCallback(_ref4 => {
|
|
132
|
+
var _event$nativeEvent;
|
|
133
|
+
let {
|
|
134
|
+
value: currentValue,
|
|
135
|
+
setHidden,
|
|
136
|
+
event
|
|
137
|
+
} = _ref4;
|
|
138
|
+
if (typeof (event === null || event === void 0 ? void 0 : (_event$nativeEvent = event.nativeEvent) === null || _event$nativeEvent === void 0 ? void 0 : _event$nativeEvent.data) === 'undefined') {
|
|
139
|
+
const search = currentValue.toLowerCase();
|
|
140
|
+
const currency = currencies.find(_ref5 => {
|
|
141
|
+
let {
|
|
142
|
+
i18n
|
|
143
|
+
} = _ref5;
|
|
144
|
+
return Object.values(i18n).some(s => s.toLowerCase().includes(search));
|
|
145
|
+
});
|
|
146
|
+
if (currency !== null && currency !== void 0 && currency.iso) {
|
|
147
|
+
setHidden();
|
|
148
|
+
handleChange(currency.iso);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}, [handleChange]);
|
|
152
|
+
useMemo(() => {
|
|
153
|
+
if (path || itemPath) {
|
|
154
|
+
var _getCurrencyObjectByI, _getCurrencyObjectByI2;
|
|
155
|
+
setDisplayValue((_getCurrencyObjectByI = getCurrencyObjectByIso(value)) === null || _getCurrencyObjectByI === void 0 ? void 0 : (_getCurrencyObjectByI2 = _getCurrencyObjectByI.i18n) === null || _getCurrencyObjectByI2 === void 0 ? void 0 : _getCurrencyObjectByI2[langRef.current]);
|
|
156
|
+
}
|
|
157
|
+
}, [getCurrencyObjectByIso, itemPath, path, setDisplayValue, value]);
|
|
158
|
+
const fieldBlockProps = _objectSpread({
|
|
159
|
+
forId: id,
|
|
160
|
+
className: classnames('dnb-forms-field-select-currency', className),
|
|
161
|
+
label,
|
|
162
|
+
width: width === 'stretch' || fieldBlockContext !== null && fieldBlockContext !== void 0 && fieldBlockContext.composition ? width : undefined,
|
|
163
|
+
contentWidth: width !== false ? width : undefined
|
|
164
|
+
}, pickSpacingProps(props));
|
|
165
|
+
return React.createElement(FieldBlock, fieldBlockProps, React.createElement(Autocomplete, _extends({
|
|
166
|
+
id: id,
|
|
167
|
+
placeholder: placeholder,
|
|
168
|
+
input_icon: false,
|
|
169
|
+
data: dataRef.current,
|
|
170
|
+
value: typeof value === 'string' ? value : null,
|
|
171
|
+
disabled: disabled,
|
|
172
|
+
size: size,
|
|
173
|
+
on_show: fillData,
|
|
174
|
+
on_focus: onFocusHandler,
|
|
175
|
+
on_blur: handleBlur,
|
|
176
|
+
on_change: handleCurrencyChange,
|
|
177
|
+
on_type: onTypeHandler,
|
|
178
|
+
stretch: true,
|
|
179
|
+
status: hasError ? 'error' : undefined,
|
|
180
|
+
show_submit_button: true,
|
|
181
|
+
keep_selection: true,
|
|
182
|
+
autoComplete: autoComplete,
|
|
183
|
+
no_animation: noAnimation
|
|
184
|
+
}, htmlAttributes)));
|
|
185
|
+
}
|
|
186
|
+
export function getCurrencyData() {
|
|
187
|
+
let {
|
|
188
|
+
lang = 'nb',
|
|
189
|
+
filter = null,
|
|
190
|
+
sort = null,
|
|
191
|
+
makeObject = (currency, lang) => {
|
|
192
|
+
var _currency$i18n$lang;
|
|
193
|
+
const translation = (_currency$i18n$lang = currency.i18n[lang]) !== null && _currency$i18n$lang !== void 0 ? _currency$i18n$lang : currency.i18n.en;
|
|
194
|
+
const content = [translation, currency.iso];
|
|
195
|
+
return {
|
|
196
|
+
selectedKey: currency.iso,
|
|
197
|
+
selected_value: `${translation} (${currency.iso})`,
|
|
198
|
+
content
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
202
|
+
const sortedCurrencies = currencies.filter(currency => {
|
|
203
|
+
if (typeof filter === 'function') {
|
|
204
|
+
return filter(currency);
|
|
205
|
+
}
|
|
206
|
+
return !filter;
|
|
207
|
+
}).sort((_ref6, _ref7) => {
|
|
208
|
+
var _String, _String$localeCompare;
|
|
209
|
+
let {
|
|
210
|
+
i18n: a,
|
|
211
|
+
iso: a1
|
|
212
|
+
} = _ref6;
|
|
213
|
+
let {
|
|
214
|
+
i18n: b,
|
|
215
|
+
iso: b1
|
|
216
|
+
} = _ref7;
|
|
217
|
+
if (sort === 'Prioritized') {
|
|
218
|
+
const indexA = prioritizedCurrencies.indexOf(a1);
|
|
219
|
+
const indexB = prioritizedCurrencies.indexOf(b1);
|
|
220
|
+
const priorityA = indexA !== -1;
|
|
221
|
+
const priorityB = indexB !== -1;
|
|
222
|
+
if (priorityA && priorityB) {
|
|
223
|
+
return indexA - indexB;
|
|
224
|
+
} else if (priorityA) {
|
|
225
|
+
return -1;
|
|
226
|
+
} else if (priorityB) {
|
|
227
|
+
return 1;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
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], 'nb');
|
|
231
|
+
}).map(currency => makeObject(currency, lang));
|
|
232
|
+
if (sortedCurrencies.length === 0) {
|
|
233
|
+
return undefined;
|
|
234
|
+
}
|
|
235
|
+
return sortedCurrencies;
|
|
236
|
+
}
|
|
237
|
+
export function currencyFilter(currency, filterCurrencies, ccFilter) {
|
|
238
|
+
let result = true;
|
|
239
|
+
if (ccFilter !== 'Prioritized') {
|
|
240
|
+
switch (ccFilter) {
|
|
241
|
+
case 'Scandinavia':
|
|
242
|
+
case 'Nordic':
|
|
243
|
+
{
|
|
244
|
+
var _currency$regions;
|
|
245
|
+
result = (_currency$regions = currency.regions) === null || _currency$regions === void 0 ? void 0 : _currency$regions.includes(ccFilter);
|
|
246
|
+
break;
|
|
247
|
+
}
|
|
248
|
+
case 'Europe':
|
|
249
|
+
{
|
|
250
|
+
result = currency.continent.includes(ccFilter);
|
|
251
|
+
break;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
if (result && filterCurrencies) {
|
|
256
|
+
result = filterCurrencies(currency);
|
|
257
|
+
}
|
|
258
|
+
return result;
|
|
259
|
+
}
|
|
260
|
+
export function makeCurrencyFilterSet(ccFilter) {
|
|
261
|
+
return currency => {
|
|
262
|
+
var _currency$regions2;
|
|
263
|
+
switch (ccFilter) {
|
|
264
|
+
case 'Scandinavia':
|
|
265
|
+
case 'Nordic':
|
|
266
|
+
return (_currency$regions2 = currency.regions) === null || _currency$regions2 === void 0 ? void 0 : _currency$regions2.includes(ccFilter);
|
|
267
|
+
case 'Europe':
|
|
268
|
+
return currency.continent.includes(ccFilter);
|
|
269
|
+
}
|
|
270
|
+
return true;
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
SelectCurrency._supportsSpacingProps = true;
|
|
274
|
+
export default SelectCurrency;
|
|
275
|
+
//# sourceMappingURL=SelectCurrency.js.map
|