@dnb/eufemia 10.10.0 → 10.12.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 (806) hide show
  1. package/CHANGELOG.md +71 -0
  2. package/cjs/components/accordion/Accordion.d.ts +2 -3
  3. package/cjs/components/anchor/Anchor.d.ts +2 -1
  4. package/cjs/components/anchor/style/themes/dnb-anchor-theme-sbanken.css +16 -16
  5. package/cjs/components/anchor/style/themes/dnb-anchor-theme-sbanken.min.css +1 -1
  6. package/cjs/components/anchor/style/themes/dnb-anchor-theme-sbanken.scss +9 -9
  7. package/cjs/components/avatar/Avatar.d.ts +2 -1
  8. package/cjs/components/breadcrumb/BreadcrumbItem.js +3 -3
  9. package/cjs/components/breadcrumb/BreadcrumbItem.js.map +1 -1
  10. package/cjs/components/button/Button.d.ts +4 -3
  11. package/cjs/components/date-picker/style/dnb-date-picker.css +0 -1
  12. package/cjs/components/date-picker/style/dnb-date-picker.min.css +1 -1
  13. package/cjs/components/dialog/parts/DialogBody.js +1 -1
  14. package/cjs/components/dialog/parts/DialogBody.js.map +1 -1
  15. package/cjs/components/drawer/parts/DrawerBody.js +1 -1
  16. package/cjs/components/drawer/parts/DrawerBody.js.map +1 -1
  17. package/cjs/components/dropdown/style/dnb-dropdown.css +39 -1
  18. package/cjs/components/dropdown/style/dnb-dropdown.min.css +1 -1
  19. package/cjs/components/dropdown/style/dnb-dropdown.scss +38 -1
  20. package/cjs/components/dropdown/style/themes/dnb-dropdown-theme-sbanken.css +95 -0
  21. package/cjs/components/dropdown/style/themes/dnb-dropdown-theme-sbanken.min.css +1 -0
  22. package/cjs/components/dropdown/style/themes/dnb-dropdown-theme-sbanken.scss +87 -0
  23. package/cjs/components/dropdown/style/themes/dnb-dropdown-theme-ui.css +11 -35
  24. package/cjs/components/dropdown/style/themes/dnb-dropdown-theme-ui.min.css +1 -1
  25. package/cjs/components/dropdown/style/themes/dnb-dropdown-theme-ui.scss +10 -32
  26. package/cjs/components/flex/Flex.d.ts +2 -1
  27. package/cjs/components/flex/Flex.js.map +1 -1
  28. package/cjs/components/flex/utils.d.ts +1 -1
  29. package/cjs/components/flex/utils.js +2 -14
  30. package/cjs/components/flex/utils.js.map +1 -1
  31. package/cjs/components/form-label/FormLabel.d.ts +31 -58
  32. package/cjs/components/form-label/FormLabel.js +34 -83
  33. package/cjs/components/form-label/FormLabel.js.map +1 -1
  34. package/cjs/components/form-label/style/themes/dnb-form-label-theme-ui.css +2 -2
  35. package/cjs/components/form-label/style/themes/dnb-form-label-theme-ui.min.css +1 -1
  36. package/cjs/components/form-label/style/themes/dnb-form-label-theme-ui.scss +1 -1
  37. package/cjs/components/form-row/style/dnb-form-row.css +0 -1
  38. package/cjs/components/form-row/style/dnb-form-row.min.css +1 -1
  39. package/cjs/components/global-status/GlobalStatus.js +3 -2
  40. package/cjs/components/global-status/GlobalStatus.js.map +1 -1
  41. package/cjs/components/global-status/style/dnb-global-status.css +2 -4
  42. package/cjs/components/global-status/style/dnb-global-status.min.css +1 -1
  43. package/cjs/components/global-status/style/dnb-global-status.scss +9 -10
  44. package/cjs/components/grid/Grid.d.ts +2 -1
  45. package/cjs/components/grid/Grid.js.map +1 -1
  46. package/cjs/components/input/style/dnb-input.css +4 -2
  47. package/cjs/components/input/style/dnb-input.min.css +1 -1
  48. package/cjs/components/input/style/dnb-input.scss +9 -2
  49. package/cjs/components/input/style/themes/dnb-input-theme-sbanken.css +1 -1
  50. package/cjs/components/input/style/themes/dnb-input-theme-sbanken.min.css +1 -1
  51. package/cjs/components/input/style/themes/dnb-input-theme-sbanken.scss +1 -1
  52. package/cjs/components/input/style/themes/dnb-input-theme-ui.css +15 -8
  53. package/cjs/components/input/style/themes/dnb-input-theme-ui.min.css +1 -1
  54. package/cjs/components/input/style/themes/dnb-input-theme-ui.scss +24 -6
  55. package/cjs/components/input-masked/InputMasked.d.ts +0 -1
  56. package/cjs/components/input-masked/InputMasked.js +3 -3
  57. package/cjs/components/input-masked/InputMasked.js.map +1 -1
  58. package/cjs/components/input-masked/InputMaskedHooks.js +4 -4
  59. package/cjs/components/input-masked/InputMaskedHooks.js.map +1 -1
  60. package/cjs/components/input-masked/MultiInputMask.d.ts +60 -0
  61. package/cjs/components/input-masked/MultiInputMask.js +159 -0
  62. package/cjs/components/input-masked/MultiInputMask.js.map +1 -0
  63. package/cjs/components/input-masked/TextMask.d.ts +1 -1
  64. package/cjs/components/input-masked/hooks/useHandleCursorPosition.d.ts +7 -0
  65. package/cjs/components/input-masked/hooks/useHandleCursorPosition.js +113 -0
  66. package/cjs/components/input-masked/hooks/useHandleCursorPosition.js.map +1 -0
  67. package/cjs/components/input-masked/hooks/useMultiInputValues.d.ts +8 -0
  68. package/cjs/components/input-masked/hooks/useMultiInputValues.js +37 -0
  69. package/cjs/components/input-masked/hooks/useMultiInputValues.js.map +1 -0
  70. package/cjs/components/input-masked/index.d.ts +2 -0
  71. package/cjs/components/input-masked/index.js +21 -1
  72. package/cjs/components/input-masked/index.js.map +1 -1
  73. package/cjs/components/input-masked/style/dnb-input-masked.css +57 -0
  74. package/cjs/components/input-masked/style/dnb-input-masked.min.css +1 -1
  75. package/cjs/components/input-masked/style/dnb-input-masked.scss +73 -0
  76. package/cjs/components/lib.d.ts +13 -7
  77. package/cjs/components/modal/parts/ModalInner.d.ts +1 -6
  78. package/cjs/components/modal/parts/ModalInner.js +6 -6
  79. package/cjs/components/modal/parts/ModalInner.js.map +1 -1
  80. package/cjs/components/number-format/NumberUtils.js +15 -5
  81. package/cjs/components/number-format/NumberUtils.js.map +1 -1
  82. package/cjs/components/radio/style/dnb-radio.css +0 -1
  83. package/cjs/components/radio/style/dnb-radio.min.css +1 -1
  84. package/cjs/components/section/Section.d.ts +43 -17
  85. package/cjs/components/section/Section.js +47 -12
  86. package/cjs/components/section/Section.js.map +1 -1
  87. package/cjs/components/section/style/dnb-section.css +76 -14
  88. package/cjs/components/section/style/dnb-section.min.css +7 -1
  89. package/cjs/components/section/style/dnb-section.scss +78 -26
  90. package/cjs/components/section/style/themes/dnb-section-theme-sbanken.css +21 -26
  91. package/cjs/components/section/style/themes/dnb-section-theme-sbanken.min.css +3 -1
  92. package/cjs/components/section/style/themes/dnb-section-theme-sbanken.scss +19 -33
  93. package/cjs/components/section/style/themes/dnb-section-theme-ui.css +44 -57
  94. package/cjs/components/section/style/themes/dnb-section-theme-ui.min.css +3 -1
  95. package/cjs/components/section/style/themes/dnb-section-theme-ui.scss +48 -80
  96. package/cjs/components/space/Space.js +10 -11
  97. package/cjs/components/space/Space.js.map +1 -1
  98. package/cjs/components/space/SpacingHelper.d.ts +1 -3
  99. package/cjs/components/space/SpacingHelper.js +6 -0
  100. package/cjs/components/space/SpacingHelper.js.map +1 -1
  101. package/cjs/components/space/SpacingUtils.d.ts +9 -2
  102. package/cjs/components/space/SpacingUtils.js +73 -10
  103. package/cjs/components/space/SpacingUtils.js.map +1 -1
  104. package/cjs/components/space/style/dnb-space.css +36 -0
  105. package/cjs/components/space/style/dnb-space.min.css +1 -1
  106. package/cjs/components/space/style/dnb-space.scss +33 -0
  107. package/cjs/components/space/types.d.ts +8 -1
  108. package/cjs/components/space/types.js.map +1 -1
  109. package/cjs/components/tabs/Tabs.d.ts +4 -1
  110. package/cjs/components/tabs/TabsContentWrapper.js +7 -3
  111. package/cjs/components/tabs/TabsContentWrapper.js.map +1 -1
  112. package/cjs/components/tag/Tag.d.ts +2 -1
  113. package/cjs/components/textarea/style/dnb-textarea.css +4 -0
  114. package/cjs/components/textarea/style/dnb-textarea.min.css +1 -1
  115. package/cjs/components/textarea/style/dnb-textarea.scss +9 -0
  116. package/cjs/components/textarea/style/themes/dnb-textarea-theme-sbanken.css +2 -1
  117. package/cjs/components/textarea/style/themes/dnb-textarea-theme-sbanken.min.css +1 -1
  118. package/cjs/components/textarea/style/themes/dnb-textarea-theme-sbanken.scss +2 -1
  119. package/cjs/components/textarea/style/themes/dnb-textarea-theme-ui.css +1 -1
  120. package/cjs/components/textarea/style/themes/dnb-textarea-theme-ui.min.css +1 -1
  121. package/cjs/components/textarea/style/themes/dnb-textarea-theme-ui.scss +1 -1
  122. package/cjs/components/toggle-button/ToggleButton.d.ts +1 -1
  123. package/cjs/components/toggle-button/style/dnb-toggle-button.css +0 -1
  124. package/cjs/components/toggle-button/style/dnb-toggle-button.min.css +1 -1
  125. package/cjs/components/upload/Upload.js +14 -3
  126. package/cjs/components/upload/Upload.js.map +1 -1
  127. package/cjs/elements/Element.d.ts +2 -1
  128. package/cjs/elements/Link.d.ts +2 -1
  129. package/cjs/elements/blockquote/Blockquote.d.ts +2 -1
  130. package/cjs/elements/code/Code.d.ts +2 -1
  131. package/cjs/elements/div/Div.d.ts +2 -1
  132. package/cjs/elements/hr/style/dnb-hr.scss +1 -1
  133. package/cjs/elements/img/Img.js.map +1 -1
  134. package/cjs/elements/lib.d.ts +26 -10
  135. package/cjs/elements/lists/Dd.d.ts +2 -1
  136. package/cjs/elements/lists/Dt.d.ts +2 -1
  137. package/cjs/elements/span/Span.d.ts +2 -1
  138. package/cjs/elements/typography/H.d.ts +2 -1
  139. package/cjs/elements/typography/H.js.map +1 -1
  140. package/cjs/extensions/forms/DataContext/Context.d.ts +2 -0
  141. package/cjs/extensions/forms/DataContext/Context.js.map +1 -1
  142. package/cjs/extensions/forms/DataContext/Provider/Provider.d.ts +1 -1
  143. package/cjs/extensions/forms/DataContext/Provider/Provider.js +35 -20
  144. package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  145. package/cjs/extensions/forms/Field/Number/Number.js +5 -1
  146. package/cjs/extensions/forms/Field/Number/Number.js.map +1 -1
  147. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.js +10 -11
  148. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  149. package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.js +6 -3
  150. package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
  151. package/cjs/extensions/forms/Field/Selection/Selection.js +10 -7
  152. package/cjs/extensions/forms/Field/Selection/Selection.js.map +1 -1
  153. package/cjs/extensions/forms/Field/String/String.d.ts +1 -0
  154. package/cjs/extensions/forms/Field/String/String.js +27 -50
  155. package/cjs/extensions/forms/Field/String/String.js.map +1 -1
  156. package/cjs/extensions/forms/Field/Toggle/Toggle.js +24 -26
  157. package/cjs/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  158. package/cjs/extensions/forms/FieldBlock/FieldBlock.d.ts +2 -0
  159. package/cjs/extensions/forms/FieldBlock/FieldBlock.js +4 -3
  160. package/cjs/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  161. package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.css +0 -1
  162. package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
  163. package/cjs/extensions/forms/Form/Handler/Handler.d.ts +7 -2
  164. package/cjs/extensions/forms/Form/Handler/Handler.js +5 -3
  165. package/cjs/extensions/forms/Form/Handler/Handler.js.map +1 -1
  166. package/cjs/extensions/forms/constants/countries.d.ts +11 -2
  167. package/cjs/extensions/forms/constants/countries.js +1943 -959
  168. package/cjs/extensions/forms/constants/countries.js.map +1 -1
  169. package/cjs/extensions/forms/hooks/useDataValue.js +3 -0
  170. package/cjs/extensions/forms/hooks/useDataValue.js.map +1 -1
  171. package/cjs/extensions/forms/style/dnb-forms.css +0 -1
  172. package/cjs/extensions/forms/style/dnb-forms.min.css +1 -1
  173. package/cjs/extensions/forms/types.d.ts +2 -0
  174. package/cjs/extensions/forms/types.js.map +1 -1
  175. package/cjs/extensions/payment-card/PaymentCard.d.ts +6 -3
  176. package/cjs/extensions/payment-card/PaymentCard.js +53 -36
  177. package/cjs/extensions/payment-card/PaymentCard.js.map +1 -1
  178. package/cjs/extensions/payment-card/icons/index.js +11 -7
  179. package/cjs/extensions/payment-card/icons/index.js.map +1 -1
  180. package/cjs/extensions/payment-card/style/dnb-payment-card.css +3 -0
  181. package/cjs/extensions/payment-card/style/dnb-payment-card.min.css +1 -1
  182. package/cjs/extensions/payment-card/style/dnb-payment-card.scss +4 -0
  183. package/cjs/fragments/drawer-list/style/dnb-drawer-list.scss +6 -3
  184. package/cjs/fragments/drawer-list/style/themes/dnb-drawer-list-theme-sbanken.scss +182 -0
  185. package/cjs/fragments/drawer-list/style/themes/dnb-drawer-list-theme-ui.scss +2 -5
  186. package/cjs/fragments/lib.d.ts +2 -1
  187. package/cjs/fragments/scroll-view/ScrollView.d.ts +2 -1
  188. package/cjs/shared/Context.d.ts +2 -0
  189. package/cjs/shared/Context.js.map +1 -1
  190. package/cjs/shared/Eufemia.d.ts +1 -1
  191. package/cjs/shared/Eufemia.js +2 -2
  192. package/cjs/shared/Eufemia.js.map +1 -1
  193. package/cjs/shared/component-helper.d.ts +1 -1
  194. package/cjs/shared/component-helper.js +10 -25
  195. package/cjs/shared/component-helper.js.map +1 -1
  196. package/cjs/shared/helpers/InteractionInvalidation.d.ts +1 -1
  197. package/cjs/shared/helpers/InteractionInvalidation.js +2 -2
  198. package/cjs/shared/helpers/InteractionInvalidation.js.map +1 -1
  199. package/cjs/shared/helpers/filterProps.d.ts +14 -0
  200. package/cjs/shared/helpers/filterProps.js +39 -0
  201. package/cjs/shared/helpers/filterProps.js.map +1 -0
  202. package/cjs/shared/locales/en-GB.d.ts +6 -0
  203. package/cjs/shared/locales/en-GB.js +8 -2
  204. package/cjs/shared/locales/en-GB.js.map +1 -1
  205. package/cjs/shared/locales/en-US.d.ts +6 -0
  206. package/cjs/shared/locales/index.d.ts +12 -0
  207. package/cjs/shared/locales/nb-NO.d.ts +6 -0
  208. package/cjs/shared/locales/nb-NO.js +8 -2
  209. package/cjs/shared/locales/nb-NO.js.map +1 -1
  210. package/cjs/shared/types.d.ts +7 -1
  211. package/cjs/shared/types.js.map +1 -1
  212. package/cjs/shared/useMedia.d.ts +5 -0
  213. package/cjs/shared/useMedia.js +16 -9
  214. package/cjs/shared/useMedia.js.map +1 -1
  215. package/cjs/shared/useTheme.d.ts +12 -1
  216. package/cjs/shared/useTheme.js +16 -1
  217. package/cjs/shared/useTheme.js.map +1 -1
  218. package/cjs/style/core/helper-classes/skip-link.scss +13 -7
  219. package/cjs/style/core/reset.scss +1 -1
  220. package/cjs/style/core/utilities.scss +16 -5
  221. package/cjs/style/dnb-ui-basis.css +14 -9
  222. package/cjs/style/dnb-ui-basis.min.css +1 -1
  223. package/cjs/style/dnb-ui-basis.scss +1 -1
  224. package/cjs/style/dnb-ui-body.css +1 -1
  225. package/cjs/style/dnb-ui-components.css +224 -28
  226. package/cjs/style/dnb-ui-components.min.css +7 -1
  227. package/cjs/style/dnb-ui-core.css +14 -9
  228. package/cjs/style/dnb-ui-core.min.css +1 -1
  229. package/cjs/style/dnb-ui-elements.css +1 -1
  230. package/cjs/style/dnb-ui-extensions.css +3 -1
  231. package/cjs/style/dnb-ui-extensions.min.css +1 -1
  232. package/cjs/style/dnb-ui-fragments.css +6 -3
  233. package/cjs/style/dnb-ui-fragments.min.css +1 -1
  234. package/cjs/style/themes/theme-eiendom/eiendom-theme-basis.css +7 -1
  235. package/cjs/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  236. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +299 -135
  237. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +11 -3
  238. package/cjs/style/themes/theme-eiendom/eiendom-theme-elements.css +1 -1
  239. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.css +3 -1
  240. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  241. package/cjs/style/themes/theme-sbanken/fonts.scss +10 -0
  242. package/cjs/style/themes/theme-sbanken/globals.scss +8 -0
  243. package/cjs/style/themes/theme-sbanken/properties.scss +1 -1
  244. package/cjs/style/themes/theme-sbanken/sbanken-theme-basis.css +14 -1
  245. package/cjs/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
  246. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +544 -353
  247. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +12 -4
  248. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.scss +2 -2
  249. package/cjs/style/themes/theme-sbanken/sbanken-theme-elements.css +1 -1
  250. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.css +3 -1
  251. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  252. package/cjs/style/themes/theme-ui/globals.scss +8 -0
  253. package/cjs/style/themes/theme-ui/ui-theme-basis.css +7 -1
  254. package/cjs/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  255. package/cjs/style/themes/theme-ui/ui-theme-components.css +299 -135
  256. package/cjs/style/themes/theme-ui/ui-theme-components.min.css +11 -3
  257. package/cjs/style/themes/theme-ui/ui-theme-elements.css +1 -1
  258. package/cjs/style/themes/theme-ui/ui-theme-extensions.css +3 -1
  259. package/cjs/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  260. package/components/accordion/Accordion.d.ts +2 -3
  261. package/components/anchor/Anchor.d.ts +2 -1
  262. package/components/anchor/style/themes/dnb-anchor-theme-sbanken.css +16 -16
  263. package/components/anchor/style/themes/dnb-anchor-theme-sbanken.min.css +1 -1
  264. package/components/anchor/style/themes/dnb-anchor-theme-sbanken.scss +9 -9
  265. package/components/avatar/Avatar.d.ts +2 -1
  266. package/components/breadcrumb/BreadcrumbItem.js +4 -4
  267. package/components/breadcrumb/BreadcrumbItem.js.map +1 -1
  268. package/components/button/Button.d.ts +4 -3
  269. package/components/date-picker/style/dnb-date-picker.css +0 -1
  270. package/components/date-picker/style/dnb-date-picker.min.css +1 -1
  271. package/components/dialog/parts/DialogBody.js +1 -1
  272. package/components/dialog/parts/DialogBody.js.map +1 -1
  273. package/components/drawer/parts/DrawerBody.js +1 -1
  274. package/components/drawer/parts/DrawerBody.js.map +1 -1
  275. package/components/dropdown/style/dnb-dropdown.css +39 -1
  276. package/components/dropdown/style/dnb-dropdown.min.css +1 -1
  277. package/components/dropdown/style/dnb-dropdown.scss +38 -1
  278. package/components/dropdown/style/themes/dnb-dropdown-theme-sbanken.css +95 -0
  279. package/components/dropdown/style/themes/dnb-dropdown-theme-sbanken.min.css +1 -0
  280. package/components/dropdown/style/themes/dnb-dropdown-theme-sbanken.scss +87 -0
  281. package/components/dropdown/style/themes/dnb-dropdown-theme-ui.css +11 -35
  282. package/components/dropdown/style/themes/dnb-dropdown-theme-ui.min.css +1 -1
  283. package/components/dropdown/style/themes/dnb-dropdown-theme-ui.scss +10 -32
  284. package/components/flex/Flex.d.ts +2 -1
  285. package/components/flex/Flex.js.map +1 -1
  286. package/components/flex/utils.d.ts +1 -1
  287. package/components/flex/utils.js +2 -13
  288. package/components/flex/utils.js.map +1 -1
  289. package/components/form-label/FormLabel.d.ts +31 -58
  290. package/components/form-label/FormLabel.js +34 -82
  291. package/components/form-label/FormLabel.js.map +1 -1
  292. package/components/form-label/style/themes/dnb-form-label-theme-ui.css +2 -2
  293. package/components/form-label/style/themes/dnb-form-label-theme-ui.min.css +1 -1
  294. package/components/form-label/style/themes/dnb-form-label-theme-ui.scss +1 -1
  295. package/components/form-row/style/dnb-form-row.css +0 -1
  296. package/components/form-row/style/dnb-form-row.min.css +1 -1
  297. package/components/global-status/GlobalStatus.js +3 -2
  298. package/components/global-status/GlobalStatus.js.map +1 -1
  299. package/components/global-status/style/dnb-global-status.css +2 -4
  300. package/components/global-status/style/dnb-global-status.min.css +1 -1
  301. package/components/global-status/style/dnb-global-status.scss +9 -10
  302. package/components/grid/Grid.d.ts +2 -1
  303. package/components/grid/Grid.js.map +1 -1
  304. package/components/input/style/dnb-input.css +4 -2
  305. package/components/input/style/dnb-input.min.css +1 -1
  306. package/components/input/style/dnb-input.scss +9 -2
  307. package/components/input/style/themes/dnb-input-theme-sbanken.css +1 -1
  308. package/components/input/style/themes/dnb-input-theme-sbanken.min.css +1 -1
  309. package/components/input/style/themes/dnb-input-theme-sbanken.scss +1 -1
  310. package/components/input/style/themes/dnb-input-theme-ui.css +15 -8
  311. package/components/input/style/themes/dnb-input-theme-ui.min.css +1 -1
  312. package/components/input/style/themes/dnb-input-theme-ui.scss +24 -6
  313. package/components/input-masked/InputMasked.d.ts +0 -1
  314. package/components/input-masked/InputMasked.js +2 -2
  315. package/components/input-masked/InputMasked.js.map +1 -1
  316. package/components/input-masked/InputMaskedHooks.js +5 -5
  317. package/components/input-masked/InputMaskedHooks.js.map +1 -1
  318. package/components/input-masked/MultiInputMask.d.ts +60 -0
  319. package/components/input-masked/MultiInputMask.js +148 -0
  320. package/components/input-masked/MultiInputMask.js.map +1 -0
  321. package/components/input-masked/TextMask.d.ts +1 -1
  322. package/components/input-masked/hooks/useHandleCursorPosition.d.ts +7 -0
  323. package/components/input-masked/hooks/useHandleCursorPosition.js +106 -0
  324. package/components/input-masked/hooks/useHandleCursorPosition.js.map +1 -0
  325. package/components/input-masked/hooks/useMultiInputValues.d.ts +8 -0
  326. package/components/input-masked/hooks/useMultiInputValues.js +29 -0
  327. package/components/input-masked/hooks/useMultiInputValues.js.map +1 -0
  328. package/components/input-masked/index.d.ts +2 -0
  329. package/components/input-masked/index.js +2 -0
  330. package/components/input-masked/index.js.map +1 -1
  331. package/components/input-masked/style/dnb-input-masked.css +57 -0
  332. package/components/input-masked/style/dnb-input-masked.min.css +1 -1
  333. package/components/input-masked/style/dnb-input-masked.scss +73 -0
  334. package/components/lib.d.ts +13 -7
  335. package/components/modal/parts/ModalInner.d.ts +1 -6
  336. package/components/modal/parts/ModalInner.js +6 -6
  337. package/components/modal/parts/ModalInner.js.map +1 -1
  338. package/components/number-format/NumberUtils.js +15 -5
  339. package/components/number-format/NumberUtils.js.map +1 -1
  340. package/components/radio/style/dnb-radio.css +0 -1
  341. package/components/radio/style/dnb-radio.min.css +1 -1
  342. package/components/section/Section.d.ts +43 -17
  343. package/components/section/Section.js +48 -13
  344. package/components/section/Section.js.map +1 -1
  345. package/components/section/style/dnb-section.css +76 -14
  346. package/components/section/style/dnb-section.min.css +7 -1
  347. package/components/section/style/dnb-section.scss +78 -26
  348. package/components/section/style/themes/dnb-section-theme-sbanken.css +21 -26
  349. package/components/section/style/themes/dnb-section-theme-sbanken.min.css +3 -1
  350. package/components/section/style/themes/dnb-section-theme-sbanken.scss +19 -33
  351. package/components/section/style/themes/dnb-section-theme-ui.css +44 -57
  352. package/components/section/style/themes/dnb-section-theme-ui.min.css +3 -1
  353. package/components/section/style/themes/dnb-section-theme-ui.scss +48 -80
  354. package/components/space/Space.js +11 -12
  355. package/components/space/Space.js.map +1 -1
  356. package/components/space/SpacingHelper.d.ts +1 -3
  357. package/components/space/SpacingHelper.js +1 -2
  358. package/components/space/SpacingHelper.js.map +1 -1
  359. package/components/space/SpacingUtils.d.ts +9 -2
  360. package/components/space/SpacingUtils.js +70 -9
  361. package/components/space/SpacingUtils.js.map +1 -1
  362. package/components/space/style/dnb-space.css +36 -0
  363. package/components/space/style/dnb-space.min.css +1 -1
  364. package/components/space/style/dnb-space.scss +33 -0
  365. package/components/space/types.d.ts +8 -1
  366. package/components/space/types.js.map +1 -1
  367. package/components/tabs/Tabs.d.ts +4 -1
  368. package/components/tabs/TabsContentWrapper.js +7 -3
  369. package/components/tabs/TabsContentWrapper.js.map +1 -1
  370. package/components/tag/Tag.d.ts +2 -1
  371. package/components/textarea/style/dnb-textarea.css +4 -0
  372. package/components/textarea/style/dnb-textarea.min.css +1 -1
  373. package/components/textarea/style/dnb-textarea.scss +9 -0
  374. package/components/textarea/style/themes/dnb-textarea-theme-sbanken.css +2 -1
  375. package/components/textarea/style/themes/dnb-textarea-theme-sbanken.min.css +1 -1
  376. package/components/textarea/style/themes/dnb-textarea-theme-sbanken.scss +2 -1
  377. package/components/textarea/style/themes/dnb-textarea-theme-ui.css +1 -1
  378. package/components/textarea/style/themes/dnb-textarea-theme-ui.min.css +1 -1
  379. package/components/textarea/style/themes/dnb-textarea-theme-ui.scss +1 -1
  380. package/components/toggle-button/ToggleButton.d.ts +1 -1
  381. package/components/toggle-button/style/dnb-toggle-button.css +0 -1
  382. package/components/toggle-button/style/dnb-toggle-button.min.css +1 -1
  383. package/components/upload/Upload.js +14 -3
  384. package/components/upload/Upload.js.map +1 -1
  385. package/elements/Element.d.ts +2 -1
  386. package/elements/Link.d.ts +2 -1
  387. package/elements/blockquote/Blockquote.d.ts +2 -1
  388. package/elements/code/Code.d.ts +2 -1
  389. package/elements/div/Div.d.ts +2 -1
  390. package/elements/hr/style/dnb-hr.scss +1 -1
  391. package/elements/img/Img.js.map +1 -1
  392. package/elements/lib.d.ts +26 -10
  393. package/elements/lists/Dd.d.ts +2 -1
  394. package/elements/lists/Dt.d.ts +2 -1
  395. package/elements/span/Span.d.ts +2 -1
  396. package/elements/typography/H.d.ts +2 -1
  397. package/elements/typography/H.js.map +1 -1
  398. package/es/components/accordion/Accordion.d.ts +2 -3
  399. package/es/components/anchor/Anchor.d.ts +2 -1
  400. package/es/components/anchor/style/themes/dnb-anchor-theme-sbanken.css +16 -16
  401. package/es/components/anchor/style/themes/dnb-anchor-theme-sbanken.min.css +1 -1
  402. package/es/components/anchor/style/themes/dnb-anchor-theme-sbanken.scss +9 -9
  403. package/es/components/avatar/Avatar.d.ts +2 -1
  404. package/es/components/breadcrumb/BreadcrumbItem.js +4 -4
  405. package/es/components/breadcrumb/BreadcrumbItem.js.map +1 -1
  406. package/es/components/button/Button.d.ts +4 -3
  407. package/es/components/date-picker/style/dnb-date-picker.css +0 -1
  408. package/es/components/date-picker/style/dnb-date-picker.min.css +1 -1
  409. package/es/components/dialog/parts/DialogBody.js +1 -1
  410. package/es/components/dialog/parts/DialogBody.js.map +1 -1
  411. package/es/components/drawer/parts/DrawerBody.js +1 -1
  412. package/es/components/drawer/parts/DrawerBody.js.map +1 -1
  413. package/es/components/dropdown/style/dnb-dropdown.css +39 -1
  414. package/es/components/dropdown/style/dnb-dropdown.min.css +1 -1
  415. package/es/components/dropdown/style/dnb-dropdown.scss +38 -1
  416. package/es/components/dropdown/style/themes/dnb-dropdown-theme-sbanken.css +95 -0
  417. package/es/components/dropdown/style/themes/dnb-dropdown-theme-sbanken.min.css +1 -0
  418. package/es/components/dropdown/style/themes/dnb-dropdown-theme-sbanken.scss +87 -0
  419. package/es/components/dropdown/style/themes/dnb-dropdown-theme-ui.css +11 -35
  420. package/es/components/dropdown/style/themes/dnb-dropdown-theme-ui.min.css +1 -1
  421. package/es/components/dropdown/style/themes/dnb-dropdown-theme-ui.scss +10 -32
  422. package/es/components/flex/Flex.d.ts +2 -1
  423. package/es/components/flex/Flex.js +3 -1
  424. package/es/components/flex/Flex.js.map +1 -1
  425. package/es/components/flex/utils.d.ts +1 -1
  426. package/es/components/flex/utils.js +2 -13
  427. package/es/components/flex/utils.js.map +1 -1
  428. package/es/components/form-label/FormLabel.d.ts +31 -58
  429. package/es/components/form-label/FormLabel.js +34 -82
  430. package/es/components/form-label/FormLabel.js.map +1 -1
  431. package/es/components/form-label/style/themes/dnb-form-label-theme-ui.css +2 -2
  432. package/es/components/form-label/style/themes/dnb-form-label-theme-ui.min.css +1 -1
  433. package/es/components/form-label/style/themes/dnb-form-label-theme-ui.scss +1 -1
  434. package/es/components/form-row/style/dnb-form-row.css +0 -1
  435. package/es/components/form-row/style/dnb-form-row.min.css +1 -1
  436. package/es/components/global-status/GlobalStatus.js +3 -2
  437. package/es/components/global-status/GlobalStatus.js.map +1 -1
  438. package/es/components/global-status/style/dnb-global-status.css +2 -4
  439. package/es/components/global-status/style/dnb-global-status.min.css +1 -1
  440. package/es/components/global-status/style/dnb-global-status.scss +9 -10
  441. package/es/components/grid/Grid.d.ts +2 -1
  442. package/es/components/grid/Grid.js +3 -1
  443. package/es/components/grid/Grid.js.map +1 -1
  444. package/es/components/input/style/dnb-input.css +4 -2
  445. package/es/components/input/style/dnb-input.min.css +1 -1
  446. package/es/components/input/style/dnb-input.scss +9 -2
  447. package/es/components/input/style/themes/dnb-input-theme-sbanken.css +1 -1
  448. package/es/components/input/style/themes/dnb-input-theme-sbanken.min.css +1 -1
  449. package/es/components/input/style/themes/dnb-input-theme-sbanken.scss +1 -1
  450. package/es/components/input/style/themes/dnb-input-theme-ui.css +15 -8
  451. package/es/components/input/style/themes/dnb-input-theme-ui.min.css +1 -1
  452. package/es/components/input/style/themes/dnb-input-theme-ui.scss +24 -6
  453. package/es/components/input-masked/InputMasked.d.ts +0 -1
  454. package/es/components/input-masked/InputMasked.js +2 -2
  455. package/es/components/input-masked/InputMasked.js.map +1 -1
  456. package/es/components/input-masked/InputMaskedHooks.js +5 -5
  457. package/es/components/input-masked/InputMaskedHooks.js.map +1 -1
  458. package/es/components/input-masked/MultiInputMask.d.ts +60 -0
  459. package/es/components/input-masked/MultiInputMask.js +145 -0
  460. package/es/components/input-masked/MultiInputMask.js.map +1 -0
  461. package/es/components/input-masked/TextMask.d.ts +1 -1
  462. package/es/components/input-masked/hooks/useHandleCursorPosition.d.ts +7 -0
  463. package/es/components/input-masked/hooks/useHandleCursorPosition.js +105 -0
  464. package/es/components/input-masked/hooks/useHandleCursorPosition.js.map +1 -0
  465. package/es/components/input-masked/hooks/useMultiInputValues.d.ts +8 -0
  466. package/es/components/input-masked/hooks/useMultiInputValues.js +28 -0
  467. package/es/components/input-masked/hooks/useMultiInputValues.js.map +1 -0
  468. package/es/components/input-masked/index.d.ts +2 -0
  469. package/es/components/input-masked/index.js +2 -0
  470. package/es/components/input-masked/index.js.map +1 -1
  471. package/es/components/input-masked/style/dnb-input-masked.css +57 -0
  472. package/es/components/input-masked/style/dnb-input-masked.min.css +1 -1
  473. package/es/components/input-masked/style/dnb-input-masked.scss +73 -0
  474. package/es/components/lib.d.ts +13 -7
  475. package/es/components/modal/parts/ModalInner.d.ts +1 -6
  476. package/es/components/modal/parts/ModalInner.js +6 -6
  477. package/es/components/modal/parts/ModalInner.js.map +1 -1
  478. package/es/components/number-format/NumberUtils.js +15 -5
  479. package/es/components/number-format/NumberUtils.js.map +1 -1
  480. package/es/components/radio/style/dnb-radio.css +0 -1
  481. package/es/components/radio/style/dnb-radio.min.css +1 -1
  482. package/es/components/section/Section.d.ts +43 -17
  483. package/es/components/section/Section.js +48 -13
  484. package/es/components/section/Section.js.map +1 -1
  485. package/es/components/section/style/dnb-section.css +76 -14
  486. package/es/components/section/style/dnb-section.min.css +7 -1
  487. package/es/components/section/style/dnb-section.scss +78 -26
  488. package/es/components/section/style/themes/dnb-section-theme-sbanken.css +21 -26
  489. package/es/components/section/style/themes/dnb-section-theme-sbanken.min.css +3 -1
  490. package/es/components/section/style/themes/dnb-section-theme-sbanken.scss +19 -33
  491. package/es/components/section/style/themes/dnb-section-theme-ui.css +44 -57
  492. package/es/components/section/style/themes/dnb-section-theme-ui.min.css +3 -1
  493. package/es/components/section/style/themes/dnb-section-theme-ui.scss +48 -80
  494. package/es/components/space/Space.js +11 -12
  495. package/es/components/space/Space.js.map +1 -1
  496. package/es/components/space/SpacingHelper.d.ts +1 -3
  497. package/es/components/space/SpacingHelper.js +1 -2
  498. package/es/components/space/SpacingHelper.js.map +1 -1
  499. package/es/components/space/SpacingUtils.d.ts +9 -2
  500. package/es/components/space/SpacingUtils.js +70 -9
  501. package/es/components/space/SpacingUtils.js.map +1 -1
  502. package/es/components/space/style/dnb-space.css +36 -0
  503. package/es/components/space/style/dnb-space.min.css +1 -1
  504. package/es/components/space/style/dnb-space.scss +33 -0
  505. package/es/components/space/types.d.ts +8 -1
  506. package/es/components/space/types.js.map +1 -1
  507. package/es/components/tabs/Tabs.d.ts +4 -1
  508. package/es/components/tabs/TabsContentWrapper.js +7 -3
  509. package/es/components/tabs/TabsContentWrapper.js.map +1 -1
  510. package/es/components/tag/Tag.d.ts +2 -1
  511. package/es/components/textarea/style/dnb-textarea.css +4 -0
  512. package/es/components/textarea/style/dnb-textarea.min.css +1 -1
  513. package/es/components/textarea/style/dnb-textarea.scss +9 -0
  514. package/es/components/textarea/style/themes/dnb-textarea-theme-sbanken.css +2 -1
  515. package/es/components/textarea/style/themes/dnb-textarea-theme-sbanken.min.css +1 -1
  516. package/es/components/textarea/style/themes/dnb-textarea-theme-sbanken.scss +2 -1
  517. package/es/components/textarea/style/themes/dnb-textarea-theme-ui.css +1 -1
  518. package/es/components/textarea/style/themes/dnb-textarea-theme-ui.min.css +1 -1
  519. package/es/components/textarea/style/themes/dnb-textarea-theme-ui.scss +1 -1
  520. package/es/components/toggle-button/ToggleButton.d.ts +1 -1
  521. package/es/components/toggle-button/style/dnb-toggle-button.css +0 -1
  522. package/es/components/toggle-button/style/dnb-toggle-button.min.css +1 -1
  523. package/es/components/upload/Upload.js +14 -3
  524. package/es/components/upload/Upload.js.map +1 -1
  525. package/es/elements/Element.d.ts +2 -1
  526. package/es/elements/Link.d.ts +2 -1
  527. package/es/elements/blockquote/Blockquote.d.ts +2 -1
  528. package/es/elements/code/Code.d.ts +2 -1
  529. package/es/elements/div/Div.d.ts +2 -1
  530. package/es/elements/hr/style/dnb-hr.scss +1 -1
  531. package/es/elements/img/Img.js.map +1 -1
  532. package/es/elements/lib.d.ts +26 -10
  533. package/es/elements/lists/Dd.d.ts +2 -1
  534. package/es/elements/lists/Dt.d.ts +2 -1
  535. package/es/elements/span/Span.d.ts +2 -1
  536. package/es/elements/typography/H.d.ts +2 -1
  537. package/es/elements/typography/H.js.map +1 -1
  538. package/es/extensions/forms/DataContext/Context.d.ts +2 -0
  539. package/es/extensions/forms/DataContext/Context.js.map +1 -1
  540. package/es/extensions/forms/DataContext/Provider/Provider.d.ts +1 -1
  541. package/es/extensions/forms/DataContext/Provider/Provider.js +34 -21
  542. package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  543. package/es/extensions/forms/Field/Number/Number.js +5 -1
  544. package/es/extensions/forms/Field/Number/Number.js.map +1 -1
  545. package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.js +10 -11
  546. package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  547. package/es/extensions/forms/Field/SelectCountry/SelectCountry.js +7 -4
  548. package/es/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
  549. package/es/extensions/forms/Field/Selection/Selection.js +11 -8
  550. package/es/extensions/forms/Field/Selection/Selection.js.map +1 -1
  551. package/es/extensions/forms/Field/String/String.d.ts +1 -0
  552. package/es/extensions/forms/Field/String/String.js +27 -50
  553. package/es/extensions/forms/Field/String/String.js.map +1 -1
  554. package/es/extensions/forms/Field/Toggle/Toggle.js +24 -27
  555. package/es/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  556. package/es/extensions/forms/FieldBlock/FieldBlock.d.ts +2 -0
  557. package/es/extensions/forms/FieldBlock/FieldBlock.js +4 -3
  558. package/es/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  559. package/es/extensions/forms/FieldBlock/style/dnb-field-block.css +0 -1
  560. package/es/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
  561. package/es/extensions/forms/Form/Handler/Handler.d.ts +7 -2
  562. package/es/extensions/forms/Form/Handler/Handler.js +5 -3
  563. package/es/extensions/forms/Form/Handler/Handler.js.map +1 -1
  564. package/es/extensions/forms/constants/countries.d.ts +11 -2
  565. package/es/extensions/forms/constants/countries.js +1943 -959
  566. package/es/extensions/forms/constants/countries.js.map +1 -1
  567. package/es/extensions/forms/hooks/useDataValue.js +3 -0
  568. package/es/extensions/forms/hooks/useDataValue.js.map +1 -1
  569. package/es/extensions/forms/style/dnb-forms.css +0 -1
  570. package/es/extensions/forms/style/dnb-forms.min.css +1 -1
  571. package/es/extensions/forms/types.d.ts +2 -0
  572. package/es/extensions/forms/types.js.map +1 -1
  573. package/es/extensions/payment-card/PaymentCard.d.ts +6 -3
  574. package/es/extensions/payment-card/PaymentCard.js +47 -31
  575. package/es/extensions/payment-card/PaymentCard.js.map +1 -1
  576. package/es/extensions/payment-card/icons/index.js +9 -5
  577. package/es/extensions/payment-card/icons/index.js.map +1 -1
  578. package/es/extensions/payment-card/style/dnb-payment-card.css +3 -0
  579. package/es/extensions/payment-card/style/dnb-payment-card.min.css +1 -1
  580. package/es/extensions/payment-card/style/dnb-payment-card.scss +4 -0
  581. package/es/fragments/drawer-list/style/dnb-drawer-list.scss +6 -3
  582. package/es/fragments/drawer-list/style/themes/dnb-drawer-list-theme-sbanken.scss +182 -0
  583. package/es/fragments/drawer-list/style/themes/dnb-drawer-list-theme-ui.scss +2 -5
  584. package/es/fragments/lib.d.ts +2 -1
  585. package/es/fragments/scroll-view/ScrollView.d.ts +2 -1
  586. package/es/shared/Context.d.ts +2 -0
  587. package/es/shared/Context.js.map +1 -1
  588. package/es/shared/Eufemia.d.ts +1 -1
  589. package/es/shared/Eufemia.js +2 -2
  590. package/es/shared/Eufemia.js.map +1 -1
  591. package/es/shared/component-helper.d.ts +1 -1
  592. package/es/shared/component-helper.js +4 -20
  593. package/es/shared/component-helper.js.map +1 -1
  594. package/es/shared/helpers/InteractionInvalidation.d.ts +1 -1
  595. package/es/shared/helpers/InteractionInvalidation.js +2 -2
  596. package/es/shared/helpers/InteractionInvalidation.js.map +1 -1
  597. package/es/shared/helpers/filterProps.d.ts +14 -0
  598. package/es/shared/helpers/filterProps.js +30 -0
  599. package/es/shared/helpers/filterProps.js.map +1 -0
  600. package/es/shared/locales/en-GB.d.ts +6 -0
  601. package/es/shared/locales/en-GB.js +8 -2
  602. package/es/shared/locales/en-GB.js.map +1 -1
  603. package/es/shared/locales/en-US.d.ts +6 -0
  604. package/es/shared/locales/index.d.ts +12 -0
  605. package/es/shared/locales/nb-NO.d.ts +6 -0
  606. package/es/shared/locales/nb-NO.js +8 -2
  607. package/es/shared/locales/nb-NO.js.map +1 -1
  608. package/es/shared/types.d.ts +7 -1
  609. package/es/shared/types.js.map +1 -1
  610. package/es/shared/useMedia.d.ts +5 -0
  611. package/es/shared/useMedia.js +16 -9
  612. package/es/shared/useMedia.js.map +1 -1
  613. package/es/shared/useTheme.d.ts +12 -1
  614. package/es/shared/useTheme.js +14 -1
  615. package/es/shared/useTheme.js.map +1 -1
  616. package/es/style/core/helper-classes/skip-link.scss +13 -7
  617. package/es/style/core/reset.scss +1 -1
  618. package/es/style/core/utilities.scss +16 -5
  619. package/es/style/dnb-ui-basis.css +14 -9
  620. package/es/style/dnb-ui-basis.min.css +1 -1
  621. package/es/style/dnb-ui-basis.scss +1 -1
  622. package/es/style/dnb-ui-body.css +1 -1
  623. package/es/style/dnb-ui-components.css +224 -28
  624. package/es/style/dnb-ui-components.min.css +7 -1
  625. package/es/style/dnb-ui-core.css +14 -9
  626. package/es/style/dnb-ui-core.min.css +1 -1
  627. package/es/style/dnb-ui-elements.css +1 -1
  628. package/es/style/dnb-ui-extensions.css +3 -1
  629. package/es/style/dnb-ui-extensions.min.css +1 -1
  630. package/es/style/dnb-ui-fragments.css +6 -3
  631. package/es/style/dnb-ui-fragments.min.css +1 -1
  632. package/es/style/themes/theme-eiendom/eiendom-theme-basis.css +7 -1
  633. package/es/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  634. package/es/style/themes/theme-eiendom/eiendom-theme-components.css +299 -135
  635. package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +11 -3
  636. package/es/style/themes/theme-eiendom/eiendom-theme-elements.css +1 -1
  637. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.css +3 -1
  638. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  639. package/es/style/themes/theme-sbanken/fonts.scss +10 -0
  640. package/es/style/themes/theme-sbanken/globals.scss +8 -0
  641. package/es/style/themes/theme-sbanken/properties.scss +1 -1
  642. package/es/style/themes/theme-sbanken/sbanken-theme-basis.css +14 -1
  643. package/es/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
  644. package/es/style/themes/theme-sbanken/sbanken-theme-components.css +544 -353
  645. package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +12 -4
  646. package/es/style/themes/theme-sbanken/sbanken-theme-components.scss +2 -2
  647. package/es/style/themes/theme-sbanken/sbanken-theme-elements.css +1 -1
  648. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.css +3 -1
  649. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  650. package/es/style/themes/theme-ui/globals.scss +8 -0
  651. package/es/style/themes/theme-ui/ui-theme-basis.css +7 -1
  652. package/es/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  653. package/es/style/themes/theme-ui/ui-theme-components.css +299 -135
  654. package/es/style/themes/theme-ui/ui-theme-components.min.css +11 -3
  655. package/es/style/themes/theme-ui/ui-theme-elements.css +1 -1
  656. package/es/style/themes/theme-ui/ui-theme-extensions.css +3 -1
  657. package/es/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  658. package/esm/dnb-ui-basis.min.mjs +1 -1
  659. package/esm/dnb-ui-components.min.mjs +1 -1
  660. package/esm/dnb-ui-elements.min.mjs +1 -1
  661. package/esm/dnb-ui-extensions.min.mjs +3 -3
  662. package/esm/dnb-ui-lib.min.mjs +1 -1
  663. package/extensions/forms/DataContext/Context.d.ts +2 -0
  664. package/extensions/forms/DataContext/Context.js.map +1 -1
  665. package/extensions/forms/DataContext/Provider/Provider.d.ts +1 -1
  666. package/extensions/forms/DataContext/Provider/Provider.js +32 -20
  667. package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  668. package/extensions/forms/Field/Number/Number.js +5 -1
  669. package/extensions/forms/Field/Number/Number.js.map +1 -1
  670. package/extensions/forms/Field/PhoneNumber/PhoneNumber.js +10 -11
  671. package/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  672. package/extensions/forms/Field/SelectCountry/SelectCountry.js +7 -4
  673. package/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
  674. package/extensions/forms/Field/Selection/Selection.js +11 -8
  675. package/extensions/forms/Field/Selection/Selection.js.map +1 -1
  676. package/extensions/forms/Field/String/String.d.ts +1 -0
  677. package/extensions/forms/Field/String/String.js +27 -50
  678. package/extensions/forms/Field/String/String.js.map +1 -1
  679. package/extensions/forms/Field/Toggle/Toggle.js +25 -27
  680. package/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  681. package/extensions/forms/FieldBlock/FieldBlock.d.ts +2 -0
  682. package/extensions/forms/FieldBlock/FieldBlock.js +4 -3
  683. package/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  684. package/extensions/forms/FieldBlock/style/dnb-field-block.css +0 -1
  685. package/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
  686. package/extensions/forms/Form/Handler/Handler.d.ts +7 -2
  687. package/extensions/forms/Form/Handler/Handler.js +5 -3
  688. package/extensions/forms/Form/Handler/Handler.js.map +1 -1
  689. package/extensions/forms/constants/countries.d.ts +11 -2
  690. package/extensions/forms/constants/countries.js +1943 -959
  691. package/extensions/forms/constants/countries.js.map +1 -1
  692. package/extensions/forms/hooks/useDataValue.js +3 -0
  693. package/extensions/forms/hooks/useDataValue.js.map +1 -1
  694. package/extensions/forms/style/dnb-forms.css +0 -1
  695. package/extensions/forms/style/dnb-forms.min.css +1 -1
  696. package/extensions/forms/types.d.ts +2 -0
  697. package/extensions/forms/types.js.map +1 -1
  698. package/extensions/payment-card/PaymentCard.d.ts +6 -3
  699. package/extensions/payment-card/PaymentCard.js +53 -36
  700. package/extensions/payment-card/PaymentCard.js.map +1 -1
  701. package/extensions/payment-card/icons/index.js +9 -5
  702. package/extensions/payment-card/icons/index.js.map +1 -1
  703. package/extensions/payment-card/style/dnb-payment-card.css +3 -0
  704. package/extensions/payment-card/style/dnb-payment-card.min.css +1 -1
  705. package/extensions/payment-card/style/dnb-payment-card.scss +4 -0
  706. package/fragments/drawer-list/style/dnb-drawer-list.scss +6 -3
  707. package/fragments/drawer-list/style/themes/dnb-drawer-list-theme-sbanken.scss +182 -0
  708. package/fragments/drawer-list/style/themes/dnb-drawer-list-theme-ui.scss +2 -5
  709. package/fragments/lib.d.ts +2 -1
  710. package/fragments/scroll-view/ScrollView.d.ts +2 -1
  711. package/package.json +1 -1
  712. package/shared/Context.d.ts +2 -0
  713. package/shared/Context.js.map +1 -1
  714. package/shared/Eufemia.d.ts +1 -1
  715. package/shared/Eufemia.js +2 -2
  716. package/shared/Eufemia.js.map +1 -1
  717. package/shared/component-helper.d.ts +1 -1
  718. package/shared/component-helper.js +4 -23
  719. package/shared/component-helper.js.map +1 -1
  720. package/shared/helpers/InteractionInvalidation.d.ts +1 -1
  721. package/shared/helpers/InteractionInvalidation.js +2 -2
  722. package/shared/helpers/InteractionInvalidation.js.map +1 -1
  723. package/shared/helpers/filterProps.d.ts +14 -0
  724. package/shared/helpers/filterProps.js +33 -0
  725. package/shared/helpers/filterProps.js.map +1 -0
  726. package/shared/locales/en-GB.d.ts +6 -0
  727. package/shared/locales/en-GB.js +8 -2
  728. package/shared/locales/en-GB.js.map +1 -1
  729. package/shared/locales/en-US.d.ts +6 -0
  730. package/shared/locales/index.d.ts +12 -0
  731. package/shared/locales/nb-NO.d.ts +6 -0
  732. package/shared/locales/nb-NO.js +8 -2
  733. package/shared/locales/nb-NO.js.map +1 -1
  734. package/shared/types.d.ts +7 -1
  735. package/shared/types.js.map +1 -1
  736. package/shared/useMedia.d.ts +5 -0
  737. package/shared/useMedia.js +16 -9
  738. package/shared/useMedia.js.map +1 -1
  739. package/shared/useTheme.d.ts +12 -1
  740. package/shared/useTheme.js +14 -1
  741. package/shared/useTheme.js.map +1 -1
  742. package/style/core/helper-classes/skip-link.scss +13 -7
  743. package/style/core/reset.scss +1 -1
  744. package/style/core/utilities.scss +16 -5
  745. package/style/dnb-ui-basis.css +14 -9
  746. package/style/dnb-ui-basis.min.css +1 -1
  747. package/style/dnb-ui-basis.scss +1 -1
  748. package/style/dnb-ui-body.css +1 -1
  749. package/style/dnb-ui-components.css +224 -28
  750. package/style/dnb-ui-components.min.css +7 -1
  751. package/style/dnb-ui-core.css +14 -9
  752. package/style/dnb-ui-core.min.css +1 -1
  753. package/style/dnb-ui-elements.css +1 -1
  754. package/style/dnb-ui-extensions.css +3 -1
  755. package/style/dnb-ui-extensions.min.css +1 -1
  756. package/style/dnb-ui-fragments.css +6 -3
  757. package/style/dnb-ui-fragments.min.css +1 -1
  758. package/style/themes/theme-eiendom/eiendom-theme-basis.css +7 -1
  759. package/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  760. package/style/themes/theme-eiendom/eiendom-theme-components.css +299 -135
  761. package/style/themes/theme-eiendom/eiendom-theme-components.min.css +11 -3
  762. package/style/themes/theme-eiendom/eiendom-theme-elements.css +1 -1
  763. package/style/themes/theme-eiendom/eiendom-theme-extensions.css +3 -1
  764. package/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  765. package/style/themes/theme-sbanken/fonts.scss +10 -0
  766. package/style/themes/theme-sbanken/globals.scss +8 -0
  767. package/style/themes/theme-sbanken/properties.scss +1 -1
  768. package/style/themes/theme-sbanken/sbanken-theme-basis.css +14 -1
  769. package/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
  770. package/style/themes/theme-sbanken/sbanken-theme-components.css +544 -353
  771. package/style/themes/theme-sbanken/sbanken-theme-components.min.css +12 -4
  772. package/style/themes/theme-sbanken/sbanken-theme-components.scss +2 -2
  773. package/style/themes/theme-sbanken/sbanken-theme-elements.css +1 -1
  774. package/style/themes/theme-sbanken/sbanken-theme-extensions.css +3 -1
  775. package/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  776. package/style/themes/theme-ui/globals.scss +8 -0
  777. package/style/themes/theme-ui/ui-theme-basis.css +7 -1
  778. package/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  779. package/style/themes/theme-ui/ui-theme-components.css +299 -135
  780. package/style/themes/theme-ui/ui-theme-components.min.css +11 -3
  781. package/style/themes/theme-ui/ui-theme-elements.css +1 -1
  782. package/style/themes/theme-ui/ui-theme-extensions.css +3 -1
  783. package/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  784. package/umd/dnb-ui-basis.min.js +1 -1
  785. package/umd/dnb-ui-components.min.js +1 -1
  786. package/umd/dnb-ui-elements.min.js +1 -1
  787. package/umd/dnb-ui-extensions.min.js +3 -3
  788. package/umd/dnb-ui-lib.min.js +1 -1
  789. package/cjs/extensions/payment-card/icons/CardIn.d.ts +0 -2
  790. package/cjs/extensions/payment-card/icons/CardIn.js +0 -26
  791. package/cjs/extensions/payment-card/icons/CardIn.js.map +0 -1
  792. package/cjs/extensions/payment-card/icons/Padlock.d.ts +0 -3
  793. package/cjs/extensions/payment-card/icons/Padlock.js +0 -26
  794. package/cjs/extensions/payment-card/icons/Padlock.js.map +0 -1
  795. package/es/extensions/payment-card/icons/CardIn.d.ts +0 -2
  796. package/es/extensions/payment-card/icons/CardIn.js +0 -18
  797. package/es/extensions/payment-card/icons/CardIn.js.map +0 -1
  798. package/es/extensions/payment-card/icons/Padlock.d.ts +0 -3
  799. package/es/extensions/payment-card/icons/Padlock.js +0 -18
  800. package/es/extensions/payment-card/icons/Padlock.js.map +0 -1
  801. package/extensions/payment-card/icons/CardIn.d.ts +0 -2
  802. package/extensions/payment-card/icons/CardIn.js +0 -18
  803. package/extensions/payment-card/icons/CardIn.js.map +0 -1
  804. package/extensions/payment-card/icons/Padlock.d.ts +0 -3
  805. package/extensions/payment-card/icons/Padlock.js +0 -18
  806. package/extensions/payment-card/icons/Padlock.js.map +0 -1
@@ -7,6 +7,8 @@ export interface ContextState {
7
7
  data: any;
8
8
  /** Should the form validate data before submitting? */
9
9
  errors?: Record<string, Error>;
10
+ /** Will set autoComplete="on" on each nested Field.String and Field.Number */
11
+ autoComplete?: boolean;
10
12
  handlePathChange: (path: string, value: any) => void;
11
13
  handleSubmit: (props?: HandleSubmitProps) => any;
12
14
  showAllErrors: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"Context.js","names":["React","defaultContextState","data","undefined","handlePathChange","handleSubmit","showAllErrors","setShowAllErrors","mountedFieldPaths","handleMountField","handleUnMountField","hasErrors","setPathWithError","_isInsideFormElement","Context","createContext"],"sources":["../../../../../src/extensions/forms/DataContext/Context.ts"],"sourcesContent":["import React from 'react'\n\ntype HandleSubmitProps = {\n formElement?: HTMLFormElement\n}\n\nexport interface ContextState {\n /** The dataset for the form / form steps */\n data: any\n /** Should the form validate data before submitting? */\n errors?: Record<string, Error>\n handlePathChange: (path: string, value: any) => void\n handleSubmit: (props?: HandleSubmitProps) => any\n // Error status\n showAllErrors: boolean\n setShowAllErrors: (showAllErrors: boolean) => void\n // Mounted fields - Components telling the provider what fields is on screen at any time\n mountedFieldPaths: string[]\n handleMountField: (path: string) => void\n handleUnMountField: (path: string) => void\n setPathWithError: (path: string, hasError: boolean) => void\n hasErrors: () => boolean\n _isInsideFormElement?: boolean\n}\n\nexport const defaultContextState: ContextState = {\n data: undefined,\n handlePathChange: () => null,\n handleSubmit: () => null,\n showAllErrors: false,\n setShowAllErrors: () => null,\n mountedFieldPaths: [],\n handleMountField: () => null,\n handleUnMountField: () => null,\n hasErrors: () => false,\n setPathWithError: () => null,\n _isInsideFormElement: false,\n}\n\nconst Context = React.createContext<ContextState>(defaultContextState)\n\nexport default Context\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAyBzB,OAAO,MAAMC,mBAAiC,GAAG;EAC/CC,IAAI,EAAEC,SAAS;EACfC,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,YAAY,EAAEA,CAAA,KAAM,IAAI;EACxBC,aAAa,EAAE,KAAK;EACpBC,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,iBAAiB,EAAE,EAAE;EACrBC,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,kBAAkB,EAAEA,CAAA,KAAM,IAAI;EAC9BC,SAAS,EAAEA,CAAA,KAAM,KAAK;EACtBC,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,oBAAoB,EAAE;AACxB,CAAC;AAED,MAAMC,OAAO,GAAGd,KAAK,CAACe,aAAa,CAAed,mBAAmB,CAAC;AAEtE,eAAea,OAAO"}
1
+ {"version":3,"file":"Context.js","names":["React","defaultContextState","data","undefined","handlePathChange","handleSubmit","showAllErrors","setShowAllErrors","mountedFieldPaths","handleMountField","handleUnMountField","hasErrors","setPathWithError","_isInsideFormElement","Context","createContext"],"sources":["../../../../../src/extensions/forms/DataContext/Context.ts"],"sourcesContent":["import React from 'react'\n\ntype HandleSubmitProps = {\n formElement?: HTMLFormElement\n}\n\nexport interface ContextState {\n /** The dataset for the form / form steps */\n data: any\n /** Should the form validate data before submitting? */\n errors?: Record<string, Error>\n /** Will set autoComplete=\"on\" on each nested Field.String and Field.Number */\n autoComplete?: boolean\n handlePathChange: (path: string, value: any) => void\n handleSubmit: (props?: HandleSubmitProps) => any\n // Error status\n showAllErrors: boolean\n setShowAllErrors: (showAllErrors: boolean) => void\n // Mounted fields - Components telling the provider what fields is on screen at any time\n mountedFieldPaths: string[]\n handleMountField: (path: string) => void\n handleUnMountField: (path: string) => void\n setPathWithError: (path: string, hasError: boolean) => void\n hasErrors: () => boolean\n _isInsideFormElement?: boolean\n}\n\nexport const defaultContextState: ContextState = {\n data: undefined,\n handlePathChange: () => null,\n handleSubmit: () => null,\n showAllErrors: false,\n setShowAllErrors: () => null,\n mountedFieldPaths: [],\n handleMountField: () => null,\n handleUnMountField: () => null,\n hasErrors: () => false,\n setPathWithError: () => null,\n _isInsideFormElement: false,\n}\n\nconst Context = React.createContext<ContextState>(defaultContextState)\n\nexport default Context\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AA2BzB,OAAO,MAAMC,mBAAiC,GAAG;EAC/CC,IAAI,EAAEC,SAAS;EACfC,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,YAAY,EAAEA,CAAA,KAAM,IAAI;EACxBC,aAAa,EAAE,KAAK;EACpBC,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,iBAAiB,EAAE,EAAE;EACrBC,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,kBAAkB,EAAEA,CAAA,KAAM,IAAI;EAC9BC,SAAS,EAAEA,CAAA,KAAM,KAAK;EACtBC,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,oBAAoB,EAAE;AACxB,CAAC;AAED,MAAMC,OAAO,GAAGd,KAAK,CAACe,aAAa,CAAed,mBAAmB,CAAC;AAEtE,eAAea,OAAO"}
@@ -21,4 +21,4 @@ export interface Props<Data extends JsonObject> {
21
21
  sessionStorageId?: string;
22
22
  children: React.ReactNode;
23
23
  }
24
- export default function Provider<Data extends JsonObject>({ defaultData, data, schema, onChange, onPathChange, onSubmit, onSubmitRequest, scrollTopOnSubmit, sessionStorageId, children, }: Props<Data>): import("react/jsx-runtime").JSX.Element;
24
+ export default function Provider<Data extends JsonObject>({ defaultData, data, schema, onChange, onPathChange, onSubmit, onSubmitRequest, scrollTopOnSubmit, sessionStorageId, children, ...rest }: Props<Data>): import("react/jsx-runtime").JSX.Element;
@@ -1,3 +1,8 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
+ const _excluded = ["defaultData", "data", "schema", "onChange", "onPathChange", "onSubmit", "onSubmitRequest", "scrollTopOnSubmit", "sessionStorageId", "children"];
4
+ 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; }
5
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1
6
  import React, { useEffect, useRef, useMemo, useCallback, useState } from 'react';
2
7
  import pointer from 'json-pointer';
3
8
  import ajv, { ajvErrorsToFormErrors } from '../../utils/ajv';
@@ -12,17 +17,18 @@ function removeListPath(paths, path) {
12
17
  const isArrayJsonPointer = /^\/\d+(\/|$)/;
13
18
  export default function Provider(_ref) {
14
19
  let {
15
- defaultData,
16
- data,
17
- schema,
18
- onChange,
19
- onPathChange,
20
- onSubmit,
21
- onSubmitRequest,
22
- scrollTopOnSubmit,
23
- sessionStorageId,
24
- children
25
- } = _ref;
20
+ defaultData,
21
+ data,
22
+ schema,
23
+ onChange,
24
+ onPathChange,
25
+ onSubmit,
26
+ onSubmitRequest,
27
+ scrollTopOnSubmit,
28
+ sessionStorageId,
29
+ children
30
+ } = _ref,
31
+ rest = _objectWithoutProperties(_ref, _excluded);
26
32
  if (data !== undefined && sessionStorageId !== undefined) {
27
33
  console.error('Providing both data and sessionStorageId could lead to competing data sources. To provide default data to use only before anything is changed in the interface, use defaultData.');
28
34
  }
@@ -100,12 +106,17 @@ export default function Provider(_ref) {
100
106
  var _formElement$reset;
101
107
  onSubmit === null || onSubmit === void 0 ? void 0 : onSubmit(internalData);
102
108
  formElement === null || formElement === void 0 ? void 0 : (_formElement$reset = formElement.reset) === null || _formElement$reset === void 0 ? void 0 : _formElement$reset.call(formElement);
103
- if (scrollTopOnSubmit) {
104
- var _window;
105
- typeof window !== 'undefined' && ((_window = window) === null || _window === void 0 ? void 0 : _window.scrollTo({
106
- top: 0,
107
- behavior: 'smooth'
108
- }));
109
+ if (typeof window !== 'undefined') {
110
+ if (sessionStorageId) {
111
+ window.sessionStorage.removeItem(sessionStorageId);
112
+ }
113
+ if (scrollTopOnSubmit) {
114
+ var _window;
115
+ (_window = window) === null || _window === void 0 ? void 0 : _window.scrollTo({
116
+ top: 0,
117
+ behavior: 'smooth'
118
+ });
119
+ }
109
120
  }
110
121
  } else {
111
122
  setShowAllErrors(true);
@@ -119,8 +130,9 @@ export default function Provider(_ref) {
119
130
  }
120
131
  }, []);
121
132
  return React.createElement(Context.Provider, {
122
- value: {
123
- data: internalData,
133
+ value: _objectSpread(_objectSpread({
134
+ data: internalData
135
+ }, rest), {}, {
124
136
  handlePathChange,
125
137
  handleSubmit,
126
138
  errors: errorsRef.current,
@@ -131,7 +143,7 @@ export default function Provider(_ref) {
131
143
  handleUnMountField,
132
144
  hasErrors,
133
145
  setPathWithError
134
- }
146
+ })
135
147
  }, children);
136
148
  }
137
149
  //# sourceMappingURL=Provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Provider.js","names":["React","useEffect","useRef","useMemo","useCallback","useState","pointer","ajv","ajvErrorsToFormErrors","Context","structuredClone","addListPath","paths","path","includes","concat","removeListPath","filter","thisPath","isArrayJsonPointer","Provider","_ref","defaultData","data","schema","onChange","onPathChange","onSubmit","onSubmitRequest","scrollTopOnSubmit","sessionStorageId","children","undefined","console","error","wasMounted","initialData","window","_window$sessionStorag","sessionDataJSON","sessionStorage","getItem","JSON","parse","ajvSchemaValidator","compile","internalData","setInternalData","mountedFieldPathsRef","errorsRef","showAllErrors","setShowAllErrors","pathsWithErrorRef","hasErrors","Boolean","current","find","mountedFieldPath","validateBySchema","errors","validateBySchemaAndUpdateState","setPathWithError","hasError","handlePathChange","value","newData","match","set","_window$sessionStorag2","setItem","stringify","handleMountField","handleUnMountField","handleSubmit","formElement","arguments","length","_formElement$reset","reset","call","_window","scrollTo","top","behavior","createElement","mountedFieldPaths"],"sources":["../../../../../../src/extensions/forms/DataContext/Provider/Provider.tsx"],"sourcesContent":["import React, {\n useEffect,\n useRef,\n useMemo,\n useCallback,\n useState,\n} from 'react'\nimport pointer, { JsonObject } from 'json-pointer'\nimport { JSONSchema7 } from 'json-schema'\nimport ajv, { ajvErrorsToFormErrors } from '../../utils/ajv'\nimport { FormError } from '../../types'\nimport Context, { ContextState } from '../Context'\n\n/**\n * Deprecated, as it is supported my all mihor browsers and Node.js >=v18\n * So its a question of time, when we will remove this polyfill\n */\nimport structuredClone from '@ungap/structured-clone'\n\nexport interface Props<Data extends JsonObject> {\n /** Default source data, only used if no other source is available, and not leading to updates if changed after mount */\n defaultData?: Partial<Data>\n /** Dynamic source data used as both initial data, and updates internal data if changed after mount */\n data?: Partial<Data>\n /** JSON Schema for validating the data, like during input or after attempting submit */\n schema?: JSONSchema7\n /** Change handler for the whole data set */\n onChange?: (data: Data) => void\n /** Change handler for each value */\n onPathChange?: (path: string, value: any) => void\n /** Submit called, data was valid (if validation available) */\n onSubmit?: (data: Data) => void\n /** Submit was requested, but data was invalid */\n onSubmitRequest?: () => void\n scrollTopOnSubmit?: boolean\n /** Key for caching the data in session storage */\n sessionStorageId?: string\n children: React.ReactNode\n}\n\ntype PathList = string[]\n\nfunction addListPath(paths: PathList, path: string): PathList {\n return paths.includes(path) ? paths : paths.concat(path)\n}\n\nfunction removeListPath(paths: PathList, path: string): PathList {\n return paths.filter((thisPath) => thisPath !== path)\n}\n\nconst isArrayJsonPointer = /^\\/\\d+(\\/|$)/\n\nexport default function Provider<Data extends JsonObject>({\n defaultData,\n data,\n schema,\n onChange,\n onPathChange,\n onSubmit,\n onSubmitRequest,\n scrollTopOnSubmit,\n sessionStorageId,\n children,\n}: Props<Data>) {\n // Prop error handling\n if (data !== undefined && sessionStorageId !== undefined) {\n console.error(\n 'Providing both data and sessionStorageId could lead to competing data sources. To provide default data to use only before anything is changed in the interface, use defaultData.'\n )\n }\n\n // State\n const wasMounted = useRef(false)\n const initialData = useMemo(() => {\n if (sessionStorageId && typeof window !== 'undefined') {\n const sessionDataJSON =\n window.sessionStorage?.getItem(sessionStorageId)\n if (sessionDataJSON) {\n return JSON.parse(sessionDataJSON)\n }\n }\n return data ?? defaultData\n }, [data, defaultData, sessionStorageId])\n const ajvSchemaValidator = useMemo(\n () => (schema ? ajv.compile(schema) : undefined),\n [schema]\n )\n const [internalData, setInternalData] =\n useState<Partial<Data>>(initialData)\n const mountedFieldPathsRef = useRef<string[]>([])\n\n // Errors from provider validation (the whole data set)\n const errorsRef = useRef<Record<string, FormError>>({})\n const [showAllErrors, setShowAllErrors] = useState<boolean>(false)\n // Errors reported by fields, based on their direct validation rules\n const pathsWithErrorRef = useRef<string[]>([])\n\n const hasErrors = useCallback(\n () =>\n Boolean(\n mountedFieldPathsRef.current.find(\n (mountedFieldPath) =>\n errorsRef.current[mountedFieldPath] !== undefined ||\n pathsWithErrorRef.current.includes(mountedFieldPath)\n )\n ),\n []\n )\n\n useEffect(() => {\n if (!wasMounted.current) {\n wasMounted.current = true\n return\n }\n // When receivint the initial data, or receiving updated data by props, update the internal data (controlled state)\n setInternalData(data)\n }, [data])\n\n const validateBySchema = useCallback(\n (data: Partial<Data>): Record<string, Error> | undefined => {\n if (!ajvSchemaValidator) {\n // No schema-based validator. Assume data is valid.\n return\n }\n\n if (!ajvSchemaValidator(data)) {\n // Errors found\n const errors = ajvErrorsToFormErrors(ajvSchemaValidator.errors)\n return errors\n } else {\n return\n }\n },\n [ajvSchemaValidator]\n )\n\n const validateBySchemaAndUpdateState = useCallback(\n (data: Partial<Data>) => {\n errorsRef.current = validateBySchema(data) ?? {}\n },\n [validateBySchema]\n )\n\n const setPathWithError = useCallback(\n (path: string, hasError: boolean) => {\n pathsWithErrorRef.current = hasError\n ? addListPath(pathsWithErrorRef.current, path)\n : removeListPath(pathsWithErrorRef.current, path)\n },\n []\n )\n\n const handlePathChange = useCallback(\n (path, value) => {\n if (!path) {\n return\n }\n onPathChange?.(path, value)\n\n // Update the data even if it contains errors. Submit/SubmitRequest will be called accordingly\n const newData = structuredClone(\n path === '/'\n ? // When setting the root of the data, the whole data set should be the new value\n value\n : // For sub paths, use the the existing data set (or empty array/object), but modify it below (since pointer.set is not immutable)\n internalData ?? (path.match(isArrayJsonPointer) ? [] : {})\n )\n if (path !== '/') {\n pointer.set(newData as Data, path, value)\n }\n\n onChange?.(newData)\n\n if (sessionStorageId && typeof window !== 'undefined') {\n window.sessionStorage?.setItem(\n sessionStorageId,\n JSON.stringify(newData)\n )\n }\n\n validateBySchemaAndUpdateState(newData)\n\n setInternalData(newData)\n\n setShowAllErrors(false)\n },\n [internalData, onChange, onPathChange, validateBySchemaAndUpdateState]\n )\n\n // Mounted fields\n const handleMountField = useCallback((path: string) => {\n mountedFieldPathsRef.current = addListPath(\n mountedFieldPathsRef.current,\n path\n )\n }, [])\n\n const handleUnMountField = useCallback((path: string) => {\n mountedFieldPathsRef.current = removeListPath(\n mountedFieldPathsRef.current,\n path\n )\n }, [])\n\n /**\n * Request to submit the whole form\n */\n const handleSubmit = useCallback<ContextState['handleSubmit']>(\n ({ formElement = null } = {}) => {\n if (!hasErrors()) {\n onSubmit?.(internalData as Data)\n formElement?.reset?.()\n if (scrollTopOnSubmit) {\n typeof window !== 'undefined' &&\n window?.scrollTo({ top: 0, behavior: 'smooth' })\n }\n } else {\n setShowAllErrors(true)\n onSubmitRequest?.()\n }\n return internalData\n },\n [internalData, scrollTopOnSubmit, hasErrors, onSubmit, onSubmitRequest]\n )\n\n useEffect(() => {\n // Mount procedure\n if (initialData) {\n // Validate the initial data to know if the user can submit, and to show errors if inputs are requested to with props\n validateBySchemaAndUpdateState(initialData)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- Only run for mount and unmount\n }, [])\n\n return (\n <Context.Provider\n value={{\n data: internalData,\n handlePathChange,\n handleSubmit,\n errors: errorsRef.current,\n showAllErrors,\n setShowAllErrors,\n mountedFieldPaths: mountedFieldPathsRef.current,\n handleMountField,\n handleUnMountField,\n hasErrors,\n setPathWithError,\n }}\n >\n {children}\n </Context.Provider>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Provider.js","names":["React","useEffect","useRef","useMemo","useCallback","useState","pointer","ajv","ajvErrorsToFormErrors","Context","structuredClone","addListPath","paths","path","includes","concat","removeListPath","filter","thisPath","isArrayJsonPointer","Provider","_ref","defaultData","data","schema","onChange","onPathChange","onSubmit","onSubmitRequest","scrollTopOnSubmit","sessionStorageId","children","rest","_objectWithoutProperties","_excluded","undefined","console","error","wasMounted","initialData","window","_window$sessionStorag","sessionDataJSON","sessionStorage","getItem","JSON","parse","ajvSchemaValidator","compile","internalData","setInternalData","mountedFieldPathsRef","errorsRef","showAllErrors","setShowAllErrors","pathsWithErrorRef","hasErrors","Boolean","current","find","mountedFieldPath","validateBySchema","errors","validateBySchemaAndUpdateState","setPathWithError","hasError","handlePathChange","value","newData","match","set","_window$sessionStorag2","setItem","stringify","handleMountField","handleUnMountField","handleSubmit","formElement","arguments","length","_formElement$reset","reset","call","removeItem","_window","scrollTo","top","behavior","createElement","_objectSpread","mountedFieldPaths"],"sources":["../../../../../../src/extensions/forms/DataContext/Provider/Provider.tsx"],"sourcesContent":["import React, {\n useEffect,\n useRef,\n useMemo,\n useCallback,\n useState,\n} from 'react'\nimport pointer, { JsonObject } from 'json-pointer'\nimport { JSONSchema7 } from 'json-schema'\nimport ajv, { ajvErrorsToFormErrors } from '../../utils/ajv'\nimport { FormError } from '../../types'\nimport Context, { ContextState } from '../Context'\n\n/**\n * Deprecated, as it is supported my all mihor browsers and Node.js >=v18\n * So its a question of time, when we will remove this polyfill\n */\nimport structuredClone from '@ungap/structured-clone'\n\nexport interface Props<Data extends JsonObject> {\n /** Default source data, only used if no other source is available, and not leading to updates if changed after mount */\n defaultData?: Partial<Data>\n /** Dynamic source data used as both initial data, and updates internal data if changed after mount */\n data?: Partial<Data>\n /** JSON Schema for validating the data, like during input or after attempting submit */\n schema?: JSONSchema7\n /** Change handler for the whole data set */\n onChange?: (data: Data) => void\n /** Change handler for each value */\n onPathChange?: (path: string, value: any) => void\n /** Submit called, data was valid (if validation available) */\n onSubmit?: (data: Data) => void\n /** Submit was requested, but data was invalid */\n onSubmitRequest?: () => void\n scrollTopOnSubmit?: boolean\n /** Key for caching the data in session storage */\n sessionStorageId?: string\n children: React.ReactNode\n}\n\ntype PathList = string[]\n\nfunction addListPath(paths: PathList, path: string): PathList {\n return paths.includes(path) ? paths : paths.concat(path)\n}\n\nfunction removeListPath(paths: PathList, path: string): PathList {\n return paths.filter((thisPath) => thisPath !== path)\n}\n\nconst isArrayJsonPointer = /^\\/\\d+(\\/|$)/\n\nexport default function Provider<Data extends JsonObject>({\n defaultData,\n data,\n schema,\n onChange,\n onPathChange,\n onSubmit,\n onSubmitRequest,\n scrollTopOnSubmit,\n sessionStorageId,\n children,\n ...rest\n}: Props<Data>) {\n // Prop error handling\n if (data !== undefined && sessionStorageId !== undefined) {\n console.error(\n 'Providing both data and sessionStorageId could lead to competing data sources. To provide default data to use only before anything is changed in the interface, use defaultData.'\n )\n }\n\n // State\n const wasMounted = useRef(false)\n const initialData = useMemo(() => {\n if (sessionStorageId && typeof window !== 'undefined') {\n const sessionDataJSON =\n window.sessionStorage?.getItem(sessionStorageId)\n if (sessionDataJSON) {\n return JSON.parse(sessionDataJSON)\n }\n }\n return data ?? defaultData\n }, [data, defaultData, sessionStorageId])\n const ajvSchemaValidator = useMemo(\n () => (schema ? ajv.compile(schema) : undefined),\n [schema]\n )\n const [internalData, setInternalData] =\n useState<Partial<Data>>(initialData)\n const mountedFieldPathsRef = useRef<string[]>([])\n\n // Errors from provider validation (the whole data set)\n const errorsRef = useRef<Record<string, FormError>>({})\n const [showAllErrors, setShowAllErrors] = useState<boolean>(false)\n // Errors reported by fields, based on their direct validation rules\n const pathsWithErrorRef = useRef<string[]>([])\n\n const hasErrors = useCallback(\n () =>\n Boolean(\n mountedFieldPathsRef.current.find(\n (mountedFieldPath) =>\n errorsRef.current[mountedFieldPath] !== undefined ||\n pathsWithErrorRef.current.includes(mountedFieldPath)\n )\n ),\n []\n )\n\n useEffect(() => {\n if (!wasMounted.current) {\n wasMounted.current = true\n return\n }\n // When receivint the initial data, or receiving updated data by props, update the internal data (controlled state)\n setInternalData(data)\n }, [data])\n\n const validateBySchema = useCallback(\n (data: Partial<Data>): Record<string, Error> | undefined => {\n if (!ajvSchemaValidator) {\n // No schema-based validator. Assume data is valid.\n return\n }\n\n if (!ajvSchemaValidator(data)) {\n // Errors found\n const errors = ajvErrorsToFormErrors(ajvSchemaValidator.errors)\n return errors\n } else {\n return\n }\n },\n [ajvSchemaValidator]\n )\n\n const validateBySchemaAndUpdateState = useCallback(\n (data: Partial<Data>) => {\n errorsRef.current = validateBySchema(data) ?? {}\n },\n [validateBySchema]\n )\n\n const setPathWithError = useCallback(\n (path: string, hasError: boolean) => {\n pathsWithErrorRef.current = hasError\n ? addListPath(pathsWithErrorRef.current, path)\n : removeListPath(pathsWithErrorRef.current, path)\n },\n []\n )\n\n const handlePathChange = useCallback(\n (path, value) => {\n if (!path) {\n return\n }\n onPathChange?.(path, value)\n\n // Update the data even if it contains errors. Submit/SubmitRequest will be called accordingly\n const newData = structuredClone(\n path === '/'\n ? // When setting the root of the data, the whole data set should be the new value\n value\n : // For sub paths, use the the existing data set (or empty array/object), but modify it below (since pointer.set is not immutable)\n internalData ?? (path.match(isArrayJsonPointer) ? [] : {})\n )\n if (path !== '/') {\n pointer.set(newData as Data, path, value)\n }\n\n onChange?.(newData as Data)\n\n if (sessionStorageId && typeof window !== 'undefined') {\n window.sessionStorage?.setItem(\n sessionStorageId,\n JSON.stringify(newData)\n )\n }\n\n validateBySchemaAndUpdateState(newData)\n\n setInternalData(newData)\n\n setShowAllErrors(false)\n },\n [internalData, onChange, onPathChange, validateBySchemaAndUpdateState]\n )\n\n // Mounted fields\n const handleMountField = useCallback((path: string) => {\n mountedFieldPathsRef.current = addListPath(\n mountedFieldPathsRef.current,\n path\n )\n }, [])\n\n const handleUnMountField = useCallback((path: string) => {\n mountedFieldPathsRef.current = removeListPath(\n mountedFieldPathsRef.current,\n path\n )\n }, [])\n\n /**\n * Request to submit the whole form\n */\n const handleSubmit = useCallback<ContextState['handleSubmit']>(\n ({ formElement = null } = {}) => {\n if (!hasErrors()) {\n onSubmit?.(internalData as Data)\n\n formElement?.reset?.()\n\n if (typeof window !== 'undefined') {\n if (sessionStorageId) {\n window.sessionStorage.removeItem(sessionStorageId)\n }\n\n if (scrollTopOnSubmit) {\n window?.scrollTo({ top: 0, behavior: 'smooth' })\n }\n }\n } else {\n setShowAllErrors(true)\n onSubmitRequest?.()\n }\n return internalData\n },\n [internalData, scrollTopOnSubmit, hasErrors, onSubmit, onSubmitRequest]\n )\n\n useEffect(() => {\n // Mount procedure\n if (initialData) {\n // Validate the initial data to know if the user can submit, and to show errors if inputs are requested to with props\n validateBySchemaAndUpdateState(initialData)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- Only run for mount and unmount\n }, [])\n\n return (\n <Context.Provider\n value={{\n data: internalData,\n ...rest,\n handlePathChange,\n handleSubmit,\n errors: errorsRef.current,\n showAllErrors,\n setShowAllErrors,\n mountedFieldPaths: mountedFieldPathsRef.current,\n handleMountField,\n handleUnMountField,\n hasErrors,\n setPathWithError,\n }}\n >\n {children}\n </Context.Provider>\n )\n}\n"],"mappings":"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"}
@@ -14,7 +14,7 @@ function NumberComponent(props) {
14
14
  percent,
15
15
  mask,
16
16
  thousandSeparator,
17
- decimalSymbol = ',',
17
+ decimalSymbol,
18
18
  decimalLimit = 12,
19
19
  prefix,
20
20
  suffix,
@@ -73,7 +73,9 @@ function NumberComponent(props) {
73
73
  });
74
74
  const {
75
75
  id,
76
+ name,
76
77
  className,
78
+ autoComplete,
77
79
  inputClassName,
78
80
  layout,
79
81
  placeholder,
@@ -105,6 +107,8 @@ function NumberComponent(props) {
105
107
  contentsWidth: width !== false ? width : undefined
106
108
  }, pickSpacingProps(props)), React.createElement(InputMasked, _extends({
107
109
  id: id,
110
+ name: name,
111
+ autoComplete: autoComplete,
108
112
  className: classnames('dnb-forms-field-number__input', inputClassName),
109
113
  placeholder: placeholder,
110
114
  value: value
@@ -1 +1 @@
1
- {"version":3,"file":"Number.js","names":["React","useMemo","InputMasked","HelpButton","classnames","FieldBlock","useDataValue","pickSpacingProps","NumberComponent","props","currency","percent","mask","thousandSeparator","decimalSymbol","decimalLimit","prefix","suffix","rightAligned","maskProps","as_currency","as_percent","as_number","number_mask","includeThousandsSeparator","undefined","thousandsSeparatorSymbol","preparedProps","_objectSpread","schema","type","minimum","maximum","exclusiveMinimum","exclusiveMaximum","multipleOf","toInput","external","fromInput","_ref","value","numberValue","emptyValue","width","id","className","inputClassName","layout","placeholder","label","labelDescription","labelSecondary","disabled","info","warning","error","help","handleFocus","handleBlur","handleChange","createElement","_extends","forId","contentsWidth","right","on_focus","on_blur","on_change","status","stretch","title","contents","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Number/Number.tsx"],"sourcesContent":["import React, { useMemo } from 'react'\nimport { InputMasked, HelpButton } from '../../../../components'\nimport { InputMaskedProps } from '../../../../components/InputMasked'\nimport classnames from 'classnames'\nimport FieldBlock from '../../FieldBlock'\nimport { useDataValue } from '../../hooks'\nimport { FieldProps, FieldHelpProps } from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\n\ninterface ErrorMessages {\n required?: string\n schema?: string\n minimum?: string\n maximum?: string\n exclusiveMinimum?: string\n exclusiveMaximum?: string\n multipleOf?: string\n}\n\nexport type Props = FieldHelpProps &\n FieldProps<number, undefined, ErrorMessages> & {\n inputClassName?: string\n currency?: InputMaskedProps['as_currency']\n percent?: InputMaskedProps['as_percent']\n mask?: InputMaskedProps['mask']\n // Formatting\n thousandSeparator?: string | true\n decimalSymbol?: string\n decimalLimit?: number\n prefix?: string\n suffix?: string\n // Validation\n minimum?: number // aka greater than or equal to\n maximum?: number // aka less than or equal to\n exclusiveMinimum?: number // aka greater than\n exclusiveMaximum?: number // aka less than\n multipleOf?: number\n // Styling\n width?: false | 'small' | 'medium' | 'large' | 'stretch'\n rightAligned?: boolean\n }\n\nfunction NumberComponent(props: Props) {\n const {\n currency,\n percent,\n mask,\n thousandSeparator,\n decimalSymbol = ',',\n decimalLimit = 12,\n prefix,\n suffix,\n rightAligned,\n } = props\n\n const maskProps: Partial<InputMaskedProps> = useMemo(() => {\n if (currency) {\n return {\n as_currency: currency,\n }\n }\n if (percent) {\n return {\n as_percent: percent,\n }\n }\n // Custom mask based on props\n return {\n as_number: true,\n mask,\n number_mask: {\n decimalLimit,\n decimalSymbol,\n includeThousandsSeparator: thousandSeparator !== undefined,\n thousandsSeparatorSymbol:\n thousandSeparator === true ? ' ' : thousandSeparator,\n prefix,\n suffix,\n },\n }\n }, [\n currency,\n percent,\n mask,\n decimalLimit,\n decimalSymbol,\n thousandSeparator,\n prefix,\n suffix,\n ])\n\n const preparedProps: Props = {\n ...props,\n schema: props.schema ?? {\n type: 'number',\n minimum: props.minimum,\n maximum: props.maximum,\n exclusiveMinimum: props.exclusiveMinimum,\n exclusiveMaximum: props.exclusiveMaximum,\n multipleOf: props.multipleOf,\n },\n toInput: (external: number | undefined) => {\n if (external === undefined) {\n return ''\n }\n return external\n },\n fromInput: ({\n value,\n numberValue,\n }: {\n value: string\n numberValue: number\n }) => {\n if (value === '') {\n return emptyValue\n }\n return numberValue\n },\n width: props.width ?? 'medium',\n }\n\n const {\n id,\n className,\n inputClassName,\n layout,\n placeholder,\n label,\n labelDescription,\n labelSecondary,\n value,\n disabled,\n info,\n warning,\n error,\n help,\n emptyValue,\n width,\n handleFocus,\n handleBlur,\n handleChange,\n } = useDataValue(preparedProps)\n\n return (\n <FieldBlock\n className={classnames('dnb-forms-field-number', className)}\n forId={id}\n layout={layout}\n label={label}\n labelDescription={labelDescription}\n labelSecondary={labelSecondary}\n info={info}\n warning={warning}\n error={error}\n contentsWidth={width !== false ? width : undefined}\n {...pickSpacingProps(props)}\n >\n <InputMasked\n id={id}\n className={classnames(\n 'dnb-forms-field-number__input',\n inputClassName\n )}\n placeholder={placeholder}\n value={value}\n {...maskProps}\n right={rightAligned}\n on_focus={handleFocus}\n on_blur={handleBlur}\n on_change={handleChange}\n disabled={disabled}\n status={error ? 'error' : undefined}\n stretch={width !== undefined}\n suffix={\n help ? (\n <HelpButton title={help.title}>{help.contents}</HelpButton>\n ) : undefined\n }\n />\n </FieldBlock>\n )\n}\n\nNumberComponent._supportsSpacingProps = true\nexport default NumberComponent\n"],"mappings":"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"}
1
+ {"version":3,"file":"Number.js","names":["React","useMemo","InputMasked","HelpButton","classnames","FieldBlock","useDataValue","pickSpacingProps","NumberComponent","props","currency","percent","mask","thousandSeparator","decimalSymbol","decimalLimit","prefix","suffix","rightAligned","maskProps","as_currency","as_percent","as_number","number_mask","includeThousandsSeparator","undefined","thousandsSeparatorSymbol","preparedProps","_objectSpread","schema","type","minimum","maximum","exclusiveMinimum","exclusiveMaximum","multipleOf","toInput","external","fromInput","_ref","value","numberValue","emptyValue","width","id","name","className","autoComplete","inputClassName","layout","placeholder","label","labelDescription","labelSecondary","disabled","info","warning","error","help","handleFocus","handleBlur","handleChange","createElement","_extends","forId","contentsWidth","right","on_focus","on_blur","on_change","status","stretch","title","contents","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Number/Number.tsx"],"sourcesContent":["import React, { useMemo } from 'react'\nimport { InputMasked, HelpButton } from '../../../../components'\nimport { InputMaskedProps } from '../../../../components/InputMasked'\nimport classnames from 'classnames'\nimport FieldBlock from '../../FieldBlock'\nimport { useDataValue } from '../../hooks'\nimport { FieldProps, FieldHelpProps } from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\n\ninterface ErrorMessages {\n required?: string\n schema?: string\n minimum?: string\n maximum?: string\n exclusiveMinimum?: string\n exclusiveMaximum?: string\n multipleOf?: string\n}\n\nexport type Props = FieldHelpProps &\n FieldProps<number, undefined, ErrorMessages> & {\n inputClassName?: string\n currency?: InputMaskedProps['as_currency']\n percent?: InputMaskedProps['as_percent']\n mask?: InputMaskedProps['mask']\n // Formatting\n thousandSeparator?: string | true\n decimalSymbol?: string\n decimalLimit?: number\n prefix?: string\n suffix?: string\n // Validation\n minimum?: number // aka greater than or equal to\n maximum?: number // aka less than or equal to\n exclusiveMinimum?: number // aka greater than\n exclusiveMaximum?: number // aka less than\n multipleOf?: number\n // Styling\n width?: false | 'small' | 'medium' | 'large' | 'stretch'\n rightAligned?: boolean\n }\n\nfunction NumberComponent(props: Props) {\n const {\n currency,\n percent,\n mask,\n thousandSeparator,\n decimalSymbol,\n decimalLimit = 12,\n prefix,\n suffix,\n rightAligned,\n } = props\n\n const maskProps: Partial<InputMaskedProps> = useMemo(() => {\n if (currency) {\n return {\n as_currency: currency,\n }\n }\n if (percent) {\n return {\n as_percent: percent,\n }\n }\n // Custom mask based on props\n return {\n as_number: true,\n mask,\n number_mask: {\n decimalLimit,\n decimalSymbol,\n includeThousandsSeparator: thousandSeparator !== undefined,\n thousandsSeparatorSymbol:\n thousandSeparator === true ? ' ' : thousandSeparator,\n prefix,\n suffix,\n },\n }\n }, [\n currency,\n percent,\n mask,\n decimalLimit,\n decimalSymbol,\n thousandSeparator,\n prefix,\n suffix,\n ])\n\n const preparedProps: Props = {\n ...props,\n schema: props.schema ?? {\n type: 'number',\n minimum: props.minimum,\n maximum: props.maximum,\n exclusiveMinimum: props.exclusiveMinimum,\n exclusiveMaximum: props.exclusiveMaximum,\n multipleOf: props.multipleOf,\n },\n toInput: (external: number | undefined) => {\n if (external === undefined) {\n return ''\n }\n return external\n },\n fromInput: ({\n value,\n numberValue,\n }: {\n value: string\n numberValue: number\n }) => {\n if (value === '') {\n return emptyValue\n }\n return numberValue\n },\n width: props.width ?? 'medium',\n }\n\n const {\n id,\n name,\n className,\n autoComplete,\n inputClassName,\n layout,\n placeholder,\n label,\n labelDescription,\n labelSecondary,\n value,\n disabled,\n info,\n warning,\n error,\n help,\n emptyValue,\n width,\n handleFocus,\n handleBlur,\n handleChange,\n } = useDataValue(preparedProps)\n\n return (\n <FieldBlock\n className={classnames('dnb-forms-field-number', className)}\n forId={id}\n layout={layout}\n label={label}\n labelDescription={labelDescription}\n labelSecondary={labelSecondary}\n info={info}\n warning={warning}\n error={error}\n contentsWidth={width !== false ? width : undefined}\n {...pickSpacingProps(props)}\n >\n <InputMasked\n id={id}\n name={name}\n autoComplete={autoComplete}\n className={classnames(\n 'dnb-forms-field-number__input',\n inputClassName\n )}\n placeholder={placeholder}\n value={value}\n {...maskProps}\n right={rightAligned}\n on_focus={handleFocus}\n on_blur={handleBlur}\n on_change={handleChange}\n disabled={disabled}\n status={error ? 'error' : undefined}\n stretch={width !== undefined}\n suffix={\n help ? (\n <HelpButton title={help.title}>{help.contents}</HelpButton>\n ) : undefined\n }\n />\n </FieldBlock>\n )\n}\n\nNumberComponent._supportsSpacingProps = true\nexport default NumberComponent\n"],"mappings":"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"}
@@ -12,6 +12,7 @@ import FieldBlock from '../../FieldBlock';
12
12
  import { pickSpacingProps } from '../../../../components/flex/utils';
13
13
  import SharedContext from '../../../../shared/Context';
14
14
  function PhoneNumber(props) {
15
+ var _sharedContext$locale;
15
16
  const sharedContext = useContext(SharedContext);
16
17
  const defaultProps = {
17
18
  value: '+47',
@@ -45,11 +46,12 @@ function PhoneNumber(props) {
45
46
  onNumberChange
46
47
  } = useDataValue(preparedProps);
47
48
  const [, countryCode, phoneNumber] = value !== undefined ? value.match(/^(\+[^ ]+)? ?(.*)$/) : [undefined, '', ''];
49
+ const lang = (_sharedContext$locale = sharedContext.locale) === null || _sharedContext$locale === void 0 ? void 0 : _sharedContext$locale.split('-')[0];
48
50
  const countryCodeData = useMemo(() => countries.map(country => ({
49
- selectedKey: `+${country.code}`,
50
- selected_value: `${country.iso} (+${country.code})`,
51
- content: `+${country.code} ${country.name}`
52
- })), []);
51
+ selectedKey: `+${country.cdc}`,
52
+ selected_value: `${country.iso} (+${country.cdc})`,
53
+ content: `+${country.cdc} ${country.i18n[lang] ?? country.i18n.en}`
54
+ })), [sharedContext.locale]);
53
55
  const handleCountryCodeChange = useCallback(_ref => {
54
56
  var _data$selectedKey;
55
57
  let {
@@ -73,15 +75,13 @@ function PhoneNumber(props) {
73
75
  handleChange === null || handleChange === void 0 ? void 0 : handleChange([countryCode, phoneNumber].filter(Boolean).join(' '));
74
76
  onNumberChange === null || onNumberChange === void 0 ? void 0 : onNumberChange(phoneNumber);
75
77
  }, [countryCode, emptyValue, handleChange, onNumberChange]);
76
- return React.createElement(FieldBlock, {
78
+ return React.createElement(FieldBlock, _extends({
77
79
  className: classnames('dnb-forms-field-phone-number', className),
78
80
  width: width !== 'stretch' ? width : undefined,
79
81
  info: info,
80
82
  warning: warning,
81
83
  error: error
82
- }, React.createElement(Flex.Container, {
83
- direction: "horizontal"
84
- }, React.createElement(Autocomplete, _extends({
84
+ }, pickSpacingProps(props)), React.createElement(Flex.Horizontal, null, React.createElement(Autocomplete, {
85
85
  className: classnames('dnb-forms-field-phone-number__country-code', countryCodeFieldClassName),
86
86
  placeholder: countryCodePlaceholder ?? ' ',
87
87
  label_direction: layout,
@@ -93,10 +93,9 @@ function PhoneNumber(props) {
93
93
  on_blur: handleBlur,
94
94
  on_change: handleCountryCodeChange,
95
95
  independent_width: true,
96
- search_numbers: true
97
- }, pickSpacingProps(props), {
96
+ search_numbers: true,
98
97
  stretch: width === 'stretch'
99
- })), React.createElement(StringComponent, {
98
+ }), React.createElement(StringComponent, {
100
99
  className: classnames('dnb-forms-field-phone-number__number', numberFieldClassName),
101
100
  type: "tel",
102
101
  emptyValue: "",
@@ -1 +1 @@
1
- {"version":3,"file":"PhoneNumber.js","names":["React","useMemo","useContext","useCallback","Autocomplete","Flex","classnames","countries","StringComponent","useDataValue","FieldBlock","pickSpacingProps","SharedContext","PhoneNumber","props","sharedContext","defaultProps","value","errorMessages","_objectSpread","required","translation","Forms","phoneNumberErrorRequired","preparedProps","className","countryCodeFieldClassName","numberFieldClassName","layout","countryCodePlaceholder","placeholder","countryCodeLabel","label","phoneNumberLabel","numberMask","emptyValue","info","warning","error","disabled","width","help","handleFocus","handleBlur","handleChange","onCountryCodeChange","onNumberChange","countryCode","phoneNumber","undefined","match","countryCodeData","map","country","selectedKey","code","selected_value","iso","content","name","handleCountryCodeChange","_ref","_data$selectedKey","data","trim","filter","Boolean","join","handleNumberChange","createElement","Container","direction","_extends","label_direction","on_focus","on_blur","on_change","independent_width","search_numbers","stretch","type","mask","onFocus","onBlur","onChange","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/PhoneNumber/PhoneNumber.tsx"],"sourcesContent":["import React, { useMemo, useContext, useCallback } from 'react'\nimport { Autocomplete, Flex } from '../../../../components'\nimport { InputMaskedProps } from '../../../../components/InputMasked'\nimport classnames from 'classnames'\nimport countries from '../../constants/countries'\nimport StringComponent from '../String'\nimport { useDataValue } from '../../hooks'\nimport FieldBlock from '../../FieldBlock'\nimport { FieldHelpProps, FieldProps } from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport SharedContext from '../../../../shared/Context'\n\nexport type Props = FieldHelpProps &\n FieldProps<string, undefined> & {\n countryCodeFieldClassName?: string\n numberFieldClassName?: string\n countryCodePlaceholder?: string\n countryCodeLabel?: string\n numberMask?: InputMaskedProps['mask']\n width?: 'large' | 'stretch'\n onCountryCodeChange?: (value: string | undefined) => void\n onNumberChange?: (value: string | undefined) => void\n }\n\nfunction PhoneNumber(props: Props) {\n const sharedContext = useContext(SharedContext)\n const defaultProps: Partial<Props> = {\n // Important for the default value to be defined here, and not after the useDataValue call, to avoid the UI jumping\n // back to +47 once the user empty the field so handleChange send out undefined.\n value: '+47',\n errorMessages: {\n required: sharedContext?.translation.Forms.phoneNumberErrorRequired,\n ...props?.errorMessages,\n },\n }\n const preparedProps: Props = {\n ...defaultProps,\n ...props,\n }\n\n const {\n className,\n countryCodeFieldClassName,\n numberFieldClassName,\n layout = 'vertical',\n countryCodePlaceholder,\n placeholder,\n countryCodeLabel,\n label = sharedContext?.translation.Forms.phoneNumberLabel,\n value,\n numberMask,\n emptyValue,\n info,\n warning,\n error,\n disabled,\n width = 'large',\n help,\n handleFocus,\n handleBlur,\n handleChange,\n onCountryCodeChange,\n onNumberChange,\n } = useDataValue(preparedProps)\n\n const [, countryCode, phoneNumber] =\n value !== undefined\n ? value.match(/^(\\+[^ ]+)? ?(.*)$/)\n : [undefined, '', '']\n\n const countryCodeData = useMemo(\n () =>\n countries.map((country) => ({\n selectedKey: `+${country.code}`,\n selected_value: `${country.iso} (+${country.code})`,\n content: `+${country.code} ${country.name}`,\n })),\n []\n )\n\n const handleCountryCodeChange = useCallback(\n ({ data }: { data: { selectedKey: string } }) => {\n const countryCode = data?.selectedKey?.trim() ?? emptyValue\n\n if (!countryCode && !phoneNumber) {\n handleChange?.(emptyValue)\n onCountryCodeChange?.(emptyValue)\n return\n }\n\n handleChange?.([countryCode, phoneNumber].filter(Boolean).join(' '))\n onCountryCodeChange?.(countryCode)\n },\n [phoneNumber, emptyValue, handleChange, onCountryCodeChange]\n )\n\n const handleNumberChange = useCallback(\n (phoneNumber: string) => {\n if (!countryCode && !phoneNumber) {\n handleChange?.(emptyValue)\n onNumberChange?.(emptyValue)\n return\n }\n\n handleChange?.([countryCode, phoneNumber].filter(Boolean).join(' '))\n onNumberChange?.(phoneNumber)\n },\n [countryCode, emptyValue, handleChange, onNumberChange]\n )\n\n return (\n <FieldBlock\n className={classnames('dnb-forms-field-phone-number', className)}\n width={width !== 'stretch' ? width : undefined}\n info={info}\n warning={warning}\n error={error}\n >\n <Flex.Container direction=\"horizontal\">\n <Autocomplete\n className={classnames(\n 'dnb-forms-field-phone-number__country-code',\n countryCodeFieldClassName\n )}\n placeholder={countryCodePlaceholder ?? ' '}\n label_direction={layout}\n label={\n countryCodeLabel ??\n sharedContext?.translation.Forms.countryCodeLabel\n }\n data={countryCodeData}\n value={countryCode}\n disabled={disabled}\n on_focus={handleFocus}\n on_blur={handleBlur}\n on_change={handleCountryCodeChange}\n independent_width\n search_numbers\n {...pickSpacingProps(props)}\n stretch={width === 'stretch'}\n />\n\n <StringComponent\n className={classnames(\n 'dnb-forms-field-phone-number__number',\n numberFieldClassName\n )}\n type=\"tel\"\n emptyValue=\"\"\n layout=\"vertical\"\n label={label ?? ' '}\n placeholder={placeholder ?? '00 00 00 00'}\n mask={\n numberMask ?? [\n /\\d/,\n /\\d/,\n ' ',\n /\\d/,\n /\\d/,\n ' ',\n /\\d/,\n /\\d/,\n ' ',\n /\\d/,\n /\\d/,\n ]\n }\n onFocus={handleFocus}\n onBlur={handleBlur}\n onChange={handleNumberChange}\n value={phoneNumber}\n info={info}\n warning={warning}\n error={error}\n disabled={disabled}\n width=\"stretch\"\n help={help}\n />\n </Flex.Container>\n </FieldBlock>\n )\n}\n\nPhoneNumber._supportsSpacingProps = true\nexport default PhoneNumber\n"],"mappings":";;;;AAAA,OAAOA,KAAK,IAAIC,OAAO,EAAEC,UAAU,EAAEC,WAAW,QAAQ,OAAO;AAC/D,SAASC,YAAY,EAAEC,IAAI,QAAQ,wBAAwB;AAE3D,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,SAAS,MAAM,2BAA2B;AACjD,OAAOC,eAAe,MAAM,WAAW;AACvC,SAASC,YAAY,QAAQ,aAAa;AAC1C,OAAOC,UAAU,MAAM,kBAAkB;AAEzC,SAASC,gBAAgB,QAAQ,mCAAmC;AACpE,OAAOC,aAAa,MAAM,4BAA4B;AActD,SAASC,WAAWA,CAACC,KAAY,EAAE;EACjC,MAAMC,aAAa,GAAGb,UAAU,CAACU,aAAa,CAAC;EAC/C,MAAMI,YAA4B,GAAG;IAGnCC,KAAK,EAAE,KAAK;IACZC,aAAa,EAAAC,aAAA;MACXC,QAAQ,EAAEL,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEM,WAAW,CAACC,KAAK,CAACC;IAAwB,GAChET,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEI,aAAa;EAE3B,CAAC;EACD,MAAMM,aAAoB,GAAAL,aAAA,CAAAA,aAAA,KACrBH,YAAY,GACZF,KAAK,CACT;EAED,MAAM;IACJW,SAAS;IACTC,yBAAyB;IACzBC,oBAAoB;IACpBC,MAAM,GAAG,UAAU;IACnBC,sBAAsB;IACtBC,WAAW;IACXC,gBAAgB;IAChBC,KAAK,GAAGjB,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEM,WAAW,CAACC,KAAK,CAACW,gBAAgB;IACzDhB,KAAK;IACLiB,UAAU;IACVC,UAAU;IACVC,IAAI;IACJC,OAAO;IACPC,KAAK;IACLC,QAAQ;IACRC,KAAK,GAAG,OAAO;IACfC,IAAI;IACJC,WAAW;IACXC,UAAU;IACVC,YAAY;IACZC,mBAAmB;IACnBC;EACF,CAAC,GAAGrC,YAAY,CAACe,aAAa,CAAC;EAE/B,MAAM,GAAGuB,WAAW,EAAEC,WAAW,CAAC,GAChC/B,KAAK,KAAKgC,SAAS,GACfhC,KAAK,CAACiC,KAAK,CAAC,oBAAoB,CAAC,GACjC,CAACD,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC;EAEzB,MAAME,eAAe,GAAGlD,OAAO,CAC7B,MACEM,SAAS,CAAC6C,GAAG,CAAEC,OAAO,KAAM;IAC1BC,WAAW,EAAG,IAAGD,OAAO,CAACE,IAAK,EAAC;IAC/BC,cAAc,EAAG,GAAEH,OAAO,CAACI,GAAI,MAAKJ,OAAO,CAACE,IAAK,GAAE;IACnDG,OAAO,EAAG,IAAGL,OAAO,CAACE,IAAK,IAAGF,OAAO,CAACM,IAAK;EAC5C,CAAC,CAAC,CAAC,EACL,EACF,CAAC;EAED,MAAMC,uBAAuB,GAAGzD,WAAW,CACzC0D,IAAA,IAAiD;IAAA,IAAAC,iBAAA;IAAA,IAAhD;MAAEC;IAAwC,CAAC,GAAAF,IAAA;IAC1C,MAAMd,WAAW,GAAG,CAAAgB,IAAI,aAAJA,IAAI,wBAAAD,iBAAA,GAAJC,IAAI,CAAET,WAAW,cAAAQ,iBAAA,uBAAjBA,iBAAA,CAAmBE,IAAI,CAAC,CAAC,KAAI7B,UAAU;IAE3D,IAAI,CAACY,WAAW,IAAI,CAACC,WAAW,EAAE;MAChCJ,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAGT,UAAU,CAAC;MAC1BU,mBAAmB,aAAnBA,mBAAmB,uBAAnBA,mBAAmB,CAAGV,UAAU,CAAC;MACjC;IACF;IAEAS,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAG,CAACG,WAAW,EAAEC,WAAW,CAAC,CAACiB,MAAM,CAACC,OAAO,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpEtB,mBAAmB,aAAnBA,mBAAmB,uBAAnBA,mBAAmB,CAAGE,WAAW,CAAC;EACpC,CAAC,EACD,CAACC,WAAW,EAAEb,UAAU,EAAES,YAAY,EAAEC,mBAAmB,CAC7D,CAAC;EAED,MAAMuB,kBAAkB,GAAGjE,WAAW,CACnC6C,WAAmB,IAAK;IACvB,IAAI,CAACD,WAAW,IAAI,CAACC,WAAW,EAAE;MAChCJ,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAGT,UAAU,CAAC;MAC1BW,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAGX,UAAU,CAAC;MAC5B;IACF;IAEAS,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAG,CAACG,WAAW,EAAEC,WAAW,CAAC,CAACiB,MAAM,CAACC,OAAO,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpErB,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAGE,WAAW,CAAC;EAC/B,CAAC,EACD,CAACD,WAAW,EAAEZ,UAAU,EAAES,YAAY,EAAEE,cAAc,CACxD,CAAC;EAED,OACE9C,KAAA,CAAAqE,aAAA,CAAC3D,UAAU;IACTe,SAAS,EAAEnB,UAAU,CAAC,8BAA8B,EAAEmB,SAAS,CAAE;IACjEe,KAAK,EAAEA,KAAK,KAAK,SAAS,GAAGA,KAAK,GAAGS,SAAU;IAC/Cb,IAAI,EAAEA,IAAK;IACXC,OAAO,EAAEA,OAAQ;IACjBC,KAAK,EAAEA;EAAM,GAEbtC,KAAA,CAAAqE,aAAA,CAAChE,IAAI,CAACiE,SAAS;IAACC,SAAS,EAAC;EAAY,GACpCvE,KAAA,CAAAqE,aAAA,CAACjE,YAAY,EAAAoE,QAAA;IACX/C,SAAS,EAAEnB,UAAU,CACnB,4CAA4C,EAC5CoB,yBACF,CAAE;IACFI,WAAW,EAAED,sBAAsB,IAAI,GAAI;IAC3C4C,eAAe,EAAE7C,MAAO;IACxBI,KAAK,EACHD,gBAAgB,KAChBhB,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEM,WAAW,CAACC,KAAK,CAACS,gBAAgB,CAClD;IACDgC,IAAI,EAAEZ,eAAgB;IACtBlC,KAAK,EAAE8B,WAAY;IACnBR,QAAQ,EAAEA,QAAS;IACnBmC,QAAQ,EAAEhC,WAAY;IACtBiC,OAAO,EAAEhC,UAAW;IACpBiC,SAAS,EAAEhB,uBAAwB;IACnCiB,iBAAiB;IACjBC,cAAc;EAAA,GACVnE,gBAAgB,CAACG,KAAK,CAAC;IAC3BiE,OAAO,EAAEvC,KAAK,KAAK;EAAU,EAC9B,CAAC,EAEFxC,KAAA,CAAAqE,aAAA,CAAC7D,eAAe;IACdiB,SAAS,EAAEnB,UAAU,CACnB,sCAAsC,EACtCqB,oBACF,CAAE;IACFqD,IAAI,EAAC,KAAK;IACV7C,UAAU,EAAC,EAAE;IACbP,MAAM,EAAC,UAAU;IACjBI,KAAK,EAAEA,KAAK,IAAI,GAAI;IACpBF,WAAW,EAAEA,WAAW,IAAI,aAAc;IAC1CmD,IAAI,EACF/C,UAAU,IAAI,CACZ,IAAI,EACJ,IAAI,EACJ,GAAG,EACH,IAAI,EACJ,IAAI,EACJ,GAAG,EACH,IAAI,EACJ,IAAI,EACJ,GAAG,EACH,IAAI,EACJ,IAAI,CAEP;IACDgD,OAAO,EAAExC,WAAY;IACrByC,MAAM,EAAExC,UAAW;IACnByC,QAAQ,EAAEhB,kBAAmB;IAC7BnD,KAAK,EAAE+B,WAAY;IACnBZ,IAAI,EAAEA,IAAK;IACXC,OAAO,EAAEA,OAAQ;IACjBC,KAAK,EAAEA,KAAM;IACbC,QAAQ,EAAEA,QAAS;IACnBC,KAAK,EAAC,SAAS;IACfC,IAAI,EAAEA;EAAK,CACZ,CACa,CACN,CAAC;AAEjB;AAEA5B,WAAW,CAACwE,qBAAqB,GAAG,IAAI;AACxC,eAAexE,WAAW"}
1
+ {"version":3,"file":"PhoneNumber.js","names":["React","useMemo","useContext","useCallback","Autocomplete","Flex","classnames","countries","StringComponent","useDataValue","FieldBlock","pickSpacingProps","SharedContext","PhoneNumber","props","_sharedContext$locale","sharedContext","defaultProps","value","errorMessages","_objectSpread","required","translation","Forms","phoneNumberErrorRequired","preparedProps","className","countryCodeFieldClassName","numberFieldClassName","layout","countryCodePlaceholder","placeholder","countryCodeLabel","label","phoneNumberLabel","numberMask","emptyValue","info","warning","error","disabled","width","help","handleFocus","handleBlur","handleChange","onCountryCodeChange","onNumberChange","countryCode","phoneNumber","undefined","match","lang","locale","split","countryCodeData","map","country","selectedKey","cdc","selected_value","iso","content","i18n","en","handleCountryCodeChange","_ref","_data$selectedKey","data","trim","filter","Boolean","join","handleNumberChange","createElement","_extends","Horizontal","label_direction","on_focus","on_blur","on_change","independent_width","search_numbers","stretch","type","mask","onFocus","onBlur","onChange","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/PhoneNumber/PhoneNumber.tsx"],"sourcesContent":["import React, { useMemo, useContext, useCallback } from 'react'\nimport { Autocomplete, Flex } from '../../../../components'\nimport { InputMaskedProps } from '../../../../components/InputMasked'\nimport classnames from 'classnames'\nimport countries from '../../constants/countries'\nimport StringComponent from '../String'\nimport { useDataValue } from '../../hooks'\nimport FieldBlock from '../../FieldBlock'\nimport { FieldHelpProps, FieldProps } from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport SharedContext from '../../../../shared/Context'\n\nexport type Props = FieldHelpProps &\n FieldProps<string, undefined> & {\n countryCodeFieldClassName?: string\n numberFieldClassName?: string\n countryCodePlaceholder?: string\n countryCodeLabel?: string\n numberMask?: InputMaskedProps['mask']\n width?: 'large' | 'stretch'\n onCountryCodeChange?: (value: string | undefined) => void\n onNumberChange?: (value: string | undefined) => void\n }\n\nfunction PhoneNumber(props: Props) {\n const sharedContext = useContext(SharedContext)\n const defaultProps: Partial<Props> = {\n // Important for the default value to be defined here, and not after the useDataValue call, to avoid the UI jumping\n // back to +47 once the user empty the field so handleChange send out undefined.\n value: '+47',\n errorMessages: {\n required: sharedContext?.translation.Forms.phoneNumberErrorRequired,\n ...props?.errorMessages,\n },\n }\n const preparedProps: Props = {\n ...defaultProps,\n ...props,\n }\n\n const {\n className,\n countryCodeFieldClassName,\n numberFieldClassName,\n layout = 'vertical',\n countryCodePlaceholder,\n placeholder,\n countryCodeLabel,\n label = sharedContext?.translation.Forms.phoneNumberLabel,\n value,\n numberMask,\n emptyValue,\n info,\n warning,\n error,\n disabled,\n width = 'large',\n help,\n handleFocus,\n handleBlur,\n handleChange,\n onCountryCodeChange,\n onNumberChange,\n } = useDataValue(preparedProps)\n\n const [, countryCode, phoneNumber] =\n value !== undefined\n ? value.match(/^(\\+[^ ]+)? ?(.*)$/)\n : [undefined, '', '']\n\n const lang = sharedContext.locale?.split('-')[0]\n const countryCodeData = useMemo(\n () =>\n countries.map((country) => ({\n selectedKey: `+${country.cdc}`,\n selected_value: `${country.iso} (+${country.cdc})`,\n content: `+${country.cdc} ${\n country.i18n[lang] ?? country.i18n.en\n }`,\n })),\n [sharedContext.locale]\n )\n\n const handleCountryCodeChange = useCallback(\n ({ data }: { data: { selectedKey: string } }) => {\n const countryCode = data?.selectedKey?.trim() ?? emptyValue\n\n if (!countryCode && !phoneNumber) {\n handleChange?.(emptyValue)\n onCountryCodeChange?.(emptyValue)\n return\n }\n\n handleChange?.([countryCode, phoneNumber].filter(Boolean).join(' '))\n onCountryCodeChange?.(countryCode)\n },\n [phoneNumber, emptyValue, handleChange, onCountryCodeChange]\n )\n\n const handleNumberChange = useCallback(\n (phoneNumber: string) => {\n if (!countryCode && !phoneNumber) {\n handleChange?.(emptyValue)\n onNumberChange?.(emptyValue)\n return\n }\n\n handleChange?.([countryCode, phoneNumber].filter(Boolean).join(' '))\n onNumberChange?.(phoneNumber)\n },\n [countryCode, emptyValue, handleChange, onNumberChange]\n )\n\n return (\n <FieldBlock\n className={classnames('dnb-forms-field-phone-number', className)}\n width={width !== 'stretch' ? width : undefined}\n info={info}\n warning={warning}\n error={error}\n {...pickSpacingProps(props)}\n >\n <Flex.Horizontal>\n <Autocomplete\n className={classnames(\n 'dnb-forms-field-phone-number__country-code',\n countryCodeFieldClassName\n )}\n placeholder={countryCodePlaceholder ?? ' '}\n label_direction={layout}\n label={\n countryCodeLabel ??\n sharedContext?.translation.Forms.countryCodeLabel\n }\n data={countryCodeData}\n value={countryCode}\n disabled={disabled}\n on_focus={handleFocus}\n on_blur={handleBlur}\n on_change={handleCountryCodeChange}\n independent_width\n search_numbers\n stretch={width === 'stretch'}\n />\n\n <StringComponent\n className={classnames(\n 'dnb-forms-field-phone-number__number',\n numberFieldClassName\n )}\n type=\"tel\"\n emptyValue=\"\"\n layout=\"vertical\"\n label={label ?? ' '}\n placeholder={placeholder ?? '00 00 00 00'}\n mask={\n numberMask ?? [\n /\\d/,\n /\\d/,\n ' ',\n /\\d/,\n /\\d/,\n ' ',\n /\\d/,\n /\\d/,\n ' ',\n /\\d/,\n /\\d/,\n ]\n }\n onFocus={handleFocus}\n onBlur={handleBlur}\n onChange={handleNumberChange}\n value={phoneNumber}\n info={info}\n warning={warning}\n error={error}\n disabled={disabled}\n width=\"stretch\"\n help={help}\n />\n </Flex.Horizontal>\n </FieldBlock>\n )\n}\n\nPhoneNumber._supportsSpacingProps = true\nexport default PhoneNumber\n"],"mappings":"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"}
@@ -1,12 +1,13 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
2
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3
3
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
- import React, { useContext } from 'react';
4
+ import React, { useContext, useMemo } from 'react';
5
5
  import Selection from '../Selection';
6
6
  import Option from '../Option';
7
7
  import countries from '../../constants/countries';
8
8
  import SharedContext from '../../../../shared/Context';
9
9
  function SelectCountry(props) {
10
+ var _sharedContext$locale;
10
11
  const sharedContext = useContext(SharedContext);
11
12
  const selectComponentProps = _objectSpread(_objectSpread({}, props), {}, {
12
13
  placeholder: props.placeholder ?? (sharedContext === null || sharedContext === void 0 ? void 0 : sharedContext.translation.Forms.selectCountryPlaceholder),
@@ -15,11 +16,13 @@ function SelectCountry(props) {
15
16
  required: sharedContext === null || sharedContext === void 0 ? void 0 : sharedContext.translation.Forms.selectCountryErrorRequired
16
17
  }, props.errorMessages)
17
18
  });
18
- return React.createElement(Selection, selectComponentProps, countries.map(country => React.createElement(Option, {
19
+ const lang = (_sharedContext$locale = sharedContext.locale) === null || _sharedContext$locale === void 0 ? void 0 : _sharedContext$locale.split('-')[0];
20
+ const countryOptions = useMemo(() => countries.map(country => React.createElement(Option, {
19
21
  key: country.iso,
20
22
  value: country.iso,
21
- title: country.name
22
- })));
23
+ title: country.i18n[lang] ?? country.i18n.en
24
+ })), [sharedContext.locale]);
25
+ return React.createElement(Selection, selectComponentProps, countryOptions);
23
26
  }
24
27
  SelectCountry._supportsSpacingProps = true;
25
28
  export default SelectCountry;
@@ -1 +1 @@
1
- {"version":3,"file":"SelectCountry.js","names":["React","useContext","Selection","Option","countries","SharedContext","SelectCountry","props","sharedContext","selectComponentProps","_objectSpread","placeholder","translation","Forms","selectCountryPlaceholder","label","selectCountryLabel","errorMessages","required","selectCountryErrorRequired","createElement","map","country","key","iso","value","title","name","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/SelectCountry/SelectCountry.tsx"],"sourcesContent":["import React, { useContext } from 'react'\nimport Selection, { Props as SelectionProps } from '../Selection'\nimport Option from '../Option'\nimport countries from '../../constants/countries'\nimport SharedContext from '../../../../shared/Context'\n\nexport type Props = SelectionProps\n\nfunction SelectCountry(props: Props) {\n const sharedContext = useContext(SharedContext)\n\n const selectComponentProps: Props = {\n ...props,\n placeholder:\n props.placeholder ??\n sharedContext?.translation.Forms.selectCountryPlaceholder,\n label:\n props.label ?? sharedContext?.translation.Forms.selectCountryLabel,\n errorMessages: {\n required:\n sharedContext?.translation.Forms.selectCountryErrorRequired,\n ...props.errorMessages,\n },\n }\n\n return (\n <Selection {...selectComponentProps}>\n {countries.map((country) => (\n <Option\n key={country.iso}\n value={country.iso}\n title={country.name}\n />\n ))}\n </Selection>\n )\n}\n\nSelectCountry._supportsSpacingProps = true\nexport default SelectCountry\n"],"mappings":";;;AAAA,OAAOA,KAAK,IAAIC,UAAU,QAAQ,OAAO;AACzC,OAAOC,SAAS,MAAmC,cAAc;AACjE,OAAOC,MAAM,MAAM,WAAW;AAC9B,OAAOC,SAAS,MAAM,2BAA2B;AACjD,OAAOC,aAAa,MAAM,4BAA4B;AAItD,SAASC,aAAaA,CAACC,KAAY,EAAE;EACnC,MAAMC,aAAa,GAAGP,UAAU,CAACI,aAAa,CAAC;EAE/C,MAAMI,oBAA2B,GAAAC,aAAA,CAAAA,aAAA,KAC5BH,KAAK;IACRI,WAAW,EACTJ,KAAK,CAACI,WAAW,KACjBH,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEI,WAAW,CAACC,KAAK,CAACC,wBAAwB;IAC3DC,KAAK,EACHR,KAAK,CAACQ,KAAK,KAAIP,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEI,WAAW,CAACC,KAAK,CAACG,kBAAkB;IACpEC,aAAa,EAAAP,aAAA;MACXQ,QAAQ,EACNV,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEI,WAAW,CAACC,KAAK,CAACM;IAA0B,GAC1DZ,KAAK,CAACU,aAAa;EACvB,EACF;EAED,OACEjB,KAAA,CAAAoB,aAAA,CAAClB,SAAS,EAAKO,oBAAoB,EAChCL,SAAS,CAACiB,GAAG,CAAEC,OAAO,IACrBtB,KAAA,CAAAoB,aAAA,CAACjB,MAAM;IACLoB,GAAG,EAAED,OAAO,CAACE,GAAI;IACjBC,KAAK,EAAEH,OAAO,CAACE,GAAI;IACnBE,KAAK,EAAEJ,OAAO,CAACK;EAAK,CACrB,CACF,CACQ,CAAC;AAEhB;AAEArB,aAAa,CAACsB,qBAAqB,GAAG,IAAI;AAC1C,eAAetB,aAAa"}
1
+ {"version":3,"file":"SelectCountry.js","names":["React","useContext","useMemo","Selection","Option","countries","SharedContext","SelectCountry","props","_sharedContext$locale","sharedContext","selectComponentProps","_objectSpread","placeholder","translation","Forms","selectCountryPlaceholder","label","selectCountryLabel","errorMessages","required","selectCountryErrorRequired","lang","locale","split","countryOptions","map","country","createElement","key","iso","value","title","i18n","en","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/SelectCountry/SelectCountry.tsx"],"sourcesContent":["import React, { useContext, useMemo } from 'react'\nimport Selection, { Props as SelectionProps } from '../Selection'\nimport Option from '../Option'\nimport countries from '../../constants/countries'\nimport SharedContext from '../../../../shared/Context'\n\nexport type Props = SelectionProps\n\nfunction SelectCountry(props: Props) {\n const sharedContext = useContext(SharedContext)\n\n const selectComponentProps: Props = {\n ...props,\n placeholder:\n props.placeholder ??\n sharedContext?.translation.Forms.selectCountryPlaceholder,\n label:\n props.label ?? sharedContext?.translation.Forms.selectCountryLabel,\n errorMessages: {\n required:\n sharedContext?.translation.Forms.selectCountryErrorRequired,\n ...props.errorMessages,\n },\n }\n\n const lang = sharedContext.locale?.split('-')[0]\n const countryOptions = useMemo(\n () =>\n countries.map((country) => (\n <Option\n key={country.iso}\n value={country.iso}\n title={country.i18n[lang] ?? country.i18n.en}\n />\n )),\n [sharedContext.locale]\n )\n\n return <Selection {...selectComponentProps}>{countryOptions}</Selection>\n}\n\nSelectCountry._supportsSpacingProps = true\nexport default SelectCountry\n"],"mappings":";;;AAAA,OAAOA,KAAK,IAAIC,UAAU,EAAEC,OAAO,QAAQ,OAAO;AAClD,OAAOC,SAAS,MAAmC,cAAc;AACjE,OAAOC,MAAM,MAAM,WAAW;AAC9B,OAAOC,SAAS,MAAM,2BAA2B;AACjD,OAAOC,aAAa,MAAM,4BAA4B;AAItD,SAASC,aAAaA,CAACC,KAAY,EAAE;EAAA,IAAAC,qBAAA;EACnC,MAAMC,aAAa,GAAGT,UAAU,CAACK,aAAa,CAAC;EAE/C,MAAMK,oBAA2B,GAAAC,aAAA,CAAAA,aAAA,KAC5BJ,KAAK;IACRK,WAAW,EACTL,KAAK,CAACK,WAAW,KACjBH,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEI,WAAW,CAACC,KAAK,CAACC,wBAAwB;IAC3DC,KAAK,EACHT,KAAK,CAACS,KAAK,KAAIP,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEI,WAAW,CAACC,KAAK,CAACG,kBAAkB;IACpEC,aAAa,EAAAP,aAAA;MACXQ,QAAQ,EACNV,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEI,WAAW,CAACC,KAAK,CAACM;IAA0B,GAC1Db,KAAK,CAACW,aAAa;EACvB,EACF;EAED,MAAMG,IAAI,IAAAb,qBAAA,GAAGC,aAAa,CAACa,MAAM,cAAAd,qBAAA,uBAApBA,qBAAA,CAAsBe,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAChD,MAAMC,cAAc,GAAGvB,OAAO,CAC5B,MACEG,SAAS,CAACqB,GAAG,CAAEC,OAAO,IACpB3B,KAAA,CAAA4B,aAAA,CAACxB,MAAM;IACLyB,GAAG,EAAEF,OAAO,CAACG,GAAI;IACjBC,KAAK,EAAEJ,OAAO,CAACG,GAAI;IACnBE,KAAK,EAAEL,OAAO,CAACM,IAAI,CAACX,IAAI,CAAC,IAAIK,OAAO,CAACM,IAAI,CAACC;EAAG,CAC9C,CACF,CAAC,EACJ,CAACxB,aAAa,CAACa,MAAM,CACvB,CAAC;EAED,OAAOvB,KAAA,CAAA4B,aAAA,CAACzB,SAAS,EAAKQ,oBAAoB,EAAGc,cAA0B,CAAC;AAC1E;AAEAlB,aAAa,CAAC4B,qBAAqB,GAAG,IAAI;AAC1C,eAAe5B,aAAa"}
@@ -4,7 +4,7 @@ var _em;
4
4
  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; }
5
5
  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; }
6
6
  import React, { useMemo, useContext, useCallback } from 'react';
7
- import { Button, Dropdown, Radio, HelpButton } from '../../../../components';
7
+ import { ToggleButton, Dropdown, Radio, HelpButton } from '../../../../components';
8
8
  import ButtonRow from '../../Form/ButtonRow';
9
9
  import FieldBlock from '../../FieldBlock';
10
10
  import classnames from 'classnames';
@@ -14,6 +14,7 @@ import Option from '../Option';
14
14
  import { useDataValue } from '../../hooks';
15
15
  import { FormError } from '../../types';
16
16
  import { pickSpacingProps } from '../../../../components/flex/utils';
17
+ import ToggleButtonGroupContext from '../../../../components/toggle-button/ToggleButtonGroupContext';
17
18
  function Selection(props) {
18
19
  const sharedContext = useContext(SharedContext);
19
20
  const clearValue = useMemo(() => `clear-option-${makeUniqueId()}`, []);
@@ -102,15 +103,17 @@ function Selection(props) {
102
103
  value: String(option.value ?? '')
103
104
  })));
104
105
  case 'button':
105
- return React.createElement(FieldBlock, fieldBlockProps, React.createElement(ButtonRow, null, options.map((option, i) => React.createElement(Button, {
106
+ return React.createElement(FieldBlock, fieldBlockProps, React.createElement(ButtonRow, null, React.createElement(ToggleButtonGroupContext.Provider, {
107
+ value: {
108
+ status: error ? 'error' : undefined,
109
+ disabled
110
+ }
111
+ }, options.map((option, i) => React.createElement(ToggleButton, {
106
112
  key: `option-${i}-${option.value}`,
107
- id: id,
108
113
  text: option.title,
109
- on_click: option.handleSelect,
110
- variant: option.value === value ? undefined : 'secondary',
111
- status: error ? 'error' : undefined,
112
- disabled: disabled
113
- }))));
114
+ on_change: option.handleSelect,
115
+ checked: option.value === value
116
+ })))));
114
117
  case 'dropdown':
115
118
  {
116
119
  const optionsData = React.Children.map(children, child => {
@@ -1 +1 @@
1
- {"version":3,"file":"Selection.js","names":["React","useMemo","useContext","useCallback","Button","Dropdown","Radio","HelpButton","ButtonRow","FieldBlock","classnames","makeUniqueId","SharedContext","Option","useDataValue","FormError","pickSpacingProps","Selection","props","sharedContext","clearValue","id","className","variant","clear","label","labelDescription","labelSecondary","layout","optionsLayout","placeholder","value","info","warning","error","disabled","help","emptyValue","width","setHasFocus","handleChange","children","handleDropdownChange","_ref","data","selectedKey","handleRadioChange","_ref2","undefined","handleShow","_ref3","handleHide","_ref4","cn","fieldBlockProps","_objectSpread","forId","options","Children","toArray","filter","child","isValidElement","type","map","option","title","handleSelect","selected","createElement","Group","_extends","layout_direction","vertical","on_change","String","i","key","text","on_click","status","optionsData","content","_em","translation","Forms","selectionClearSelected","Boolean","list_class","portal_class","label_direction","message","Error","toString","suffix","contents","on_show","on_hide","stretch","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Selection/Selection.tsx"],"sourcesContent":["import React, { useMemo, useContext, useCallback } from 'react'\nimport {\n Button,\n Dropdown,\n Radio,\n HelpButton,\n} from '../../../../components'\nimport ButtonRow from '../../Form/ButtonRow'\nimport FieldBlock from '../../FieldBlock'\nimport classnames from 'classnames'\nimport { makeUniqueId } from '../../../../shared/component-helper'\nimport SharedContext from '../../../../shared/Context'\nimport Option from '../Option'\nimport { useDataValue } from '../../hooks'\nimport { FormError, FieldProps, FieldHelpProps } from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\n\ninterface IOption {\n title: string | React.ReactNode\n value: number | string\n handleSelect: () => void\n}\n\nexport type Props = FieldHelpProps &\n FieldProps<string | number> & {\n children?: React.ReactNode\n variant?: 'dropdown' | 'radio' | 'button'\n clear?: boolean\n optionsLayout?: 'horizontal' | 'vertical'\n width?: 'small' | 'medium' | 'large' | 'stretch'\n }\n\nfunction Selection(props: Props) {\n const sharedContext = useContext(SharedContext)\n const clearValue = useMemo(() => `clear-option-${makeUniqueId()}`, [])\n\n const {\n id,\n className,\n variant = 'dropdown',\n clear,\n label,\n labelDescription,\n labelSecondary,\n layout = 'vertical',\n optionsLayout = 'vertical',\n placeholder,\n value,\n info,\n warning,\n error,\n disabled,\n help,\n emptyValue,\n width = 'large',\n setHasFocus,\n handleChange,\n children,\n } = useDataValue(props)\n\n const handleDropdownChange = useCallback(\n ({ data: { selectedKey } }) => {\n handleChange?.(\n !selectedKey || selectedKey === clearValue\n ? emptyValue\n : selectedKey\n )\n },\n [handleChange, emptyValue, clearValue]\n )\n\n const handleRadioChange = useCallback(\n ({ value }) => {\n handleChange?.(value === undefined ? emptyValue : value)\n },\n [handleChange, emptyValue]\n )\n\n // Specific handleShow and handleHide because Dropdown preserve the initially received callbacks, so changes\n // due to `useCallback` usage will have no effect, leading to useDataValues handleFocus and handleBlur sending out old\n // copies of value as arguments.\n const handleShow = useCallback(\n ({ data }) => {\n setHasFocus(true, data?.selectedKey)\n },\n [setHasFocus]\n )\n\n const handleHide = useCallback(\n ({ data }) => {\n setHasFocus(false, data?.selectedKey)\n },\n [setHasFocus]\n )\n\n const cn = classnames('dnb-forms-field-selection', className)\n\n const fieldBlockProps = {\n forId: id,\n className: cn,\n ...pickSpacingProps(props),\n info,\n warning,\n error,\n layout,\n label,\n labelDescription,\n labelSecondary,\n }\n\n const options: IOption[] = useMemo(\n () =>\n React.Children.toArray(children)\n .filter(\n (child) => React.isValidElement(child) && child.type === Option\n )\n .map((option: React.ReactElement) => ({\n title: option.props.title ?? option.props.children,\n value: option.props.value,\n handleSelect: () => {\n const selected = option.props.value\n\n handleChange?.(selected === value ? emptyValue : selected)\n },\n })),\n [children, value, emptyValue, handleChange]\n )\n\n switch (variant) {\n case 'radio':\n return (\n <Radio.Group\n className={cn}\n label={label}\n layout_direction={\n optionsLayout === 'horizontal' ? 'row' : 'column'\n }\n vertical={layout === 'vertical'}\n on_change={handleRadioChange}\n value={String(value ?? '')}\n {...pickSpacingProps(props)}\n >\n {options.map((option, i) => (\n <Radio\n key={`option-${i}-${option.value}`}\n label={option.title}\n value={String(option.value ?? '')}\n />\n ))}\n </Radio.Group>\n )\n case 'button':\n return (\n <FieldBlock {...fieldBlockProps}>\n <ButtonRow>\n {options.map((option, i) => (\n <Button\n key={`option-${i}-${option.value}`}\n id={id}\n text={option.title}\n on_click={option.handleSelect}\n variant={option.value === value ? undefined : 'secondary'}\n status={error ? 'error' : undefined}\n disabled={disabled}\n />\n ))}\n </ButtonRow>\n </FieldBlock>\n )\n case 'dropdown': {\n const optionsData = React.Children.map(children, (child) => {\n if (React.isValidElement(child) && child.type === Option) {\n // Option components\n return child.props.text\n ? {\n selectedKey: String(child.props.value ?? ''),\n content: [\n child.props.children ?? child.props.title ?? (\n <em>Untitled</em>\n ),\n child.props.text,\n ],\n }\n : {\n selectedKey: child.props.value,\n content: child.props.children ?? child.props.title,\n }\n }\n\n // For other children, just show them as content\n return {\n content: child,\n }\n })\n const data = [\n clear\n ? {\n selectedKey: clearValue,\n content: (\n <em>\n {sharedContext?.translation.Forms.selectionClearSelected}\n </em>\n ),\n }\n : undefined,\n ...(optionsData ?? []),\n ].filter(Boolean)\n\n return (\n <Dropdown\n className={classnames(\n 'dnb-forms-field-selection',\n width !== 'stretch' &&\n `dnb-forms-field-selection--width-${width}`,\n className\n )}\n list_class=\"dnb-forms-field-selection__list\"\n portal_class=\"dnb-forms-field-selection__portal\"\n title={placeholder}\n value={String(value ?? '')}\n label={label}\n label_direction={layout}\n status={\n error?.message ??\n ((warning instanceof Error && warning.message) ||\n (warning instanceof FormError && warning.message) ||\n warning?.toString() ||\n (info instanceof Error && info.message) ||\n (info instanceof FormError && info.message) ||\n info?.toString())\n }\n disabled={disabled}\n data={data}\n suffix={\n help ? (\n <HelpButton title={help.title}>{help.contents}</HelpButton>\n ) : undefined\n }\n on_change={handleDropdownChange}\n on_show={handleShow}\n on_hide={handleHide}\n {...pickSpacingProps(props)}\n stretch={width === 'stretch'}\n />\n )\n }\n }\n}\n\nSelection._supportsSpacingProps = true\nexport default Selection\n"],"mappings":"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"}
1
+ {"version":3,"file":"Selection.js","names":["React","useMemo","useContext","useCallback","ToggleButton","Dropdown","Radio","HelpButton","ButtonRow","FieldBlock","classnames","makeUniqueId","SharedContext","Option","useDataValue","FormError","pickSpacingProps","ToggleButtonGroupContext","Selection","props","sharedContext","clearValue","id","className","variant","clear","label","labelDescription","labelSecondary","layout","optionsLayout","placeholder","value","info","warning","error","disabled","help","emptyValue","width","setHasFocus","handleChange","children","handleDropdownChange","_ref","data","selectedKey","handleRadioChange","_ref2","undefined","handleShow","_ref3","handleHide","_ref4","cn","fieldBlockProps","_objectSpread","forId","options","Children","toArray","filter","child","isValidElement","type","map","option","title","handleSelect","selected","createElement","Group","_extends","layout_direction","vertical","on_change","String","i","key","Provider","status","text","checked","optionsData","content","_em","translation","Forms","selectionClearSelected","Boolean","list_class","portal_class","label_direction","message","Error","toString","suffix","contents","on_show","on_hide","stretch","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Selection/Selection.tsx"],"sourcesContent":["import React, { useMemo, useContext, useCallback } from 'react'\nimport {\n ToggleButton,\n Dropdown,\n Radio,\n HelpButton,\n} from '../../../../components'\nimport ButtonRow from '../../Form/ButtonRow'\nimport FieldBlock from '../../FieldBlock'\nimport classnames from 'classnames'\nimport { makeUniqueId } from '../../../../shared/component-helper'\nimport SharedContext from '../../../../shared/Context'\nimport Option from '../Option'\nimport { useDataValue } from '../../hooks'\nimport { FormError, FieldProps, FieldHelpProps } from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport ToggleButtonGroupContext from '../../../../components/toggle-button/ToggleButtonGroupContext'\n\ninterface IOption {\n title: string | React.ReactNode\n value: number | string\n handleSelect: () => void\n}\n\nexport type Props = FieldHelpProps &\n FieldProps<string | number> & {\n children?: React.ReactNode\n variant?: 'dropdown' | 'radio' | 'button'\n clear?: boolean\n optionsLayout?: 'horizontal' | 'vertical'\n width?: 'small' | 'medium' | 'large' | 'stretch'\n }\n\nfunction Selection(props: Props) {\n const sharedContext = useContext(SharedContext)\n const clearValue = useMemo(() => `clear-option-${makeUniqueId()}`, [])\n\n const {\n id,\n className,\n variant = 'dropdown',\n clear,\n label,\n labelDescription,\n labelSecondary,\n layout = 'vertical',\n optionsLayout = 'vertical',\n placeholder,\n value,\n info,\n warning,\n error,\n disabled,\n help,\n emptyValue,\n width = 'large',\n setHasFocus,\n handleChange,\n children,\n } = useDataValue(props)\n\n const handleDropdownChange = useCallback(\n ({ data: { selectedKey } }) => {\n handleChange?.(\n !selectedKey || selectedKey === clearValue\n ? emptyValue\n : selectedKey\n )\n },\n [handleChange, emptyValue, clearValue]\n )\n\n const handleRadioChange = useCallback(\n ({ value }) => {\n handleChange?.(value === undefined ? emptyValue : value)\n },\n [handleChange, emptyValue]\n )\n\n // Specific handleShow and handleHide because Dropdown preserve the initially received callbacks, so changes\n // due to `useCallback` usage will have no effect, leading to useDataValues handleFocus and handleBlur sending out old\n // copies of value as arguments.\n const handleShow = useCallback(\n ({ data }) => {\n setHasFocus(true, data?.selectedKey)\n },\n [setHasFocus]\n )\n\n const handleHide = useCallback(\n ({ data }) => {\n setHasFocus(false, data?.selectedKey)\n },\n [setHasFocus]\n )\n\n const cn = classnames('dnb-forms-field-selection', className)\n\n const fieldBlockProps = {\n forId: id,\n className: cn,\n ...pickSpacingProps(props),\n info,\n warning,\n error,\n layout,\n label,\n labelDescription,\n labelSecondary,\n }\n\n const options: IOption[] = useMemo(\n () =>\n React.Children.toArray(children)\n .filter(\n (child) => React.isValidElement(child) && child.type === Option\n )\n .map((option: React.ReactElement) => ({\n title: option.props.title ?? option.props.children,\n value: option.props.value,\n handleSelect: () => {\n const selected = option.props.value\n\n handleChange?.(selected === value ? emptyValue : selected)\n },\n })),\n [children, value, emptyValue, handleChange]\n )\n\n switch (variant) {\n case 'radio':\n return (\n <Radio.Group\n className={cn}\n label={label}\n layout_direction={\n optionsLayout === 'horizontal' ? 'row' : 'column'\n }\n vertical={layout === 'vertical'}\n on_change={handleRadioChange}\n value={String(value ?? '')}\n {...pickSpacingProps(props)}\n >\n {options.map((option, i) => (\n <Radio\n key={`option-${i}-${option.value}`}\n label={option.title}\n value={String(option.value ?? '')}\n />\n ))}\n </Radio.Group>\n )\n case 'button':\n return (\n <FieldBlock {...fieldBlockProps}>\n <ButtonRow>\n <ToggleButtonGroupContext.Provider\n value={{\n status: error ? 'error' : undefined,\n disabled,\n }}\n >\n {options.map((option, i) => (\n <ToggleButton\n key={`option-${i}-${option.value}`}\n text={option.title}\n on_change={option.handleSelect}\n checked={option.value === value}\n />\n ))}\n </ToggleButtonGroupContext.Provider>\n </ButtonRow>\n </FieldBlock>\n )\n case 'dropdown': {\n const optionsData = React.Children.map(children, (child) => {\n if (React.isValidElement(child) && child.type === Option) {\n // Option components\n return child.props.text\n ? {\n selectedKey: String(child.props.value ?? ''),\n content: [\n child.props.children ?? child.props.title ?? (\n <em>Untitled</em>\n ),\n child.props.text,\n ],\n }\n : {\n selectedKey: child.props.value,\n content: child.props.children ?? child.props.title,\n }\n }\n\n // For other children, just show them as content\n return {\n content: child,\n }\n })\n const data = [\n clear\n ? {\n selectedKey: clearValue,\n content: (\n <em>\n {sharedContext?.translation.Forms.selectionClearSelected}\n </em>\n ),\n }\n : undefined,\n ...(optionsData ?? []),\n ].filter(Boolean)\n\n return (\n <Dropdown\n className={classnames(\n 'dnb-forms-field-selection',\n width !== 'stretch' &&\n `dnb-forms-field-selection--width-${width}`,\n className\n )}\n list_class=\"dnb-forms-field-selection__list\"\n portal_class=\"dnb-forms-field-selection__portal\"\n title={placeholder}\n value={String(value ?? '')}\n label={label}\n label_direction={layout}\n status={\n error?.message ??\n ((warning instanceof Error && warning.message) ||\n (warning instanceof FormError && warning.message) ||\n warning?.toString() ||\n (info instanceof Error && info.message) ||\n (info instanceof FormError && info.message) ||\n info?.toString())\n }\n disabled={disabled}\n data={data}\n suffix={\n help ? (\n <HelpButton title={help.title}>{help.contents}</HelpButton>\n ) : undefined\n }\n on_change={handleDropdownChange}\n on_show={handleShow}\n on_hide={handleHide}\n {...pickSpacingProps(props)}\n stretch={width === 'stretch'}\n />\n )\n }\n }\n}\n\nSelection._supportsSpacingProps = true\nexport default Selection\n"],"mappings":"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"}
@@ -18,6 +18,7 @@ export type Props = FieldHelpProps & FieldProps<string, undefined | string, Erro
18
18
  innerRef?: React.RefObject<HTMLInputElement | HTMLTextAreaElement>;
19
19
  clear?: boolean;
20
20
  autoresize?: boolean;
21
+ autoComplete?: HTMLInputElement['autocomplete'];
21
22
  autoresizeMaxRows?: number;
22
23
  characterCounter?: boolean;
23
24
  mask?: InputMaskedProps['mask'];