@dnb/eufemia 10.15.1 → 10.16.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 (919) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/assets/icons/dnb/browser.svg +1 -0
  3. package/assets/icons/dnb/browser_medium.svg +1 -0
  4. package/assets/icons/dnb/coins_1.svg +1 -1
  5. package/assets/icons/dnb/coins_1_medium.svg +1 -1
  6. package/assets/icons/dnb/digipass_corporate.svg +1 -0
  7. package/assets/icons/dnb/digipass_corporate_medium.svg +1 -0
  8. package/assets/icons/dnb/digipass_private.svg +1 -0
  9. package/assets/icons/dnb/digipass_private_medium.svg +1 -0
  10. package/assets/icons/dnb/envelope_open.svg +1 -0
  11. package/assets/icons/dnb/envelope_open_medium.svg +1 -0
  12. package/assets/icons/dnb/eufemia-icons-xml-categorized.tgz +0 -0
  13. package/assets/icons/dnb/eufemia-icons-xml.tgz +0 -0
  14. package/assets/icons/dnb/laptop.svg +1 -0
  15. package/assets/icons/dnb/laptop_medium.svg +1 -0
  16. package/assets/icons/dnb/mobile.svg +1 -0
  17. package/assets/icons/dnb/mobile_medium.svg +1 -0
  18. package/assets/icons/dnb/money_left.svg +1 -0
  19. package/assets/icons/dnb/money_left_medium.svg +1 -0
  20. package/assets/icons/dnb/scan.svg +1 -1
  21. package/assets/icons/dnb/scan_medium.svg +1 -1
  22. package/assets/icons/dnb/teenager.svg +1 -0
  23. package/assets/icons/dnb/teenager_medium.svg +1 -0
  24. package/cjs/components/anchor/style/anchor-mixins.scss +8 -6
  25. package/cjs/components/anchor/style/dnb-anchor.css +28 -8
  26. package/cjs/components/anchor/style/dnb-anchor.min.css +1 -1
  27. package/cjs/components/card/Card.d.ts +1 -1
  28. package/cjs/components/card/Card.js +48 -9
  29. package/cjs/components/card/Card.js.map +1 -1
  30. package/cjs/components/card/style/dnb-card.css +0 -20
  31. package/cjs/components/card/style/dnb-card.min.css +1 -1
  32. package/cjs/components/card/style/dnb-card.scss +0 -20
  33. package/cjs/components/card/style/themes/dnb-card-theme-ui.css +26 -0
  34. package/cjs/components/card/style/themes/dnb-card-theme-ui.min.css +1 -0
  35. package/cjs/components/card/style/themes/dnb-card-theme-ui.scss +35 -0
  36. package/cjs/components/date-picker/DatePicker.d.ts +5 -1
  37. package/cjs/components/date-picker/DatePicker.js +4 -2
  38. package/cjs/components/date-picker/DatePicker.js.map +1 -1
  39. package/cjs/components/date-picker/DatePickerInput.js +20 -6
  40. package/cjs/components/date-picker/DatePickerInput.js.map +1 -1
  41. package/cjs/components/date-picker/DatePickerProvider.js +2 -2
  42. package/cjs/components/date-picker/DatePickerProvider.js.map +1 -1
  43. package/cjs/components/date-picker/style/themes/dnb-date-picker-theme-ui.css +2 -2
  44. package/cjs/components/date-picker/style/themes/dnb-date-picker-theme-ui.min.css +1 -1
  45. package/cjs/components/date-picker/style/themes/dnb-date-picker-theme-ui.scss +5 -17
  46. package/cjs/components/flex/Container.d.ts +2 -4
  47. package/cjs/components/flex/Container.js.map +1 -1
  48. package/cjs/components/flex/Item.d.ts +2 -3
  49. package/cjs/components/flex/Item.js +2 -1
  50. package/cjs/components/flex/Item.js.map +1 -1
  51. package/cjs/components/input/Input.d.ts +3 -2
  52. package/cjs/components/input-masked/InputMaskedHooks.js +5 -5
  53. package/cjs/components/input-masked/InputMaskedHooks.js.map +1 -1
  54. package/cjs/components/input-masked/InputMaskedUtils.d.ts +4 -2
  55. package/cjs/components/input-masked/InputMaskedUtils.js +9 -7
  56. package/cjs/components/input-masked/InputMaskedUtils.js.map +1 -1
  57. package/cjs/components/input-masked/MultiInputMask.d.ts +1 -1
  58. package/cjs/components/input-masked/MultiInputMask.js +4 -2
  59. package/cjs/components/input-masked/MultiInputMask.js.map +1 -1
  60. package/cjs/components/input-masked/TextMask.js +15 -4
  61. package/cjs/components/input-masked/TextMask.js.map +1 -1
  62. package/cjs/components/input-masked/style/dnb-input-masked.css +3 -0
  63. package/cjs/components/input-masked/style/dnb-input-masked.min.css +1 -1
  64. package/cjs/components/input-masked/style/dnb-input-masked.scss +5 -0
  65. package/cjs/components/input-masked/text-mask/InputModeNumber.d.ts +20 -0
  66. package/cjs/components/input-masked/text-mask/InputModeNumber.js +93 -0
  67. package/cjs/components/input-masked/text-mask/InputModeNumber.js.map +1 -0
  68. package/cjs/components/input-masked/text-mask/createTextMaskInputElement.js +1 -1
  69. package/cjs/components/input-masked/text-mask/createTextMaskInputElement.js.map +1 -1
  70. package/cjs/components/radio/RadioGroup.js +0 -1
  71. package/cjs/components/radio/RadioGroup.js.map +1 -1
  72. package/cjs/components/section/Section.d.ts +7 -0
  73. package/cjs/components/section/Section.js +11 -12
  74. package/cjs/components/section/Section.js.map +1 -1
  75. package/cjs/components/section/style/dnb-section.css +6 -4
  76. package/cjs/components/section/style/dnb-section.min.css +1 -1
  77. package/cjs/components/section/style/dnb-section.scss +7 -4
  78. package/cjs/components/section/style/themes/dnb-section-theme-ui.css +11 -1
  79. package/cjs/components/section/style/themes/dnb-section-theme-ui.min.css +1 -1
  80. package/cjs/components/textarea/Textarea.js +4 -9
  81. package/cjs/components/textarea/Textarea.js.map +1 -1
  82. package/cjs/components/toggle-button/ToggleButtonGroup.js +0 -1
  83. package/cjs/components/toggle-button/ToggleButtonGroup.js.map +1 -1
  84. package/cjs/components/toggle-button/style/dnb-toggle-button.css +4 -6
  85. package/cjs/components/toggle-button/style/dnb-toggle-button.min.css +1 -1
  86. package/cjs/components/toggle-button/style/dnb-toggle-button.scss +4 -10
  87. package/cjs/components/tooltip/style/dnb-tooltip.css +1 -0
  88. package/cjs/components/tooltip/style/dnb-tooltip.min.css +1 -1
  89. package/cjs/components/tooltip/style/dnb-tooltip.scss +2 -0
  90. package/cjs/components/upload/types.d.ts +1 -1
  91. package/cjs/components/upload/types.js.map +1 -1
  92. package/cjs/extensions/forms/DataContext/Context.d.ts +1 -0
  93. package/cjs/extensions/forms/DataContext/Context.js +1 -0
  94. package/cjs/extensions/forms/DataContext/Context.js.map +1 -1
  95. package/cjs/extensions/forms/DataContext/Provider/Provider.d.ts +6 -1
  96. package/cjs/extensions/forms/DataContext/Provider/Provider.js +37 -13
  97. package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  98. package/cjs/extensions/forms/Field/BankAccountNumber/BankAccountNumber.js +2 -1
  99. package/cjs/extensions/forms/Field/BankAccountNumber/BankAccountNumber.js.map +1 -1
  100. package/cjs/extensions/forms/Field/Date/Date.js +3 -1
  101. package/cjs/extensions/forms/Field/Date/Date.js.map +1 -1
  102. package/cjs/extensions/forms/Field/Email/Email.js +7 -5
  103. package/cjs/extensions/forms/Field/Email/Email.js.map +1 -1
  104. package/cjs/extensions/forms/Field/Expiry/Expiry.js +26 -4
  105. package/cjs/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
  106. package/cjs/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js +2 -1
  107. package/cjs/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js.map +1 -1
  108. package/cjs/extensions/forms/Field/OrganizationNumber/OrganizationNumber.js +2 -1
  109. package/cjs/extensions/forms/Field/OrganizationNumber/OrganizationNumber.js.map +1 -1
  110. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.js +69 -30
  111. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  112. package/cjs/extensions/forms/Field/PhoneNumber/style/dnb-phone-number.css +3 -0
  113. package/cjs/extensions/forms/Field/PhoneNumber/style/dnb-phone-number.min.css +1 -1
  114. package/cjs/extensions/forms/Field/PhoneNumber/style/dnb-phone-number.scss +4 -0
  115. package/cjs/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js +3 -1
  116. package/cjs/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js.map +1 -1
  117. package/cjs/extensions/forms/Field/Selection/Selection.js +59 -50
  118. package/cjs/extensions/forms/Field/Selection/Selection.js.map +1 -1
  119. package/cjs/extensions/forms/Field/Selection/style/dnb-selection.css +6 -6
  120. package/cjs/extensions/forms/Field/Selection/style/dnb-selection.min.css +1 -1
  121. package/cjs/extensions/forms/Field/Selection/style/dnb-selection.scss +15 -10
  122. package/cjs/extensions/forms/Field/String/String.d.ts +1 -0
  123. package/cjs/extensions/forms/Field/String/String.js +13 -8
  124. package/cjs/extensions/forms/Field/String/String.js.map +1 -1
  125. package/cjs/extensions/forms/FieldBlock/FieldBlock.js +2 -2
  126. package/cjs/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  127. package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.css +1 -1
  128. package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
  129. package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.scss +1 -1
  130. package/cjs/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.css +8 -0
  131. package/cjs/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.min.css +1 -1
  132. package/cjs/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.scss +10 -0
  133. package/cjs/extensions/forms/Form/Handler/Handler.js +2 -2
  134. package/cjs/extensions/forms/Form/Handler/Handler.js.map +1 -1
  135. package/cjs/extensions/forms/Form/MainHeading/style/dnb-form-main-heading.css +7 -2
  136. package/cjs/extensions/forms/Form/MainHeading/style/dnb-form-main-heading.min.css +1 -1
  137. package/cjs/extensions/forms/Form/MainHeading/style/dnb-form-main-heading.scss +6 -1
  138. package/cjs/extensions/forms/Form/SubHeading/style/dnb-form-sub-heading.css +3 -0
  139. package/cjs/extensions/forms/Form/SubHeading/style/dnb-form-sub-heading.scss +2 -0
  140. package/cjs/extensions/forms/StepsLayout/NextButton/NextButton.js +3 -2
  141. package/cjs/extensions/forms/StepsLayout/NextButton/NextButton.js.map +1 -1
  142. package/cjs/extensions/forms/StepsLayout/PreviousButton/PreviousButton.js +3 -2
  143. package/cjs/extensions/forms/StepsLayout/PreviousButton/PreviousButton.js.map +1 -1
  144. package/cjs/extensions/forms/StepsLayout/StepsLayout.js +1 -1
  145. package/cjs/extensions/forms/StepsLayout/StepsLayout.js.map +1 -1
  146. package/cjs/extensions/forms/StepsLayout/style/dnb-steps-layout.css +14 -16
  147. package/cjs/extensions/forms/StepsLayout/style/dnb-steps-layout.min.css +1 -1
  148. package/cjs/extensions/forms/StepsLayout/style/dnb-steps-layout.scss +15 -16
  149. package/cjs/extensions/forms/hooks/useDataValue.d.ts +3 -0
  150. package/cjs/extensions/forms/hooks/useDataValue.js +98 -48
  151. package/cjs/extensions/forms/hooks/useDataValue.js.map +1 -1
  152. package/cjs/extensions/forms/style/dnb-forms.css +42 -25
  153. package/cjs/extensions/forms/style/dnb-forms.min.css +1 -1
  154. package/cjs/extensions/forms/types.d.ts +12 -2
  155. package/cjs/extensions/forms/types.js +1 -1
  156. package/cjs/extensions/forms/types.js.map +1 -1
  157. package/cjs/icons/browser.d.ts +3 -0
  158. package/cjs/icons/browser.js +11 -0
  159. package/cjs/icons/browser.js.map +1 -0
  160. package/cjs/icons/browser_medium.d.ts +3 -0
  161. package/cjs/icons/browser_medium.js +11 -0
  162. package/cjs/icons/browser_medium.js.map +1 -0
  163. package/cjs/icons/digipass_corporate.d.ts +3 -0
  164. package/cjs/icons/digipass_corporate.js +11 -0
  165. package/cjs/icons/digipass_corporate.js.map +1 -0
  166. package/cjs/icons/digipass_corporate_medium.d.ts +3 -0
  167. package/cjs/icons/digipass_corporate_medium.js +11 -0
  168. package/cjs/icons/digipass_corporate_medium.js.map +1 -0
  169. package/cjs/icons/digipass_private.d.ts +3 -0
  170. package/cjs/icons/digipass_private.js +11 -0
  171. package/cjs/icons/digipass_private.js.map +1 -0
  172. package/cjs/icons/digipass_private_medium.d.ts +3 -0
  173. package/cjs/icons/digipass_private_medium.js +11 -0
  174. package/cjs/icons/digipass_private_medium.js.map +1 -0
  175. package/cjs/icons/dnb/browser.d.ts +3 -0
  176. package/cjs/icons/dnb/browser.js +25 -0
  177. package/cjs/icons/dnb/browser.js.map +1 -0
  178. package/cjs/icons/dnb/browser_medium.d.ts +3 -0
  179. package/cjs/icons/dnb/browser_medium.js +25 -0
  180. package/cjs/icons/dnb/browser_medium.js.map +1 -0
  181. package/cjs/icons/dnb/coins_1.js +1 -1
  182. package/cjs/icons/dnb/coins_1.js.map +1 -1
  183. package/cjs/icons/dnb/coins_1_medium.js +1 -1
  184. package/cjs/icons/dnb/coins_1_medium.js.map +1 -1
  185. package/cjs/icons/dnb/digipass_corporate.d.ts +3 -0
  186. package/cjs/icons/dnb/digipass_corporate.js +25 -0
  187. package/cjs/icons/dnb/digipass_corporate.js.map +1 -0
  188. package/cjs/icons/dnb/digipass_corporate_medium.d.ts +3 -0
  189. package/cjs/icons/dnb/digipass_corporate_medium.js +25 -0
  190. package/cjs/icons/dnb/digipass_corporate_medium.js.map +1 -0
  191. package/cjs/icons/dnb/digipass_private.d.ts +3 -0
  192. package/cjs/icons/dnb/digipass_private.js +25 -0
  193. package/cjs/icons/dnb/digipass_private.js.map +1 -0
  194. package/cjs/icons/dnb/digipass_private_medium.d.ts +3 -0
  195. package/cjs/icons/dnb/digipass_private_medium.js +25 -0
  196. package/cjs/icons/dnb/digipass_private_medium.js.map +1 -0
  197. package/cjs/icons/dnb/envelope_open.d.ts +3 -0
  198. package/cjs/icons/dnb/envelope_open.js +26 -0
  199. package/cjs/icons/dnb/envelope_open.js.map +1 -0
  200. package/cjs/icons/dnb/envelope_open_medium.d.ts +3 -0
  201. package/cjs/icons/dnb/envelope_open_medium.js +26 -0
  202. package/cjs/icons/dnb/envelope_open_medium.js.map +1 -0
  203. package/cjs/icons/dnb/icons-meta.json +230 -20
  204. package/cjs/icons/dnb/icons-svg.lock +1272 -1064
  205. package/cjs/icons/dnb/index.d.ts +17 -1
  206. package/cjs/icons/dnb/index.js +112 -0
  207. package/cjs/icons/dnb/index.js.map +1 -1
  208. package/cjs/icons/dnb/laptop.d.ts +3 -0
  209. package/cjs/icons/dnb/laptop.js +26 -0
  210. package/cjs/icons/dnb/laptop.js.map +1 -0
  211. package/cjs/icons/dnb/laptop_medium.d.ts +3 -0
  212. package/cjs/icons/dnb/laptop_medium.js +26 -0
  213. package/cjs/icons/dnb/laptop_medium.js.map +1 -0
  214. package/cjs/icons/dnb/mobile.d.ts +3 -0
  215. package/cjs/icons/dnb/mobile.js +23 -0
  216. package/cjs/icons/dnb/mobile.js.map +1 -0
  217. package/cjs/icons/dnb/mobile_medium.d.ts +3 -0
  218. package/cjs/icons/dnb/mobile_medium.js +23 -0
  219. package/cjs/icons/dnb/mobile_medium.js.map +1 -0
  220. package/cjs/icons/dnb/money_left.d.ts +3 -0
  221. package/cjs/icons/dnb/money_left.js +25 -0
  222. package/cjs/icons/dnb/money_left.js.map +1 -0
  223. package/cjs/icons/dnb/money_left_medium.d.ts +3 -0
  224. package/cjs/icons/dnb/money_left_medium.js +26 -0
  225. package/cjs/icons/dnb/money_left_medium.js.map +1 -0
  226. package/cjs/icons/dnb/scan.js +5 -2
  227. package/cjs/icons/dnb/scan.js.map +1 -1
  228. package/cjs/icons/dnb/scan_medium.js +8 -12
  229. package/cjs/icons/dnb/scan_medium.js.map +1 -1
  230. package/cjs/icons/dnb/secondary_icons.d.ts +9 -1
  231. package/cjs/icons/dnb/secondary_icons.js +56 -0
  232. package/cjs/icons/dnb/secondary_icons.js.map +1 -1
  233. package/cjs/icons/dnb/secondary_icons_medium.d.ts +9 -1
  234. package/cjs/icons/dnb/secondary_icons_medium.js +56 -0
  235. package/cjs/icons/dnb/secondary_icons_medium.js.map +1 -1
  236. package/cjs/icons/dnb/teenager.d.ts +3 -0
  237. package/cjs/icons/dnb/teenager.js +26 -0
  238. package/cjs/icons/dnb/teenager.js.map +1 -0
  239. package/cjs/icons/dnb/teenager_medium.d.ts +3 -0
  240. package/cjs/icons/dnb/teenager_medium.js +26 -0
  241. package/cjs/icons/dnb/teenager_medium.js.map +1 -0
  242. package/cjs/icons/envelope_open.d.ts +3 -0
  243. package/cjs/icons/envelope_open.js +11 -0
  244. package/cjs/icons/envelope_open.js.map +1 -0
  245. package/cjs/icons/envelope_open_medium.d.ts +3 -0
  246. package/cjs/icons/envelope_open_medium.js +11 -0
  247. package/cjs/icons/envelope_open_medium.js.map +1 -0
  248. package/cjs/icons/index.d.ts +17 -1
  249. package/cjs/icons/index.js +112 -0
  250. package/cjs/icons/index.js.map +1 -1
  251. package/cjs/icons/laptop.d.ts +3 -0
  252. package/cjs/icons/laptop.js +11 -0
  253. package/cjs/icons/laptop.js.map +1 -0
  254. package/cjs/icons/laptop_medium.d.ts +3 -0
  255. package/cjs/icons/laptop_medium.js +11 -0
  256. package/cjs/icons/laptop_medium.js.map +1 -0
  257. package/cjs/icons/mobile.d.ts +3 -0
  258. package/cjs/icons/mobile.js +11 -0
  259. package/cjs/icons/mobile.js.map +1 -0
  260. package/cjs/icons/mobile_medium.d.ts +3 -0
  261. package/cjs/icons/mobile_medium.js +11 -0
  262. package/cjs/icons/mobile_medium.js.map +1 -0
  263. package/cjs/icons/money_left.d.ts +3 -0
  264. package/cjs/icons/money_left.js +11 -0
  265. package/cjs/icons/money_left.js.map +1 -0
  266. package/cjs/icons/money_left_medium.d.ts +3 -0
  267. package/cjs/icons/money_left_medium.js +11 -0
  268. package/cjs/icons/money_left_medium.js.map +1 -0
  269. package/cjs/icons/teenager.d.ts +3 -0
  270. package/cjs/icons/teenager.js +11 -0
  271. package/cjs/icons/teenager.js.map +1 -0
  272. package/cjs/icons/teenager_medium.d.ts +3 -0
  273. package/cjs/icons/teenager_medium.js +11 -0
  274. package/cjs/icons/teenager_medium.js.map +1 -0
  275. package/cjs/shared/Eufemia.d.ts +1 -1
  276. package/cjs/shared/Eufemia.js +2 -2
  277. package/cjs/shared/Eufemia.js.map +1 -1
  278. package/cjs/shared/component-helper.d.ts +1 -0
  279. package/cjs/shared/component-helper.js +6 -1
  280. package/cjs/shared/component-helper.js.map +1 -1
  281. package/cjs/style/dnb-ui-components.css +84 -63
  282. package/cjs/style/dnb-ui-components.min.css +3 -3
  283. package/cjs/style/dnb-ui-extensions.css +42 -25
  284. package/cjs/style/dnb-ui-extensions.min.css +1 -1
  285. package/cjs/style/dnb-ui-forms.css +42 -25
  286. package/cjs/style/dnb-ui-forms.min.css +1 -1
  287. package/cjs/style/themes/theme-eiendom/eiendom-theme-basis.css +14 -2
  288. package/cjs/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  289. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +166 -91
  290. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +5 -5
  291. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.scss +1 -0
  292. package/cjs/style/themes/theme-eiendom/eiendom-theme-elements.css +14 -2
  293. package/cjs/style/themes/theme-eiendom/eiendom-theme-elements.min.css +1 -1
  294. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.css +42 -25
  295. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  296. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.css +42 -25
  297. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  298. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +155 -90
  299. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +4 -4
  300. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.scss +1 -0
  301. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.css +42 -25
  302. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  303. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.css +42 -25
  304. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  305. package/cjs/style/themes/theme-ui/ui-theme-basis.css +14 -2
  306. package/cjs/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  307. package/cjs/style/themes/theme-ui/ui-theme-components.css +166 -91
  308. package/cjs/style/themes/theme-ui/ui-theme-components.min.css +5 -5
  309. package/cjs/style/themes/theme-ui/ui-theme-components.scss +1 -0
  310. package/cjs/style/themes/theme-ui/ui-theme-elements.css +14 -2
  311. package/cjs/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
  312. package/cjs/style/themes/theme-ui/ui-theme-extensions.css +42 -25
  313. package/cjs/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  314. package/cjs/style/themes/theme-ui/ui-theme-forms.css +42 -25
  315. package/cjs/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  316. package/cjs/style/themes/theme-ui/ui-theme-tags.css +3 -3
  317. package/cjs/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  318. package/components/anchor/style/anchor-mixins.scss +8 -6
  319. package/components/anchor/style/dnb-anchor.css +28 -8
  320. package/components/anchor/style/dnb-anchor.min.css +1 -1
  321. package/components/card/Card.d.ts +1 -1
  322. package/components/card/Card.js +46 -9
  323. package/components/card/Card.js.map +1 -1
  324. package/components/card/style/dnb-card.css +0 -20
  325. package/components/card/style/dnb-card.min.css +1 -1
  326. package/components/card/style/dnb-card.scss +0 -20
  327. package/components/card/style/themes/dnb-card-theme-ui.css +26 -0
  328. package/components/card/style/themes/dnb-card-theme-ui.min.css +1 -0
  329. package/components/card/style/themes/dnb-card-theme-ui.scss +35 -0
  330. package/components/date-picker/DatePicker.d.ts +5 -1
  331. package/components/date-picker/DatePicker.js +4 -2
  332. package/components/date-picker/DatePicker.js.map +1 -1
  333. package/components/date-picker/DatePickerInput.js +20 -6
  334. package/components/date-picker/DatePickerInput.js.map +1 -1
  335. package/components/date-picker/DatePickerProvider.js +2 -2
  336. package/components/date-picker/DatePickerProvider.js.map +1 -1
  337. package/components/date-picker/style/themes/dnb-date-picker-theme-ui.css +2 -2
  338. package/components/date-picker/style/themes/dnb-date-picker-theme-ui.min.css +1 -1
  339. package/components/date-picker/style/themes/dnb-date-picker-theme-ui.scss +5 -17
  340. package/components/flex/Container.d.ts +2 -4
  341. package/components/flex/Container.js.map +1 -1
  342. package/components/flex/Item.d.ts +2 -3
  343. package/components/flex/Item.js +2 -1
  344. package/components/flex/Item.js.map +1 -1
  345. package/components/input/Input.d.ts +3 -2
  346. package/components/input-masked/InputMaskedHooks.js +6 -6
  347. package/components/input-masked/InputMaskedHooks.js.map +1 -1
  348. package/components/input-masked/InputMaskedUtils.d.ts +4 -2
  349. package/components/input-masked/InputMaskedUtils.js +9 -7
  350. package/components/input-masked/InputMaskedUtils.js.map +1 -1
  351. package/components/input-masked/MultiInputMask.d.ts +1 -1
  352. package/components/input-masked/MultiInputMask.js +4 -2
  353. package/components/input-masked/MultiInputMask.js.map +1 -1
  354. package/components/input-masked/TextMask.js +15 -4
  355. package/components/input-masked/TextMask.js.map +1 -1
  356. package/components/input-masked/style/dnb-input-masked.css +3 -0
  357. package/components/input-masked/style/dnb-input-masked.min.css +1 -1
  358. package/components/input-masked/style/dnb-input-masked.scss +5 -0
  359. package/components/input-masked/text-mask/InputModeNumber.d.ts +20 -0
  360. package/components/input-masked/text-mask/InputModeNumber.js +84 -0
  361. package/components/input-masked/text-mask/InputModeNumber.js.map +1 -0
  362. package/components/input-masked/text-mask/createTextMaskInputElement.js +1 -1
  363. package/components/input-masked/text-mask/createTextMaskInputElement.js.map +1 -1
  364. package/components/radio/RadioGroup.js +0 -1
  365. package/components/radio/RadioGroup.js.map +1 -1
  366. package/components/section/Section.d.ts +7 -0
  367. package/components/section/Section.js +10 -12
  368. package/components/section/Section.js.map +1 -1
  369. package/components/section/style/dnb-section.css +6 -4
  370. package/components/section/style/dnb-section.min.css +1 -1
  371. package/components/section/style/dnb-section.scss +7 -4
  372. package/components/section/style/themes/dnb-section-theme-ui.css +11 -1
  373. package/components/section/style/themes/dnb-section-theme-ui.min.css +1 -1
  374. package/components/textarea/Textarea.js +4 -9
  375. package/components/textarea/Textarea.js.map +1 -1
  376. package/components/toggle-button/ToggleButtonGroup.js +0 -1
  377. package/components/toggle-button/ToggleButtonGroup.js.map +1 -1
  378. package/components/toggle-button/style/dnb-toggle-button.css +4 -6
  379. package/components/toggle-button/style/dnb-toggle-button.min.css +1 -1
  380. package/components/toggle-button/style/dnb-toggle-button.scss +4 -10
  381. package/components/tooltip/style/dnb-tooltip.css +1 -0
  382. package/components/tooltip/style/dnb-tooltip.min.css +1 -1
  383. package/components/tooltip/style/dnb-tooltip.scss +2 -0
  384. package/components/upload/types.d.ts +1 -1
  385. package/components/upload/types.js.map +1 -1
  386. package/es/components/anchor/style/anchor-mixins.scss +8 -6
  387. package/es/components/anchor/style/dnb-anchor.css +28 -8
  388. package/es/components/anchor/style/dnb-anchor.min.css +1 -1
  389. package/es/components/card/Card.d.ts +1 -1
  390. package/es/components/card/Card.js +46 -9
  391. package/es/components/card/Card.js.map +1 -1
  392. package/es/components/card/style/dnb-card.css +0 -20
  393. package/es/components/card/style/dnb-card.min.css +1 -1
  394. package/es/components/card/style/dnb-card.scss +0 -20
  395. package/es/components/card/style/themes/dnb-card-theme-ui.css +26 -0
  396. package/es/components/card/style/themes/dnb-card-theme-ui.min.css +1 -0
  397. package/es/components/card/style/themes/dnb-card-theme-ui.scss +35 -0
  398. package/es/components/date-picker/DatePicker.d.ts +5 -1
  399. package/es/components/date-picker/DatePicker.js +4 -2
  400. package/es/components/date-picker/DatePicker.js.map +1 -1
  401. package/es/components/date-picker/DatePickerInput.js +20 -6
  402. package/es/components/date-picker/DatePickerInput.js.map +1 -1
  403. package/es/components/date-picker/DatePickerProvider.js +2 -2
  404. package/es/components/date-picker/DatePickerProvider.js.map +1 -1
  405. package/es/components/date-picker/style/themes/dnb-date-picker-theme-ui.css +2 -2
  406. package/es/components/date-picker/style/themes/dnb-date-picker-theme-ui.min.css +1 -1
  407. package/es/components/date-picker/style/themes/dnb-date-picker-theme-ui.scss +5 -17
  408. package/es/components/flex/Container.d.ts +2 -4
  409. package/es/components/flex/Container.js.map +1 -1
  410. package/es/components/flex/Item.d.ts +2 -3
  411. package/es/components/flex/Item.js +2 -1
  412. package/es/components/flex/Item.js.map +1 -1
  413. package/es/components/input/Input.d.ts +3 -2
  414. package/es/components/input-masked/InputMaskedHooks.js +6 -6
  415. package/es/components/input-masked/InputMaskedHooks.js.map +1 -1
  416. package/es/components/input-masked/InputMaskedUtils.d.ts +4 -2
  417. package/es/components/input-masked/InputMaskedUtils.js +9 -7
  418. package/es/components/input-masked/InputMaskedUtils.js.map +1 -1
  419. package/es/components/input-masked/MultiInputMask.d.ts +1 -1
  420. package/es/components/input-masked/MultiInputMask.js +4 -2
  421. package/es/components/input-masked/MultiInputMask.js.map +1 -1
  422. package/es/components/input-masked/TextMask.js +15 -4
  423. package/es/components/input-masked/TextMask.js.map +1 -1
  424. package/es/components/input-masked/style/dnb-input-masked.css +3 -0
  425. package/es/components/input-masked/style/dnb-input-masked.min.css +1 -1
  426. package/es/components/input-masked/style/dnb-input-masked.scss +5 -0
  427. package/es/components/input-masked/text-mask/InputModeNumber.d.ts +20 -0
  428. package/es/components/input-masked/text-mask/InputModeNumber.js +84 -0
  429. package/es/components/input-masked/text-mask/InputModeNumber.js.map +1 -0
  430. package/es/components/input-masked/text-mask/createTextMaskInputElement.js +1 -1
  431. package/es/components/input-masked/text-mask/createTextMaskInputElement.js.map +1 -1
  432. package/es/components/radio/RadioGroup.js +0 -1
  433. package/es/components/radio/RadioGroup.js.map +1 -1
  434. package/es/components/section/Section.d.ts +7 -0
  435. package/es/components/section/Section.js +10 -12
  436. package/es/components/section/Section.js.map +1 -1
  437. package/es/components/section/style/dnb-section.css +6 -4
  438. package/es/components/section/style/dnb-section.min.css +1 -1
  439. package/es/components/section/style/dnb-section.scss +7 -4
  440. package/es/components/section/style/themes/dnb-section-theme-ui.css +11 -1
  441. package/es/components/section/style/themes/dnb-section-theme-ui.min.css +1 -1
  442. package/es/components/textarea/Textarea.js +4 -9
  443. package/es/components/textarea/Textarea.js.map +1 -1
  444. package/es/components/toggle-button/ToggleButtonGroup.js +0 -1
  445. package/es/components/toggle-button/ToggleButtonGroup.js.map +1 -1
  446. package/es/components/toggle-button/style/dnb-toggle-button.css +4 -6
  447. package/es/components/toggle-button/style/dnb-toggle-button.min.css +1 -1
  448. package/es/components/toggle-button/style/dnb-toggle-button.scss +4 -10
  449. package/es/components/tooltip/style/dnb-tooltip.css +1 -0
  450. package/es/components/tooltip/style/dnb-tooltip.min.css +1 -1
  451. package/es/components/tooltip/style/dnb-tooltip.scss +2 -0
  452. package/es/components/upload/types.d.ts +1 -1
  453. package/es/components/upload/types.js.map +1 -1
  454. package/es/extensions/forms/DataContext/Context.d.ts +1 -0
  455. package/es/extensions/forms/DataContext/Context.js +1 -0
  456. package/es/extensions/forms/DataContext/Context.js.map +1 -1
  457. package/es/extensions/forms/DataContext/Provider/Provider.d.ts +6 -1
  458. package/es/extensions/forms/DataContext/Provider/Provider.js +37 -13
  459. package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  460. package/es/extensions/forms/Field/BankAccountNumber/BankAccountNumber.js +2 -1
  461. package/es/extensions/forms/Field/BankAccountNumber/BankAccountNumber.js.map +1 -1
  462. package/es/extensions/forms/Field/Date/Date.js +3 -1
  463. package/es/extensions/forms/Field/Date/Date.js.map +1 -1
  464. package/es/extensions/forms/Field/Email/Email.js +7 -5
  465. package/es/extensions/forms/Field/Email/Email.js.map +1 -1
  466. package/es/extensions/forms/Field/Expiry/Expiry.js +26 -4
  467. package/es/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
  468. package/es/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js +2 -1
  469. package/es/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js.map +1 -1
  470. package/es/extensions/forms/Field/OrganizationNumber/OrganizationNumber.js +2 -1
  471. package/es/extensions/forms/Field/OrganizationNumber/OrganizationNumber.js.map +1 -1
  472. package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.js +59 -21
  473. package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  474. package/es/extensions/forms/Field/PhoneNumber/style/dnb-phone-number.css +3 -0
  475. package/es/extensions/forms/Field/PhoneNumber/style/dnb-phone-number.min.css +1 -1
  476. package/es/extensions/forms/Field/PhoneNumber/style/dnb-phone-number.scss +4 -0
  477. package/es/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js +3 -1
  478. package/es/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js.map +1 -1
  479. package/es/extensions/forms/Field/Selection/Selection.js +58 -50
  480. package/es/extensions/forms/Field/Selection/Selection.js.map +1 -1
  481. package/es/extensions/forms/Field/Selection/style/dnb-selection.css +6 -6
  482. package/es/extensions/forms/Field/Selection/style/dnb-selection.min.css +1 -1
  483. package/es/extensions/forms/Field/Selection/style/dnb-selection.scss +15 -10
  484. package/es/extensions/forms/Field/String/String.d.ts +1 -0
  485. package/es/extensions/forms/Field/String/String.js +13 -7
  486. package/es/extensions/forms/Field/String/String.js.map +1 -1
  487. package/es/extensions/forms/FieldBlock/FieldBlock.js +2 -2
  488. package/es/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  489. package/es/extensions/forms/FieldBlock/style/dnb-field-block.css +1 -1
  490. package/es/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
  491. package/es/extensions/forms/FieldBlock/style/dnb-field-block.scss +1 -1
  492. package/es/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.css +8 -0
  493. package/es/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.min.css +1 -1
  494. package/es/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.scss +10 -0
  495. package/es/extensions/forms/Form/Handler/Handler.js +2 -2
  496. package/es/extensions/forms/Form/Handler/Handler.js.map +1 -1
  497. package/es/extensions/forms/Form/MainHeading/style/dnb-form-main-heading.css +7 -2
  498. package/es/extensions/forms/Form/MainHeading/style/dnb-form-main-heading.min.css +1 -1
  499. package/es/extensions/forms/Form/MainHeading/style/dnb-form-main-heading.scss +6 -1
  500. package/es/extensions/forms/Form/SubHeading/style/dnb-form-sub-heading.css +3 -0
  501. package/es/extensions/forms/Form/SubHeading/style/dnb-form-sub-heading.scss +2 -0
  502. package/es/extensions/forms/StepsLayout/NextButton/NextButton.js +3 -2
  503. package/es/extensions/forms/StepsLayout/NextButton/NextButton.js.map +1 -1
  504. package/es/extensions/forms/StepsLayout/PreviousButton/PreviousButton.js +3 -2
  505. package/es/extensions/forms/StepsLayout/PreviousButton/PreviousButton.js.map +1 -1
  506. package/es/extensions/forms/StepsLayout/StepsLayout.js +1 -1
  507. package/es/extensions/forms/StepsLayout/StepsLayout.js.map +1 -1
  508. package/es/extensions/forms/StepsLayout/style/dnb-steps-layout.css +14 -16
  509. package/es/extensions/forms/StepsLayout/style/dnb-steps-layout.min.css +1 -1
  510. package/es/extensions/forms/StepsLayout/style/dnb-steps-layout.scss +15 -16
  511. package/es/extensions/forms/hooks/useDataValue.d.ts +3 -0
  512. package/es/extensions/forms/hooks/useDataValue.js +94 -45
  513. package/es/extensions/forms/hooks/useDataValue.js.map +1 -1
  514. package/es/extensions/forms/style/dnb-forms.css +42 -25
  515. package/es/extensions/forms/style/dnb-forms.min.css +1 -1
  516. package/es/extensions/forms/types.d.ts +12 -2
  517. package/es/extensions/forms/types.js +1 -1
  518. package/es/extensions/forms/types.js.map +1 -1
  519. package/es/icons/browser.d.ts +3 -0
  520. package/es/icons/browser.js +3 -0
  521. package/es/icons/browser.js.map +1 -0
  522. package/es/icons/browser_medium.d.ts +3 -0
  523. package/es/icons/browser_medium.js +3 -0
  524. package/es/icons/browser_medium.js.map +1 -0
  525. package/es/icons/digipass_corporate.d.ts +3 -0
  526. package/es/icons/digipass_corporate.js +3 -0
  527. package/es/icons/digipass_corporate.js.map +1 -0
  528. package/es/icons/digipass_corporate_medium.d.ts +3 -0
  529. package/es/icons/digipass_corporate_medium.js +3 -0
  530. package/es/icons/digipass_corporate_medium.js.map +1 -0
  531. package/es/icons/digipass_private.d.ts +3 -0
  532. package/es/icons/digipass_private.js +3 -0
  533. package/es/icons/digipass_private.js.map +1 -0
  534. package/es/icons/digipass_private_medium.d.ts +3 -0
  535. package/es/icons/digipass_private_medium.js +3 -0
  536. package/es/icons/digipass_private_medium.js.map +1 -0
  537. package/es/icons/dnb/browser.d.ts +3 -0
  538. package/es/icons/dnb/browser.js +17 -0
  539. package/es/icons/dnb/browser.js.map +1 -0
  540. package/es/icons/dnb/browser_medium.d.ts +3 -0
  541. package/es/icons/dnb/browser_medium.js +17 -0
  542. package/es/icons/dnb/browser_medium.js.map +1 -0
  543. package/es/icons/dnb/coins_1.js +1 -1
  544. package/es/icons/dnb/coins_1.js.map +1 -1
  545. package/es/icons/dnb/coins_1_medium.js +1 -1
  546. package/es/icons/dnb/coins_1_medium.js.map +1 -1
  547. package/es/icons/dnb/digipass_corporate.d.ts +3 -0
  548. package/es/icons/dnb/digipass_corporate.js +17 -0
  549. package/es/icons/dnb/digipass_corporate.js.map +1 -0
  550. package/es/icons/dnb/digipass_corporate_medium.d.ts +3 -0
  551. package/es/icons/dnb/digipass_corporate_medium.js +17 -0
  552. package/es/icons/dnb/digipass_corporate_medium.js.map +1 -0
  553. package/es/icons/dnb/digipass_private.d.ts +3 -0
  554. package/es/icons/dnb/digipass_private.js +17 -0
  555. package/es/icons/dnb/digipass_private.js.map +1 -0
  556. package/es/icons/dnb/digipass_private_medium.d.ts +3 -0
  557. package/es/icons/dnb/digipass_private_medium.js +17 -0
  558. package/es/icons/dnb/digipass_private_medium.js.map +1 -0
  559. package/es/icons/dnb/envelope_open.d.ts +3 -0
  560. package/es/icons/dnb/envelope_open.js +18 -0
  561. package/es/icons/dnb/envelope_open.js.map +1 -0
  562. package/es/icons/dnb/envelope_open_medium.d.ts +3 -0
  563. package/es/icons/dnb/envelope_open_medium.js +18 -0
  564. package/es/icons/dnb/envelope_open_medium.js.map +1 -0
  565. package/es/icons/dnb/icons-meta.json +230 -20
  566. package/es/icons/dnb/icons-svg.lock +1272 -1064
  567. package/es/icons/dnb/index.d.ts +17 -1
  568. package/es/icons/dnb/index.js +17 -1
  569. package/es/icons/dnb/index.js.map +1 -1
  570. package/es/icons/dnb/laptop.d.ts +3 -0
  571. package/es/icons/dnb/laptop.js +18 -0
  572. package/es/icons/dnb/laptop.js.map +1 -0
  573. package/es/icons/dnb/laptop_medium.d.ts +3 -0
  574. package/es/icons/dnb/laptop_medium.js +18 -0
  575. package/es/icons/dnb/laptop_medium.js.map +1 -0
  576. package/es/icons/dnb/mobile.d.ts +3 -0
  577. package/es/icons/dnb/mobile.js +15 -0
  578. package/es/icons/dnb/mobile.js.map +1 -0
  579. package/es/icons/dnb/mobile_medium.d.ts +3 -0
  580. package/es/icons/dnb/mobile_medium.js +15 -0
  581. package/es/icons/dnb/mobile_medium.js.map +1 -0
  582. package/es/icons/dnb/money_left.d.ts +3 -0
  583. package/es/icons/dnb/money_left.js +17 -0
  584. package/es/icons/dnb/money_left.js.map +1 -0
  585. package/es/icons/dnb/money_left_medium.d.ts +3 -0
  586. package/es/icons/dnb/money_left_medium.js +18 -0
  587. package/es/icons/dnb/money_left_medium.js.map +1 -0
  588. package/es/icons/dnb/scan.js +5 -2
  589. package/es/icons/dnb/scan.js.map +1 -1
  590. package/es/icons/dnb/scan_medium.js +8 -12
  591. package/es/icons/dnb/scan_medium.js.map +1 -1
  592. package/es/icons/dnb/secondary_icons.d.ts +9 -1
  593. package/es/icons/dnb/secondary_icons.js +9 -1
  594. package/es/icons/dnb/secondary_icons.js.map +1 -1
  595. package/es/icons/dnb/secondary_icons_medium.d.ts +9 -1
  596. package/es/icons/dnb/secondary_icons_medium.js +9 -1
  597. package/es/icons/dnb/secondary_icons_medium.js.map +1 -1
  598. package/es/icons/dnb/teenager.d.ts +3 -0
  599. package/es/icons/dnb/teenager.js +18 -0
  600. package/es/icons/dnb/teenager.js.map +1 -0
  601. package/es/icons/dnb/teenager_medium.d.ts +3 -0
  602. package/es/icons/dnb/teenager_medium.js +18 -0
  603. package/es/icons/dnb/teenager_medium.js.map +1 -0
  604. package/es/icons/envelope_open.d.ts +3 -0
  605. package/es/icons/envelope_open.js +3 -0
  606. package/es/icons/envelope_open.js.map +1 -0
  607. package/es/icons/envelope_open_medium.d.ts +3 -0
  608. package/es/icons/envelope_open_medium.js +3 -0
  609. package/es/icons/envelope_open_medium.js.map +1 -0
  610. package/es/icons/index.d.ts +17 -1
  611. package/es/icons/index.js +17 -1
  612. package/es/icons/index.js.map +1 -1
  613. package/es/icons/laptop.d.ts +3 -0
  614. package/es/icons/laptop.js +3 -0
  615. package/es/icons/laptop.js.map +1 -0
  616. package/es/icons/laptop_medium.d.ts +3 -0
  617. package/es/icons/laptop_medium.js +3 -0
  618. package/es/icons/laptop_medium.js.map +1 -0
  619. package/es/icons/mobile.d.ts +3 -0
  620. package/es/icons/mobile.js +3 -0
  621. package/es/icons/mobile.js.map +1 -0
  622. package/es/icons/mobile_medium.d.ts +3 -0
  623. package/es/icons/mobile_medium.js +3 -0
  624. package/es/icons/mobile_medium.js.map +1 -0
  625. package/es/icons/money_left.d.ts +3 -0
  626. package/es/icons/money_left.js +3 -0
  627. package/es/icons/money_left.js.map +1 -0
  628. package/es/icons/money_left_medium.d.ts +3 -0
  629. package/es/icons/money_left_medium.js +3 -0
  630. package/es/icons/money_left_medium.js.map +1 -0
  631. package/es/icons/teenager.d.ts +3 -0
  632. package/es/icons/teenager.js +3 -0
  633. package/es/icons/teenager.js.map +1 -0
  634. package/es/icons/teenager_medium.d.ts +3 -0
  635. package/es/icons/teenager_medium.js +3 -0
  636. package/es/icons/teenager_medium.js.map +1 -0
  637. package/es/shared/Eufemia.d.ts +1 -1
  638. package/es/shared/Eufemia.js +2 -2
  639. package/es/shared/Eufemia.js.map +1 -1
  640. package/es/shared/component-helper.d.ts +1 -0
  641. package/es/shared/component-helper.js +3 -0
  642. package/es/shared/component-helper.js.map +1 -1
  643. package/es/style/dnb-ui-components.css +84 -63
  644. package/es/style/dnb-ui-components.min.css +3 -3
  645. package/es/style/dnb-ui-extensions.css +42 -25
  646. package/es/style/dnb-ui-extensions.min.css +1 -1
  647. package/es/style/dnb-ui-forms.css +42 -25
  648. package/es/style/dnb-ui-forms.min.css +1 -1
  649. package/es/style/themes/theme-eiendom/eiendom-theme-basis.css +14 -2
  650. package/es/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  651. package/es/style/themes/theme-eiendom/eiendom-theme-components.css +166 -91
  652. package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +5 -5
  653. package/es/style/themes/theme-eiendom/eiendom-theme-components.scss +1 -0
  654. package/es/style/themes/theme-eiendom/eiendom-theme-elements.css +14 -2
  655. package/es/style/themes/theme-eiendom/eiendom-theme-elements.min.css +1 -1
  656. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.css +42 -25
  657. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  658. package/es/style/themes/theme-eiendom/eiendom-theme-forms.css +42 -25
  659. package/es/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  660. package/es/style/themes/theme-sbanken/sbanken-theme-components.css +155 -90
  661. package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +4 -4
  662. package/es/style/themes/theme-sbanken/sbanken-theme-components.scss +1 -0
  663. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.css +42 -25
  664. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  665. package/es/style/themes/theme-sbanken/sbanken-theme-forms.css +42 -25
  666. package/es/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  667. package/es/style/themes/theme-ui/ui-theme-basis.css +14 -2
  668. package/es/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  669. package/es/style/themes/theme-ui/ui-theme-components.css +166 -91
  670. package/es/style/themes/theme-ui/ui-theme-components.min.css +5 -5
  671. package/es/style/themes/theme-ui/ui-theme-components.scss +1 -0
  672. package/es/style/themes/theme-ui/ui-theme-elements.css +14 -2
  673. package/es/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
  674. package/es/style/themes/theme-ui/ui-theme-extensions.css +42 -25
  675. package/es/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  676. package/es/style/themes/theme-ui/ui-theme-forms.css +42 -25
  677. package/es/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  678. package/es/style/themes/theme-ui/ui-theme-tags.css +3 -3
  679. package/es/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  680. package/esm/dnb-ui-basis.min.mjs +1 -1
  681. package/esm/dnb-ui-components.min.mjs +1 -1
  682. package/esm/dnb-ui-elements.min.mjs +1 -1
  683. package/esm/dnb-ui-extensions.min.mjs +3 -3
  684. package/esm/dnb-ui-lib.min.mjs +1 -1
  685. package/extensions/forms/DataContext/Context.d.ts +1 -0
  686. package/extensions/forms/DataContext/Context.js +1 -0
  687. package/extensions/forms/DataContext/Context.js.map +1 -1
  688. package/extensions/forms/DataContext/Provider/Provider.d.ts +6 -1
  689. package/extensions/forms/DataContext/Provider/Provider.js +37 -13
  690. package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  691. package/extensions/forms/Field/BankAccountNumber/BankAccountNumber.js +2 -1
  692. package/extensions/forms/Field/BankAccountNumber/BankAccountNumber.js.map +1 -1
  693. package/extensions/forms/Field/Date/Date.js +3 -1
  694. package/extensions/forms/Field/Date/Date.js.map +1 -1
  695. package/extensions/forms/Field/Email/Email.js +7 -5
  696. package/extensions/forms/Field/Email/Email.js.map +1 -1
  697. package/extensions/forms/Field/Expiry/Expiry.js +26 -4
  698. package/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
  699. package/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js +2 -1
  700. package/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js.map +1 -1
  701. package/extensions/forms/Field/OrganizationNumber/OrganizationNumber.js +2 -1
  702. package/extensions/forms/Field/OrganizationNumber/OrganizationNumber.js.map +1 -1
  703. package/extensions/forms/Field/PhoneNumber/PhoneNumber.js +70 -31
  704. package/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  705. package/extensions/forms/Field/PhoneNumber/style/dnb-phone-number.css +3 -0
  706. package/extensions/forms/Field/PhoneNumber/style/dnb-phone-number.min.css +1 -1
  707. package/extensions/forms/Field/PhoneNumber/style/dnb-phone-number.scss +4 -0
  708. package/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js +3 -1
  709. package/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js.map +1 -1
  710. package/extensions/forms/Field/Selection/Selection.js +58 -50
  711. package/extensions/forms/Field/Selection/Selection.js.map +1 -1
  712. package/extensions/forms/Field/Selection/style/dnb-selection.css +6 -6
  713. package/extensions/forms/Field/Selection/style/dnb-selection.min.css +1 -1
  714. package/extensions/forms/Field/Selection/style/dnb-selection.scss +15 -10
  715. package/extensions/forms/Field/String/String.d.ts +1 -0
  716. package/extensions/forms/Field/String/String.js +13 -8
  717. package/extensions/forms/Field/String/String.js.map +1 -1
  718. package/extensions/forms/FieldBlock/FieldBlock.js +2 -2
  719. package/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  720. package/extensions/forms/FieldBlock/style/dnb-field-block.css +1 -1
  721. package/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
  722. package/extensions/forms/FieldBlock/style/dnb-field-block.scss +1 -1
  723. package/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.css +8 -0
  724. package/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.min.css +1 -1
  725. package/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.scss +10 -0
  726. package/extensions/forms/Form/Handler/Handler.js +2 -2
  727. package/extensions/forms/Form/Handler/Handler.js.map +1 -1
  728. package/extensions/forms/Form/MainHeading/style/dnb-form-main-heading.css +7 -2
  729. package/extensions/forms/Form/MainHeading/style/dnb-form-main-heading.min.css +1 -1
  730. package/extensions/forms/Form/MainHeading/style/dnb-form-main-heading.scss +6 -1
  731. package/extensions/forms/Form/SubHeading/style/dnb-form-sub-heading.css +3 -0
  732. package/extensions/forms/Form/SubHeading/style/dnb-form-sub-heading.scss +2 -0
  733. package/extensions/forms/StepsLayout/NextButton/NextButton.js +3 -2
  734. package/extensions/forms/StepsLayout/NextButton/NextButton.js.map +1 -1
  735. package/extensions/forms/StepsLayout/PreviousButton/PreviousButton.js +3 -2
  736. package/extensions/forms/StepsLayout/PreviousButton/PreviousButton.js.map +1 -1
  737. package/extensions/forms/StepsLayout/StepsLayout.js +1 -1
  738. package/extensions/forms/StepsLayout/StepsLayout.js.map +1 -1
  739. package/extensions/forms/StepsLayout/style/dnb-steps-layout.css +14 -16
  740. package/extensions/forms/StepsLayout/style/dnb-steps-layout.min.css +1 -1
  741. package/extensions/forms/StepsLayout/style/dnb-steps-layout.scss +15 -16
  742. package/extensions/forms/hooks/useDataValue.d.ts +3 -0
  743. package/extensions/forms/hooks/useDataValue.js +99 -49
  744. package/extensions/forms/hooks/useDataValue.js.map +1 -1
  745. package/extensions/forms/style/dnb-forms.css +42 -25
  746. package/extensions/forms/style/dnb-forms.min.css +1 -1
  747. package/extensions/forms/types.d.ts +12 -2
  748. package/extensions/forms/types.js +1 -1
  749. package/extensions/forms/types.js.map +1 -1
  750. package/icons/browser.d.ts +3 -0
  751. package/icons/browser.js +3 -0
  752. package/icons/browser.js.map +1 -0
  753. package/icons/browser_medium.d.ts +3 -0
  754. package/icons/browser_medium.js +3 -0
  755. package/icons/browser_medium.js.map +1 -0
  756. package/icons/digipass_corporate.d.ts +3 -0
  757. package/icons/digipass_corporate.js +3 -0
  758. package/icons/digipass_corporate.js.map +1 -0
  759. package/icons/digipass_corporate_medium.d.ts +3 -0
  760. package/icons/digipass_corporate_medium.js +3 -0
  761. package/icons/digipass_corporate_medium.js.map +1 -0
  762. package/icons/digipass_private.d.ts +3 -0
  763. package/icons/digipass_private.js +3 -0
  764. package/icons/digipass_private.js.map +1 -0
  765. package/icons/digipass_private_medium.d.ts +3 -0
  766. package/icons/digipass_private_medium.js +3 -0
  767. package/icons/digipass_private_medium.js.map +1 -0
  768. package/icons/dnb/browser.d.ts +3 -0
  769. package/icons/dnb/browser.js +17 -0
  770. package/icons/dnb/browser.js.map +1 -0
  771. package/icons/dnb/browser_medium.d.ts +3 -0
  772. package/icons/dnb/browser_medium.js +17 -0
  773. package/icons/dnb/browser_medium.js.map +1 -0
  774. package/icons/dnb/coins_1.js +1 -1
  775. package/icons/dnb/coins_1.js.map +1 -1
  776. package/icons/dnb/coins_1_medium.js +1 -1
  777. package/icons/dnb/coins_1_medium.js.map +1 -1
  778. package/icons/dnb/digipass_corporate.d.ts +3 -0
  779. package/icons/dnb/digipass_corporate.js +17 -0
  780. package/icons/dnb/digipass_corporate.js.map +1 -0
  781. package/icons/dnb/digipass_corporate_medium.d.ts +3 -0
  782. package/icons/dnb/digipass_corporate_medium.js +17 -0
  783. package/icons/dnb/digipass_corporate_medium.js.map +1 -0
  784. package/icons/dnb/digipass_private.d.ts +3 -0
  785. package/icons/dnb/digipass_private.js +17 -0
  786. package/icons/dnb/digipass_private.js.map +1 -0
  787. package/icons/dnb/digipass_private_medium.d.ts +3 -0
  788. package/icons/dnb/digipass_private_medium.js +17 -0
  789. package/icons/dnb/digipass_private_medium.js.map +1 -0
  790. package/icons/dnb/envelope_open.d.ts +3 -0
  791. package/icons/dnb/envelope_open.js +18 -0
  792. package/icons/dnb/envelope_open.js.map +1 -0
  793. package/icons/dnb/envelope_open_medium.d.ts +3 -0
  794. package/icons/dnb/envelope_open_medium.js +18 -0
  795. package/icons/dnb/envelope_open_medium.js.map +1 -0
  796. package/icons/dnb/icons-meta.json +230 -20
  797. package/icons/dnb/icons-svg.lock +1272 -1064
  798. package/icons/dnb/index.d.ts +17 -1
  799. package/icons/dnb/index.js +17 -1
  800. package/icons/dnb/index.js.map +1 -1
  801. package/icons/dnb/laptop.d.ts +3 -0
  802. package/icons/dnb/laptop.js +18 -0
  803. package/icons/dnb/laptop.js.map +1 -0
  804. package/icons/dnb/laptop_medium.d.ts +3 -0
  805. package/icons/dnb/laptop_medium.js +18 -0
  806. package/icons/dnb/laptop_medium.js.map +1 -0
  807. package/icons/dnb/mobile.d.ts +3 -0
  808. package/icons/dnb/mobile.js +15 -0
  809. package/icons/dnb/mobile.js.map +1 -0
  810. package/icons/dnb/mobile_medium.d.ts +3 -0
  811. package/icons/dnb/mobile_medium.js +15 -0
  812. package/icons/dnb/mobile_medium.js.map +1 -0
  813. package/icons/dnb/money_left.d.ts +3 -0
  814. package/icons/dnb/money_left.js +17 -0
  815. package/icons/dnb/money_left.js.map +1 -0
  816. package/icons/dnb/money_left_medium.d.ts +3 -0
  817. package/icons/dnb/money_left_medium.js +18 -0
  818. package/icons/dnb/money_left_medium.js.map +1 -0
  819. package/icons/dnb/scan.js +5 -2
  820. package/icons/dnb/scan.js.map +1 -1
  821. package/icons/dnb/scan_medium.js +8 -12
  822. package/icons/dnb/scan_medium.js.map +1 -1
  823. package/icons/dnb/secondary_icons.d.ts +9 -1
  824. package/icons/dnb/secondary_icons.js +9 -1
  825. package/icons/dnb/secondary_icons.js.map +1 -1
  826. package/icons/dnb/secondary_icons_medium.d.ts +9 -1
  827. package/icons/dnb/secondary_icons_medium.js +9 -1
  828. package/icons/dnb/secondary_icons_medium.js.map +1 -1
  829. package/icons/dnb/teenager.d.ts +3 -0
  830. package/icons/dnb/teenager.js +18 -0
  831. package/icons/dnb/teenager.js.map +1 -0
  832. package/icons/dnb/teenager_medium.d.ts +3 -0
  833. package/icons/dnb/teenager_medium.js +18 -0
  834. package/icons/dnb/teenager_medium.js.map +1 -0
  835. package/icons/envelope_open.d.ts +3 -0
  836. package/icons/envelope_open.js +3 -0
  837. package/icons/envelope_open.js.map +1 -0
  838. package/icons/envelope_open_medium.d.ts +3 -0
  839. package/icons/envelope_open_medium.js +3 -0
  840. package/icons/envelope_open_medium.js.map +1 -0
  841. package/icons/index.d.ts +17 -1
  842. package/icons/index.js +17 -1
  843. package/icons/index.js.map +1 -1
  844. package/icons/laptop.d.ts +3 -0
  845. package/icons/laptop.js +3 -0
  846. package/icons/laptop.js.map +1 -0
  847. package/icons/laptop_medium.d.ts +3 -0
  848. package/icons/laptop_medium.js +3 -0
  849. package/icons/laptop_medium.js.map +1 -0
  850. package/icons/mobile.d.ts +3 -0
  851. package/icons/mobile.js +3 -0
  852. package/icons/mobile.js.map +1 -0
  853. package/icons/mobile_medium.d.ts +3 -0
  854. package/icons/mobile_medium.js +3 -0
  855. package/icons/mobile_medium.js.map +1 -0
  856. package/icons/money_left.d.ts +3 -0
  857. package/icons/money_left.js +3 -0
  858. package/icons/money_left.js.map +1 -0
  859. package/icons/money_left_medium.d.ts +3 -0
  860. package/icons/money_left_medium.js +3 -0
  861. package/icons/money_left_medium.js.map +1 -0
  862. package/icons/teenager.d.ts +3 -0
  863. package/icons/teenager.js +3 -0
  864. package/icons/teenager.js.map +1 -0
  865. package/icons/teenager_medium.d.ts +3 -0
  866. package/icons/teenager_medium.js +3 -0
  867. package/icons/teenager_medium.js.map +1 -0
  868. package/package.json +1 -1
  869. package/shared/Eufemia.d.ts +1 -1
  870. package/shared/Eufemia.js +2 -2
  871. package/shared/Eufemia.js.map +1 -1
  872. package/shared/component-helper.d.ts +1 -0
  873. package/shared/component-helper.js +3 -0
  874. package/shared/component-helper.js.map +1 -1
  875. package/style/dnb-ui-components.css +84 -63
  876. package/style/dnb-ui-components.min.css +3 -3
  877. package/style/dnb-ui-extensions.css +42 -25
  878. package/style/dnb-ui-extensions.min.css +1 -1
  879. package/style/dnb-ui-forms.css +42 -25
  880. package/style/dnb-ui-forms.min.css +1 -1
  881. package/style/themes/theme-eiendom/eiendom-theme-basis.css +14 -2
  882. package/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  883. package/style/themes/theme-eiendom/eiendom-theme-components.css +166 -91
  884. package/style/themes/theme-eiendom/eiendom-theme-components.min.css +5 -5
  885. package/style/themes/theme-eiendom/eiendom-theme-components.scss +1 -0
  886. package/style/themes/theme-eiendom/eiendom-theme-elements.css +14 -2
  887. package/style/themes/theme-eiendom/eiendom-theme-elements.min.css +1 -1
  888. package/style/themes/theme-eiendom/eiendom-theme-extensions.css +42 -25
  889. package/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  890. package/style/themes/theme-eiendom/eiendom-theme-forms.css +42 -25
  891. package/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  892. package/style/themes/theme-sbanken/sbanken-theme-components.css +155 -90
  893. package/style/themes/theme-sbanken/sbanken-theme-components.min.css +4 -4
  894. package/style/themes/theme-sbanken/sbanken-theme-components.scss +1 -0
  895. package/style/themes/theme-sbanken/sbanken-theme-extensions.css +42 -25
  896. package/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  897. package/style/themes/theme-sbanken/sbanken-theme-forms.css +42 -25
  898. package/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  899. package/style/themes/theme-ui/ui-theme-basis.css +14 -2
  900. package/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  901. package/style/themes/theme-ui/ui-theme-components.css +166 -91
  902. package/style/themes/theme-ui/ui-theme-components.min.css +5 -5
  903. package/style/themes/theme-ui/ui-theme-components.scss +1 -0
  904. package/style/themes/theme-ui/ui-theme-elements.css +14 -2
  905. package/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
  906. package/style/themes/theme-ui/ui-theme-extensions.css +42 -25
  907. package/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  908. package/style/themes/theme-ui/ui-theme-forms.css +42 -25
  909. package/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  910. package/style/themes/theme-ui/ui-theme-tags.css +3 -3
  911. package/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  912. package/umd/dnb-ui-basis.min.js +1 -1
  913. package/umd/dnb-ui-components.min.js +1 -1
  914. package/umd/dnb-ui-elements.min.js +1 -1
  915. package/umd/dnb-ui-extensions.min.js +3 -3
  916. package/umd/dnb-ui-lib.min.js +1 -1
  917. package/cjs/icons/icons-meta.json +0 -3748
  918. package/es/icons/icons-meta.json +0 -3748
  919. package/icons/icons-meta.json +0 -3748
@@ -4,13 +4,14 @@ 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, useEffect } from 'react';
7
+ import React, { useMemo, useContext, useCallback } from 'react';
8
8
  import { Autocomplete, Flex } from '../../../../components';
9
9
  import classnames from 'classnames';
10
10
  import countries from '../../constants/countries';
11
11
  import StringComponent from '../String';
12
12
  import { useDataValue } from '../../hooks';
13
13
  import FieldBlock from '../../FieldBlock';
14
+ import { FormError } from '../../types';
14
15
  import { pickSpacingProps } from '../../../../components/flex/utils';
15
16
  import SharedContext from '../../../../shared/Context';
16
17
  import { getCountryData, makeCountryFilterSet } from '../SelectCountry';
@@ -18,18 +19,49 @@ const defaultCountryCode = '+47';
18
19
  const defaultPlaceholder = '00 00 00 00';
19
20
  const defaultMask = [/\d/, /\d/, ' ', /\d/, /\d/, ' ', /\d/, /\d/, ' ', /\d/, /\d/];
20
21
  function PhoneNumber(props) {
21
- var _sharedContext$locale;
22
+ var _sharedContext$locale, _countryCodeRef$curre;
22
23
  const sharedContext = useContext(SharedContext);
23
24
  const tr = sharedContext === null || sharedContext === void 0 ? void 0 : sharedContext.translation.Forms;
24
25
  const lang = (_sharedContext$locale = sharedContext.locale) === null || _sharedContext$locale === void 0 ? void 0 : _sharedContext$locale.split('-')[0];
26
+ const countryCodeRef = React.useRef(null);
27
+ const numberRef = React.useRef(null);
28
+ const dataRef = React.useRef(null);
29
+ const langRef = React.useRef(lang);
30
+ const wasFilled = React.useRef(false);
25
31
  const errorMessages = useMemo(() => _objectSpread({
26
32
  required: tr.phoneNumberErrorRequired,
27
33
  pattern: tr.phoneNumberErrorRequired
28
34
  }, props === null || props === void 0 ? void 0 : props.errorMessages), [tr, props.errorMessages]);
35
+ const validateRequired = useCallback((value, _ref) => {
36
+ let {
37
+ required,
38
+ isChanged
39
+ } = _ref;
40
+ const error = new FormError('The value is required', {
41
+ validationRule: 'required'
42
+ });
43
+ if (required) {
44
+ const [countryCode, phoneNumber] = splitValue(value);
45
+ if (countryCode !== prevCountryCodeRef.current) {
46
+ if (countryCode) {
47
+ prevCountryCodeRef.current = countryCode;
48
+ }
49
+ return undefined;
50
+ }
51
+ if (isChanged && !phoneNumber) {
52
+ return error;
53
+ }
54
+ }
55
+ return undefined;
56
+ }, []);
29
57
  const defaultProps = {
30
58
  errorMessages
31
59
  };
32
- const preparedProps = _objectSpread(_objectSpread({}, defaultProps), props);
60
+ const preparedProps = _objectSpread(_objectSpread(_objectSpread({}, defaultProps), props), {}, {
61
+ validateRequired,
62
+ fromExternal,
63
+ toEvent
64
+ });
33
65
  const {
34
66
  className,
35
67
  countryCodeFieldClassName,
@@ -61,11 +93,20 @@ function PhoneNumber(props) {
61
93
  onNumberChange,
62
94
  filterCountries = ccFilter !== 'Prioritized' ? makeCountryFilterSet(ccFilter) : undefined
63
95
  } = useDataValue(preparedProps);
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);
96
+ function fromExternal(external) {
97
+ const [, phoneNumber] = splitValue(external);
98
+ if (!phoneNumber && !props.omitCountryCodeField) {
99
+ return countryCodeRef.current;
100
+ }
101
+ return external;
102
+ }
103
+ function toEvent(value) {
104
+ const [, phoneNumber] = splitValue(value);
105
+ if (!phoneNumber) {
106
+ return emptyValue;
107
+ }
108
+ return value;
109
+ }
69
110
  const updateCurrentDataSet = useCallback(() => {
70
111
  dataRef.current = getCountryData({
71
112
  lang,
@@ -74,13 +115,13 @@ function PhoneNumber(props) {
74
115
  makeObject
75
116
  });
76
117
  }, [lang, filterCountries, ccFilter]);
77
- const callOnChange = useCallback(_ref => {
118
+ const callOnChange = useCallback(_ref2 => {
78
119
  let {
79
120
  countryCode = omitCountryCodeField ? emptyValue : countryCodeRef.current || emptyValue,
80
121
  phoneNumber = numberRef.current || emptyValue
81
- } = _ref;
122
+ } = _ref2;
82
123
  updateValue('invalidate');
83
- handleChange(phoneNumber ? joinValue([countryCode, phoneNumber]) : emptyValue, omitCountryCodeField ? {
124
+ handleChange(joinValue([countryCode, phoneNumber]), omitCountryCodeField ? {
84
125
  phoneNumber
85
126
  } : {
86
127
  countryCode,
@@ -91,21 +132,19 @@ function PhoneNumber(props) {
91
132
  const [countryCode, phoneNumber] = splitValue(props.value);
92
133
  numberRef.current = phoneNumber;
93
134
  if (lang !== langRef.current || !wasFilled.current) {
94
- countryCodeRef.current = countryCode || defaultCountryCode;
135
+ if (!countryCodeRef.current || countryCode) {
136
+ countryCodeRef.current = countryCode || defaultCountryCode;
137
+ }
95
138
  langRef.current = lang;
96
139
  updateCurrentDataSet();
97
140
  }
98
141
  }, [props.value, lang, updateCurrentDataSet]);
99
- useEffect(() => {
100
- const [countryCode, phoneNumber] = splitValue(props.value);
101
- const newValue = phoneNumber ? joinValue([countryCode, phoneNumber]) : emptyValue;
102
- updateValue(newValue);
103
- }, [props.value, emptyValue, updateValue]);
104
- const handleCountryCodeChange = useCallback(_ref2 => {
142
+ const prevCountryCodeRef = React.useRef(countryCodeRef.current);
143
+ const handleCountryCodeChange = useCallback(_ref3 => {
105
144
  var _data$selectedKey;
106
145
  let {
107
146
  data
108
- } = _ref2;
147
+ } = _ref3;
109
148
  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;
110
149
  callOnChange({
111
150
  countryCode
@@ -119,10 +158,10 @@ function PhoneNumber(props) {
119
158
  });
120
159
  onNumberChange === null || onNumberChange === void 0 ? void 0 : onNumberChange(phoneNumber);
121
160
  }, [emptyValue, callOnChange, onNumberChange]);
122
- const onFocusHandler = useCallback(_ref3 => {
161
+ const onFocusHandler = useCallback(_ref4 => {
123
162
  let {
124
163
  updateData
125
- } = _ref3;
164
+ } = _ref4;
126
165
  if (!wasFilled.current) {
127
166
  wasFilled.current = true;
128
167
  updateCurrentDataSet();
@@ -130,20 +169,20 @@ function PhoneNumber(props) {
130
169
  }
131
170
  handleFocus();
132
171
  }, [handleFocus, updateCurrentDataSet]);
133
- const onTypeHandler = useCallback(_ref4 => {
172
+ const onTypeHandler = useCallback(_ref5 => {
134
173
  var _event$nativeEvent;
135
174
  let {
136
175
  value,
137
176
  updateData,
138
177
  revalidateInputValue,
139
178
  event
140
- } = _ref4;
179
+ } = _ref5;
141
180
  if (typeof (event === null || event === void 0 ? void 0 : (_event$nativeEvent = event.nativeEvent) === null || _event$nativeEvent === void 0 ? void 0 : _event$nativeEvent.data) === 'undefined') {
142
181
  const cdcVal = /\+\d{1,3}\s{1}\d+/.test(value) ? splitValue(value)[0] : value;
143
- const country = countries.find(_ref5 => {
182
+ const country = countries.find(_ref6 => {
144
183
  let {
145
184
  cdc
146
- } = _ref5;
185
+ } = _ref6;
147
186
  return cdc === cdcVal;
148
187
  });
149
188
  if (country !== null && country !== void 0 && country.cdc) {
@@ -159,7 +198,7 @@ function PhoneNumber(props) {
159
198
  }
160
199
  }
161
200
  }, [callOnChange, updateCurrentDataSet]);
162
- const isDefault = countryCodeRef.current.includes(defaultCountryCode);
201
+ const isDefault = (_countryCodeRef$curre = countryCodeRef.current) === null || _countryCodeRef$curre === void 0 ? void 0 : _countryCodeRef$curre.includes(defaultCountryCode);
163
202
  return React.createElement(FieldBlock, _extends({
164
203
  className: classnames('dnb-forms-field-phone-number', className),
165
204
  width: omitCountryCodeField ? undefined : width,
@@ -168,11 +207,11 @@ function PhoneNumber(props) {
168
207
  error: error,
169
208
  disabled: disabled
170
209
  }, pickSpacingProps(props)), React.createElement(Flex.Horizontal, {
171
- align: "baseline"
210
+ align: "flex-end"
172
211
  }, !omitCountryCodeField && React.createElement(Autocomplete, {
173
212
  className: classnames('dnb-forms-field-phone-number__country-code', countryCodeFieldClassName),
174
213
  mode: "async",
175
- placeholder: countryCodePlaceholder !== null && countryCodePlaceholder !== void 0 ? countryCodePlaceholder : ' ',
214
+ placeholder: countryCodePlaceholder,
176
215
  label_direction: "vertical",
177
216
  label: countryCodeLabel !== null && countryCodeLabel !== void 0 ? countryCodeLabel : sharedContext === null || sharedContext === void 0 ? void 0 : sharedContext.translation.Forms.countryCodeLabel,
178
217
  data: dataRef.current,
@@ -194,7 +233,7 @@ function PhoneNumber(props) {
194
233
  autoComplete: "tel-national",
195
234
  emptyValue: "",
196
235
  layout: "vertical",
197
- label: label !== null && label !== void 0 ? label : ' ',
236
+ label: label,
198
237
  placeholder: placeholder !== null && placeholder !== void 0 ? placeholder : isDefault ? defaultPlaceholder : undefined,
199
238
  mask: numberMask !== null && numberMask !== void 0 ? numberMask : isDefault ? defaultMask : Array(12).fill(/\d/),
200
239
  onFocus: handleFocus,
@@ -212,7 +251,8 @@ function PhoneNumber(props) {
212
251
  errorMessages: errorMessages,
213
252
  validateInitially: validateInitially,
214
253
  continuousValidation: continuousValidation,
215
- validateUnchanged: validateUnchanged
254
+ validateUnchanged: validateUnchanged,
255
+ inputMode: "tel"
216
256
  })));
217
257
  }
218
258
  function makeObject(country, lang) {
@@ -220,7 +260,6 @@ function makeObject(country, lang) {
220
260
  return {
221
261
  selectedKey: formattCountryCode(country.cdc),
222
262
  selected_value: `${country.iso} (${formattCountryCode(country.cdc)})`,
223
- search_content: Object.values(country.i18n).map(v => `${formattCountryCode(country.cdc)} ${v}`),
224
263
  content: `${formattCountryCode(country.cdc)} ${(_country$i18n$lang = country.i18n[lang]) !== null && _country$i18n$lang !== void 0 ? _country$i18n$lang : country.i18n.en}`
225
264
  };
226
265
  }
@@ -1 +1 @@
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","_ref","countryCode","phoneNumber","joinValue","splitValue","value","newValue","handleCountryCodeChange","_ref2","_data$selectedKey","data","selectedKey","trim","handleNumberChange","onFocusHandler","_ref3","updateData","onTypeHandler","_ref4","_event$nativeEvent","revalidateInputValue","event","nativeEvent","cdcVal","test","find","_ref5","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
+ {"version":3,"file":"PhoneNumber.js","names":["React","useMemo","useContext","useCallback","Autocomplete","Flex","classnames","countries","StringComponent","useDataValue","FieldBlock","FormError","pickSpacingProps","SharedContext","getCountryData","makeCountryFilterSet","defaultCountryCode","defaultPlaceholder","defaultMask","PhoneNumber","props","_sharedContext$locale","_countryCodeRef$curre","sharedContext","tr","translation","Forms","lang","locale","split","countryCodeRef","useRef","numberRef","dataRef","langRef","wasFilled","errorMessages","_objectSpread","required","phoneNumberErrorRequired","pattern","validateRequired","value","_ref","isChanged","error","validationRule","countryCode","phoneNumber","splitValue","prevCountryCodeRef","current","undefined","defaultProps","preparedProps","fromExternal","toEvent","className","countryCodeFieldClassName","numberFieldClassName","countryCodePlaceholder","placeholder","countryCodeLabel","label","phoneNumberLabel","numberMask","ccFilter","emptyValue","info","warning","disabled","width","help","validateInitially","continuousValidation","validateUnchanged","omitCountryCodeField","handleFocus","handleBlur","handleChange","updateValue","onCountryCodeChange","onNumberChange","filterCountries","external","updateCurrentDataSet","filter","country","formattCountryCode","cdc","sort","makeObject","callOnChange","_ref2","joinValue","handleCountryCodeChange","_ref3","_data$selectedKey","data","selectedKey","trim","handleNumberChange","onFocusHandler","_ref4","updateData","onTypeHandler","_ref5","_event$nativeEvent","revalidateInputValue","event","nativeEvent","cdcVal","test","find","_ref6","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","inputMode","_country$i18n$lang","selected_value","iso","content","i18n","en","match","slice","array","Boolean","join","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/PhoneNumber/PhoneNumber.tsx"],"sourcesContent":["import React, { useMemo, useContext, useCallback } 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, FormError } 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 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 errorMessages = useMemo(\n () => ({\n required: tr.phoneNumberErrorRequired,\n pattern: tr.phoneNumberErrorRequired,\n ...props?.errorMessages,\n }),\n [tr, props.errorMessages]\n )\n\n const validateRequired = useCallback(\n (value: string, { required, isChanged }) => {\n const error = new FormError('The value is required', {\n validationRule: 'required',\n })\n\n if (required) {\n const [countryCode, phoneNumber] = splitValue(value)\n\n if (countryCode !== prevCountryCodeRef.current) {\n if (countryCode) {\n prevCountryCodeRef.current = countryCode\n }\n return undefined\n }\n\n if (isChanged && !phoneNumber) {\n return error\n }\n }\n\n return undefined\n },\n []\n )\n\n const defaultProps: Partial<Props> = {\n errorMessages,\n }\n const preparedProps: Props = {\n ...defaultProps,\n ...props,\n validateRequired,\n fromExternal,\n toEvent,\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 function fromExternal(external: string) {\n const [, phoneNumber] = splitValue(external)\n if (!phoneNumber && !props.omitCountryCodeField) {\n return countryCodeRef.current\n }\n return external\n }\n\n function toEvent(value: string) {\n const [, phoneNumber] = splitValue(value)\n if (!phoneNumber) {\n return emptyValue\n }\n return value\n }\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 the cc value changes,\n * even if the value is undefined\n */\n updateValue('invalidate')\n\n handleChange(\n joinValue([countryCode, phoneNumber]),\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 if (!countryCodeRef.current || countryCode) {\n countryCodeRef.current = countryCode || defaultCountryCode\n }\n langRef.current = lang\n\n updateCurrentDataSet()\n }\n }, [props.value, lang, updateCurrentDataSet])\n\n const prevCountryCodeRef = React.useRef(countryCodeRef.current)\n\n const handleCountryCodeChange = useCallback(\n ({ data }: { data: { selectedKey: string } }) => {\n const countryCode = (countryCodeRef.current =\n data?.selectedKey?.trim() || emptyValue)\n\n callOnChange({ countryCode })\n onCountryCodeChange?.(countryCode)\n },\n [emptyValue, callOnChange, onCountryCodeChange]\n )\n\n const handleNumberChange = useCallback(\n (value: string) => {\n const phoneNumber = (numberRef.current = value || emptyValue)\n\n callOnChange({ phoneNumber })\n onNumberChange?.(phoneNumber)\n },\n [emptyValue, callOnChange, onNumberChange]\n )\n\n const 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=\"flex-end\">\n {!omitCountryCodeField && (\n <Autocomplete\n className={classnames(\n 'dnb-forms-field-phone-number__country-code',\n countryCodeFieldClassName\n )}\n mode=\"async\"\n placeholder={countryCodePlaceholder}\n label_direction=\"vertical\"\n label={\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 inputMode=\"tel\"\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 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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"}
@@ -6,4 +6,7 @@
6
6
  }
7
7
  .dnb-forms-field-phone-number__number {
8
8
  flex: 1;
9
+ }
10
+ .dnb-forms-field-phone-number .dnb-form-label {
11
+ max-width: 14ch;
9
12
  }
@@ -1 +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
+ .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}.dnb-forms-field-phone-number .dnb-form-label{max-width:14ch}
@@ -10,4 +10,8 @@
10
10
  &__number {
11
11
  flex: 1;
12
12
  }
13
+
14
+ .dnb-form-label {
15
+ max-width: 14ch;
16
+ }
13
17
  }
@@ -29,6 +29,7 @@ function PostalCodeAndCity(props) {
29
29
  className: 'dnb-forms-field-postal-code-and-city__fields'
30
30
  }, React.createElement(StringComponent, _extends({}, postalCode, {
31
31
  pattern: (_postalCode$pattern = postalCode.pattern) !== null && _postalCode$pattern !== void 0 ? _postalCode$pattern : '^[0-9]{4}$',
32
+ mask: [/\d/, /\d/, /\d/, /\d/],
32
33
  className: classnames('dnb-forms-field-postal-code-and-city__postal-code', postalCode.className),
33
34
  label: (_postalCode$label = postalCode.label) !== null && _postalCode$label !== void 0 ? _postalCode$label : sharedContext === null || sharedContext === void 0 ? void 0 : sharedContext.translation.Forms.postalCodeLabel,
34
35
  errorMessages: _objectSpread({
@@ -37,7 +38,8 @@ function PostalCodeAndCity(props) {
37
38
  }, postalCode.errorMessages),
38
39
  placeholder: (_postalCode$placehold = postalCode.placeholder) !== null && _postalCode$placehold !== void 0 ? _postalCode$placehold : '0000',
39
40
  width: false,
40
- inputClassName: "dnb-forms-field-postal-code-and-city__postal-code-input"
41
+ inputClassName: "dnb-forms-field-postal-code-and-city__postal-code-input",
42
+ inputMode: "numeric"
41
43
  })), React.createElement(StringComponent, _extends({}, city, {
42
44
  className: classnames('dnb-forms-field-postal-code-and-city__city', city.className),
43
45
  label: (_city$label = city.label) !== null && _city$label !== void 0 ? _city$label : sharedContext === null || sharedContext === void 0 ? void 0 : sharedContext.translation.Forms.cityLabel,
@@ -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","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
+ {"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","mask","label","translation","Forms","postalCodeLabel","errorMessages","_objectSpread","required","postalCodeErrorRequired","postalCodeErrorPattern","placeholder","inputClassName","inputMode","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 mask={[/\\d/, /\\d/, /\\d/, /\\d/]}\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 inputMode=\"numeric\"\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;IAC5CgB,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAE;IAC/BF,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;MAC1DT,OAAO,EACLX,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;IAC9CM,KAAK,EAAE,KAAM;IACbmB,cAAc,EAAC,yDAAyD;IACxEC,SAAS,EAAC;EAAS,EACpB,CAAC,EACFpC,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,CAACU,SAAU;IAChER,aAAa,EAAAC,aAAA;MACXC,QAAQ,EAAEnB,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEc,WAAW,CAACC,KAAK,CAACW;IAAiB,GACzDxB,IAAI,CAACe,aAAa,CACrB;IACFb,KAAK,EAAC,SAAS;IACfD,IAAI,EAAEA;EAAK,EACZ,CACE,CACK,CAAC;AAEjB;AAEAT,iBAAiB,CAACiC,qBAAqB,GAAG,IAAI;AAC9C,eAAejC,iBAAiB"}
@@ -1,14 +1,15 @@
1
1
  "use client";
2
2
 
3
3
  import _extends from "@babel/runtime/helpers/esm/extends";
4
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
4
5
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
5
6
  var _em;
7
+ const _excluded = ["value", "error", "title", "children"],
8
+ _excluded2 = ["value", "title", "status"];
6
9
  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; }
7
10
  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; }
8
11
  import React, { useMemo, useContext, useCallback } from 'react';
9
12
  import { ToggleButton, Dropdown, Radio, HelpButton } from '../../../../components';
10
- import ButtonRow from '../../Form/ButtonRow';
11
- import FieldBlock from '../../FieldBlock';
12
13
  import classnames from 'classnames';
13
14
  import { makeUniqueId } from '../../../../shared/component-helper';
14
15
  import SharedContext from '../../../../shared/Context';
@@ -16,7 +17,7 @@ import Option from '../Option';
16
17
  import { useDataValue } from '../../hooks';
17
18
  import { FormError } from '../../types';
18
19
  import { pickSpacingProps } from '../../../../components/flex/utils';
19
- import ToggleButtonGroupContext from '../../../../components/toggle-button/ToggleButtonGroupContext';
20
+ import FieldBlock from '../../FieldBlock';
20
21
  function Selection(props) {
21
22
  const sharedContext = useContext(SharedContext);
22
23
  const clearValue = useMemo(() => `clear-option-${makeUniqueId()}`, []);
@@ -51,7 +52,7 @@ function Selection(props) {
51
52
  } = _ref;
52
53
  handleChange === null || handleChange === void 0 ? void 0 : handleChange(!selectedKey || selectedKey === clearValue ? emptyValue : selectedKey);
53
54
  }, [handleChange, emptyValue, clearValue]);
54
- const handleRadioChange = useCallback(_ref2 => {
55
+ const onChangeHandler = useCallback(_ref2 => {
55
56
  let {
56
57
  value
57
58
  } = _ref2;
@@ -69,7 +70,7 @@ function Selection(props) {
69
70
  } = _ref4;
70
71
  setHasFocus(false, data === null || data === void 0 ? void 0 : data.selectedKey);
71
72
  }, [setHasFocus]);
72
- const cn = classnames('dnb-forms-field-selection', className);
73
+ const cn = classnames(`dnb-forms-field-selection dnb-forms-field-selection__variant--${variant} dnb-forms-field-selection__options-layout--${optionsLayout}`, className);
73
74
  const fieldBlockProps = _objectSpread(_objectSpread({
74
75
  forId: id,
75
76
  className: cn
@@ -82,50 +83,57 @@ function Selection(props) {
82
83
  labelDescription,
83
84
  labelSecondary
84
85
  });
86
+ const getStatus = useCallback(error => {
87
+ var _error$message;
88
+ return (_error$message = error === null || error === void 0 ? void 0 : error.message) !== null && _error$message !== void 0 ? _error$message : warning instanceof Error && warning.message || warning instanceof FormError && warning.message || (warning === null || warning === void 0 ? void 0 : warning.toString()) || info instanceof Error && info.message || info instanceof FormError && info.message || (info === null || info === void 0 ? void 0 : info.toString());
89
+ }, [info, warning]);
85
90
  const options = useMemo(() => React.Children.toArray(children).filter(child => React.isValidElement(child) && child.type === Option).map(option => {
86
- var _option$props$title;
87
- return {
88
- title: (_option$props$title = option.props.title) !== null && _option$props$title !== void 0 ? _option$props$title : option.props.children,
89
- value: option.props.value,
90
- handleSelect: () => {
91
- const selected = option.props.value;
92
- handleChange === null || handleChange === void 0 ? void 0 : handleChange(selected === value ? emptyValue : selected);
93
- }
94
- };
95
- }), [children, value, emptyValue, handleChange]);
91
+ const _option$props = option.props,
92
+ {
93
+ value: v,
94
+ error,
95
+ title,
96
+ children
97
+ } = _option$props,
98
+ rest = _objectWithoutProperties(_option$props, _excluded);
99
+ const status = getStatus(error);
100
+ return _objectSpread({
101
+ title: title !== null && title !== void 0 ? title : children,
102
+ value: v,
103
+ status
104
+ }, rest);
105
+ }), [children, getStatus]);
106
+ const status = getStatus(error);
96
107
  switch (variant) {
97
108
  case 'radio':
98
- return React.createElement(Radio.Group, _extends({
99
- className: cn,
100
- label: label,
101
- layout_direction: optionsLayout === 'horizontal' ? 'row' : 'column',
102
- vertical: layout === 'vertical',
103
- on_change: handleRadioChange,
104
- value: String(value !== null && value !== void 0 ? value : '')
105
- }, pickSpacingProps(props)), options.map((option, i) => {
106
- var _option$value;
107
- return React.createElement(Radio, {
108
- key: `option-${i}-${option.value}`,
109
- label: option.title,
110
- value: String((_option$value = option.value) !== null && _option$value !== void 0 ? _option$value : '')
111
- });
112
- }));
113
109
  case 'button':
114
- return React.createElement(FieldBlock, fieldBlockProps, React.createElement(ButtonRow, null, React.createElement(ToggleButtonGroupContext.Provider, {
115
- value: {
116
- status: error ? 'error' : undefined,
117
- disabled
118
- }
119
- }, options.map((option, i) => React.createElement(ToggleButton, {
120
- id: options.length > 0 ? id : undefined,
121
- key: `option-${i}-${option.value}`,
122
- text: option.title,
123
- on_change: option.handleSelect,
124
- checked: option.value === value
125
- })))));
110
+ {
111
+ const Component = variant === 'radio' ? Radio : ToggleButton;
112
+ return React.createElement(FieldBlock, fieldBlockProps, React.createElement(Component.Group, {
113
+ className: cn,
114
+ layout_direction: optionsLayout === 'horizontal' ? 'row' : 'column',
115
+ disabled: disabled,
116
+ on_change: onChangeHandler,
117
+ value: String(value !== null && value !== void 0 ? value : '')
118
+ }, options.map((option, i) => {
119
+ const {
120
+ value,
121
+ title,
122
+ status
123
+ } = option,
124
+ rest = _objectWithoutProperties(option, _excluded2);
125
+ return React.createElement(Component, _extends({
126
+ id: options.length === 1 ? id : undefined,
127
+ key: `option-${i}-${value}`,
128
+ label: variant === 'radio' ? title : undefined,
129
+ text: variant === 'button' ? title : undefined,
130
+ value: String(value !== null && value !== void 0 ? value : ''),
131
+ status: status
132
+ }, rest));
133
+ })));
134
+ }
126
135
  case 'dropdown':
127
136
  {
128
- var _error$message;
129
137
  const optionsData = React.Children.map(children, child => {
130
138
  if (React.isValidElement(child) && child.type === Option) {
131
139
  var _child$props$value, _ref5, _child$props$children, _child$props$children2;
@@ -145,15 +153,15 @@ function Selection(props) {
145
153
  selectedKey: clearValue,
146
154
  content: React.createElement("em", null, sharedContext === null || sharedContext === void 0 ? void 0 : sharedContext.translation.Forms.selectionClearSelected)
147
155
  } : undefined, ...(optionsData !== null && optionsData !== void 0 ? optionsData : [])].filter(Boolean);
148
- return React.createElement(Dropdown, _extends({
149
- className: classnames('dnb-forms-field-selection', className, width !== 'stretch' && `dnb-forms-field-selection--width-${width}`),
156
+ return React.createElement(FieldBlock, _extends({}, fieldBlockProps, {
157
+ width: width
158
+ }), React.createElement(Dropdown, _extends({
159
+ id: id,
150
160
  list_class: "dnb-forms-field-selection__list",
151
161
  portal_class: "dnb-forms-field-selection__portal",
152
162
  title: placeholder,
153
163
  value: String(value !== null && value !== void 0 ? value : ''),
154
- label: label,
155
- label_direction: layout,
156
- status: (_error$message = error === null || error === void 0 ? void 0 : error.message) !== null && _error$message !== void 0 ? _error$message : warning instanceof Error && warning.message || warning instanceof FormError && warning.message || (warning === null || warning === void 0 ? void 0 : warning.toString()) || info instanceof Error && info.message || info instanceof FormError && info.message || (info === null || info === void 0 ? void 0 : info.toString()),
164
+ status: status && 'error',
157
165
  disabled: disabled,
158
166
  data: data,
159
167
  suffix: help ? React.createElement(HelpButton, {
@@ -163,8 +171,8 @@ function Selection(props) {
163
171
  on_show: handleShow,
164
172
  on_hide: handleHide
165
173
  }, pickSpacingProps(props), {
166
- stretch: width === 'stretch'
167
- }));
174
+ stretch: true
175
+ })));
168
176
  }
169
177
  }
170
178
  }