@dnb/eufemia 10.14.0 → 10.15.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.
Files changed (846) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/cjs/components/accordion/AccordionHeader.d.ts +2 -1
  3. package/cjs/components/accordion/AccordionHeader.js +3 -2
  4. package/cjs/components/accordion/AccordionHeader.js.map +1 -1
  5. package/cjs/components/accordion/style/dnb-accordion.css +13 -5
  6. package/cjs/components/accordion/style/dnb-accordion.min.css +3 -1
  7. package/cjs/components/accordion/style/dnb-accordion.scss +16 -5
  8. package/cjs/components/accordion/style/themes/dnb-accordion-theme-sbanken.css +19 -32
  9. package/cjs/components/accordion/style/themes/dnb-accordion-theme-sbanken.min.css +1 -1
  10. package/cjs/components/accordion/style/themes/dnb-accordion-theme-sbanken.scss +22 -33
  11. package/cjs/components/accordion/style/themes/dnb-accordion-theme-ui.css +149 -101
  12. package/cjs/components/accordion/style/themes/dnb-accordion-theme-ui.min.css +27 -1
  13. package/cjs/components/accordion/style/themes/dnb-accordion-theme-ui.scss +159 -86
  14. package/cjs/components/anchor/Anchor.d.ts +1 -0
  15. package/cjs/components/anchor/Anchor.js +7 -5
  16. package/cjs/components/anchor/Anchor.js.map +1 -1
  17. package/cjs/components/autocomplete/Autocomplete.d.ts +4 -0
  18. package/cjs/components/autocomplete/Autocomplete.js +98 -80
  19. package/cjs/components/autocomplete/Autocomplete.js.map +1 -1
  20. package/cjs/components/breadcrumb/style/dnb-breadcrumb.css +4 -4
  21. package/cjs/components/breadcrumb/style/dnb-breadcrumb.min.css +1 -1
  22. package/cjs/components/breadcrumb/style/dnb-breadcrumb.scss +2 -7
  23. package/cjs/components/button/Button.d.ts +1 -1
  24. package/cjs/components/button/Button.js +9 -5
  25. package/cjs/components/button/Button.js.map +1 -1
  26. package/cjs/components/button/style/themes/dnb-button-theme-sbanken.scss +1 -1
  27. package/cjs/components/button/style/themes/dnb-button-theme-ui.scss +1 -1
  28. package/cjs/components/card/style/dnb-card.css +10 -0
  29. package/cjs/components/card/style/dnb-card.min.css +1 -1
  30. package/cjs/components/card/style/dnb-card.scss +8 -0
  31. package/cjs/components/checkbox/Checkbox.js +9 -3
  32. package/cjs/components/checkbox/Checkbox.js.map +1 -1
  33. package/cjs/components/checkbox/style/dnb-checkbox.css +129 -0
  34. package/cjs/components/checkbox/style/dnb-checkbox.min.css +1 -1
  35. package/cjs/components/checkbox/style/dnb-checkbox.scss +199 -0
  36. package/cjs/components/checkbox/style/themes/dnb-checkbox-theme-sbanken.css +32 -0
  37. package/cjs/components/checkbox/style/themes/dnb-checkbox-theme-sbanken.min.css +3 -0
  38. package/cjs/components/checkbox/style/themes/dnb-checkbox-theme-sbanken.scss +39 -0
  39. package/cjs/components/checkbox/style/themes/dnb-checkbox-theme-ui.css +24 -88
  40. package/cjs/components/checkbox/style/themes/dnb-checkbox-theme-ui.min.css +1 -1
  41. package/cjs/components/checkbox/style/themes/dnb-checkbox-theme-ui.scss +30 -125
  42. package/cjs/components/date-picker/DatePicker.d.ts +1 -1
  43. package/cjs/components/date-picker/DatePicker.js +4 -1
  44. package/cjs/components/date-picker/DatePicker.js.map +1 -1
  45. package/cjs/components/date-picker/DatePickerInput.d.ts +1 -1
  46. package/cjs/components/dropdown/Dropdown.js +2 -2
  47. package/cjs/components/dropdown/Dropdown.js.map +1 -1
  48. package/cjs/components/flex/Container.js +2 -1
  49. package/cjs/components/flex/Container.js.map +1 -1
  50. package/cjs/components/flex/style/dnb-flex.css +1 -1
  51. package/cjs/components/flex/style/dnb-flex.min.css +1 -1
  52. package/cjs/components/flex/style/flex-container.scss +1 -1
  53. package/cjs/components/form-label/FormLabel.d.ts +8 -3
  54. package/cjs/components/form-label/FormLabel.js +14 -11
  55. package/cjs/components/form-label/FormLabel.js.map +1 -1
  56. package/cjs/components/form-label/style/dnb-form-label.css +0 -1
  57. package/cjs/components/form-label/style/dnb-form-label.min.css +1 -1
  58. package/cjs/components/form-label/style/dnb-form-label.scss +0 -5
  59. package/cjs/components/global-status/GlobalStatus.d.ts +1 -1
  60. package/cjs/components/global-status/GlobalStatus.js +3 -1
  61. package/cjs/components/global-status/GlobalStatus.js.map +1 -1
  62. package/cjs/components/global-status/style/dnb-global-status.css +0 -7
  63. package/cjs/components/global-status/style/dnb-global-status.min.css +1 -1
  64. package/cjs/components/global-status/style/dnb-global-status.scss +0 -11
  65. package/cjs/components/input/style/dnb-input.css +7 -3
  66. package/cjs/components/input/style/dnb-input.min.css +1 -1
  67. package/cjs/components/input/style/dnb-input.scss +14 -8
  68. package/cjs/components/input-masked/MultiInputMask.d.ts +6 -2
  69. package/cjs/components/input-masked/MultiInputMask.js +21 -17
  70. package/cjs/components/input-masked/MultiInputMask.js.map +1 -1
  71. package/cjs/components/input-masked/style/dnb-input-masked.css +3 -3
  72. package/cjs/components/input-masked/style/dnb-input-masked.min.css +1 -1
  73. package/cjs/components/input-masked/style/dnb-input-masked.scss +1 -1
  74. package/cjs/components/number-format/NumberUtils.d.ts +1 -1
  75. package/cjs/components/radio/Radio.js +13 -7
  76. package/cjs/components/radio/Radio.js.map +1 -1
  77. package/cjs/components/radio/RadioGroup.js +3 -2
  78. package/cjs/components/radio/RadioGroup.js.map +1 -1
  79. package/cjs/components/radio/style/dnb-radio.css +33 -8
  80. package/cjs/components/radio/style/dnb-radio.min.css +1 -1
  81. package/cjs/components/radio/style/dnb-radio.scss +59 -9
  82. package/cjs/components/radio/style/themes/dnb-radio-theme-sbanken.css +17 -8
  83. package/cjs/components/radio/style/themes/dnb-radio-theme-sbanken.min.css +5 -1
  84. package/cjs/components/radio/style/themes/dnb-radio-theme-sbanken.scss +17 -8
  85. package/cjs/components/radio/style/themes/dnb-radio-theme-ui.css +6 -1
  86. package/cjs/components/radio/style/themes/dnb-radio-theme-ui.min.css +1 -1
  87. package/cjs/components/radio/style/themes/dnb-radio-theme-ui.scss +6 -1
  88. package/cjs/components/section/Section.d.ts +5 -0
  89. package/cjs/components/section/Section.js +3 -2
  90. package/cjs/components/section/Section.js.map +1 -1
  91. package/cjs/components/section/style/dnb-section.css +12 -0
  92. package/cjs/components/section/style/dnb-section.min.css +3 -3
  93. package/cjs/components/section/style/dnb-section.scss +10 -0
  94. package/cjs/components/switch/Switch.js +9 -3
  95. package/cjs/components/switch/Switch.js.map +1 -1
  96. package/cjs/components/switch/style/dnb-switch.css +43 -9
  97. package/cjs/components/switch/style/dnb-switch.min.css +1 -1
  98. package/cjs/components/switch/style/dnb-switch.scss +49 -22
  99. package/cjs/components/switch/style/themes/dnb-switch-theme-sbanken.css +207 -0
  100. package/cjs/components/switch/style/themes/dnb-switch-theme-sbanken.min.css +1 -0
  101. package/cjs/components/switch/style/themes/dnb-switch-theme-sbanken.scss +280 -0
  102. package/cjs/components/switch/style/themes/dnb-switch-theme-ui.css +11 -30
  103. package/cjs/components/switch/style/themes/dnb-switch-theme-ui.min.css +1 -1
  104. package/cjs/components/switch/style/themes/dnb-switch-theme-ui.scss +24 -32
  105. package/cjs/components/textarea/Textarea.js +4 -1
  106. package/cjs/components/textarea/Textarea.js.map +1 -1
  107. package/cjs/components/toggle-button/ToggleButtonGroup.js +3 -2
  108. package/cjs/components/toggle-button/ToggleButtonGroup.js.map +1 -1
  109. package/cjs/components/toggle-button/style/dnb-toggle-button.css +3 -7
  110. package/cjs/components/toggle-button/style/dnb-toggle-button.min.css +1 -1
  111. package/cjs/components/toggle-button/style/dnb-toggle-button.scss +4 -14
  112. package/cjs/components/toggle-button/style/themes/dnb-toggle-button-theme-sbanken.css +92 -0
  113. package/cjs/components/toggle-button/style/themes/dnb-toggle-button-theme-sbanken.min.css +1 -0
  114. package/cjs/components/toggle-button/style/themes/dnb-toggle-button-theme-sbanken.scss +83 -0
  115. package/cjs/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.css +0 -2
  116. package/cjs/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.scss +0 -3
  117. package/cjs/elements/hr/style/dnb-hr.scss +16 -30
  118. package/cjs/elements/hr/style/hr-mixins.scss +5 -7
  119. package/cjs/extensions/forms/DataContext/Context.d.ts +1 -1
  120. package/cjs/extensions/forms/DataContext/Context.js +1 -1
  121. package/cjs/extensions/forms/DataContext/Context.js.map +1 -1
  122. package/cjs/extensions/forms/DataContext/Provider/Provider.js +9 -5
  123. package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  124. package/cjs/extensions/forms/Field/ArraySelection/style/dnb-array-selection.css +0 -6
  125. package/cjs/extensions/forms/Field/ArraySelection/style/dnb-array-selection.min.css +1 -1
  126. package/cjs/extensions/forms/Field/ArraySelection/style/dnb-array-selection.scss +0 -2
  127. package/cjs/extensions/forms/Field/Currency/Currency.d.ts +3 -1
  128. package/cjs/extensions/forms/Field/Currency/Currency.js +7 -2
  129. package/cjs/extensions/forms/Field/Currency/Currency.js.map +1 -1
  130. package/cjs/extensions/forms/Field/Expiry/Expiry.js +6 -4
  131. package/cjs/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
  132. package/cjs/extensions/forms/Field/Expiry/style/dnb-expiry.css +2 -8
  133. package/cjs/extensions/forms/Field/Expiry/style/dnb-expiry.min.css +1 -1
  134. package/cjs/extensions/forms/Field/Expiry/style/dnb-expiry.scss +5 -5
  135. package/cjs/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js +6 -5
  136. package/cjs/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js.map +1 -1
  137. package/cjs/extensions/forms/Field/Number/Number.js +11 -12
  138. package/cjs/extensions/forms/Field/Number/Number.js.map +1 -1
  139. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.d.ts +14 -2
  140. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.js +134 -70
  141. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  142. package/cjs/extensions/forms/Field/PhoneNumber/style/dnb-phone-number.css +2 -8
  143. package/cjs/extensions/forms/Field/PhoneNumber/style/dnb-phone-number.min.css +1 -1
  144. package/cjs/extensions/forms/Field/PhoneNumber/style/dnb-phone-number.scss +2 -4
  145. package/cjs/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.d.ts +1 -3
  146. package/cjs/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js +7 -5
  147. package/cjs/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js.map +1 -1
  148. package/cjs/extensions/forms/Field/PostalCodeAndCity/style/dnb-postal-code-and-city.css +0 -15
  149. package/cjs/extensions/forms/Field/PostalCodeAndCity/style/dnb-postal-code-and-city.min.css +1 -1
  150. package/cjs/extensions/forms/Field/PostalCodeAndCity/style/dnb-postal-code-and-city.scss +0 -14
  151. package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.d.ts +34 -2
  152. package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.js +189 -17
  153. package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
  154. package/cjs/extensions/forms/Field/Selection/Selection.js +1 -0
  155. package/cjs/extensions/forms/Field/Selection/Selection.js.map +1 -1
  156. package/cjs/extensions/forms/Field/Selection/style/dnb-selection.css +0 -6
  157. package/cjs/extensions/forms/Field/Selection/style/dnb-selection.min.css +1 -1
  158. package/cjs/extensions/forms/Field/Selection/style/dnb-selection.scss +0 -2
  159. package/cjs/extensions/forms/Field/String/String.js +8 -9
  160. package/cjs/extensions/forms/Field/String/String.js.map +1 -1
  161. package/cjs/extensions/forms/Field/Toggle/Toggle.js +4 -2
  162. package/cjs/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  163. package/cjs/extensions/forms/FieldBlock/FieldBlock.d.ts +2 -2
  164. package/cjs/extensions/forms/FieldBlock/FieldBlock.js +16 -19
  165. package/cjs/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  166. package/cjs/extensions/forms/FieldBlock/FieldBlockContext.d.ts +2 -2
  167. package/cjs/extensions/forms/FieldBlock/FieldBlockContext.js.map +1 -1
  168. package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.css +3 -0
  169. package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
  170. package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.scss +3 -0
  171. package/cjs/extensions/forms/constants/countries.d.ts +9 -6
  172. package/cjs/extensions/forms/constants/countries.js +15 -7
  173. package/cjs/extensions/forms/constants/countries.js.map +1 -1
  174. package/cjs/extensions/forms/hooks/useDataValue.d.ts +2 -0
  175. package/cjs/extensions/forms/hooks/useDataValue.js +31 -21
  176. package/cjs/extensions/forms/hooks/useDataValue.js.map +1 -1
  177. package/cjs/extensions/forms/index.d.ts +1 -1
  178. package/cjs/extensions/forms/index.js +12 -0
  179. package/cjs/extensions/forms/index.js.map +1 -1
  180. package/cjs/extensions/forms/style/dnb-forms.css +101 -129
  181. package/cjs/extensions/forms/style/dnb-forms.min.css +1 -1
  182. package/cjs/extensions/forms/style/dnb-forms.scss +1 -6
  183. package/cjs/extensions/forms/types.d.ts +5 -4
  184. package/cjs/extensions/forms/types.js.map +1 -1
  185. package/cjs/extensions/payment-card/PaymentCard.d.ts +3 -2
  186. package/cjs/extensions/payment-card/PaymentCard.js +16 -37
  187. package/cjs/extensions/payment-card/PaymentCard.js.map +1 -1
  188. package/cjs/extensions/payment-card/icons/index.js +3 -1
  189. package/cjs/extensions/payment-card/icons/index.js.map +1 -1
  190. package/cjs/extensions/style/index.d.ts +5 -1
  191. package/cjs/extensions/style/index.js +2 -0
  192. package/cjs/extensions/style/index.js.map +1 -1
  193. package/cjs/icons/dnb/icons-meta.json +2 -2
  194. package/cjs/icons/icons-meta.json +2 -2
  195. package/cjs/shared/Eufemia.d.ts +1 -1
  196. package/cjs/shared/Eufemia.js +2 -2
  197. package/cjs/shared/Eufemia.js.map +1 -1
  198. package/cjs/shared/helpers/filterValidProps.d.ts +3 -7
  199. package/cjs/shared/helpers/filterValidProps.js +8 -4
  200. package/cjs/shared/helpers/filterValidProps.js.map +1 -1
  201. package/cjs/shared/helpers/withCamelCaseProps.d.ts +1 -0
  202. package/cjs/shared/helpers/withCamelCaseProps.js +6 -4
  203. package/cjs/shared/helpers/withCamelCaseProps.js.map +1 -1
  204. package/cjs/shared/helpers/withSnakeCaseProps.js +5 -4
  205. package/cjs/shared/helpers/withSnakeCaseProps.js.map +1 -1
  206. package/cjs/shared/locales/en-GB.d.ts +1 -1
  207. package/cjs/shared/locales/en-GB.js +4 -4
  208. package/cjs/shared/locales/en-GB.js.map +1 -1
  209. package/cjs/shared/locales/en-US.d.ts +1 -1
  210. package/cjs/shared/locales/index.d.ts +2 -2
  211. package/cjs/shared/locales/nb-NO.d.ts +1 -1
  212. package/cjs/shared/locales/nb-NO.js +4 -4
  213. package/cjs/shared/locales/nb-NO.js.map +1 -1
  214. package/cjs/style/core/utilities.scss +1 -1
  215. package/cjs/style/dnb-ui-components.css +567 -113
  216. package/cjs/style/dnb-ui-components.min.css +6 -4
  217. package/cjs/style/dnb-ui-components.scss +2 -1
  218. package/cjs/style/dnb-ui-elements.css +19 -26
  219. package/cjs/style/dnb-ui-elements.min.css +1 -1
  220. package/cjs/style/dnb-ui-extensions.css +101 -129
  221. package/cjs/style/dnb-ui-extensions.min.css +1 -1
  222. package/cjs/style/dnb-ui-forms.css +243 -0
  223. package/cjs/style/dnb-ui-forms.min.css +1 -0
  224. package/cjs/style/dnb-ui-forms.scss +19 -0
  225. package/cjs/style/themes/theme-eiendom/eiendom-theme-basis.css +19 -26
  226. package/cjs/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  227. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +1033 -359
  228. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +35 -7
  229. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.scss +1 -0
  230. package/cjs/style/themes/theme-eiendom/eiendom-theme-elements.css +19 -26
  231. package/cjs/style/themes/theme-eiendom/eiendom-theme-elements.min.css +1 -1
  232. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.css +101 -129
  233. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  234. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.css +252 -0
  235. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -0
  236. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.scss +15 -0
  237. package/cjs/style/themes/theme-sbanken/sbanken-theme-basis.css +19 -26
  238. package/cjs/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
  239. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +1211 -595
  240. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +16 -8
  241. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.scss +4 -3
  242. package/cjs/style/themes/theme-sbanken/sbanken-theme-elements.css +19 -26
  243. package/cjs/style/themes/theme-sbanken/sbanken-theme-elements.min.css +1 -1
  244. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.css +101 -129
  245. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  246. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.css +252 -0
  247. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -0
  248. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.scss +15 -0
  249. package/cjs/style/themes/theme-ui/ui-theme-basis.css +19 -26
  250. package/cjs/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  251. package/cjs/style/themes/theme-ui/ui-theme-components.css +1033 -359
  252. package/cjs/style/themes/theme-ui/ui-theme-components.min.css +35 -7
  253. package/cjs/style/themes/theme-ui/ui-theme-components.scss +1 -0
  254. package/cjs/style/themes/theme-ui/ui-theme-elements.css +19 -26
  255. package/cjs/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
  256. package/cjs/style/themes/theme-ui/ui-theme-extensions.css +101 -129
  257. package/cjs/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  258. package/cjs/style/themes/theme-ui/ui-theme-forms.css +252 -0
  259. package/cjs/style/themes/theme-ui/ui-theme-forms.min.css +1 -0
  260. package/cjs/style/themes/theme-ui/ui-theme-forms.scss +15 -0
  261. package/cjs/style/themes/theme-ui/ui-theme-tags.css +8 -7
  262. package/cjs/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  263. package/components/accordion/AccordionHeader.d.ts +2 -1
  264. package/components/accordion/AccordionHeader.js +3 -2
  265. package/components/accordion/AccordionHeader.js.map +1 -1
  266. package/components/accordion/style/dnb-accordion.css +13 -5
  267. package/components/accordion/style/dnb-accordion.min.css +3 -1
  268. package/components/accordion/style/dnb-accordion.scss +16 -5
  269. package/components/accordion/style/themes/dnb-accordion-theme-sbanken.css +19 -32
  270. package/components/accordion/style/themes/dnb-accordion-theme-sbanken.min.css +1 -1
  271. package/components/accordion/style/themes/dnb-accordion-theme-sbanken.scss +22 -33
  272. package/components/accordion/style/themes/dnb-accordion-theme-ui.css +149 -101
  273. package/components/accordion/style/themes/dnb-accordion-theme-ui.min.css +27 -1
  274. package/components/accordion/style/themes/dnb-accordion-theme-ui.scss +159 -86
  275. package/components/anchor/Anchor.d.ts +1 -0
  276. package/components/anchor/Anchor.js +5 -4
  277. package/components/anchor/Anchor.js.map +1 -1
  278. package/components/autocomplete/Autocomplete.d.ts +4 -0
  279. package/components/autocomplete/Autocomplete.js +98 -80
  280. package/components/autocomplete/Autocomplete.js.map +1 -1
  281. package/components/breadcrumb/style/dnb-breadcrumb.css +4 -4
  282. package/components/breadcrumb/style/dnb-breadcrumb.min.css +1 -1
  283. package/components/breadcrumb/style/dnb-breadcrumb.scss +2 -7
  284. package/components/button/Button.d.ts +1 -1
  285. package/components/button/Button.js +10 -6
  286. package/components/button/Button.js.map +1 -1
  287. package/components/button/style/themes/dnb-button-theme-sbanken.scss +1 -1
  288. package/components/button/style/themes/dnb-button-theme-ui.scss +1 -1
  289. package/components/card/style/dnb-card.css +10 -0
  290. package/components/card/style/dnb-card.min.css +1 -1
  291. package/components/card/style/dnb-card.scss +8 -0
  292. package/components/checkbox/Checkbox.js +9 -3
  293. package/components/checkbox/Checkbox.js.map +1 -1
  294. package/components/checkbox/style/dnb-checkbox.css +129 -0
  295. package/components/checkbox/style/dnb-checkbox.min.css +1 -1
  296. package/components/checkbox/style/dnb-checkbox.scss +199 -0
  297. package/components/checkbox/style/themes/dnb-checkbox-theme-sbanken.css +32 -0
  298. package/components/checkbox/style/themes/dnb-checkbox-theme-sbanken.min.css +3 -0
  299. package/components/checkbox/style/themes/dnb-checkbox-theme-sbanken.scss +39 -0
  300. package/components/checkbox/style/themes/dnb-checkbox-theme-ui.css +24 -88
  301. package/components/checkbox/style/themes/dnb-checkbox-theme-ui.min.css +1 -1
  302. package/components/checkbox/style/themes/dnb-checkbox-theme-ui.scss +30 -125
  303. package/components/date-picker/DatePicker.d.ts +1 -1
  304. package/components/date-picker/DatePicker.js +4 -1
  305. package/components/date-picker/DatePicker.js.map +1 -1
  306. package/components/date-picker/DatePickerInput.d.ts +1 -1
  307. package/components/dropdown/Dropdown.js +2 -2
  308. package/components/dropdown/Dropdown.js.map +1 -1
  309. package/components/flex/Container.js +2 -1
  310. package/components/flex/Container.js.map +1 -1
  311. package/components/flex/style/dnb-flex.css +1 -1
  312. package/components/flex/style/dnb-flex.min.css +1 -1
  313. package/components/flex/style/flex-container.scss +1 -1
  314. package/components/form-label/FormLabel.d.ts +8 -3
  315. package/components/form-label/FormLabel.js +14 -11
  316. package/components/form-label/FormLabel.js.map +1 -1
  317. package/components/form-label/style/dnb-form-label.css +0 -1
  318. package/components/form-label/style/dnb-form-label.min.css +1 -1
  319. package/components/form-label/style/dnb-form-label.scss +0 -5
  320. package/components/global-status/GlobalStatus.d.ts +1 -1
  321. package/components/global-status/GlobalStatus.js +3 -1
  322. package/components/global-status/GlobalStatus.js.map +1 -1
  323. package/components/global-status/style/dnb-global-status.css +0 -7
  324. package/components/global-status/style/dnb-global-status.min.css +1 -1
  325. package/components/global-status/style/dnb-global-status.scss +0 -11
  326. package/components/input/style/dnb-input.css +7 -3
  327. package/components/input/style/dnb-input.min.css +1 -1
  328. package/components/input/style/dnb-input.scss +14 -8
  329. package/components/input-masked/MultiInputMask.d.ts +6 -2
  330. package/components/input-masked/MultiInputMask.js +22 -18
  331. package/components/input-masked/MultiInputMask.js.map +1 -1
  332. package/components/input-masked/style/dnb-input-masked.css +3 -3
  333. package/components/input-masked/style/dnb-input-masked.min.css +1 -1
  334. package/components/input-masked/style/dnb-input-masked.scss +1 -1
  335. package/components/number-format/NumberUtils.d.ts +1 -1
  336. package/components/radio/Radio.js +13 -7
  337. package/components/radio/Radio.js.map +1 -1
  338. package/components/radio/RadioGroup.js +3 -2
  339. package/components/radio/RadioGroup.js.map +1 -1
  340. package/components/radio/style/dnb-radio.css +33 -8
  341. package/components/radio/style/dnb-radio.min.css +1 -1
  342. package/components/radio/style/dnb-radio.scss +59 -9
  343. package/components/radio/style/themes/dnb-radio-theme-sbanken.css +17 -8
  344. package/components/radio/style/themes/dnb-radio-theme-sbanken.min.css +5 -1
  345. package/components/radio/style/themes/dnb-radio-theme-sbanken.scss +17 -8
  346. package/components/radio/style/themes/dnb-radio-theme-ui.css +6 -1
  347. package/components/radio/style/themes/dnb-radio-theme-ui.min.css +1 -1
  348. package/components/radio/style/themes/dnb-radio-theme-ui.scss +6 -1
  349. package/components/section/Section.d.ts +5 -0
  350. package/components/section/Section.js +3 -2
  351. package/components/section/Section.js.map +1 -1
  352. package/components/section/style/dnb-section.css +12 -0
  353. package/components/section/style/dnb-section.min.css +3 -3
  354. package/components/section/style/dnb-section.scss +10 -0
  355. package/components/switch/Switch.js +9 -3
  356. package/components/switch/Switch.js.map +1 -1
  357. package/components/switch/style/dnb-switch.css +43 -9
  358. package/components/switch/style/dnb-switch.min.css +1 -1
  359. package/components/switch/style/dnb-switch.scss +49 -22
  360. package/components/switch/style/themes/dnb-switch-theme-sbanken.css +207 -0
  361. package/components/switch/style/themes/dnb-switch-theme-sbanken.min.css +1 -0
  362. package/components/switch/style/themes/dnb-switch-theme-sbanken.scss +280 -0
  363. package/components/switch/style/themes/dnb-switch-theme-ui.css +11 -30
  364. package/components/switch/style/themes/dnb-switch-theme-ui.min.css +1 -1
  365. package/components/switch/style/themes/dnb-switch-theme-ui.scss +24 -32
  366. package/components/textarea/Textarea.js +4 -1
  367. package/components/textarea/Textarea.js.map +1 -1
  368. package/components/toggle-button/ToggleButtonGroup.js +3 -2
  369. package/components/toggle-button/ToggleButtonGroup.js.map +1 -1
  370. package/components/toggle-button/style/dnb-toggle-button.css +3 -7
  371. package/components/toggle-button/style/dnb-toggle-button.min.css +1 -1
  372. package/components/toggle-button/style/dnb-toggle-button.scss +4 -14
  373. package/components/toggle-button/style/themes/dnb-toggle-button-theme-sbanken.css +92 -0
  374. package/components/toggle-button/style/themes/dnb-toggle-button-theme-sbanken.min.css +1 -0
  375. package/components/toggle-button/style/themes/dnb-toggle-button-theme-sbanken.scss +83 -0
  376. package/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.css +0 -2
  377. package/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.scss +0 -3
  378. package/elements/hr/style/dnb-hr.scss +16 -30
  379. package/elements/hr/style/hr-mixins.scss +5 -7
  380. package/es/components/accordion/AccordionHeader.d.ts +2 -1
  381. package/es/components/accordion/AccordionHeader.js +3 -2
  382. package/es/components/accordion/AccordionHeader.js.map +1 -1
  383. package/es/components/accordion/style/dnb-accordion.css +13 -5
  384. package/es/components/accordion/style/dnb-accordion.min.css +3 -1
  385. package/es/components/accordion/style/dnb-accordion.scss +16 -5
  386. package/es/components/accordion/style/themes/dnb-accordion-theme-sbanken.css +19 -32
  387. package/es/components/accordion/style/themes/dnb-accordion-theme-sbanken.min.css +1 -1
  388. package/es/components/accordion/style/themes/dnb-accordion-theme-sbanken.scss +22 -33
  389. package/es/components/accordion/style/themes/dnb-accordion-theme-ui.css +149 -101
  390. package/es/components/accordion/style/themes/dnb-accordion-theme-ui.min.css +27 -1
  391. package/es/components/accordion/style/themes/dnb-accordion-theme-ui.scss +159 -86
  392. package/es/components/anchor/Anchor.d.ts +1 -0
  393. package/es/components/anchor/Anchor.js +5 -4
  394. package/es/components/anchor/Anchor.js.map +1 -1
  395. package/es/components/autocomplete/Autocomplete.d.ts +4 -0
  396. package/es/components/autocomplete/Autocomplete.js +94 -75
  397. package/es/components/autocomplete/Autocomplete.js.map +1 -1
  398. package/es/components/breadcrumb/style/dnb-breadcrumb.css +4 -4
  399. package/es/components/breadcrumb/style/dnb-breadcrumb.min.css +1 -1
  400. package/es/components/breadcrumb/style/dnb-breadcrumb.scss +2 -7
  401. package/es/components/button/Button.d.ts +1 -1
  402. package/es/components/button/Button.js +10 -6
  403. package/es/components/button/Button.js.map +1 -1
  404. package/es/components/button/style/themes/dnb-button-theme-sbanken.scss +1 -1
  405. package/es/components/button/style/themes/dnb-button-theme-ui.scss +1 -1
  406. package/es/components/card/style/dnb-card.css +10 -0
  407. package/es/components/card/style/dnb-card.min.css +1 -1
  408. package/es/components/card/style/dnb-card.scss +8 -0
  409. package/es/components/checkbox/Checkbox.js +9 -3
  410. package/es/components/checkbox/Checkbox.js.map +1 -1
  411. package/es/components/checkbox/style/dnb-checkbox.css +129 -0
  412. package/es/components/checkbox/style/dnb-checkbox.min.css +1 -1
  413. package/es/components/checkbox/style/dnb-checkbox.scss +199 -0
  414. package/es/components/checkbox/style/themes/dnb-checkbox-theme-sbanken.css +32 -0
  415. package/es/components/checkbox/style/themes/dnb-checkbox-theme-sbanken.min.css +3 -0
  416. package/es/components/checkbox/style/themes/dnb-checkbox-theme-sbanken.scss +39 -0
  417. package/es/components/checkbox/style/themes/dnb-checkbox-theme-ui.css +24 -88
  418. package/es/components/checkbox/style/themes/dnb-checkbox-theme-ui.min.css +1 -1
  419. package/es/components/checkbox/style/themes/dnb-checkbox-theme-ui.scss +30 -125
  420. package/es/components/date-picker/DatePicker.d.ts +1 -1
  421. package/es/components/date-picker/DatePicker.js +4 -1
  422. package/es/components/date-picker/DatePicker.js.map +1 -1
  423. package/es/components/date-picker/DatePickerInput.d.ts +1 -1
  424. package/es/components/dropdown/Dropdown.js +2 -2
  425. package/es/components/dropdown/Dropdown.js.map +1 -1
  426. package/es/components/flex/Container.js +2 -1
  427. package/es/components/flex/Container.js.map +1 -1
  428. package/es/components/flex/style/dnb-flex.css +1 -1
  429. package/es/components/flex/style/dnb-flex.min.css +1 -1
  430. package/es/components/flex/style/flex-container.scss +1 -1
  431. package/es/components/form-label/FormLabel.d.ts +8 -3
  432. package/es/components/form-label/FormLabel.js +14 -11
  433. package/es/components/form-label/FormLabel.js.map +1 -1
  434. package/es/components/form-label/style/dnb-form-label.css +0 -1
  435. package/es/components/form-label/style/dnb-form-label.min.css +1 -1
  436. package/es/components/form-label/style/dnb-form-label.scss +0 -5
  437. package/es/components/global-status/GlobalStatus.d.ts +1 -1
  438. package/es/components/global-status/GlobalStatus.js +3 -1
  439. package/es/components/global-status/GlobalStatus.js.map +1 -1
  440. package/es/components/global-status/style/dnb-global-status.css +0 -7
  441. package/es/components/global-status/style/dnb-global-status.min.css +1 -1
  442. package/es/components/global-status/style/dnb-global-status.scss +0 -11
  443. package/es/components/input/style/dnb-input.css +7 -3
  444. package/es/components/input/style/dnb-input.min.css +1 -1
  445. package/es/components/input/style/dnb-input.scss +14 -8
  446. package/es/components/input-masked/MultiInputMask.d.ts +6 -2
  447. package/es/components/input-masked/MultiInputMask.js +24 -19
  448. package/es/components/input-masked/MultiInputMask.js.map +1 -1
  449. package/es/components/input-masked/style/dnb-input-masked.css +3 -3
  450. package/es/components/input-masked/style/dnb-input-masked.min.css +1 -1
  451. package/es/components/input-masked/style/dnb-input-masked.scss +1 -1
  452. package/es/components/number-format/NumberUtils.d.ts +1 -1
  453. package/es/components/radio/Radio.js +13 -7
  454. package/es/components/radio/Radio.js.map +1 -1
  455. package/es/components/radio/RadioGroup.js +3 -2
  456. package/es/components/radio/RadioGroup.js.map +1 -1
  457. package/es/components/radio/style/dnb-radio.css +33 -8
  458. package/es/components/radio/style/dnb-radio.min.css +1 -1
  459. package/es/components/radio/style/dnb-radio.scss +59 -9
  460. package/es/components/radio/style/themes/dnb-radio-theme-sbanken.css +17 -8
  461. package/es/components/radio/style/themes/dnb-radio-theme-sbanken.min.css +5 -1
  462. package/es/components/radio/style/themes/dnb-radio-theme-sbanken.scss +17 -8
  463. package/es/components/radio/style/themes/dnb-radio-theme-ui.css +6 -1
  464. package/es/components/radio/style/themes/dnb-radio-theme-ui.min.css +1 -1
  465. package/es/components/radio/style/themes/dnb-radio-theme-ui.scss +6 -1
  466. package/es/components/section/Section.d.ts +5 -0
  467. package/es/components/section/Section.js +3 -2
  468. package/es/components/section/Section.js.map +1 -1
  469. package/es/components/section/style/dnb-section.css +12 -0
  470. package/es/components/section/style/dnb-section.min.css +3 -3
  471. package/es/components/section/style/dnb-section.scss +10 -0
  472. package/es/components/switch/Switch.js +9 -3
  473. package/es/components/switch/Switch.js.map +1 -1
  474. package/es/components/switch/style/dnb-switch.css +43 -9
  475. package/es/components/switch/style/dnb-switch.min.css +1 -1
  476. package/es/components/switch/style/dnb-switch.scss +49 -22
  477. package/es/components/switch/style/themes/dnb-switch-theme-sbanken.css +207 -0
  478. package/es/components/switch/style/themes/dnb-switch-theme-sbanken.min.css +1 -0
  479. package/es/components/switch/style/themes/dnb-switch-theme-sbanken.scss +280 -0
  480. package/es/components/switch/style/themes/dnb-switch-theme-ui.css +11 -30
  481. package/es/components/switch/style/themes/dnb-switch-theme-ui.min.css +1 -1
  482. package/es/components/switch/style/themes/dnb-switch-theme-ui.scss +24 -32
  483. package/es/components/textarea/Textarea.js +4 -1
  484. package/es/components/textarea/Textarea.js.map +1 -1
  485. package/es/components/toggle-button/ToggleButtonGroup.js +3 -2
  486. package/es/components/toggle-button/ToggleButtonGroup.js.map +1 -1
  487. package/es/components/toggle-button/style/dnb-toggle-button.css +3 -7
  488. package/es/components/toggle-button/style/dnb-toggle-button.min.css +1 -1
  489. package/es/components/toggle-button/style/dnb-toggle-button.scss +4 -14
  490. package/es/components/toggle-button/style/themes/dnb-toggle-button-theme-sbanken.css +92 -0
  491. package/es/components/toggle-button/style/themes/dnb-toggle-button-theme-sbanken.min.css +1 -0
  492. package/es/components/toggle-button/style/themes/dnb-toggle-button-theme-sbanken.scss +83 -0
  493. package/es/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.css +0 -2
  494. package/es/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.scss +0 -3
  495. package/es/elements/hr/style/dnb-hr.scss +16 -30
  496. package/es/elements/hr/style/hr-mixins.scss +5 -7
  497. package/es/extensions/forms/DataContext/Context.d.ts +1 -1
  498. package/es/extensions/forms/DataContext/Context.js +1 -1
  499. package/es/extensions/forms/DataContext/Context.js.map +1 -1
  500. package/es/extensions/forms/DataContext/Provider/Provider.js +9 -5
  501. package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  502. package/es/extensions/forms/Field/ArraySelection/style/dnb-array-selection.css +0 -6
  503. package/es/extensions/forms/Field/ArraySelection/style/dnb-array-selection.min.css +1 -1
  504. package/es/extensions/forms/Field/ArraySelection/style/dnb-array-selection.scss +0 -2
  505. package/es/extensions/forms/Field/Currency/Currency.d.ts +3 -1
  506. package/es/extensions/forms/Field/Currency/Currency.js +8 -2
  507. package/es/extensions/forms/Field/Currency/Currency.js.map +1 -1
  508. package/es/extensions/forms/Field/Expiry/Expiry.js +6 -4
  509. package/es/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
  510. package/es/extensions/forms/Field/Expiry/style/dnb-expiry.css +2 -8
  511. package/es/extensions/forms/Field/Expiry/style/dnb-expiry.min.css +1 -1
  512. package/es/extensions/forms/Field/Expiry/style/dnb-expiry.scss +5 -5
  513. package/es/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js +6 -5
  514. package/es/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js.map +1 -1
  515. package/es/extensions/forms/Field/Number/Number.js +11 -12
  516. package/es/extensions/forms/Field/Number/Number.js.map +1 -1
  517. package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.d.ts +14 -2
  518. package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.js +128 -61
  519. package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  520. package/es/extensions/forms/Field/PhoneNumber/style/dnb-phone-number.css +2 -8
  521. package/es/extensions/forms/Field/PhoneNumber/style/dnb-phone-number.min.css +1 -1
  522. package/es/extensions/forms/Field/PhoneNumber/style/dnb-phone-number.scss +2 -4
  523. package/es/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.d.ts +1 -3
  524. package/es/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js +7 -5
  525. package/es/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js.map +1 -1
  526. package/es/extensions/forms/Field/PostalCodeAndCity/style/dnb-postal-code-and-city.css +0 -15
  527. package/es/extensions/forms/Field/PostalCodeAndCity/style/dnb-postal-code-and-city.min.css +1 -1
  528. package/es/extensions/forms/Field/PostalCodeAndCity/style/dnb-postal-code-and-city.scss +0 -14
  529. package/es/extensions/forms/Field/SelectCountry/SelectCountry.d.ts +34 -2
  530. package/es/extensions/forms/Field/SelectCountry/SelectCountry.js +176 -18
  531. package/es/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
  532. package/es/extensions/forms/Field/Selection/Selection.js +1 -0
  533. package/es/extensions/forms/Field/Selection/Selection.js.map +1 -1
  534. package/es/extensions/forms/Field/Selection/style/dnb-selection.css +0 -6
  535. package/es/extensions/forms/Field/Selection/style/dnb-selection.min.css +1 -1
  536. package/es/extensions/forms/Field/Selection/style/dnb-selection.scss +0 -2
  537. package/es/extensions/forms/Field/String/String.js +8 -9
  538. package/es/extensions/forms/Field/String/String.js.map +1 -1
  539. package/es/extensions/forms/Field/Toggle/Toggle.js +4 -2
  540. package/es/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  541. package/es/extensions/forms/FieldBlock/FieldBlock.d.ts +2 -2
  542. package/es/extensions/forms/FieldBlock/FieldBlock.js +16 -19
  543. package/es/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  544. package/es/extensions/forms/FieldBlock/FieldBlockContext.d.ts +2 -2
  545. package/es/extensions/forms/FieldBlock/FieldBlockContext.js.map +1 -1
  546. package/es/extensions/forms/FieldBlock/style/dnb-field-block.css +3 -0
  547. package/es/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
  548. package/es/extensions/forms/FieldBlock/style/dnb-field-block.scss +3 -0
  549. package/es/extensions/forms/constants/countries.d.ts +9 -6
  550. package/es/extensions/forms/constants/countries.js +13 -6
  551. package/es/extensions/forms/constants/countries.js.map +1 -1
  552. package/es/extensions/forms/hooks/useDataValue.d.ts +2 -0
  553. package/es/extensions/forms/hooks/useDataValue.js +26 -20
  554. package/es/extensions/forms/hooks/useDataValue.js.map +1 -1
  555. package/es/extensions/forms/index.d.ts +1 -1
  556. package/es/extensions/forms/index.js +1 -0
  557. package/es/extensions/forms/index.js.map +1 -1
  558. package/es/extensions/forms/style/dnb-forms.css +101 -129
  559. package/es/extensions/forms/style/dnb-forms.min.css +1 -1
  560. package/es/extensions/forms/style/dnb-forms.scss +1 -6
  561. package/es/extensions/forms/types.d.ts +5 -4
  562. package/es/extensions/forms/types.js.map +1 -1
  563. package/es/extensions/payment-card/PaymentCard.d.ts +3 -2
  564. package/es/extensions/payment-card/PaymentCard.js +16 -37
  565. package/es/extensions/payment-card/PaymentCard.js.map +1 -1
  566. package/es/extensions/payment-card/icons/index.js +4 -2
  567. package/es/extensions/payment-card/icons/index.js.map +1 -1
  568. package/es/extensions/style/index.d.ts +5 -1
  569. package/es/extensions/style/index.js +4 -1
  570. package/es/extensions/style/index.js.map +1 -1
  571. package/es/icons/dnb/icons-meta.json +2 -2
  572. package/es/icons/icons-meta.json +2 -2
  573. package/es/shared/Eufemia.d.ts +1 -1
  574. package/es/shared/Eufemia.js +2 -2
  575. package/es/shared/Eufemia.js.map +1 -1
  576. package/es/shared/helpers/filterValidProps.d.ts +3 -7
  577. package/es/shared/helpers/filterValidProps.js +9 -3
  578. package/es/shared/helpers/filterValidProps.js.map +1 -1
  579. package/es/shared/helpers/withCamelCaseProps.d.ts +1 -0
  580. package/es/shared/helpers/withCamelCaseProps.js +6 -5
  581. package/es/shared/helpers/withCamelCaseProps.js.map +1 -1
  582. package/es/shared/helpers/withSnakeCaseProps.js +5 -4
  583. package/es/shared/helpers/withSnakeCaseProps.js.map +1 -1
  584. package/es/shared/locales/en-GB.d.ts +1 -1
  585. package/es/shared/locales/en-GB.js +4 -4
  586. package/es/shared/locales/en-GB.js.map +1 -1
  587. package/es/shared/locales/en-US.d.ts +1 -1
  588. package/es/shared/locales/index.d.ts +2 -2
  589. package/es/shared/locales/nb-NO.d.ts +1 -1
  590. package/es/shared/locales/nb-NO.js +4 -4
  591. package/es/shared/locales/nb-NO.js.map +1 -1
  592. package/es/style/core/utilities.scss +1 -1
  593. package/es/style/dnb-ui-components.css +567 -113
  594. package/es/style/dnb-ui-components.min.css +6 -4
  595. package/es/style/dnb-ui-components.scss +2 -1
  596. package/es/style/dnb-ui-elements.css +19 -26
  597. package/es/style/dnb-ui-elements.min.css +1 -1
  598. package/es/style/dnb-ui-extensions.css +101 -129
  599. package/es/style/dnb-ui-extensions.min.css +1 -1
  600. package/es/style/dnb-ui-forms.css +243 -0
  601. package/es/style/dnb-ui-forms.min.css +1 -0
  602. package/es/style/dnb-ui-forms.scss +19 -0
  603. package/es/style/themes/theme-eiendom/eiendom-theme-basis.css +19 -26
  604. package/es/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  605. package/es/style/themes/theme-eiendom/eiendom-theme-components.css +1033 -359
  606. package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +35 -7
  607. package/es/style/themes/theme-eiendom/eiendom-theme-components.scss +1 -0
  608. package/es/style/themes/theme-eiendom/eiendom-theme-elements.css +19 -26
  609. package/es/style/themes/theme-eiendom/eiendom-theme-elements.min.css +1 -1
  610. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.css +101 -129
  611. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  612. package/es/style/themes/theme-eiendom/eiendom-theme-forms.css +252 -0
  613. package/es/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -0
  614. package/es/style/themes/theme-eiendom/eiendom-theme-forms.scss +15 -0
  615. package/es/style/themes/theme-sbanken/sbanken-theme-basis.css +19 -26
  616. package/es/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
  617. package/es/style/themes/theme-sbanken/sbanken-theme-components.css +1211 -595
  618. package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +16 -8
  619. package/es/style/themes/theme-sbanken/sbanken-theme-components.scss +4 -3
  620. package/es/style/themes/theme-sbanken/sbanken-theme-elements.css +19 -26
  621. package/es/style/themes/theme-sbanken/sbanken-theme-elements.min.css +1 -1
  622. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.css +101 -129
  623. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  624. package/es/style/themes/theme-sbanken/sbanken-theme-forms.css +252 -0
  625. package/es/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -0
  626. package/es/style/themes/theme-sbanken/sbanken-theme-forms.scss +15 -0
  627. package/es/style/themes/theme-ui/ui-theme-basis.css +19 -26
  628. package/es/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  629. package/es/style/themes/theme-ui/ui-theme-components.css +1033 -359
  630. package/es/style/themes/theme-ui/ui-theme-components.min.css +35 -7
  631. package/es/style/themes/theme-ui/ui-theme-components.scss +1 -0
  632. package/es/style/themes/theme-ui/ui-theme-elements.css +19 -26
  633. package/es/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
  634. package/es/style/themes/theme-ui/ui-theme-extensions.css +101 -129
  635. package/es/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  636. package/es/style/themes/theme-ui/ui-theme-forms.css +252 -0
  637. package/es/style/themes/theme-ui/ui-theme-forms.min.css +1 -0
  638. package/es/style/themes/theme-ui/ui-theme-forms.scss +15 -0
  639. package/es/style/themes/theme-ui/ui-theme-tags.css +8 -7
  640. package/es/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  641. package/esm/dnb-ui-basis.min.mjs +1 -1
  642. package/esm/dnb-ui-components.min.mjs +1 -1
  643. package/esm/dnb-ui-elements.min.mjs +1 -1
  644. package/esm/dnb-ui-extensions.min.mjs +3 -3
  645. package/esm/dnb-ui-lib.min.mjs +1 -1
  646. package/extensions/forms/DataContext/Context.d.ts +1 -1
  647. package/extensions/forms/DataContext/Context.js +1 -1
  648. package/extensions/forms/DataContext/Context.js.map +1 -1
  649. package/extensions/forms/DataContext/Provider/Provider.js +9 -5
  650. package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  651. package/extensions/forms/Field/ArraySelection/style/dnb-array-selection.css +0 -6
  652. package/extensions/forms/Field/ArraySelection/style/dnb-array-selection.min.css +1 -1
  653. package/extensions/forms/Field/ArraySelection/style/dnb-array-selection.scss +0 -2
  654. package/extensions/forms/Field/Currency/Currency.d.ts +3 -1
  655. package/extensions/forms/Field/Currency/Currency.js +8 -2
  656. package/extensions/forms/Field/Currency/Currency.js.map +1 -1
  657. package/extensions/forms/Field/Expiry/Expiry.js +6 -4
  658. package/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
  659. package/extensions/forms/Field/Expiry/style/dnb-expiry.css +2 -8
  660. package/extensions/forms/Field/Expiry/style/dnb-expiry.min.css +1 -1
  661. package/extensions/forms/Field/Expiry/style/dnb-expiry.scss +5 -5
  662. package/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js +6 -5
  663. package/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js.map +1 -1
  664. package/extensions/forms/Field/Number/Number.js +11 -12
  665. package/extensions/forms/Field/Number/Number.js.map +1 -1
  666. package/extensions/forms/Field/PhoneNumber/PhoneNumber.d.ts +14 -2
  667. package/extensions/forms/Field/PhoneNumber/PhoneNumber.js +135 -71
  668. package/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  669. package/extensions/forms/Field/PhoneNumber/style/dnb-phone-number.css +2 -8
  670. package/extensions/forms/Field/PhoneNumber/style/dnb-phone-number.min.css +1 -1
  671. package/extensions/forms/Field/PhoneNumber/style/dnb-phone-number.scss +2 -4
  672. package/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.d.ts +1 -3
  673. package/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js +7 -5
  674. package/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js.map +1 -1
  675. package/extensions/forms/Field/PostalCodeAndCity/style/dnb-postal-code-and-city.css +0 -15
  676. package/extensions/forms/Field/PostalCodeAndCity/style/dnb-postal-code-and-city.min.css +1 -1
  677. package/extensions/forms/Field/PostalCodeAndCity/style/dnb-postal-code-and-city.scss +0 -14
  678. package/extensions/forms/Field/SelectCountry/SelectCountry.d.ts +34 -2
  679. package/extensions/forms/Field/SelectCountry/SelectCountry.js +188 -18
  680. package/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
  681. package/extensions/forms/Field/Selection/Selection.js +1 -0
  682. package/extensions/forms/Field/Selection/Selection.js.map +1 -1
  683. package/extensions/forms/Field/Selection/style/dnb-selection.css +0 -6
  684. package/extensions/forms/Field/Selection/style/dnb-selection.min.css +1 -1
  685. package/extensions/forms/Field/Selection/style/dnb-selection.scss +0 -2
  686. package/extensions/forms/Field/String/String.js +8 -9
  687. package/extensions/forms/Field/String/String.js.map +1 -1
  688. package/extensions/forms/Field/Toggle/Toggle.js +4 -2
  689. package/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  690. package/extensions/forms/FieldBlock/FieldBlock.d.ts +2 -2
  691. package/extensions/forms/FieldBlock/FieldBlock.js +17 -20
  692. package/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  693. package/extensions/forms/FieldBlock/FieldBlockContext.d.ts +2 -2
  694. package/extensions/forms/FieldBlock/FieldBlockContext.js.map +1 -1
  695. package/extensions/forms/FieldBlock/style/dnb-field-block.css +3 -0
  696. package/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
  697. package/extensions/forms/FieldBlock/style/dnb-field-block.scss +3 -0
  698. package/extensions/forms/constants/countries.d.ts +9 -6
  699. package/extensions/forms/constants/countries.js +13 -6
  700. package/extensions/forms/constants/countries.js.map +1 -1
  701. package/extensions/forms/hooks/useDataValue.d.ts +2 -0
  702. package/extensions/forms/hooks/useDataValue.js +31 -21
  703. package/extensions/forms/hooks/useDataValue.js.map +1 -1
  704. package/extensions/forms/index.d.ts +1 -1
  705. package/extensions/forms/index.js +1 -0
  706. package/extensions/forms/index.js.map +1 -1
  707. package/extensions/forms/style/dnb-forms.css +101 -129
  708. package/extensions/forms/style/dnb-forms.min.css +1 -1
  709. package/extensions/forms/style/dnb-forms.scss +1 -6
  710. package/extensions/forms/types.d.ts +5 -4
  711. package/extensions/forms/types.js.map +1 -1
  712. package/extensions/payment-card/PaymentCard.d.ts +3 -2
  713. package/extensions/payment-card/PaymentCard.js +16 -37
  714. package/extensions/payment-card/PaymentCard.js.map +1 -1
  715. package/extensions/payment-card/icons/index.js +4 -2
  716. package/extensions/payment-card/icons/index.js.map +1 -1
  717. package/extensions/style/index.d.ts +5 -1
  718. package/extensions/style/index.js +4 -1
  719. package/extensions/style/index.js.map +1 -1
  720. package/icons/dnb/icons-meta.json +2 -2
  721. package/icons/icons-meta.json +2 -2
  722. package/package.json +1 -1
  723. package/shared/Eufemia.d.ts +1 -1
  724. package/shared/Eufemia.js +2 -2
  725. package/shared/Eufemia.js.map +1 -1
  726. package/shared/helpers/filterValidProps.d.ts +3 -7
  727. package/shared/helpers/filterValidProps.js +9 -3
  728. package/shared/helpers/filterValidProps.js.map +1 -1
  729. package/shared/helpers/withCamelCaseProps.d.ts +1 -0
  730. package/shared/helpers/withCamelCaseProps.js +6 -5
  731. package/shared/helpers/withCamelCaseProps.js.map +1 -1
  732. package/shared/helpers/withSnakeCaseProps.js +5 -4
  733. package/shared/helpers/withSnakeCaseProps.js.map +1 -1
  734. package/shared/locales/en-GB.d.ts +1 -1
  735. package/shared/locales/en-GB.js +4 -4
  736. package/shared/locales/en-GB.js.map +1 -1
  737. package/shared/locales/en-US.d.ts +1 -1
  738. package/shared/locales/index.d.ts +2 -2
  739. package/shared/locales/nb-NO.d.ts +1 -1
  740. package/shared/locales/nb-NO.js +4 -4
  741. package/shared/locales/nb-NO.js.map +1 -1
  742. package/style/core/utilities.scss +1 -1
  743. package/style/dnb-ui-components.css +567 -113
  744. package/style/dnb-ui-components.min.css +6 -4
  745. package/style/dnb-ui-components.scss +2 -1
  746. package/style/dnb-ui-elements.css +19 -26
  747. package/style/dnb-ui-elements.min.css +1 -1
  748. package/style/dnb-ui-extensions.css +101 -129
  749. package/style/dnb-ui-extensions.min.css +1 -1
  750. package/style/dnb-ui-forms.css +243 -0
  751. package/style/dnb-ui-forms.min.css +1 -0
  752. package/style/dnb-ui-forms.scss +19 -0
  753. package/style/themes/theme-eiendom/eiendom-theme-basis.css +19 -26
  754. package/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  755. package/style/themes/theme-eiendom/eiendom-theme-components.css +1033 -359
  756. package/style/themes/theme-eiendom/eiendom-theme-components.min.css +35 -7
  757. package/style/themes/theme-eiendom/eiendom-theme-components.scss +1 -0
  758. package/style/themes/theme-eiendom/eiendom-theme-elements.css +19 -26
  759. package/style/themes/theme-eiendom/eiendom-theme-elements.min.css +1 -1
  760. package/style/themes/theme-eiendom/eiendom-theme-extensions.css +101 -129
  761. package/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  762. package/style/themes/theme-eiendom/eiendom-theme-forms.css +252 -0
  763. package/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -0
  764. package/style/themes/theme-eiendom/eiendom-theme-forms.scss +15 -0
  765. package/style/themes/theme-sbanken/sbanken-theme-basis.css +19 -26
  766. package/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
  767. package/style/themes/theme-sbanken/sbanken-theme-components.css +1211 -595
  768. package/style/themes/theme-sbanken/sbanken-theme-components.min.css +16 -8
  769. package/style/themes/theme-sbanken/sbanken-theme-components.scss +4 -3
  770. package/style/themes/theme-sbanken/sbanken-theme-elements.css +19 -26
  771. package/style/themes/theme-sbanken/sbanken-theme-elements.min.css +1 -1
  772. package/style/themes/theme-sbanken/sbanken-theme-extensions.css +101 -129
  773. package/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  774. package/style/themes/theme-sbanken/sbanken-theme-forms.css +252 -0
  775. package/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -0
  776. package/style/themes/theme-sbanken/sbanken-theme-forms.scss +15 -0
  777. package/style/themes/theme-ui/ui-theme-basis.css +19 -26
  778. package/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  779. package/style/themes/theme-ui/ui-theme-components.css +1033 -359
  780. package/style/themes/theme-ui/ui-theme-components.min.css +35 -7
  781. package/style/themes/theme-ui/ui-theme-components.scss +1 -0
  782. package/style/themes/theme-ui/ui-theme-elements.css +19 -26
  783. package/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
  784. package/style/themes/theme-ui/ui-theme-extensions.css +101 -129
  785. package/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  786. package/style/themes/theme-ui/ui-theme-forms.css +252 -0
  787. package/style/themes/theme-ui/ui-theme-forms.min.css +1 -0
  788. package/style/themes/theme-ui/ui-theme-forms.scss +15 -0
  789. package/style/themes/theme-ui/ui-theme-tags.css +8 -7
  790. package/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  791. package/umd/dnb-ui-basis.min.js +1 -1
  792. package/umd/dnb-ui-components.min.js +1 -1
  793. package/umd/dnb-ui-elements.min.js +1 -1
  794. package/umd/dnb-ui-extensions.min.js +3 -3
  795. package/umd/dnb-ui-lib.min.js +1 -1
  796. package/cjs/components/button/style/dnb-button--tertiary.css +0 -216
  797. package/cjs/components/button/style/dnb-button--tertiary.min.css +0 -5
  798. package/cjs/extensions/forms/Field/style/dnb-forms-field.css +0 -93
  799. package/cjs/extensions/forms/Field/style/dnb-forms-field.min.css +0 -1
  800. package/cjs/extensions/forms/Field/style/dnb-forms-field.scss +0 -5
  801. package/cjs/extensions/forms/Form/style/dnb-forms-form.css +0 -33
  802. package/cjs/extensions/forms/Form/style/dnb-forms-form.min.css +0 -1
  803. package/cjs/extensions/forms/Form/style/dnb-forms-form.scss +0 -3
  804. package/cjs/extensions/forms/Form/style/index.d.ts +0 -5
  805. package/cjs/extensions/forms/Form/style/index.js +0 -4
  806. package/cjs/extensions/forms/Form/style/index.js.map +0 -1
  807. package/cjs/extensions/forms/StepsLayout/style/index.scss +0 -1
  808. package/cjs/extensions/forms/ValueBlock/style/index.scss +0 -1
  809. package/cjs/extensions/forms/style/index.d.ts +0 -1
  810. package/cjs/extensions/forms/style/index.js +0 -4
  811. package/cjs/extensions/forms/style/index.js.map +0 -1
  812. package/components/button/style/dnb-button--tertiary.css +0 -216
  813. package/components/button/style/dnb-button--tertiary.min.css +0 -5
  814. package/es/components/button/style/dnb-button--tertiary.css +0 -216
  815. package/es/components/button/style/dnb-button--tertiary.min.css +0 -5
  816. package/es/extensions/forms/Field/style/dnb-forms-field.css +0 -93
  817. package/es/extensions/forms/Field/style/dnb-forms-field.min.css +0 -1
  818. package/es/extensions/forms/Field/style/dnb-forms-field.scss +0 -5
  819. package/es/extensions/forms/Form/style/dnb-forms-form.css +0 -33
  820. package/es/extensions/forms/Form/style/dnb-forms-form.min.css +0 -1
  821. package/es/extensions/forms/Form/style/dnb-forms-form.scss +0 -3
  822. package/es/extensions/forms/Form/style/index.d.ts +0 -5
  823. package/es/extensions/forms/Form/style/index.js +0 -1
  824. package/es/extensions/forms/Form/style/index.js.map +0 -1
  825. package/es/extensions/forms/StepsLayout/style/index.scss +0 -1
  826. package/es/extensions/forms/ValueBlock/style/index.scss +0 -1
  827. package/es/extensions/forms/style/index.d.ts +0 -1
  828. package/es/extensions/forms/style/index.js +0 -1
  829. package/es/extensions/forms/style/index.js.map +0 -1
  830. package/extensions/forms/Field/style/dnb-forms-field.css +0 -93
  831. package/extensions/forms/Field/style/dnb-forms-field.min.css +0 -1
  832. package/extensions/forms/Field/style/dnb-forms-field.scss +0 -5
  833. package/extensions/forms/Form/style/dnb-forms-form.css +0 -33
  834. package/extensions/forms/Form/style/dnb-forms-form.min.css +0 -1
  835. package/extensions/forms/Form/style/dnb-forms-form.scss +0 -3
  836. package/extensions/forms/Form/style/index.d.ts +0 -5
  837. package/extensions/forms/Form/style/index.js +0 -1
  838. package/extensions/forms/Form/style/index.js.map +0 -1
  839. package/extensions/forms/StepsLayout/style/index.scss +0 -1
  840. package/extensions/forms/ValueBlock/style/index.scss +0 -1
  841. package/extensions/forms/style/index.d.ts +0 -1
  842. package/extensions/forms/style/index.js +0 -1
  843. package/extensions/forms/style/index.js.map +0 -1
  844. /package/cjs/components/button/style/{dnb-button--tertiary.scss → button--tertiary.scss} +0 -0
  845. /package/components/button/style/{dnb-button--tertiary.scss → button--tertiary.scss} +0 -0
  846. /package/es/components/button/style/{dnb-button--tertiary.scss → button--tertiary.scss} +0 -0
@@ -1,15 +1,27 @@
1
1
  import { InputMaskedProps } from '../../../../components/InputMasked';
2
+ import { CountryType } from '../../constants/countries';
3
+ import { Props as InputProps } from '../String';
2
4
  import { FieldHelpProps, FieldProps } from '../../types';
3
- export type Props = FieldHelpProps & FieldProps<string, undefined> & {
5
+ import { CountryFilterSet } from '../SelectCountry';
6
+ export type Props = FieldHelpProps & FieldProps<string, undefined | string> & {
4
7
  countryCodeFieldClassName?: string;
5
8
  numberFieldClassName?: string;
6
9
  countryCodePlaceholder?: string;
7
10
  countryCodeLabel?: string;
8
11
  numberMask?: InputMaskedProps['mask'];
12
+ pattern?: InputProps['pattern'];
9
13
  width?: 'large' | 'stretch';
14
+ omitCountryCodeField?: boolean;
10
15
  onCountryCodeChange?: (value: string | undefined) => void;
11
16
  onNumberChange?: (value: string | undefined) => void;
12
- } & {
17
+ countries?: CountryFilterSet;
18
+ /**
19
+ * For internal use only.
20
+ *
21
+ * @param country
22
+ * @returns boolean
23
+ */
24
+ filterCountries?: (country: CountryType) => boolean;
13
25
  /**
14
26
  * For internal testing purposes
15
27
  */
@@ -4,7 +4,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
4
4
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
5
5
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
6
6
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
7
- import React, { useMemo, useContext, useCallback } from 'react';
7
+ import React, { useMemo, useContext, useCallback, useEffect } from 'react';
8
8
  import { Autocomplete, Flex } from '../../../../components';
9
9
  import classnames from 'classnames';
10
10
  import countries from '../../constants/countries';
@@ -13,14 +13,20 @@ import { useDataValue } from '../../hooks';
13
13
  import FieldBlock from '../../FieldBlock';
14
14
  import { pickSpacingProps } from '../../../../components/flex/utils';
15
15
  import SharedContext from '../../../../shared/Context';
16
+ import { getCountryData, makeCountryFilterSet } from '../SelectCountry';
17
+ const defaultCountryCode = '+47';
18
+ const defaultPlaceholder = '00 00 00 00';
19
+ const defaultMask = [/\d/, /\d/, ' ', /\d/, /\d/, ' ', /\d/, /\d/, ' ', /\d/, /\d/];
16
20
  function PhoneNumber(props) {
21
+ var _sharedContext$locale;
17
22
  const sharedContext = useContext(SharedContext);
18
23
  const tr = sharedContext === null || sharedContext === void 0 ? void 0 : sharedContext.translation.Forms;
24
+ const lang = (_sharedContext$locale = sharedContext.locale) === null || _sharedContext$locale === void 0 ? void 0 : _sharedContext$locale.split('-')[0];
19
25
  const errorMessages = useMemo(() => _objectSpread({
20
- required: tr.phoneNumberErrorRequired
26
+ required: tr.phoneNumberErrorRequired,
27
+ pattern: tr.phoneNumberErrorRequired
21
28
  }, props === null || props === void 0 ? void 0 : props.errorMessages), [tr, props.errorMessages]);
22
29
  const defaultProps = {
23
- value: '+47',
24
30
  errorMessages
25
31
  };
26
32
  const preparedProps = _objectSpread(_objectSpread({}, defaultProps), props);
@@ -32,8 +38,8 @@ function PhoneNumber(props) {
32
38
  placeholder,
33
39
  countryCodeLabel,
34
40
  label = sharedContext === null || sharedContext === void 0 ? void 0 : sharedContext.translation.Forms.phoneNumberLabel,
35
- value,
36
41
  numberMask,
42
+ countries: ccFilter = 'Prioritized',
37
43
  emptyValue,
38
44
  info,
39
45
  warning,
@@ -41,99 +47,162 @@ function PhoneNumber(props) {
41
47
  disabled,
42
48
  width = 'large',
43
49
  help,
50
+ pattern,
44
51
  required,
45
52
  validateInitially,
46
53
  continuousValidation,
47
54
  validateUnchanged,
55
+ omitCountryCodeField,
48
56
  handleFocus,
49
57
  handleBlur,
50
58
  handleChange,
59
+ updateValue,
51
60
  onCountryCodeChange,
52
- onNumberChange
61
+ onNumberChange,
62
+ filterCountries = ccFilter !== 'Prioritized' ? makeCountryFilterSet(ccFilter) : undefined
53
63
  } = useDataValue(preparedProps);
54
- const [, countryCode, phoneNumber] = value !== undefined ? value.match(/^(\+[^ ]+)? ?(.*)$/) : [undefined, '', ''];
55
- const singleCountryCodeData = useMemo(() => {
56
- var _sharedContext$locale;
57
- return getCountryData({
58
- lang: (_sharedContext$locale = sharedContext.locale) === null || _sharedContext$locale === void 0 ? void 0 : _sharedContext$locale.split('-')[0],
59
- filter: countryCode
64
+ const countryCodeRef = React.useRef(null);
65
+ const numberRef = React.useRef(null);
66
+ const dataRef = React.useRef(null);
67
+ const langRef = React.useRef(lang);
68
+ const wasFilled = React.useRef(false);
69
+ const updateCurrentDataSet = useCallback(() => {
70
+ dataRef.current = getCountryData({
71
+ lang,
72
+ filter: !wasFilled.current ? country => `${formattCountryCode(country.cdc)}` === countryCodeRef.current : filterCountries,
73
+ sort: ccFilter,
74
+ makeObject
75
+ });
76
+ }, [lang, filterCountries, ccFilter]);
77
+ const callOnChange = useCallback(({
78
+ countryCode = omitCountryCodeField ? emptyValue : countryCodeRef.current || emptyValue,
79
+ phoneNumber = numberRef.current || emptyValue
80
+ }) => {
81
+ updateValue('invalidate');
82
+ handleChange(phoneNumber ? joinValue([countryCode, phoneNumber]) : emptyValue, omitCountryCodeField ? {
83
+ phoneNumber
84
+ } : {
85
+ countryCode,
86
+ phoneNumber
60
87
  });
61
- }, []);
88
+ }, [omitCountryCodeField, emptyValue, updateValue, handleChange]);
89
+ useMemo(() => {
90
+ const [countryCode, phoneNumber] = splitValue(props.value);
91
+ numberRef.current = phoneNumber;
92
+ if (lang !== langRef.current || !wasFilled.current) {
93
+ countryCodeRef.current = countryCode || defaultCountryCode;
94
+ langRef.current = lang;
95
+ updateCurrentDataSet();
96
+ }
97
+ }, [props.value, lang, updateCurrentDataSet]);
98
+ useEffect(() => {
99
+ const [countryCode, phoneNumber] = splitValue(props.value);
100
+ const newValue = phoneNumber ? joinValue([countryCode, phoneNumber]) : emptyValue;
101
+ updateValue(newValue);
102
+ }, [props.value, emptyValue, updateValue]);
62
103
  const handleCountryCodeChange = useCallback(({
63
104
  data
64
105
  }) => {
65
- var _data$selectedKey$tri, _data$selectedKey;
66
- const countryCode = (_data$selectedKey$tri = data === null || data === void 0 ? void 0 : (_data$selectedKey = data.selectedKey) === null || _data$selectedKey === void 0 ? void 0 : _data$selectedKey.trim()) !== null && _data$selectedKey$tri !== void 0 ? _data$selectedKey$tri : emptyValue;
67
- if (!countryCode && !phoneNumber) {
68
- handleChange === null || handleChange === void 0 ? void 0 : handleChange(emptyValue);
69
- onCountryCodeChange === null || onCountryCodeChange === void 0 ? void 0 : onCountryCodeChange(emptyValue);
70
- return;
71
- }
72
- handleChange === null || handleChange === void 0 ? void 0 : handleChange([countryCode, phoneNumber].filter(Boolean).join(' '));
106
+ var _data$selectedKey;
107
+ const countryCode = countryCodeRef.current = (data === null || data === void 0 ? void 0 : (_data$selectedKey = data.selectedKey) === null || _data$selectedKey === void 0 ? void 0 : _data$selectedKey.trim()) || emptyValue;
108
+ callOnChange({
109
+ countryCode
110
+ });
73
111
  onCountryCodeChange === null || onCountryCodeChange === void 0 ? void 0 : onCountryCodeChange(countryCode);
74
- }, [phoneNumber, emptyValue, handleChange, onCountryCodeChange]);
75
- const handleNumberChange = useCallback(phoneNumber => {
76
- if (!countryCode && !phoneNumber) {
77
- handleChange === null || handleChange === void 0 ? void 0 : handleChange(emptyValue);
78
- onNumberChange === null || onNumberChange === void 0 ? void 0 : onNumberChange(emptyValue);
79
- return;
80
- }
81
- handleChange === null || handleChange === void 0 ? void 0 : handleChange([countryCode, phoneNumber].filter(Boolean).join(' '));
112
+ }, [emptyValue, callOnChange, onCountryCodeChange]);
113
+ const handleNumberChange = useCallback(value => {
114
+ const phoneNumber = numberRef.current = value || emptyValue;
115
+ callOnChange({
116
+ phoneNumber
117
+ });
82
118
  onNumberChange === null || onNumberChange === void 0 ? void 0 : onNumberChange(phoneNumber);
83
- }, [countryCode, emptyValue, handleChange, onNumberChange]);
84
- const onFocusHandler = ({
85
- dataList,
119
+ }, [emptyValue, callOnChange, onNumberChange]);
120
+ const onFocusHandler = useCallback(({
86
121
  updateData
87
122
  }) => {
88
- if (dataList.length < 10) {
89
- var _sharedContext$locale2;
90
- updateData(getCountryData({
91
- lang: (_sharedContext$locale2 = sharedContext.locale) === null || _sharedContext$locale2 === void 0 ? void 0 : _sharedContext$locale2.split('-')[0]
92
- }));
123
+ if (!wasFilled.current) {
124
+ wasFilled.current = true;
125
+ updateCurrentDataSet();
126
+ updateData(dataRef.current);
93
127
  }
94
128
  handleFocus();
95
- };
129
+ }, [handleFocus, updateCurrentDataSet]);
130
+ const onTypeHandler = useCallback(({
131
+ value,
132
+ updateData,
133
+ revalidateInputValue,
134
+ event
135
+ }) => {
136
+ var _event$nativeEvent;
137
+ if (typeof (event === null || event === void 0 ? void 0 : (_event$nativeEvent = event.nativeEvent) === null || _event$nativeEvent === void 0 ? void 0 : _event$nativeEvent.data) === 'undefined') {
138
+ const cdcVal = /\+\d{1,3}\s{1}\d+/.test(value) ? splitValue(value)[0] : value;
139
+ const country = countries.find(({
140
+ cdc
141
+ }) => cdc === cdcVal);
142
+ if (country !== null && country !== void 0 && country.cdc) {
143
+ const countryCode = countryCodeRef.current = formattCountryCode(country.cdc);
144
+ updateCurrentDataSet();
145
+ updateData(dataRef.current);
146
+ callOnChange({
147
+ countryCode
148
+ });
149
+ window.requestAnimationFrame(() => {
150
+ revalidateInputValue();
151
+ });
152
+ }
153
+ }
154
+ }, [callOnChange, updateCurrentDataSet]);
155
+ const isDefault = countryCodeRef.current.includes(defaultCountryCode);
96
156
  return React.createElement(FieldBlock, _extends({
97
157
  className: classnames('dnb-forms-field-phone-number', className),
98
- width: width !== 'stretch' ? width : undefined,
158
+ width: omitCountryCodeField ? undefined : width,
99
159
  info: info,
100
160
  warning: warning,
101
- error: error
102
- }, pickSpacingProps(props)), React.createElement(Flex.Horizontal, null, React.createElement(Autocomplete, {
161
+ error: error,
162
+ disabled: disabled
163
+ }, pickSpacingProps(props)), React.createElement(Flex.Horizontal, {
164
+ align: "baseline"
165
+ }, !omitCountryCodeField && React.createElement(Autocomplete, {
103
166
  className: classnames('dnb-forms-field-phone-number__country-code', countryCodeFieldClassName),
167
+ mode: "async",
104
168
  placeholder: countryCodePlaceholder !== null && countryCodePlaceholder !== void 0 ? countryCodePlaceholder : ' ',
105
169
  label_direction: "vertical",
106
170
  label: countryCodeLabel !== null && countryCodeLabel !== void 0 ? countryCodeLabel : sharedContext === null || sharedContext === void 0 ? void 0 : sharedContext.translation.Forms.countryCodeLabel,
107
- data: singleCountryCodeData,
108
- value: countryCode,
171
+ data: dataRef.current,
172
+ value: countryCodeRef.current,
109
173
  disabled: disabled,
110
174
  on_focus: onFocusHandler,
111
175
  on_blur: handleBlur,
112
176
  on_change: handleCountryCodeChange,
177
+ on_type: onTypeHandler,
113
178
  independent_width: true,
114
179
  search_numbers: true,
115
- keep_value_and_selection: true,
180
+ keep_selection: true,
181
+ autoComplete: "tel-country-code",
116
182
  no_animation: props.noAnimation,
117
183
  stretch: width === 'stretch'
118
184
  }), React.createElement(StringComponent, {
119
185
  className: classnames('dnb-forms-field-phone-number__number', numberFieldClassName),
120
186
  type: "tel",
187
+ autoComplete: "tel-national",
121
188
  emptyValue: "",
122
189
  layout: "vertical",
123
190
  label: label !== null && label !== void 0 ? label : ' ',
124
- placeholder: placeholder !== null && placeholder !== void 0 ? placeholder : '00 00 00 00',
125
- mask: numberMask !== null && numberMask !== void 0 ? numberMask : [/\d/, /\d/, ' ', /\d/, /\d/, ' ', /\d/, /\d/, ' ', /\d/, /\d/],
191
+ placeholder: placeholder !== null && placeholder !== void 0 ? placeholder : isDefault ? defaultPlaceholder : undefined,
192
+ mask: numberMask !== null && numberMask !== void 0 ? numberMask : isDefault ? defaultMask : Array(12).fill(/\d/),
126
193
  onFocus: handleFocus,
127
194
  onBlur: handleBlur,
128
195
  onChange: handleNumberChange,
129
- value: phoneNumber,
196
+ value: numberRef.current,
130
197
  info: info,
131
198
  warning: warning,
132
199
  error: error,
133
200
  disabled: disabled,
134
- width: "stretch",
201
+ width: omitCountryCodeField ? 'medium' : 'stretch',
135
202
  help: help,
136
203
  required: required,
204
+ pattern: pattern,
205
+ errorMessages: errorMessages,
137
206
  validateInitially: validateInitially,
138
207
  continuousValidation: continuousValidation,
139
208
  validateUnchanged: validateUnchanged
@@ -142,22 +211,20 @@ function PhoneNumber(props) {
142
211
  function makeObject(country, lang) {
143
212
  var _country$i18n$lang;
144
213
  return {
145
- selectedKey: `+${country.cdc}`,
146
- selected_value: `${country.iso} (+${country.cdc})`,
147
- content: `+${country.cdc} ${(_country$i18n$lang = country.i18n[lang]) !== null && _country$i18n$lang !== void 0 ? _country$i18n$lang : country.i18n.en}`
214
+ selectedKey: formattCountryCode(country.cdc),
215
+ selected_value: `${country.iso} (${formattCountryCode(country.cdc)})`,
216
+ search_content: Object.values(country.i18n).map(v => `${formattCountryCode(country.cdc)} ${v}`),
217
+ content: `${formattCountryCode(country.cdc)} ${(_country$i18n$lang = country.i18n[lang]) !== null && _country$i18n$lang !== void 0 ? _country$i18n$lang : country.i18n.en}`
148
218
  };
149
219
  }
150
- function getCountryData({
151
- lang = 'en',
152
- filter = null
153
- } = {}) {
154
- return countries.filter(({
155
- cdc
156
- }) => !filter || `+${cdc}` === filter).sort(({
157
- i18n: a
158
- }, {
159
- i18n: b
160
- }) => a[lang] > b[lang] ? 1 : -1).map(country => makeObject(country, lang));
220
+ function formattCountryCode(value) {
221
+ return `+${value}`;
222
+ }
223
+ function splitValue(value) {
224
+ return (typeof value === 'string' ? value.match(/^(\+[^ ]+)? ?(.*)$/) : [undefined, '', '']).slice(1);
225
+ }
226
+ function joinValue(array) {
227
+ return array.filter(Boolean).join(' ');
161
228
  }
162
229
  PhoneNumber._supportsSpacingProps = true;
163
230
  export default PhoneNumber;
@@ -1 +1 @@
1
- {"version":3,"file":"PhoneNumber.js","names":["React","useMemo","useContext","useCallback","Autocomplete","Flex","classnames","countries","StringComponent","useDataValue","FieldBlock","pickSpacingProps","SharedContext","PhoneNumber","props","sharedContext","tr","translation","Forms","errorMessages","_objectSpread","required","phoneNumberErrorRequired","defaultProps","value","preparedProps","className","countryCodeFieldClassName","numberFieldClassName","countryCodePlaceholder","placeholder","countryCodeLabel","label","phoneNumberLabel","numberMask","emptyValue","info","warning","error","disabled","width","help","validateInitially","continuousValidation","validateUnchanged","handleFocus","handleBlur","handleChange","onCountryCodeChange","onNumberChange","countryCode","phoneNumber","undefined","match","singleCountryCodeData","_sharedContext$locale","getCountryData","lang","locale","split","filter","handleCountryCodeChange","data","_data$selectedKey$tri","_data$selectedKey","selectedKey","trim","Boolean","join","handleNumberChange","onFocusHandler","dataList","updateData","length","_sharedContext$locale2","createElement","_extends","Horizontal","label_direction","on_focus","on_blur","on_change","independent_width","search_numbers","keep_value_and_selection","no_animation","noAnimation","stretch","type","layout","mask","onFocus","onBlur","onChange","makeObject","country","_country$i18n$lang","cdc","selected_value","iso","content","i18n","en","sort","a","b","map","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/PhoneNumber/PhoneNumber.tsx"],"sourcesContent":["import React, { useMemo, useContext, useCallback } from 'react'\nimport { Autocomplete, Flex } from '../../../../components'\nimport { InputMaskedProps } from '../../../../components/InputMasked'\nimport classnames from 'classnames'\nimport countries from '../../constants/countries'\nimport StringComponent from '../String'\nimport { useDataValue } from '../../hooks'\nimport FieldBlock from '../../FieldBlock'\nimport { FieldHelpProps, FieldProps } from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport SharedContext from '../../../../shared/Context'\n\nexport type Props = FieldHelpProps &\n FieldProps<string, undefined> & {\n countryCodeFieldClassName?: string\n numberFieldClassName?: string\n countryCodePlaceholder?: string\n countryCodeLabel?: string\n numberMask?: InputMaskedProps['mask']\n width?: 'large' | 'stretch'\n onCountryCodeChange?: (value: string | undefined) => void\n onNumberChange?: (value: string | undefined) => void\n } & {\n /**\n * For internal testing purposes\n */\n noAnimation?: boolean\n }\n\nfunction PhoneNumber(props: Props) {\n const sharedContext = useContext(SharedContext)\n const tr = sharedContext?.translation.Forms\n\n const errorMessages = useMemo(\n () => ({\n required: tr.phoneNumberErrorRequired,\n ...props?.errorMessages,\n }),\n [tr, props.errorMessages]\n )\n\n const defaultProps: Partial<Props> = {\n // Important for the default value to be defined here, and not after the useDataValue call, to avoid the UI jumping\n // back to +47 once the user empty the field so handleChange send out undefined.\n value: '+47',\n errorMessages,\n }\n const preparedProps: Props = {\n ...defaultProps,\n ...props,\n }\n\n const {\n className,\n countryCodeFieldClassName,\n numberFieldClassName,\n countryCodePlaceholder,\n placeholder,\n countryCodeLabel,\n label = sharedContext?.translation.Forms.phoneNumberLabel,\n value,\n numberMask,\n emptyValue,\n info,\n warning,\n error,\n disabled,\n width = 'large',\n help,\n required,\n validateInitially,\n continuousValidation,\n validateUnchanged,\n handleFocus,\n handleBlur,\n handleChange,\n onCountryCodeChange,\n onNumberChange,\n } = useDataValue(preparedProps)\n\n const [, countryCode, phoneNumber] =\n value !== undefined\n ? value.match(/^(\\+[^ ]+)? ?(.*)$/)\n : [undefined, '', '']\n\n const singleCountryCodeData = useMemo(() => {\n return getCountryData({\n lang: sharedContext.locale?.split('-')[0],\n filter: countryCode,\n })\n }, [])\n\n const handleCountryCodeChange = useCallback(\n ({ data }: { data: { selectedKey: string } }) => {\n const countryCode = data?.selectedKey?.trim() ?? emptyValue\n\n if (!countryCode && !phoneNumber) {\n handleChange?.(emptyValue)\n onCountryCodeChange?.(emptyValue)\n return\n }\n\n handleChange?.([countryCode, phoneNumber].filter(Boolean).join(' '))\n onCountryCodeChange?.(countryCode)\n },\n [phoneNumber, emptyValue, handleChange, onCountryCodeChange]\n )\n\n const handleNumberChange = useCallback(\n (phoneNumber: string) => {\n if (!countryCode && !phoneNumber) {\n handleChange?.(emptyValue)\n onNumberChange?.(emptyValue)\n return\n }\n\n handleChange?.([countryCode, phoneNumber].filter(Boolean).join(' '))\n onNumberChange?.(phoneNumber)\n },\n [countryCode, emptyValue, handleChange, onNumberChange]\n )\n\n const onFocusHandler = ({ dataList, updateData }) => {\n // because there can be more than one country with same cdc\n if (dataList.length < 10) {\n updateData(\n getCountryData({ lang: sharedContext.locale?.split('-')[0] })\n )\n }\n handleFocus()\n }\n\n return (\n <FieldBlock\n className={classnames('dnb-forms-field-phone-number', className)}\n width={width !== 'stretch' ? width : undefined}\n info={info}\n warning={warning}\n error={error}\n {...pickSpacingProps(props)}\n >\n <Flex.Horizontal>\n <Autocomplete\n className={classnames(\n 'dnb-forms-field-phone-number__country-code',\n countryCodeFieldClassName\n )}\n placeholder={countryCodePlaceholder ?? ' '}\n label_direction=\"vertical\"\n label={\n countryCodeLabel ??\n sharedContext?.translation.Forms.countryCodeLabel\n }\n data={singleCountryCodeData}\n value={countryCode}\n disabled={disabled}\n on_focus={onFocusHandler}\n on_blur={handleBlur}\n on_change={handleCountryCodeChange}\n independent_width\n search_numbers\n keep_value_and_selection\n no_animation={props.noAnimation}\n stretch={width === 'stretch'}\n />\n\n <StringComponent\n className={classnames(\n 'dnb-forms-field-phone-number__number',\n numberFieldClassName\n )}\n type=\"tel\"\n emptyValue=\"\"\n layout=\"vertical\"\n label={label ?? ' '}\n placeholder={placeholder ?? '00 00 00 00'}\n mask={\n numberMask ?? [\n /\\d/,\n /\\d/,\n ' ',\n /\\d/,\n /\\d/,\n ' ',\n /\\d/,\n /\\d/,\n ' ',\n /\\d/,\n /\\d/,\n ]\n }\n onFocus={handleFocus}\n onBlur={handleBlur}\n onChange={handleNumberChange}\n value={phoneNumber}\n info={info}\n warning={warning}\n error={error}\n disabled={disabled}\n width=\"stretch\"\n help={help}\n required={required}\n validateInitially={validateInitially}\n continuousValidation={continuousValidation}\n validateUnchanged={validateUnchanged}\n />\n </Flex.Horizontal>\n </FieldBlock>\n )\n}\n\ntype CountryType = {\n cdc: string\n iso: string\n i18n: {\n en: string\n }\n}\n\nfunction makeObject(country: CountryType, lang: string) {\n return {\n selectedKey: `+${country.cdc}`,\n selected_value: `${country.iso} (+${country.cdc})`,\n content: `+${country.cdc} ${country.i18n[lang] ?? country.i18n.en}`,\n }\n}\n\nfunction getCountryData({ lang = 'en', filter = null } = {}) {\n return countries\n .filter(({ cdc }) => !filter || `+${cdc}` === filter)\n .sort(({ i18n: a }, { i18n: b }) => (a[lang] > b[lang] ? 1 : -1))\n .map((country) => makeObject(country, lang))\n}\n\nPhoneNumber._supportsSpacingProps = true\nexport default PhoneNumber\n"],"mappings":"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"}
1
+ {"version":3,"file":"PhoneNumber.js","names":["React","useMemo","useContext","useCallback","useEffect","Autocomplete","Flex","classnames","countries","StringComponent","useDataValue","FieldBlock","pickSpacingProps","SharedContext","getCountryData","makeCountryFilterSet","defaultCountryCode","defaultPlaceholder","defaultMask","PhoneNumber","props","_sharedContext$locale","sharedContext","tr","translation","Forms","lang","locale","split","errorMessages","_objectSpread","required","phoneNumberErrorRequired","pattern","defaultProps","preparedProps","className","countryCodeFieldClassName","numberFieldClassName","countryCodePlaceholder","placeholder","countryCodeLabel","label","phoneNumberLabel","numberMask","ccFilter","emptyValue","info","warning","error","disabled","width","help","validateInitially","continuousValidation","validateUnchanged","omitCountryCodeField","handleFocus","handleBlur","handleChange","updateValue","onCountryCodeChange","onNumberChange","filterCountries","undefined","countryCodeRef","useRef","numberRef","dataRef","langRef","wasFilled","updateCurrentDataSet","current","filter","country","formattCountryCode","cdc","sort","makeObject","callOnChange","countryCode","phoneNumber","joinValue","splitValue","value","newValue","handleCountryCodeChange","data","_data$selectedKey","selectedKey","trim","handleNumberChange","onFocusHandler","updateData","onTypeHandler","revalidateInputValue","event","_event$nativeEvent","nativeEvent","cdcVal","test","find","window","requestAnimationFrame","isDefault","includes","createElement","_extends","Horizontal","align","mode","label_direction","on_focus","on_blur","on_change","on_type","independent_width","search_numbers","keep_selection","autoComplete","no_animation","noAnimation","stretch","type","layout","mask","Array","fill","onFocus","onBlur","onChange","_country$i18n$lang","selected_value","iso","search_content","Object","values","i18n","map","v","content","en","match","slice","array","Boolean","join","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/PhoneNumber/PhoneNumber.tsx"],"sourcesContent":["import React, { useMemo, useContext, useCallback, useEffect } from 'react'\nimport { Autocomplete, Flex } from '../../../../components'\nimport { InputMaskedProps } from '../../../../components/InputMasked'\nimport classnames from 'classnames'\nimport countries, { CountryType } from '../../constants/countries'\nimport StringComponent, { Props as InputProps } from '../String'\nimport { useDataValue } from '../../hooks'\nimport FieldBlock from '../../FieldBlock'\nimport { FieldHelpProps, FieldProps } from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport SharedContext from '../../../../shared/Context'\nimport {\n CountryFilterSet,\n getCountryData,\n makeCountryFilterSet,\n} from '../SelectCountry'\n\nexport type Props = FieldHelpProps &\n FieldProps<string, undefined | string> & {\n countryCodeFieldClassName?: string\n numberFieldClassName?: string\n countryCodePlaceholder?: string\n countryCodeLabel?: string\n numberMask?: InputMaskedProps['mask']\n pattern?: InputProps['pattern']\n width?: 'large' | 'stretch'\n omitCountryCodeField?: boolean\n onCountryCodeChange?: (value: string | undefined) => void\n onNumberChange?: (value: string | undefined) => void\n countries?: CountryFilterSet\n\n /**\n * For internal use only.\n *\n * @param country\n * @returns boolean\n */\n filterCountries?: (country: CountryType) => boolean\n\n /**\n * For internal testing purposes\n */\n noAnimation?: boolean\n }\n\n// Important for the default value to be defined here, and not after the useDataValue call, to avoid the UI jumping\n// back to +47 once the user empty the field so handleChange send out undefined.\nconst defaultCountryCode = '+47'\nconst defaultPlaceholder = '00 00 00 00'\nconst defaultMask = [\n /\\d/,\n /\\d/,\n ' ',\n /\\d/,\n /\\d/,\n ' ',\n /\\d/,\n /\\d/,\n ' ',\n /\\d/,\n /\\d/,\n]\n\nfunction PhoneNumber(props: Props) {\n const sharedContext = useContext(SharedContext)\n const tr = sharedContext?.translation.Forms\n const lang = sharedContext.locale?.split('-')[0]\n\n const errorMessages = useMemo(\n () => ({\n required: tr.phoneNumberErrorRequired,\n pattern: tr.phoneNumberErrorRequired,\n ...props?.errorMessages,\n }),\n [tr, props.errorMessages]\n )\n\n const defaultProps: Partial<Props> = {\n errorMessages,\n }\n const preparedProps: Props = {\n ...defaultProps,\n ...props,\n }\n\n const {\n className,\n countryCodeFieldClassName,\n numberFieldClassName,\n countryCodePlaceholder,\n placeholder,\n countryCodeLabel,\n label = sharedContext?.translation.Forms.phoneNumberLabel,\n numberMask,\n countries: ccFilter = 'Prioritized',\n emptyValue,\n info,\n warning,\n error,\n disabled,\n width = 'large',\n help,\n pattern,\n required,\n validateInitially,\n continuousValidation,\n validateUnchanged,\n omitCountryCodeField,\n handleFocus,\n handleBlur,\n handleChange,\n updateValue,\n onCountryCodeChange,\n onNumberChange,\n filterCountries = ccFilter !== 'Prioritized'\n ? makeCountryFilterSet(ccFilter)\n : undefined,\n } = useDataValue(preparedProps)\n\n const countryCodeRef = React.useRef(null)\n const numberRef = React.useRef(null)\n const dataRef = React.useRef(null)\n const langRef = React.useRef(lang)\n const wasFilled = React.useRef(false)\n\n const updateCurrentDataSet = useCallback(() => {\n dataRef.current = getCountryData({\n lang,\n filter: !wasFilled.current\n ? (country) =>\n `${formattCountryCode(country.cdc)}` === countryCodeRef.current\n : filterCountries,\n sort: ccFilter as Extract<CountryFilterSet, 'Prioritized'>,\n makeObject,\n })\n }, [lang, filterCountries, ccFilter])\n\n const callOnChange = useCallback(\n ({\n countryCode = omitCountryCodeField\n ? emptyValue\n : countryCodeRef.current || emptyValue,\n phoneNumber = numberRef.current || emptyValue,\n }) => {\n /**\n * To ensure, we actually call onChange every time,\n * even if the value is undefined\n */\n updateValue('invalidate')\n\n handleChange(\n phoneNumber ? joinValue([countryCode, phoneNumber]) : emptyValue,\n omitCountryCodeField\n ? { phoneNumber }\n : { countryCode, phoneNumber }\n )\n },\n [omitCountryCodeField, emptyValue, updateValue, handleChange]\n )\n\n /**\n * We do not process the whole country list at the first render.\n * Only when the Autocomplete opens (focus).\n * To achieve this, we use memo instead of effect to update refs in sync.\n *\n * We set or update the data list depending on if the countrycode changes or lang changes.\n * We then update countryCode and phoneNumber when value changes.\n */\n useMemo(() => {\n const [countryCode, phoneNumber] = splitValue(props.value)\n numberRef.current = phoneNumber\n\n if (lang !== langRef.current || !wasFilled.current) {\n countryCodeRef.current = countryCode || defaultCountryCode\n langRef.current = lang\n\n updateCurrentDataSet()\n }\n }, [props.value, lang, updateCurrentDataSet])\n\n /**\n * On external value change, update the internal,\n * only so onFocus and onBlur does have correct (eventually empty) value.\n */\n useEffect(() => {\n const [countryCode, phoneNumber] = splitValue(props.value)\n const newValue = phoneNumber\n ? joinValue([countryCode, phoneNumber])\n : emptyValue\n updateValue(newValue)\n }, [props.value, emptyValue, updateValue])\n\n const handleCountryCodeChange = useCallback(\n ({ data }: { data: { selectedKey: string } }) => {\n const countryCode = (countryCodeRef.current =\n data?.selectedKey?.trim() || emptyValue)\n\n callOnChange({ countryCode })\n onCountryCodeChange?.(countryCode)\n },\n [emptyValue, callOnChange, onCountryCodeChange]\n )\n\n const handleNumberChange = useCallback(\n (value: string) => {\n const phoneNumber = (numberRef.current = value || emptyValue)\n\n callOnChange({ phoneNumber })\n onNumberChange?.(phoneNumber)\n },\n [emptyValue, callOnChange, onNumberChange]\n )\n\n const onFocusHandler = useCallback(\n ({ updateData }) => {\n if (!wasFilled.current) {\n wasFilled.current = true\n updateCurrentDataSet()\n updateData(dataRef.current)\n }\n handleFocus()\n },\n [handleFocus, updateCurrentDataSet]\n )\n\n const onTypeHandler = useCallback(\n ({ value, updateData, revalidateInputValue, event }) => {\n // Handle browser autofill/autocomplete\n if (typeof event?.nativeEvent?.data === 'undefined') {\n const cdcVal = /\\+\\d{1,3}\\s{1}\\d+/.test(value)\n ? splitValue(value)[0]\n : value\n const country = countries.find(({ cdc }) => cdc === cdcVal)\n if (country?.cdc) {\n const countryCode = (countryCodeRef.current = formattCountryCode(\n country.cdc\n ))\n\n updateCurrentDataSet()\n updateData(dataRef.current)\n callOnChange({ countryCode })\n\n // To ensure correct input value,\n // regardless if there is changed data before or not.\n window.requestAnimationFrame(() => {\n revalidateInputValue()\n })\n }\n }\n },\n [callOnChange, updateCurrentDataSet]\n )\n\n const isDefault = countryCodeRef.current.includes(defaultCountryCode)\n\n return (\n <FieldBlock\n className={classnames('dnb-forms-field-phone-number', className)}\n width={omitCountryCodeField ? undefined : width}\n info={info}\n warning={warning}\n error={error}\n disabled={disabled}\n {...pickSpacingProps(props)}\n >\n <Flex.Horizontal align=\"baseline\">\n {!omitCountryCodeField && (\n <Autocomplete\n className={classnames(\n 'dnb-forms-field-phone-number__country-code',\n countryCodeFieldClassName\n )}\n mode=\"async\"\n placeholder={countryCodePlaceholder ?? ' '}\n label_direction=\"vertical\"\n label={\n countryCodeLabel ??\n sharedContext?.translation.Forms.countryCodeLabel\n }\n data={dataRef.current}\n value={countryCodeRef.current}\n disabled={disabled}\n on_focus={onFocusHandler}\n on_blur={handleBlur}\n on_change={handleCountryCodeChange}\n on_type={onTypeHandler}\n independent_width\n search_numbers\n keep_selection\n autoComplete=\"tel-country-code\"\n no_animation={props.noAnimation}\n stretch={width === 'stretch'}\n />\n )}\n\n <StringComponent\n className={classnames(\n 'dnb-forms-field-phone-number__number',\n numberFieldClassName\n )}\n type=\"tel\"\n autoComplete=\"tel-national\"\n emptyValue=\"\"\n layout=\"vertical\"\n label={label ?? ' '}\n placeholder={\n placeholder ?? (isDefault ? defaultPlaceholder : undefined)\n }\n mask={\n numberMask ?? (isDefault ? defaultMask : Array(12).fill(/\\d/))\n }\n onFocus={handleFocus}\n onBlur={handleBlur}\n onChange={handleNumberChange}\n value={numberRef.current}\n info={info}\n warning={warning}\n error={error}\n disabled={disabled}\n width={omitCountryCodeField ? 'medium' : 'stretch'}\n help={help}\n required={required}\n pattern={pattern}\n errorMessages={errorMessages}\n validateInitially={validateInitially}\n continuousValidation={continuousValidation}\n validateUnchanged={validateUnchanged}\n />\n </Flex.Horizontal>\n </FieldBlock>\n )\n}\n\nfunction makeObject(country: CountryType, lang: string) {\n return {\n selectedKey: formattCountryCode(country.cdc),\n selected_value: `${country.iso} (${formattCountryCode(country.cdc)})`,\n search_content: Object.values(country.i18n).map(\n (v) => `${formattCountryCode(country.cdc)} ${v}`\n ),\n content: `${formattCountryCode(country.cdc)} ${\n country.i18n[lang] ?? country.i18n.en\n }`,\n }\n}\n\nfunction formattCountryCode(value: string) {\n return `+${value}`\n}\n\nfunction splitValue(value: string) {\n return (\n typeof value === 'string'\n ? value.match(/^(\\+[^ ]+)? ?(.*)$/)\n : [undefined, '', '']\n ).slice(1)\n}\n\nfunction joinValue(array: Array<string>) {\n return array.filter(Boolean).join(' ')\n}\n\nPhoneNumber._supportsSpacingProps = true\nexport default PhoneNumber\n"],"mappings":"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"}
@@ -1,14 +1,8 @@
1
- :root {
2
- --forms-field-width--small: 5rem;
3
- --forms-field-width--medium: 11rem;
4
- --forms-field-width--large: 21rem;
5
- }
6
-
7
1
  .dnb-forms-field-phone-number__country-code {
8
- width: 9rem;
2
+ width: calc(var(--forms-field-width--medium) - 2rem);
9
3
  }
10
4
  .dnb-forms-field-phone-number__country-code .dnb-autocomplete__shell {
11
- width: 9rem;
5
+ width: calc(var(--forms-field-width--medium) - 2rem);
12
6
  }
13
7
  .dnb-forms-field-phone-number__number {
14
8
  flex: 1;
@@ -1 +1 @@
1
- :root{--forms-field-width--small:5rem;--forms-field-width--medium:11rem;--forms-field-width--large:21rem}.dnb-forms-field-phone-number__country-code,.dnb-forms-field-phone-number__country-code .dnb-autocomplete__shell{width:9rem}.dnb-forms-field-phone-number__number{flex:1}
1
+ .dnb-forms-field-phone-number__country-code,.dnb-forms-field-phone-number__country-code .dnb-autocomplete__shell{width:calc(var(--forms-field-width--medium) - 2rem)}.dnb-forms-field-phone-number__number{flex:1}
@@ -1,11 +1,9 @@
1
- @import '../../style/field-sizes.scss';
2
-
3
1
  .dnb-forms-field-phone-number {
4
2
  &__country-code {
5
- width: 9rem;
3
+ width: calc(var(--forms-field-width--medium) - 2rem);
6
4
 
7
5
  .dnb-autocomplete__shell {
8
- width: 9rem;
6
+ width: calc(var(--forms-field-width--medium) - 2rem);
9
7
  }
10
8
  }
11
9
 
@@ -1,9 +1,7 @@
1
1
  import { Props as FieldBlockProps } from '../../FieldBlock';
2
2
  import { Props as StringComponentProps } from '../String';
3
3
  import { FieldHelpProps } from '../../types';
4
- export type Props = FieldHelpProps & Omit<FieldBlockProps, 'children'> & Record<'postalCode' | 'city', StringComponentProps> & {
5
- width?: 'small' | 'medium' | 'large';
6
- };
4
+ export type Props = FieldHelpProps & Omit<FieldBlockProps, 'children'> & Record<'postalCode' | 'city', StringComponentProps>;
7
5
  declare function PostalCodeAndCity(props: Props): import("react/jsx-runtime").JSX.Element;
8
6
  declare namespace PostalCodeAndCity {
9
7
  var _supportsSpacingProps: boolean;
@@ -3,7 +3,7 @@
3
3
  import _extends from "@babel/runtime/helpers/esm/extends";
4
4
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
5
5
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
6
- const _excluded = ["postalCode", "city", "width", "help"];
6
+ const _excluded = ["postalCode", "city", "help", "width"];
7
7
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
8
8
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
9
9
  import React, { useContext } from 'react';
@@ -17,14 +17,16 @@ function PostalCodeAndCity(props) {
17
17
  const {
18
18
  postalCode = {},
19
19
  city = {},
20
- width = 'large',
21
- help
20
+ help,
21
+ width = 'large'
22
22
  } = props,
23
23
  fieldBlockProps = _objectWithoutProperties(props, _excluded);
24
24
  return React.createElement(FieldBlock, _extends({
25
25
  className: classnames('dnb-forms-field-postal-code-and-city', props.className)
26
- }, fieldBlockProps), React.createElement("div", {
27
- className: 'dnb-forms-field-postal-code-and-city__fields' + (width !== undefined ? ` dnb-forms-field-postal-code-and-city--width-${width}` : "")
26
+ }, fieldBlockProps, {
27
+ width: width
28
+ }), React.createElement("div", {
29
+ className: 'dnb-forms-field-postal-code-and-city__fields'
28
30
  }, React.createElement(StringComponent, _extends({}, postalCode, {
29
31
  pattern: (_postalCode$pattern = postalCode.pattern) !== null && _postalCode$pattern !== void 0 ? _postalCode$pattern : '^[0-9]{4}$',
30
32
  className: classnames('dnb-forms-field-postal-code-and-city__postal-code', postalCode.className),
@@ -1 +1 @@
1
- {"version":3,"file":"PostalCodeAndCity.js","names":["React","useContext","classnames","SharedContext","FieldBlock","StringComponent","PostalCodeAndCity","props","_postalCode$pattern","_postalCode$label","_postalCode$placehold","_city$label","sharedContext","postalCode","city","width","help","fieldBlockProps","_objectWithoutProperties","_excluded","createElement","_extends","className","undefined","pattern","label","translation","Forms","postalCodeLabel","errorMessages","_objectSpread","required","postalCodeErrorRequired","postalCodeErrorPattern","placeholder","inputClassName","cityLabel","cityErrorRequired","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.tsx"],"sourcesContent":["import React, { useContext } from 'react'\nimport classnames from 'classnames'\nimport SharedContext from '../../../../shared/Context'\nimport FieldBlock, { Props as FieldBlockProps } from '../../FieldBlock'\nimport StringComponent, { Props as StringComponentProps } from '../String'\nimport { FieldHelpProps } from '../../types'\n\nexport type Props = FieldHelpProps &\n Omit<FieldBlockProps, 'children'> &\n Record<'postalCode' | 'city', StringComponentProps> & {\n width?: 'small' | 'medium' | 'large'\n }\n\nfunction PostalCodeAndCity(props: Props) {\n const sharedContext = useContext(SharedContext)\n\n const {\n postalCode = {},\n city = {},\n width = 'large',\n help,\n ...fieldBlockProps\n } = props\n\n return (\n <FieldBlock\n className={classnames(\n 'dnb-forms-field-postal-code-and-city',\n props.className\n )}\n {...fieldBlockProps}\n >\n <div\n className={classnames(\n 'dnb-forms-field-postal-code-and-city__fields',\n width !== undefined &&\n `dnb-forms-field-postal-code-and-city--width-${width}`\n )}\n >\n <StringComponent\n {...postalCode}\n pattern={postalCode.pattern ?? '^[0-9]{4}$'}\n className={classnames(\n 'dnb-forms-field-postal-code-and-city__postal-code',\n postalCode.className\n )}\n label={\n postalCode.label ??\n sharedContext?.translation.Forms.postalCodeLabel\n }\n errorMessages={{\n required:\n sharedContext?.translation.Forms.postalCodeErrorRequired,\n pattern:\n sharedContext?.translation.Forms.postalCodeErrorPattern,\n ...postalCode.errorMessages,\n }}\n placeholder={postalCode.placeholder ?? '0000'}\n width={false}\n inputClassName=\"dnb-forms-field-postal-code-and-city__postal-code-input\"\n />\n <StringComponent\n {...city}\n className={classnames(\n 'dnb-forms-field-postal-code-and-city__city',\n city.className\n )}\n label={city.label ?? sharedContext?.translation.Forms.cityLabel}\n errorMessages={{\n required: sharedContext?.translation.Forms.cityErrorRequired,\n ...city.errorMessages,\n }}\n width=\"stretch\"\n help={help}\n />\n </div>\n </FieldBlock>\n )\n}\n\nPostalCodeAndCity._supportsSpacingProps = true\nexport default PostalCodeAndCity\n"],"mappings":";;;;;;;;AAAA,OAAOA,KAAK,IAAIC,UAAU,QAAQ,OAAO;AACzC,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,aAAa,MAAM,4BAA4B;AACtD,OAAOC,UAAU,MAAoC,kBAAkB;AACvE,OAAOC,eAAe,MAAyC,WAAW;AAS1E,SAASC,iBAAiBA,CAACC,KAAY,EAAE;EAAA,IAAAC,mBAAA,EAAAC,iBAAA,EAAAC,qBAAA,EAAAC,WAAA;EACvC,MAAMC,aAAa,GAAGX,UAAU,CAACE,aAAa,CAAC;EAE/C,MAAM;MACJU,UAAU,GAAG,CAAC,CAAC;MACfC,IAAI,GAAG,CAAC,CAAC;MACTC,KAAK,GAAG,OAAO;MACfC;IAEF,CAAC,GAAGT,KAAK;IADJU,eAAe,GAAAC,wBAAA,CAChBX,KAAK,EAAAY,SAAA;EAET,OACEnB,KAAA,CAAAoB,aAAA,CAAChB,UAAU,EAAAiB,QAAA;IACTC,SAAS,EAAEpB,UAAU,CACnB,sCAAsC,EACtCK,KAAK,CAACe,SACR;EAAE,GACEL,eAAe,GAEnBjB,KAAA,CAAAoB,aAAA;IACEE,SAAS,EACP,8CAA8C,IAC9CP,KAAK,KAAKQ,SAAS,mDAC8BR,KAAM;EACvD,GAEFf,KAAA,CAAAoB,aAAA,CAACf,eAAe,EAAAgB,QAAA,KACVR,UAAU;IACdW,OAAO,GAAAhB,mBAAA,GAAEK,UAAU,CAACW,OAAO,cAAAhB,mBAAA,cAAAA,mBAAA,GAAI,YAAa;IAC5Cc,SAAS,EAAEpB,UAAU,CACnB,mDAAmD,EACnDW,UAAU,CAACS,SACb,CAAE;IACFG,KAAK,GAAAhB,iBAAA,GACHI,UAAU,CAACY,KAAK,cAAAhB,iBAAA,cAAAA,iBAAA,GAChBG,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEc,WAAW,CAACC,KAAK,CAACC,eAClC;IACDC,aAAa,EAAAC,aAAA;MACXC,QAAQ,EACNnB,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEc,WAAW,CAACC,KAAK,CAACK,uBAAuB;MAC1DR,OAAO,EACLZ,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEc,WAAW,CAACC,KAAK,CAACM;IAAsB,GACtDpB,UAAU,CAACgB,aAAa,CAC3B;IACFK,WAAW,GAAAxB,qBAAA,GAAEG,UAAU,CAACqB,WAAW,cAAAxB,qBAAA,cAAAA,qBAAA,GAAI,MAAO;IAC9CK,KAAK,EAAE,KAAM;IACboB,cAAc,EAAC;EAAyD,EACzE,CAAC,EACFnC,KAAA,CAAAoB,aAAA,CAACf,eAAe,EAAAgB,QAAA,KACVP,IAAI;IACRQ,SAAS,EAAEpB,UAAU,CACnB,4CAA4C,EAC5CY,IAAI,CAACQ,SACP,CAAE;IACFG,KAAK,GAAAd,WAAA,GAAEG,IAAI,CAACW,KAAK,cAAAd,WAAA,cAAAA,WAAA,GAAIC,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEc,WAAW,CAACC,KAAK,CAACS,SAAU;IAChEP,aAAa,EAAAC,aAAA;MACXC,QAAQ,EAAEnB,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEc,WAAW,CAACC,KAAK,CAACU;IAAiB,GACzDvB,IAAI,CAACe,aAAa,CACrB;IACFd,KAAK,EAAC,SAAS;IACfC,IAAI,EAAEA;EAAK,EACZ,CACE,CACK,CAAC;AAEjB;AAEAV,iBAAiB,CAACgC,qBAAqB,GAAG,IAAI;AAC9C,eAAehC,iBAAiB"}
1
+ {"version":3,"file":"PostalCodeAndCity.js","names":["React","useContext","classnames","SharedContext","FieldBlock","StringComponent","PostalCodeAndCity","props","_postalCode$pattern","_postalCode$label","_postalCode$placehold","_city$label","sharedContext","postalCode","city","help","width","fieldBlockProps","_objectWithoutProperties","_excluded","createElement","_extends","className","pattern","label","translation","Forms","postalCodeLabel","errorMessages","_objectSpread","required","postalCodeErrorRequired","postalCodeErrorPattern","placeholder","inputClassName","cityLabel","cityErrorRequired","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.tsx"],"sourcesContent":["import React, { useContext } from 'react'\nimport classnames from 'classnames'\nimport SharedContext from '../../../../shared/Context'\nimport FieldBlock, { Props as FieldBlockProps } from '../../FieldBlock'\nimport StringComponent, { Props as StringComponentProps } from '../String'\nimport { FieldHelpProps } from '../../types'\n\nexport type Props = FieldHelpProps &\n Omit<FieldBlockProps, 'children'> &\n Record<'postalCode' | 'city', StringComponentProps>\n\nfunction PostalCodeAndCity(props: Props) {\n const sharedContext = useContext(SharedContext)\n\n const {\n postalCode = {},\n city = {},\n help,\n width = 'large',\n ...fieldBlockProps\n } = props\n\n return (\n <FieldBlock\n className={classnames(\n 'dnb-forms-field-postal-code-and-city',\n props.className\n )}\n {...fieldBlockProps}\n width={width}\n >\n <div\n className={classnames(\n 'dnb-forms-field-postal-code-and-city__fields'\n )}\n >\n <StringComponent\n {...postalCode}\n pattern={postalCode.pattern ?? '^[0-9]{4}$'}\n className={classnames(\n 'dnb-forms-field-postal-code-and-city__postal-code',\n postalCode.className\n )}\n label={\n postalCode.label ??\n sharedContext?.translation.Forms.postalCodeLabel\n }\n errorMessages={{\n required:\n sharedContext?.translation.Forms.postalCodeErrorRequired,\n pattern:\n sharedContext?.translation.Forms.postalCodeErrorPattern,\n ...postalCode.errorMessages,\n }}\n placeholder={postalCode.placeholder ?? '0000'}\n width={false}\n inputClassName=\"dnb-forms-field-postal-code-and-city__postal-code-input\"\n />\n <StringComponent\n {...city}\n className={classnames(\n 'dnb-forms-field-postal-code-and-city__city',\n city.className\n )}\n label={city.label ?? sharedContext?.translation.Forms.cityLabel}\n errorMessages={{\n required: sharedContext?.translation.Forms.cityErrorRequired,\n ...city.errorMessages,\n }}\n width=\"stretch\"\n help={help}\n />\n </div>\n </FieldBlock>\n )\n}\n\nPostalCodeAndCity._supportsSpacingProps = true\nexport default PostalCodeAndCity\n"],"mappings":";;;;;;;;AAAA,OAAOA,KAAK,IAAIC,UAAU,QAAQ,OAAO;AACzC,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,aAAa,MAAM,4BAA4B;AACtD,OAAOC,UAAU,MAAoC,kBAAkB;AACvE,OAAOC,eAAe,MAAyC,WAAW;AAO1E,SAASC,iBAAiBA,CAACC,KAAY,EAAE;EAAA,IAAAC,mBAAA,EAAAC,iBAAA,EAAAC,qBAAA,EAAAC,WAAA;EACvC,MAAMC,aAAa,GAAGX,UAAU,CAACE,aAAa,CAAC;EAE/C,MAAM;MACJU,UAAU,GAAG,CAAC,CAAC;MACfC,IAAI,GAAG,CAAC,CAAC;MACTC,IAAI;MACJC,KAAK,GAAG;IAEV,CAAC,GAAGT,KAAK;IADJU,eAAe,GAAAC,wBAAA,CAChBX,KAAK,EAAAY,SAAA;EAET,OACEnB,KAAA,CAAAoB,aAAA,CAAChB,UAAU,EAAAiB,QAAA;IACTC,SAAS,EAAEpB,UAAU,CACnB,sCAAsC,EACtCK,KAAK,CAACe,SACR;EAAE,GACEL,eAAe;IACnBD,KAAK,EAAEA;EAAM,IAEbhB,KAAA,CAAAoB,aAAA;IACEE,SAAS,EACP;EACA,GAEFtB,KAAA,CAAAoB,aAAA,CAACf,eAAe,EAAAgB,QAAA,KACVR,UAAU;IACdU,OAAO,GAAAf,mBAAA,GAAEK,UAAU,CAACU,OAAO,cAAAf,mBAAA,cAAAA,mBAAA,GAAI,YAAa;IAC5Cc,SAAS,EAAEpB,UAAU,CACnB,mDAAmD,EACnDW,UAAU,CAACS,SACb,CAAE;IACFE,KAAK,GAAAf,iBAAA,GACHI,UAAU,CAACW,KAAK,cAAAf,iBAAA,cAAAA,iBAAA,GAChBG,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEa,WAAW,CAACC,KAAK,CAACC,eAClC;IACDC,aAAa,EAAAC,aAAA;MACXC,QAAQ,EACNlB,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEa,WAAW,CAACC,KAAK,CAACK,uBAAuB;MAC1DR,OAAO,EACLX,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEa,WAAW,CAACC,KAAK,CAACM;IAAsB,GACtDnB,UAAU,CAACe,aAAa,CAC3B;IACFK,WAAW,GAAAvB,qBAAA,GAAEG,UAAU,CAACoB,WAAW,cAAAvB,qBAAA,cAAAA,qBAAA,GAAI,MAAO;IAC9CM,KAAK,EAAE,KAAM;IACbkB,cAAc,EAAC;EAAyD,EACzE,CAAC,EACFlC,KAAA,CAAAoB,aAAA,CAACf,eAAe,EAAAgB,QAAA,KACVP,IAAI;IACRQ,SAAS,EAAEpB,UAAU,CACnB,4CAA4C,EAC5CY,IAAI,CAACQ,SACP,CAAE;IACFE,KAAK,GAAAb,WAAA,GAAEG,IAAI,CAACU,KAAK,cAAAb,WAAA,cAAAA,WAAA,GAAIC,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEa,WAAW,CAACC,KAAK,CAACS,SAAU;IAChEP,aAAa,EAAAC,aAAA;MACXC,QAAQ,EAAElB,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEa,WAAW,CAACC,KAAK,CAACU;IAAiB,GACzDtB,IAAI,CAACc,aAAa,CACrB;IACFZ,KAAK,EAAC,SAAS;IACfD,IAAI,EAAEA;EAAK,EACZ,CACE,CACK,CAAC;AAEjB;AAEAT,iBAAiB,CAAC+B,qBAAqB,GAAG,IAAI;AAC9C,eAAe/B,iBAAiB"}
@@ -1,9 +1,3 @@
1
- :root {
2
- --forms-field-width--small: 5rem;
3
- --forms-field-width--medium: 11rem;
4
- --forms-field-width--large: 21rem;
5
- }
6
-
7
1
  .dnb-forms-field-postal-code-and-city__fields {
8
2
  display: flex;
9
3
  flex-flow: row;
@@ -11,15 +5,6 @@
11
5
  -moz-column-gap: var(--spacing-small);
12
6
  column-gap: var(--spacing-small);
13
7
  }
14
- .dnb-forms-field-postal-code-and-city--width-small {
15
- width: var(--forms-field-width--small);
16
- }
17
- .dnb-forms-field-postal-code-and-city--width-medium {
18
- width: var(--forms-field-width--medium);
19
- }
20
- .dnb-forms-field-postal-code-and-city--width-large {
21
- width: var(--forms-field-width--large);
22
- }
23
8
  .dnb-forms-field-postal-code-and-city__postal-code {
24
9
  flex: 0 5rem;
25
10
  }
@@ -1 +1 @@
1
- :root{--forms-field-width--small:5rem;--forms-field-width--medium:11rem;--forms-field-width--large:21rem}.dnb-forms-field-postal-code-and-city__fields{grid-column-gap:var(--spacing-small);-moz-column-gap:var(--spacing-small);column-gap:var(--spacing-small);display:flex;flex-flow:row}.dnb-forms-field-postal-code-and-city--width-small{width:var(--forms-field-width--small)}.dnb-forms-field-postal-code-and-city--width-medium{width:var(--forms-field-width--medium)}.dnb-forms-field-postal-code-and-city--width-large{width:var(--forms-field-width--large)}.dnb-forms-field-postal-code-and-city__postal-code{flex:0 5rem}.dnb-forms-field-postal-code-and-city__city{flex:1}
1
+ .dnb-forms-field-postal-code-and-city__fields{grid-column-gap:var(--spacing-small);-moz-column-gap:var(--spacing-small);column-gap:var(--spacing-small);display:flex;flex-flow:row}.dnb-forms-field-postal-code-and-city__postal-code{flex:0 5rem}.dnb-forms-field-postal-code-and-city__city{flex:1}
@@ -1,5 +1,3 @@
1
- @import '../../style/field-sizes.scss';
2
-
3
1
  .dnb-forms-field-postal-code-and-city {
4
2
  &__fields {
5
3
  display: flex;
@@ -7,18 +5,6 @@
7
5
  column-gap: var(--spacing-small);
8
6
  }
9
7
 
10
- &--width {
11
- &-small {
12
- width: var(--forms-field-width--small);
13
- }
14
- &-medium {
15
- width: var(--forms-field-width--medium);
16
- }
17
- &-large {
18
- width: var(--forms-field-width--large);
19
- }
20
- }
21
-
22
8
  &__postal-code {
23
9
  flex: 0 5rem;
24
10
  }
@@ -1,7 +1,39 @@
1
- import { Props as SelectionProps } from '../Selection';
2
- export type Props = SelectionProps;
1
+ import { CountryType } from '../../constants/countries';
2
+ import { FieldHelpProps, FieldProps } from '../../types';
3
+ export type CountryFilterSet = 'Scandinavia' | 'Nordic' | 'Europe' | 'Prioritized';
4
+ export type Props = FieldHelpProps & FieldProps<string, undefined | string> & {
5
+ countries?: CountryFilterSet;
6
+ width?: false | 'small' | 'medium' | 'large' | 'stretch';
7
+ /**
8
+ * For internal use only.
9
+ *
10
+ * @param country
11
+ * @returns boolean
12
+ */
13
+ filterCountries?: (country: CountryType) => boolean;
14
+ /**
15
+ * For internal testing purposes
16
+ */
17
+ noAnimation?: boolean;
18
+ };
3
19
  declare function SelectCountry(props: Props): import("react/jsx-runtime").JSX.Element;
4
20
  declare namespace SelectCountry {
5
21
  var _supportsSpacingProps: boolean;
6
22
  }
23
+ type GetCountryData = {
24
+ lang?: string;
25
+ filter?: Props['filterCountries'];
26
+ sort?: Extract<CountryFilterSet, 'Prioritized'>;
27
+ makeObject?: (country: CountryType, lang: string) => {
28
+ selectedKey: string;
29
+ selected_value?: string;
30
+ content: string;
31
+ };
32
+ };
33
+ export declare function getCountryData({ lang, filter, sort, makeObject, }?: GetCountryData): {
34
+ selectedKey: string;
35
+ selected_value?: string;
36
+ content: string;
37
+ }[];
38
+ export declare function makeCountryFilterSet(ccFilter: CountryFilterSet): (country: CountryType) => boolean;
7
39
  export default SelectCountry;