@dnb/eufemia 10.14.0 → 10.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (846) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/cjs/components/accordion/AccordionHeader.d.ts +2 -1
  3. package/cjs/components/accordion/AccordionHeader.js +3 -2
  4. package/cjs/components/accordion/AccordionHeader.js.map +1 -1
  5. package/cjs/components/accordion/style/dnb-accordion.css +13 -5
  6. package/cjs/components/accordion/style/dnb-accordion.min.css +3 -1
  7. package/cjs/components/accordion/style/dnb-accordion.scss +16 -5
  8. package/cjs/components/accordion/style/themes/dnb-accordion-theme-sbanken.css +19 -32
  9. package/cjs/components/accordion/style/themes/dnb-accordion-theme-sbanken.min.css +1 -1
  10. package/cjs/components/accordion/style/themes/dnb-accordion-theme-sbanken.scss +22 -33
  11. package/cjs/components/accordion/style/themes/dnb-accordion-theme-ui.css +149 -101
  12. package/cjs/components/accordion/style/themes/dnb-accordion-theme-ui.min.css +27 -1
  13. package/cjs/components/accordion/style/themes/dnb-accordion-theme-ui.scss +159 -86
  14. package/cjs/components/anchor/Anchor.d.ts +1 -0
  15. package/cjs/components/anchor/Anchor.js +7 -5
  16. package/cjs/components/anchor/Anchor.js.map +1 -1
  17. package/cjs/components/autocomplete/Autocomplete.d.ts +4 -0
  18. package/cjs/components/autocomplete/Autocomplete.js +98 -80
  19. package/cjs/components/autocomplete/Autocomplete.js.map +1 -1
  20. package/cjs/components/breadcrumb/style/dnb-breadcrumb.css +4 -4
  21. package/cjs/components/breadcrumb/style/dnb-breadcrumb.min.css +1 -1
  22. package/cjs/components/breadcrumb/style/dnb-breadcrumb.scss +2 -7
  23. package/cjs/components/button/Button.d.ts +1 -1
  24. package/cjs/components/button/Button.js +9 -5
  25. package/cjs/components/button/Button.js.map +1 -1
  26. package/cjs/components/button/style/themes/dnb-button-theme-sbanken.scss +1 -1
  27. package/cjs/components/button/style/themes/dnb-button-theme-ui.scss +1 -1
  28. package/cjs/components/card/style/dnb-card.css +10 -0
  29. package/cjs/components/card/style/dnb-card.min.css +1 -1
  30. package/cjs/components/card/style/dnb-card.scss +8 -0
  31. package/cjs/components/checkbox/Checkbox.js +9 -3
  32. package/cjs/components/checkbox/Checkbox.js.map +1 -1
  33. package/cjs/components/checkbox/style/dnb-checkbox.css +129 -0
  34. package/cjs/components/checkbox/style/dnb-checkbox.min.css +1 -1
  35. package/cjs/components/checkbox/style/dnb-checkbox.scss +199 -0
  36. package/cjs/components/checkbox/style/themes/dnb-checkbox-theme-sbanken.css +32 -0
  37. package/cjs/components/checkbox/style/themes/dnb-checkbox-theme-sbanken.min.css +3 -0
  38. package/cjs/components/checkbox/style/themes/dnb-checkbox-theme-sbanken.scss +39 -0
  39. package/cjs/components/checkbox/style/themes/dnb-checkbox-theme-ui.css +24 -88
  40. package/cjs/components/checkbox/style/themes/dnb-checkbox-theme-ui.min.css +1 -1
  41. package/cjs/components/checkbox/style/themes/dnb-checkbox-theme-ui.scss +30 -125
  42. package/cjs/components/date-picker/DatePicker.d.ts +1 -1
  43. package/cjs/components/date-picker/DatePicker.js +4 -1
  44. package/cjs/components/date-picker/DatePicker.js.map +1 -1
  45. package/cjs/components/date-picker/DatePickerInput.d.ts +1 -1
  46. package/cjs/components/dropdown/Dropdown.js +2 -2
  47. package/cjs/components/dropdown/Dropdown.js.map +1 -1
  48. package/cjs/components/flex/Container.js +2 -1
  49. package/cjs/components/flex/Container.js.map +1 -1
  50. package/cjs/components/flex/style/dnb-flex.css +1 -1
  51. package/cjs/components/flex/style/dnb-flex.min.css +1 -1
  52. package/cjs/components/flex/style/flex-container.scss +1 -1
  53. package/cjs/components/form-label/FormLabel.d.ts +8 -3
  54. package/cjs/components/form-label/FormLabel.js +14 -11
  55. package/cjs/components/form-label/FormLabel.js.map +1 -1
  56. package/cjs/components/form-label/style/dnb-form-label.css +0 -1
  57. package/cjs/components/form-label/style/dnb-form-label.min.css +1 -1
  58. package/cjs/components/form-label/style/dnb-form-label.scss +0 -5
  59. package/cjs/components/global-status/GlobalStatus.d.ts +1 -1
  60. package/cjs/components/global-status/GlobalStatus.js +3 -1
  61. package/cjs/components/global-status/GlobalStatus.js.map +1 -1
  62. package/cjs/components/global-status/style/dnb-global-status.css +0 -7
  63. package/cjs/components/global-status/style/dnb-global-status.min.css +1 -1
  64. package/cjs/components/global-status/style/dnb-global-status.scss +0 -11
  65. package/cjs/components/input/style/dnb-input.css +7 -3
  66. package/cjs/components/input/style/dnb-input.min.css +1 -1
  67. package/cjs/components/input/style/dnb-input.scss +14 -8
  68. package/cjs/components/input-masked/MultiInputMask.d.ts +6 -2
  69. package/cjs/components/input-masked/MultiInputMask.js +21 -17
  70. package/cjs/components/input-masked/MultiInputMask.js.map +1 -1
  71. package/cjs/components/input-masked/style/dnb-input-masked.css +3 -3
  72. package/cjs/components/input-masked/style/dnb-input-masked.min.css +1 -1
  73. package/cjs/components/input-masked/style/dnb-input-masked.scss +1 -1
  74. package/cjs/components/number-format/NumberUtils.d.ts +1 -1
  75. package/cjs/components/radio/Radio.js +13 -7
  76. package/cjs/components/radio/Radio.js.map +1 -1
  77. package/cjs/components/radio/RadioGroup.js +3 -2
  78. package/cjs/components/radio/RadioGroup.js.map +1 -1
  79. package/cjs/components/radio/style/dnb-radio.css +33 -8
  80. package/cjs/components/radio/style/dnb-radio.min.css +1 -1
  81. package/cjs/components/radio/style/dnb-radio.scss +59 -9
  82. package/cjs/components/radio/style/themes/dnb-radio-theme-sbanken.css +17 -8
  83. package/cjs/components/radio/style/themes/dnb-radio-theme-sbanken.min.css +5 -1
  84. package/cjs/components/radio/style/themes/dnb-radio-theme-sbanken.scss +17 -8
  85. package/cjs/components/radio/style/themes/dnb-radio-theme-ui.css +6 -1
  86. package/cjs/components/radio/style/themes/dnb-radio-theme-ui.min.css +1 -1
  87. package/cjs/components/radio/style/themes/dnb-radio-theme-ui.scss +6 -1
  88. package/cjs/components/section/Section.d.ts +5 -0
  89. package/cjs/components/section/Section.js +3 -2
  90. package/cjs/components/section/Section.js.map +1 -1
  91. package/cjs/components/section/style/dnb-section.css +12 -0
  92. package/cjs/components/section/style/dnb-section.min.css +3 -3
  93. package/cjs/components/section/style/dnb-section.scss +10 -0
  94. package/cjs/components/switch/Switch.js +9 -3
  95. package/cjs/components/switch/Switch.js.map +1 -1
  96. package/cjs/components/switch/style/dnb-switch.css +43 -9
  97. package/cjs/components/switch/style/dnb-switch.min.css +1 -1
  98. package/cjs/components/switch/style/dnb-switch.scss +49 -22
  99. package/cjs/components/switch/style/themes/dnb-switch-theme-sbanken.css +207 -0
  100. package/cjs/components/switch/style/themes/dnb-switch-theme-sbanken.min.css +1 -0
  101. package/cjs/components/switch/style/themes/dnb-switch-theme-sbanken.scss +280 -0
  102. package/cjs/components/switch/style/themes/dnb-switch-theme-ui.css +11 -30
  103. package/cjs/components/switch/style/themes/dnb-switch-theme-ui.min.css +1 -1
  104. package/cjs/components/switch/style/themes/dnb-switch-theme-ui.scss +24 -32
  105. package/cjs/components/textarea/Textarea.js +4 -1
  106. package/cjs/components/textarea/Textarea.js.map +1 -1
  107. package/cjs/components/toggle-button/ToggleButtonGroup.js +3 -2
  108. package/cjs/components/toggle-button/ToggleButtonGroup.js.map +1 -1
  109. package/cjs/components/toggle-button/style/dnb-toggle-button.css +3 -7
  110. package/cjs/components/toggle-button/style/dnb-toggle-button.min.css +1 -1
  111. package/cjs/components/toggle-button/style/dnb-toggle-button.scss +4 -14
  112. package/cjs/components/toggle-button/style/themes/dnb-toggle-button-theme-sbanken.css +92 -0
  113. package/cjs/components/toggle-button/style/themes/dnb-toggle-button-theme-sbanken.min.css +1 -0
  114. package/cjs/components/toggle-button/style/themes/dnb-toggle-button-theme-sbanken.scss +83 -0
  115. package/cjs/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.css +0 -2
  116. package/cjs/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.scss +0 -3
  117. package/cjs/elements/hr/style/dnb-hr.scss +16 -30
  118. package/cjs/elements/hr/style/hr-mixins.scss +5 -7
  119. package/cjs/extensions/forms/DataContext/Context.d.ts +1 -1
  120. package/cjs/extensions/forms/DataContext/Context.js +1 -1
  121. package/cjs/extensions/forms/DataContext/Context.js.map +1 -1
  122. package/cjs/extensions/forms/DataContext/Provider/Provider.js +9 -5
  123. package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  124. package/cjs/extensions/forms/Field/ArraySelection/style/dnb-array-selection.css +0 -6
  125. package/cjs/extensions/forms/Field/ArraySelection/style/dnb-array-selection.min.css +1 -1
  126. package/cjs/extensions/forms/Field/ArraySelection/style/dnb-array-selection.scss +0 -2
  127. package/cjs/extensions/forms/Field/Currency/Currency.d.ts +3 -1
  128. package/cjs/extensions/forms/Field/Currency/Currency.js +7 -2
  129. package/cjs/extensions/forms/Field/Currency/Currency.js.map +1 -1
  130. package/cjs/extensions/forms/Field/Expiry/Expiry.js +6 -4
  131. package/cjs/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
  132. package/cjs/extensions/forms/Field/Expiry/style/dnb-expiry.css +2 -8
  133. package/cjs/extensions/forms/Field/Expiry/style/dnb-expiry.min.css +1 -1
  134. package/cjs/extensions/forms/Field/Expiry/style/dnb-expiry.scss +5 -5
  135. package/cjs/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js +6 -5
  136. package/cjs/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js.map +1 -1
  137. package/cjs/extensions/forms/Field/Number/Number.js +11 -12
  138. package/cjs/extensions/forms/Field/Number/Number.js.map +1 -1
  139. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.d.ts +14 -2
  140. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.js +134 -70
  141. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  142. package/cjs/extensions/forms/Field/PhoneNumber/style/dnb-phone-number.css +2 -8
  143. package/cjs/extensions/forms/Field/PhoneNumber/style/dnb-phone-number.min.css +1 -1
  144. package/cjs/extensions/forms/Field/PhoneNumber/style/dnb-phone-number.scss +2 -4
  145. package/cjs/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.d.ts +1 -3
  146. package/cjs/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js +7 -5
  147. package/cjs/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js.map +1 -1
  148. package/cjs/extensions/forms/Field/PostalCodeAndCity/style/dnb-postal-code-and-city.css +0 -15
  149. package/cjs/extensions/forms/Field/PostalCodeAndCity/style/dnb-postal-code-and-city.min.css +1 -1
  150. package/cjs/extensions/forms/Field/PostalCodeAndCity/style/dnb-postal-code-and-city.scss +0 -14
  151. package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.d.ts +34 -2
  152. package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.js +189 -17
  153. package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
  154. package/cjs/extensions/forms/Field/Selection/Selection.js +1 -0
  155. package/cjs/extensions/forms/Field/Selection/Selection.js.map +1 -1
  156. package/cjs/extensions/forms/Field/Selection/style/dnb-selection.css +0 -6
  157. package/cjs/extensions/forms/Field/Selection/style/dnb-selection.min.css +1 -1
  158. package/cjs/extensions/forms/Field/Selection/style/dnb-selection.scss +0 -2
  159. package/cjs/extensions/forms/Field/String/String.js +8 -9
  160. package/cjs/extensions/forms/Field/String/String.js.map +1 -1
  161. package/cjs/extensions/forms/Field/Toggle/Toggle.js +4 -2
  162. package/cjs/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  163. package/cjs/extensions/forms/FieldBlock/FieldBlock.d.ts +2 -2
  164. package/cjs/extensions/forms/FieldBlock/FieldBlock.js +16 -19
  165. package/cjs/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  166. package/cjs/extensions/forms/FieldBlock/FieldBlockContext.d.ts +2 -2
  167. package/cjs/extensions/forms/FieldBlock/FieldBlockContext.js.map +1 -1
  168. package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.css +3 -0
  169. package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
  170. package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.scss +3 -0
  171. package/cjs/extensions/forms/constants/countries.d.ts +9 -6
  172. package/cjs/extensions/forms/constants/countries.js +15 -7
  173. package/cjs/extensions/forms/constants/countries.js.map +1 -1
  174. package/cjs/extensions/forms/hooks/useDataValue.d.ts +2 -0
  175. package/cjs/extensions/forms/hooks/useDataValue.js +31 -21
  176. package/cjs/extensions/forms/hooks/useDataValue.js.map +1 -1
  177. package/cjs/extensions/forms/index.d.ts +1 -1
  178. package/cjs/extensions/forms/index.js +12 -0
  179. package/cjs/extensions/forms/index.js.map +1 -1
  180. package/cjs/extensions/forms/style/dnb-forms.css +101 -129
  181. package/cjs/extensions/forms/style/dnb-forms.min.css +1 -1
  182. package/cjs/extensions/forms/style/dnb-forms.scss +1 -6
  183. package/cjs/extensions/forms/types.d.ts +5 -4
  184. package/cjs/extensions/forms/types.js.map +1 -1
  185. package/cjs/extensions/payment-card/PaymentCard.d.ts +3 -2
  186. package/cjs/extensions/payment-card/PaymentCard.js +16 -37
  187. package/cjs/extensions/payment-card/PaymentCard.js.map +1 -1
  188. package/cjs/extensions/payment-card/icons/index.js +3 -1
  189. package/cjs/extensions/payment-card/icons/index.js.map +1 -1
  190. package/cjs/extensions/style/index.d.ts +5 -1
  191. package/cjs/extensions/style/index.js +2 -0
  192. package/cjs/extensions/style/index.js.map +1 -1
  193. package/cjs/icons/dnb/icons-meta.json +2 -2
  194. package/cjs/icons/icons-meta.json +2 -2
  195. package/cjs/shared/Eufemia.d.ts +1 -1
  196. package/cjs/shared/Eufemia.js +2 -2
  197. package/cjs/shared/Eufemia.js.map +1 -1
  198. package/cjs/shared/helpers/filterValidProps.d.ts +3 -7
  199. package/cjs/shared/helpers/filterValidProps.js +8 -4
  200. package/cjs/shared/helpers/filterValidProps.js.map +1 -1
  201. package/cjs/shared/helpers/withCamelCaseProps.d.ts +1 -0
  202. package/cjs/shared/helpers/withCamelCaseProps.js +6 -4
  203. package/cjs/shared/helpers/withCamelCaseProps.js.map +1 -1
  204. package/cjs/shared/helpers/withSnakeCaseProps.js +5 -4
  205. package/cjs/shared/helpers/withSnakeCaseProps.js.map +1 -1
  206. package/cjs/shared/locales/en-GB.d.ts +1 -1
  207. package/cjs/shared/locales/en-GB.js +4 -4
  208. package/cjs/shared/locales/en-GB.js.map +1 -1
  209. package/cjs/shared/locales/en-US.d.ts +1 -1
  210. package/cjs/shared/locales/index.d.ts +2 -2
  211. package/cjs/shared/locales/nb-NO.d.ts +1 -1
  212. package/cjs/shared/locales/nb-NO.js +4 -4
  213. package/cjs/shared/locales/nb-NO.js.map +1 -1
  214. package/cjs/style/core/utilities.scss +1 -1
  215. package/cjs/style/dnb-ui-components.css +567 -113
  216. package/cjs/style/dnb-ui-components.min.css +6 -4
  217. package/cjs/style/dnb-ui-components.scss +2 -1
  218. package/cjs/style/dnb-ui-elements.css +19 -26
  219. package/cjs/style/dnb-ui-elements.min.css +1 -1
  220. package/cjs/style/dnb-ui-extensions.css +101 -129
  221. package/cjs/style/dnb-ui-extensions.min.css +1 -1
  222. package/cjs/style/dnb-ui-forms.css +243 -0
  223. package/cjs/style/dnb-ui-forms.min.css +1 -0
  224. package/cjs/style/dnb-ui-forms.scss +19 -0
  225. package/cjs/style/themes/theme-eiendom/eiendom-theme-basis.css +19 -26
  226. package/cjs/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  227. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +1033 -359
  228. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +35 -7
  229. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.scss +1 -0
  230. package/cjs/style/themes/theme-eiendom/eiendom-theme-elements.css +19 -26
  231. package/cjs/style/themes/theme-eiendom/eiendom-theme-elements.min.css +1 -1
  232. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.css +101 -129
  233. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  234. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.css +252 -0
  235. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -0
  236. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.scss +15 -0
  237. package/cjs/style/themes/theme-sbanken/sbanken-theme-basis.css +19 -26
  238. package/cjs/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
  239. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +1211 -595
  240. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +16 -8
  241. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.scss +4 -3
  242. package/cjs/style/themes/theme-sbanken/sbanken-theme-elements.css +19 -26
  243. package/cjs/style/themes/theme-sbanken/sbanken-theme-elements.min.css +1 -1
  244. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.css +101 -129
  245. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  246. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.css +252 -0
  247. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -0
  248. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.scss +15 -0
  249. package/cjs/style/themes/theme-ui/ui-theme-basis.css +19 -26
  250. package/cjs/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  251. package/cjs/style/themes/theme-ui/ui-theme-components.css +1033 -359
  252. package/cjs/style/themes/theme-ui/ui-theme-components.min.css +35 -7
  253. package/cjs/style/themes/theme-ui/ui-theme-components.scss +1 -0
  254. package/cjs/style/themes/theme-ui/ui-theme-elements.css +19 -26
  255. package/cjs/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
  256. package/cjs/style/themes/theme-ui/ui-theme-extensions.css +101 -129
  257. package/cjs/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  258. package/cjs/style/themes/theme-ui/ui-theme-forms.css +252 -0
  259. package/cjs/style/themes/theme-ui/ui-theme-forms.min.css +1 -0
  260. package/cjs/style/themes/theme-ui/ui-theme-forms.scss +15 -0
  261. package/cjs/style/themes/theme-ui/ui-theme-tags.css +8 -7
  262. package/cjs/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  263. package/components/accordion/AccordionHeader.d.ts +2 -1
  264. package/components/accordion/AccordionHeader.js +3 -2
  265. package/components/accordion/AccordionHeader.js.map +1 -1
  266. package/components/accordion/style/dnb-accordion.css +13 -5
  267. package/components/accordion/style/dnb-accordion.min.css +3 -1
  268. package/components/accordion/style/dnb-accordion.scss +16 -5
  269. package/components/accordion/style/themes/dnb-accordion-theme-sbanken.css +19 -32
  270. package/components/accordion/style/themes/dnb-accordion-theme-sbanken.min.css +1 -1
  271. package/components/accordion/style/themes/dnb-accordion-theme-sbanken.scss +22 -33
  272. package/components/accordion/style/themes/dnb-accordion-theme-ui.css +149 -101
  273. package/components/accordion/style/themes/dnb-accordion-theme-ui.min.css +27 -1
  274. package/components/accordion/style/themes/dnb-accordion-theme-ui.scss +159 -86
  275. package/components/anchor/Anchor.d.ts +1 -0
  276. package/components/anchor/Anchor.js +5 -4
  277. package/components/anchor/Anchor.js.map +1 -1
  278. package/components/autocomplete/Autocomplete.d.ts +4 -0
  279. package/components/autocomplete/Autocomplete.js +98 -80
  280. package/components/autocomplete/Autocomplete.js.map +1 -1
  281. package/components/breadcrumb/style/dnb-breadcrumb.css +4 -4
  282. package/components/breadcrumb/style/dnb-breadcrumb.min.css +1 -1
  283. package/components/breadcrumb/style/dnb-breadcrumb.scss +2 -7
  284. package/components/button/Button.d.ts +1 -1
  285. package/components/button/Button.js +10 -6
  286. package/components/button/Button.js.map +1 -1
  287. package/components/button/style/themes/dnb-button-theme-sbanken.scss +1 -1
  288. package/components/button/style/themes/dnb-button-theme-ui.scss +1 -1
  289. package/components/card/style/dnb-card.css +10 -0
  290. package/components/card/style/dnb-card.min.css +1 -1
  291. package/components/card/style/dnb-card.scss +8 -0
  292. package/components/checkbox/Checkbox.js +9 -3
  293. package/components/checkbox/Checkbox.js.map +1 -1
  294. package/components/checkbox/style/dnb-checkbox.css +129 -0
  295. package/components/checkbox/style/dnb-checkbox.min.css +1 -1
  296. package/components/checkbox/style/dnb-checkbox.scss +199 -0
  297. package/components/checkbox/style/themes/dnb-checkbox-theme-sbanken.css +32 -0
  298. package/components/checkbox/style/themes/dnb-checkbox-theme-sbanken.min.css +3 -0
  299. package/components/checkbox/style/themes/dnb-checkbox-theme-sbanken.scss +39 -0
  300. package/components/checkbox/style/themes/dnb-checkbox-theme-ui.css +24 -88
  301. package/components/checkbox/style/themes/dnb-checkbox-theme-ui.min.css +1 -1
  302. package/components/checkbox/style/themes/dnb-checkbox-theme-ui.scss +30 -125
  303. package/components/date-picker/DatePicker.d.ts +1 -1
  304. package/components/date-picker/DatePicker.js +4 -1
  305. package/components/date-picker/DatePicker.js.map +1 -1
  306. package/components/date-picker/DatePickerInput.d.ts +1 -1
  307. package/components/dropdown/Dropdown.js +2 -2
  308. package/components/dropdown/Dropdown.js.map +1 -1
  309. package/components/flex/Container.js +2 -1
  310. package/components/flex/Container.js.map +1 -1
  311. package/components/flex/style/dnb-flex.css +1 -1
  312. package/components/flex/style/dnb-flex.min.css +1 -1
  313. package/components/flex/style/flex-container.scss +1 -1
  314. package/components/form-label/FormLabel.d.ts +8 -3
  315. package/components/form-label/FormLabel.js +14 -11
  316. package/components/form-label/FormLabel.js.map +1 -1
  317. package/components/form-label/style/dnb-form-label.css +0 -1
  318. package/components/form-label/style/dnb-form-label.min.css +1 -1
  319. package/components/form-label/style/dnb-form-label.scss +0 -5
  320. package/components/global-status/GlobalStatus.d.ts +1 -1
  321. package/components/global-status/GlobalStatus.js +3 -1
  322. package/components/global-status/GlobalStatus.js.map +1 -1
  323. package/components/global-status/style/dnb-global-status.css +0 -7
  324. package/components/global-status/style/dnb-global-status.min.css +1 -1
  325. package/components/global-status/style/dnb-global-status.scss +0 -11
  326. package/components/input/style/dnb-input.css +7 -3
  327. package/components/input/style/dnb-input.min.css +1 -1
  328. package/components/input/style/dnb-input.scss +14 -8
  329. package/components/input-masked/MultiInputMask.d.ts +6 -2
  330. package/components/input-masked/MultiInputMask.js +22 -18
  331. package/components/input-masked/MultiInputMask.js.map +1 -1
  332. package/components/input-masked/style/dnb-input-masked.css +3 -3
  333. package/components/input-masked/style/dnb-input-masked.min.css +1 -1
  334. package/components/input-masked/style/dnb-input-masked.scss +1 -1
  335. package/components/number-format/NumberUtils.d.ts +1 -1
  336. package/components/radio/Radio.js +13 -7
  337. package/components/radio/Radio.js.map +1 -1
  338. package/components/radio/RadioGroup.js +3 -2
  339. package/components/radio/RadioGroup.js.map +1 -1
  340. package/components/radio/style/dnb-radio.css +33 -8
  341. package/components/radio/style/dnb-radio.min.css +1 -1
  342. package/components/radio/style/dnb-radio.scss +59 -9
  343. package/components/radio/style/themes/dnb-radio-theme-sbanken.css +17 -8
  344. package/components/radio/style/themes/dnb-radio-theme-sbanken.min.css +5 -1
  345. package/components/radio/style/themes/dnb-radio-theme-sbanken.scss +17 -8
  346. package/components/radio/style/themes/dnb-radio-theme-ui.css +6 -1
  347. package/components/radio/style/themes/dnb-radio-theme-ui.min.css +1 -1
  348. package/components/radio/style/themes/dnb-radio-theme-ui.scss +6 -1
  349. package/components/section/Section.d.ts +5 -0
  350. package/components/section/Section.js +3 -2
  351. package/components/section/Section.js.map +1 -1
  352. package/components/section/style/dnb-section.css +12 -0
  353. package/components/section/style/dnb-section.min.css +3 -3
  354. package/components/section/style/dnb-section.scss +10 -0
  355. package/components/switch/Switch.js +9 -3
  356. package/components/switch/Switch.js.map +1 -1
  357. package/components/switch/style/dnb-switch.css +43 -9
  358. package/components/switch/style/dnb-switch.min.css +1 -1
  359. package/components/switch/style/dnb-switch.scss +49 -22
  360. package/components/switch/style/themes/dnb-switch-theme-sbanken.css +207 -0
  361. package/components/switch/style/themes/dnb-switch-theme-sbanken.min.css +1 -0
  362. package/components/switch/style/themes/dnb-switch-theme-sbanken.scss +280 -0
  363. package/components/switch/style/themes/dnb-switch-theme-ui.css +11 -30
  364. package/components/switch/style/themes/dnb-switch-theme-ui.min.css +1 -1
  365. package/components/switch/style/themes/dnb-switch-theme-ui.scss +24 -32
  366. package/components/textarea/Textarea.js +4 -1
  367. package/components/textarea/Textarea.js.map +1 -1
  368. package/components/toggle-button/ToggleButtonGroup.js +3 -2
  369. package/components/toggle-button/ToggleButtonGroup.js.map +1 -1
  370. package/components/toggle-button/style/dnb-toggle-button.css +3 -7
  371. package/components/toggle-button/style/dnb-toggle-button.min.css +1 -1
  372. package/components/toggle-button/style/dnb-toggle-button.scss +4 -14
  373. package/components/toggle-button/style/themes/dnb-toggle-button-theme-sbanken.css +92 -0
  374. package/components/toggle-button/style/themes/dnb-toggle-button-theme-sbanken.min.css +1 -0
  375. package/components/toggle-button/style/themes/dnb-toggle-button-theme-sbanken.scss +83 -0
  376. package/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.css +0 -2
  377. package/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.scss +0 -3
  378. package/elements/hr/style/dnb-hr.scss +16 -30
  379. package/elements/hr/style/hr-mixins.scss +5 -7
  380. package/es/components/accordion/AccordionHeader.d.ts +2 -1
  381. package/es/components/accordion/AccordionHeader.js +3 -2
  382. package/es/components/accordion/AccordionHeader.js.map +1 -1
  383. package/es/components/accordion/style/dnb-accordion.css +13 -5
  384. package/es/components/accordion/style/dnb-accordion.min.css +3 -1
  385. package/es/components/accordion/style/dnb-accordion.scss +16 -5
  386. package/es/components/accordion/style/themes/dnb-accordion-theme-sbanken.css +19 -32
  387. package/es/components/accordion/style/themes/dnb-accordion-theme-sbanken.min.css +1 -1
  388. package/es/components/accordion/style/themes/dnb-accordion-theme-sbanken.scss +22 -33
  389. package/es/components/accordion/style/themes/dnb-accordion-theme-ui.css +149 -101
  390. package/es/components/accordion/style/themes/dnb-accordion-theme-ui.min.css +27 -1
  391. package/es/components/accordion/style/themes/dnb-accordion-theme-ui.scss +159 -86
  392. package/es/components/anchor/Anchor.d.ts +1 -0
  393. package/es/components/anchor/Anchor.js +5 -4
  394. package/es/components/anchor/Anchor.js.map +1 -1
  395. package/es/components/autocomplete/Autocomplete.d.ts +4 -0
  396. package/es/components/autocomplete/Autocomplete.js +94 -75
  397. package/es/components/autocomplete/Autocomplete.js.map +1 -1
  398. package/es/components/breadcrumb/style/dnb-breadcrumb.css +4 -4
  399. package/es/components/breadcrumb/style/dnb-breadcrumb.min.css +1 -1
  400. package/es/components/breadcrumb/style/dnb-breadcrumb.scss +2 -7
  401. package/es/components/button/Button.d.ts +1 -1
  402. package/es/components/button/Button.js +10 -6
  403. package/es/components/button/Button.js.map +1 -1
  404. package/es/components/button/style/themes/dnb-button-theme-sbanken.scss +1 -1
  405. package/es/components/button/style/themes/dnb-button-theme-ui.scss +1 -1
  406. package/es/components/card/style/dnb-card.css +10 -0
  407. package/es/components/card/style/dnb-card.min.css +1 -1
  408. package/es/components/card/style/dnb-card.scss +8 -0
  409. package/es/components/checkbox/Checkbox.js +9 -3
  410. package/es/components/checkbox/Checkbox.js.map +1 -1
  411. package/es/components/checkbox/style/dnb-checkbox.css +129 -0
  412. package/es/components/checkbox/style/dnb-checkbox.min.css +1 -1
  413. package/es/components/checkbox/style/dnb-checkbox.scss +199 -0
  414. package/es/components/checkbox/style/themes/dnb-checkbox-theme-sbanken.css +32 -0
  415. package/es/components/checkbox/style/themes/dnb-checkbox-theme-sbanken.min.css +3 -0
  416. package/es/components/checkbox/style/themes/dnb-checkbox-theme-sbanken.scss +39 -0
  417. package/es/components/checkbox/style/themes/dnb-checkbox-theme-ui.css +24 -88
  418. package/es/components/checkbox/style/themes/dnb-checkbox-theme-ui.min.css +1 -1
  419. package/es/components/checkbox/style/themes/dnb-checkbox-theme-ui.scss +30 -125
  420. package/es/components/date-picker/DatePicker.d.ts +1 -1
  421. package/es/components/date-picker/DatePicker.js +4 -1
  422. package/es/components/date-picker/DatePicker.js.map +1 -1
  423. package/es/components/date-picker/DatePickerInput.d.ts +1 -1
  424. package/es/components/dropdown/Dropdown.js +2 -2
  425. package/es/components/dropdown/Dropdown.js.map +1 -1
  426. package/es/components/flex/Container.js +2 -1
  427. package/es/components/flex/Container.js.map +1 -1
  428. package/es/components/flex/style/dnb-flex.css +1 -1
  429. package/es/components/flex/style/dnb-flex.min.css +1 -1
  430. package/es/components/flex/style/flex-container.scss +1 -1
  431. package/es/components/form-label/FormLabel.d.ts +8 -3
  432. package/es/components/form-label/FormLabel.js +14 -11
  433. package/es/components/form-label/FormLabel.js.map +1 -1
  434. package/es/components/form-label/style/dnb-form-label.css +0 -1
  435. package/es/components/form-label/style/dnb-form-label.min.css +1 -1
  436. package/es/components/form-label/style/dnb-form-label.scss +0 -5
  437. package/es/components/global-status/GlobalStatus.d.ts +1 -1
  438. package/es/components/global-status/GlobalStatus.js +3 -1
  439. package/es/components/global-status/GlobalStatus.js.map +1 -1
  440. package/es/components/global-status/style/dnb-global-status.css +0 -7
  441. package/es/components/global-status/style/dnb-global-status.min.css +1 -1
  442. package/es/components/global-status/style/dnb-global-status.scss +0 -11
  443. package/es/components/input/style/dnb-input.css +7 -3
  444. package/es/components/input/style/dnb-input.min.css +1 -1
  445. package/es/components/input/style/dnb-input.scss +14 -8
  446. package/es/components/input-masked/MultiInputMask.d.ts +6 -2
  447. package/es/components/input-masked/MultiInputMask.js +24 -19
  448. package/es/components/input-masked/MultiInputMask.js.map +1 -1
  449. package/es/components/input-masked/style/dnb-input-masked.css +3 -3
  450. package/es/components/input-masked/style/dnb-input-masked.min.css +1 -1
  451. package/es/components/input-masked/style/dnb-input-masked.scss +1 -1
  452. package/es/components/number-format/NumberUtils.d.ts +1 -1
  453. package/es/components/radio/Radio.js +13 -7
  454. package/es/components/radio/Radio.js.map +1 -1
  455. package/es/components/radio/RadioGroup.js +3 -2
  456. package/es/components/radio/RadioGroup.js.map +1 -1
  457. package/es/components/radio/style/dnb-radio.css +33 -8
  458. package/es/components/radio/style/dnb-radio.min.css +1 -1
  459. package/es/components/radio/style/dnb-radio.scss +59 -9
  460. package/es/components/radio/style/themes/dnb-radio-theme-sbanken.css +17 -8
  461. package/es/components/radio/style/themes/dnb-radio-theme-sbanken.min.css +5 -1
  462. package/es/components/radio/style/themes/dnb-radio-theme-sbanken.scss +17 -8
  463. package/es/components/radio/style/themes/dnb-radio-theme-ui.css +6 -1
  464. package/es/components/radio/style/themes/dnb-radio-theme-ui.min.css +1 -1
  465. package/es/components/radio/style/themes/dnb-radio-theme-ui.scss +6 -1
  466. package/es/components/section/Section.d.ts +5 -0
  467. package/es/components/section/Section.js +3 -2
  468. package/es/components/section/Section.js.map +1 -1
  469. package/es/components/section/style/dnb-section.css +12 -0
  470. package/es/components/section/style/dnb-section.min.css +3 -3
  471. package/es/components/section/style/dnb-section.scss +10 -0
  472. package/es/components/switch/Switch.js +9 -3
  473. package/es/components/switch/Switch.js.map +1 -1
  474. package/es/components/switch/style/dnb-switch.css +43 -9
  475. package/es/components/switch/style/dnb-switch.min.css +1 -1
  476. package/es/components/switch/style/dnb-switch.scss +49 -22
  477. package/es/components/switch/style/themes/dnb-switch-theme-sbanken.css +207 -0
  478. package/es/components/switch/style/themes/dnb-switch-theme-sbanken.min.css +1 -0
  479. package/es/components/switch/style/themes/dnb-switch-theme-sbanken.scss +280 -0
  480. package/es/components/switch/style/themes/dnb-switch-theme-ui.css +11 -30
  481. package/es/components/switch/style/themes/dnb-switch-theme-ui.min.css +1 -1
  482. package/es/components/switch/style/themes/dnb-switch-theme-ui.scss +24 -32
  483. package/es/components/textarea/Textarea.js +4 -1
  484. package/es/components/textarea/Textarea.js.map +1 -1
  485. package/es/components/toggle-button/ToggleButtonGroup.js +3 -2
  486. package/es/components/toggle-button/ToggleButtonGroup.js.map +1 -1
  487. package/es/components/toggle-button/style/dnb-toggle-button.css +3 -7
  488. package/es/components/toggle-button/style/dnb-toggle-button.min.css +1 -1
  489. package/es/components/toggle-button/style/dnb-toggle-button.scss +4 -14
  490. package/es/components/toggle-button/style/themes/dnb-toggle-button-theme-sbanken.css +92 -0
  491. package/es/components/toggle-button/style/themes/dnb-toggle-button-theme-sbanken.min.css +1 -0
  492. package/es/components/toggle-button/style/themes/dnb-toggle-button-theme-sbanken.scss +83 -0
  493. package/es/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.css +0 -2
  494. package/es/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.scss +0 -3
  495. package/es/elements/hr/style/dnb-hr.scss +16 -30
  496. package/es/elements/hr/style/hr-mixins.scss +5 -7
  497. package/es/extensions/forms/DataContext/Context.d.ts +1 -1
  498. package/es/extensions/forms/DataContext/Context.js +1 -1
  499. package/es/extensions/forms/DataContext/Context.js.map +1 -1
  500. package/es/extensions/forms/DataContext/Provider/Provider.js +9 -5
  501. package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  502. package/es/extensions/forms/Field/ArraySelection/style/dnb-array-selection.css +0 -6
  503. package/es/extensions/forms/Field/ArraySelection/style/dnb-array-selection.min.css +1 -1
  504. package/es/extensions/forms/Field/ArraySelection/style/dnb-array-selection.scss +0 -2
  505. package/es/extensions/forms/Field/Currency/Currency.d.ts +3 -1
  506. package/es/extensions/forms/Field/Currency/Currency.js +8 -2
  507. package/es/extensions/forms/Field/Currency/Currency.js.map +1 -1
  508. package/es/extensions/forms/Field/Expiry/Expiry.js +6 -4
  509. package/es/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
  510. package/es/extensions/forms/Field/Expiry/style/dnb-expiry.css +2 -8
  511. package/es/extensions/forms/Field/Expiry/style/dnb-expiry.min.css +1 -1
  512. package/es/extensions/forms/Field/Expiry/style/dnb-expiry.scss +5 -5
  513. package/es/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js +6 -5
  514. package/es/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js.map +1 -1
  515. package/es/extensions/forms/Field/Number/Number.js +11 -12
  516. package/es/extensions/forms/Field/Number/Number.js.map +1 -1
  517. package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.d.ts +14 -2
  518. package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.js +128 -61
  519. package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  520. package/es/extensions/forms/Field/PhoneNumber/style/dnb-phone-number.css +2 -8
  521. package/es/extensions/forms/Field/PhoneNumber/style/dnb-phone-number.min.css +1 -1
  522. package/es/extensions/forms/Field/PhoneNumber/style/dnb-phone-number.scss +2 -4
  523. package/es/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.d.ts +1 -3
  524. package/es/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js +7 -5
  525. package/es/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js.map +1 -1
  526. package/es/extensions/forms/Field/PostalCodeAndCity/style/dnb-postal-code-and-city.css +0 -15
  527. package/es/extensions/forms/Field/PostalCodeAndCity/style/dnb-postal-code-and-city.min.css +1 -1
  528. package/es/extensions/forms/Field/PostalCodeAndCity/style/dnb-postal-code-and-city.scss +0 -14
  529. package/es/extensions/forms/Field/SelectCountry/SelectCountry.d.ts +34 -2
  530. package/es/extensions/forms/Field/SelectCountry/SelectCountry.js +176 -18
  531. package/es/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
  532. package/es/extensions/forms/Field/Selection/Selection.js +1 -0
  533. package/es/extensions/forms/Field/Selection/Selection.js.map +1 -1
  534. package/es/extensions/forms/Field/Selection/style/dnb-selection.css +0 -6
  535. package/es/extensions/forms/Field/Selection/style/dnb-selection.min.css +1 -1
  536. package/es/extensions/forms/Field/Selection/style/dnb-selection.scss +0 -2
  537. package/es/extensions/forms/Field/String/String.js +8 -9
  538. package/es/extensions/forms/Field/String/String.js.map +1 -1
  539. package/es/extensions/forms/Field/Toggle/Toggle.js +4 -2
  540. package/es/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  541. package/es/extensions/forms/FieldBlock/FieldBlock.d.ts +2 -2
  542. package/es/extensions/forms/FieldBlock/FieldBlock.js +16 -19
  543. package/es/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  544. package/es/extensions/forms/FieldBlock/FieldBlockContext.d.ts +2 -2
  545. package/es/extensions/forms/FieldBlock/FieldBlockContext.js.map +1 -1
  546. package/es/extensions/forms/FieldBlock/style/dnb-field-block.css +3 -0
  547. package/es/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
  548. package/es/extensions/forms/FieldBlock/style/dnb-field-block.scss +3 -0
  549. package/es/extensions/forms/constants/countries.d.ts +9 -6
  550. package/es/extensions/forms/constants/countries.js +13 -6
  551. package/es/extensions/forms/constants/countries.js.map +1 -1
  552. package/es/extensions/forms/hooks/useDataValue.d.ts +2 -0
  553. package/es/extensions/forms/hooks/useDataValue.js +26 -20
  554. package/es/extensions/forms/hooks/useDataValue.js.map +1 -1
  555. package/es/extensions/forms/index.d.ts +1 -1
  556. package/es/extensions/forms/index.js +1 -0
  557. package/es/extensions/forms/index.js.map +1 -1
  558. package/es/extensions/forms/style/dnb-forms.css +101 -129
  559. package/es/extensions/forms/style/dnb-forms.min.css +1 -1
  560. package/es/extensions/forms/style/dnb-forms.scss +1 -6
  561. package/es/extensions/forms/types.d.ts +5 -4
  562. package/es/extensions/forms/types.js.map +1 -1
  563. package/es/extensions/payment-card/PaymentCard.d.ts +3 -2
  564. package/es/extensions/payment-card/PaymentCard.js +16 -37
  565. package/es/extensions/payment-card/PaymentCard.js.map +1 -1
  566. package/es/extensions/payment-card/icons/index.js +4 -2
  567. package/es/extensions/payment-card/icons/index.js.map +1 -1
  568. package/es/extensions/style/index.d.ts +5 -1
  569. package/es/extensions/style/index.js +4 -1
  570. package/es/extensions/style/index.js.map +1 -1
  571. package/es/icons/dnb/icons-meta.json +2 -2
  572. package/es/icons/icons-meta.json +2 -2
  573. package/es/shared/Eufemia.d.ts +1 -1
  574. package/es/shared/Eufemia.js +2 -2
  575. package/es/shared/Eufemia.js.map +1 -1
  576. package/es/shared/helpers/filterValidProps.d.ts +3 -7
  577. package/es/shared/helpers/filterValidProps.js +9 -3
  578. package/es/shared/helpers/filterValidProps.js.map +1 -1
  579. package/es/shared/helpers/withCamelCaseProps.d.ts +1 -0
  580. package/es/shared/helpers/withCamelCaseProps.js +6 -5
  581. package/es/shared/helpers/withCamelCaseProps.js.map +1 -1
  582. package/es/shared/helpers/withSnakeCaseProps.js +5 -4
  583. package/es/shared/helpers/withSnakeCaseProps.js.map +1 -1
  584. package/es/shared/locales/en-GB.d.ts +1 -1
  585. package/es/shared/locales/en-GB.js +4 -4
  586. package/es/shared/locales/en-GB.js.map +1 -1
  587. package/es/shared/locales/en-US.d.ts +1 -1
  588. package/es/shared/locales/index.d.ts +2 -2
  589. package/es/shared/locales/nb-NO.d.ts +1 -1
  590. package/es/shared/locales/nb-NO.js +4 -4
  591. package/es/shared/locales/nb-NO.js.map +1 -1
  592. package/es/style/core/utilities.scss +1 -1
  593. package/es/style/dnb-ui-components.css +567 -113
  594. package/es/style/dnb-ui-components.min.css +6 -4
  595. package/es/style/dnb-ui-components.scss +2 -1
  596. package/es/style/dnb-ui-elements.css +19 -26
  597. package/es/style/dnb-ui-elements.min.css +1 -1
  598. package/es/style/dnb-ui-extensions.css +101 -129
  599. package/es/style/dnb-ui-extensions.min.css +1 -1
  600. package/es/style/dnb-ui-forms.css +243 -0
  601. package/es/style/dnb-ui-forms.min.css +1 -0
  602. package/es/style/dnb-ui-forms.scss +19 -0
  603. package/es/style/themes/theme-eiendom/eiendom-theme-basis.css +19 -26
  604. package/es/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  605. package/es/style/themes/theme-eiendom/eiendom-theme-components.css +1033 -359
  606. package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +35 -7
  607. package/es/style/themes/theme-eiendom/eiendom-theme-components.scss +1 -0
  608. package/es/style/themes/theme-eiendom/eiendom-theme-elements.css +19 -26
  609. package/es/style/themes/theme-eiendom/eiendom-theme-elements.min.css +1 -1
  610. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.css +101 -129
  611. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  612. package/es/style/themes/theme-eiendom/eiendom-theme-forms.css +252 -0
  613. package/es/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -0
  614. package/es/style/themes/theme-eiendom/eiendom-theme-forms.scss +15 -0
  615. package/es/style/themes/theme-sbanken/sbanken-theme-basis.css +19 -26
  616. package/es/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
  617. package/es/style/themes/theme-sbanken/sbanken-theme-components.css +1211 -595
  618. package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +16 -8
  619. package/es/style/themes/theme-sbanken/sbanken-theme-components.scss +4 -3
  620. package/es/style/themes/theme-sbanken/sbanken-theme-elements.css +19 -26
  621. package/es/style/themes/theme-sbanken/sbanken-theme-elements.min.css +1 -1
  622. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.css +101 -129
  623. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  624. package/es/style/themes/theme-sbanken/sbanken-theme-forms.css +252 -0
  625. package/es/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -0
  626. package/es/style/themes/theme-sbanken/sbanken-theme-forms.scss +15 -0
  627. package/es/style/themes/theme-ui/ui-theme-basis.css +19 -26
  628. package/es/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  629. package/es/style/themes/theme-ui/ui-theme-components.css +1033 -359
  630. package/es/style/themes/theme-ui/ui-theme-components.min.css +35 -7
  631. package/es/style/themes/theme-ui/ui-theme-components.scss +1 -0
  632. package/es/style/themes/theme-ui/ui-theme-elements.css +19 -26
  633. package/es/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
  634. package/es/style/themes/theme-ui/ui-theme-extensions.css +101 -129
  635. package/es/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  636. package/es/style/themes/theme-ui/ui-theme-forms.css +252 -0
  637. package/es/style/themes/theme-ui/ui-theme-forms.min.css +1 -0
  638. package/es/style/themes/theme-ui/ui-theme-forms.scss +15 -0
  639. package/es/style/themes/theme-ui/ui-theme-tags.css +8 -7
  640. package/es/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  641. package/esm/dnb-ui-basis.min.mjs +1 -1
  642. package/esm/dnb-ui-components.min.mjs +1 -1
  643. package/esm/dnb-ui-elements.min.mjs +1 -1
  644. package/esm/dnb-ui-extensions.min.mjs +3 -3
  645. package/esm/dnb-ui-lib.min.mjs +1 -1
  646. package/extensions/forms/DataContext/Context.d.ts +1 -1
  647. package/extensions/forms/DataContext/Context.js +1 -1
  648. package/extensions/forms/DataContext/Context.js.map +1 -1
  649. package/extensions/forms/DataContext/Provider/Provider.js +9 -5
  650. package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  651. package/extensions/forms/Field/ArraySelection/style/dnb-array-selection.css +0 -6
  652. package/extensions/forms/Field/ArraySelection/style/dnb-array-selection.min.css +1 -1
  653. package/extensions/forms/Field/ArraySelection/style/dnb-array-selection.scss +0 -2
  654. package/extensions/forms/Field/Currency/Currency.d.ts +3 -1
  655. package/extensions/forms/Field/Currency/Currency.js +8 -2
  656. package/extensions/forms/Field/Currency/Currency.js.map +1 -1
  657. package/extensions/forms/Field/Expiry/Expiry.js +6 -4
  658. package/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
  659. package/extensions/forms/Field/Expiry/style/dnb-expiry.css +2 -8
  660. package/extensions/forms/Field/Expiry/style/dnb-expiry.min.css +1 -1
  661. package/extensions/forms/Field/Expiry/style/dnb-expiry.scss +5 -5
  662. package/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js +6 -5
  663. package/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js.map +1 -1
  664. package/extensions/forms/Field/Number/Number.js +11 -12
  665. package/extensions/forms/Field/Number/Number.js.map +1 -1
  666. package/extensions/forms/Field/PhoneNumber/PhoneNumber.d.ts +14 -2
  667. package/extensions/forms/Field/PhoneNumber/PhoneNumber.js +135 -71
  668. package/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  669. package/extensions/forms/Field/PhoneNumber/style/dnb-phone-number.css +2 -8
  670. package/extensions/forms/Field/PhoneNumber/style/dnb-phone-number.min.css +1 -1
  671. package/extensions/forms/Field/PhoneNumber/style/dnb-phone-number.scss +2 -4
  672. package/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.d.ts +1 -3
  673. package/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js +7 -5
  674. package/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js.map +1 -1
  675. package/extensions/forms/Field/PostalCodeAndCity/style/dnb-postal-code-and-city.css +0 -15
  676. package/extensions/forms/Field/PostalCodeAndCity/style/dnb-postal-code-and-city.min.css +1 -1
  677. package/extensions/forms/Field/PostalCodeAndCity/style/dnb-postal-code-and-city.scss +0 -14
  678. package/extensions/forms/Field/SelectCountry/SelectCountry.d.ts +34 -2
  679. package/extensions/forms/Field/SelectCountry/SelectCountry.js +188 -18
  680. package/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
  681. package/extensions/forms/Field/Selection/Selection.js +1 -0
  682. package/extensions/forms/Field/Selection/Selection.js.map +1 -1
  683. package/extensions/forms/Field/Selection/style/dnb-selection.css +0 -6
  684. package/extensions/forms/Field/Selection/style/dnb-selection.min.css +1 -1
  685. package/extensions/forms/Field/Selection/style/dnb-selection.scss +0 -2
  686. package/extensions/forms/Field/String/String.js +8 -9
  687. package/extensions/forms/Field/String/String.js.map +1 -1
  688. package/extensions/forms/Field/Toggle/Toggle.js +4 -2
  689. package/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  690. package/extensions/forms/FieldBlock/FieldBlock.d.ts +2 -2
  691. package/extensions/forms/FieldBlock/FieldBlock.js +17 -20
  692. package/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  693. package/extensions/forms/FieldBlock/FieldBlockContext.d.ts +2 -2
  694. package/extensions/forms/FieldBlock/FieldBlockContext.js.map +1 -1
  695. package/extensions/forms/FieldBlock/style/dnb-field-block.css +3 -0
  696. package/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
  697. package/extensions/forms/FieldBlock/style/dnb-field-block.scss +3 -0
  698. package/extensions/forms/constants/countries.d.ts +9 -6
  699. package/extensions/forms/constants/countries.js +13 -6
  700. package/extensions/forms/constants/countries.js.map +1 -1
  701. package/extensions/forms/hooks/useDataValue.d.ts +2 -0
  702. package/extensions/forms/hooks/useDataValue.js +31 -21
  703. package/extensions/forms/hooks/useDataValue.js.map +1 -1
  704. package/extensions/forms/index.d.ts +1 -1
  705. package/extensions/forms/index.js +1 -0
  706. package/extensions/forms/index.js.map +1 -1
  707. package/extensions/forms/style/dnb-forms.css +101 -129
  708. package/extensions/forms/style/dnb-forms.min.css +1 -1
  709. package/extensions/forms/style/dnb-forms.scss +1 -6
  710. package/extensions/forms/types.d.ts +5 -4
  711. package/extensions/forms/types.js.map +1 -1
  712. package/extensions/payment-card/PaymentCard.d.ts +3 -2
  713. package/extensions/payment-card/PaymentCard.js +16 -37
  714. package/extensions/payment-card/PaymentCard.js.map +1 -1
  715. package/extensions/payment-card/icons/index.js +4 -2
  716. package/extensions/payment-card/icons/index.js.map +1 -1
  717. package/extensions/style/index.d.ts +5 -1
  718. package/extensions/style/index.js +4 -1
  719. package/extensions/style/index.js.map +1 -1
  720. package/icons/dnb/icons-meta.json +2 -2
  721. package/icons/icons-meta.json +2 -2
  722. package/package.json +1 -1
  723. package/shared/Eufemia.d.ts +1 -1
  724. package/shared/Eufemia.js +2 -2
  725. package/shared/Eufemia.js.map +1 -1
  726. package/shared/helpers/filterValidProps.d.ts +3 -7
  727. package/shared/helpers/filterValidProps.js +9 -3
  728. package/shared/helpers/filterValidProps.js.map +1 -1
  729. package/shared/helpers/withCamelCaseProps.d.ts +1 -0
  730. package/shared/helpers/withCamelCaseProps.js +6 -5
  731. package/shared/helpers/withCamelCaseProps.js.map +1 -1
  732. package/shared/helpers/withSnakeCaseProps.js +5 -4
  733. package/shared/helpers/withSnakeCaseProps.js.map +1 -1
  734. package/shared/locales/en-GB.d.ts +1 -1
  735. package/shared/locales/en-GB.js +4 -4
  736. package/shared/locales/en-GB.js.map +1 -1
  737. package/shared/locales/en-US.d.ts +1 -1
  738. package/shared/locales/index.d.ts +2 -2
  739. package/shared/locales/nb-NO.d.ts +1 -1
  740. package/shared/locales/nb-NO.js +4 -4
  741. package/shared/locales/nb-NO.js.map +1 -1
  742. package/style/core/utilities.scss +1 -1
  743. package/style/dnb-ui-components.css +567 -113
  744. package/style/dnb-ui-components.min.css +6 -4
  745. package/style/dnb-ui-components.scss +2 -1
  746. package/style/dnb-ui-elements.css +19 -26
  747. package/style/dnb-ui-elements.min.css +1 -1
  748. package/style/dnb-ui-extensions.css +101 -129
  749. package/style/dnb-ui-extensions.min.css +1 -1
  750. package/style/dnb-ui-forms.css +243 -0
  751. package/style/dnb-ui-forms.min.css +1 -0
  752. package/style/dnb-ui-forms.scss +19 -0
  753. package/style/themes/theme-eiendom/eiendom-theme-basis.css +19 -26
  754. package/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  755. package/style/themes/theme-eiendom/eiendom-theme-components.css +1033 -359
  756. package/style/themes/theme-eiendom/eiendom-theme-components.min.css +35 -7
  757. package/style/themes/theme-eiendom/eiendom-theme-components.scss +1 -0
  758. package/style/themes/theme-eiendom/eiendom-theme-elements.css +19 -26
  759. package/style/themes/theme-eiendom/eiendom-theme-elements.min.css +1 -1
  760. package/style/themes/theme-eiendom/eiendom-theme-extensions.css +101 -129
  761. package/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  762. package/style/themes/theme-eiendom/eiendom-theme-forms.css +252 -0
  763. package/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -0
  764. package/style/themes/theme-eiendom/eiendom-theme-forms.scss +15 -0
  765. package/style/themes/theme-sbanken/sbanken-theme-basis.css +19 -26
  766. package/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
  767. package/style/themes/theme-sbanken/sbanken-theme-components.css +1211 -595
  768. package/style/themes/theme-sbanken/sbanken-theme-components.min.css +16 -8
  769. package/style/themes/theme-sbanken/sbanken-theme-components.scss +4 -3
  770. package/style/themes/theme-sbanken/sbanken-theme-elements.css +19 -26
  771. package/style/themes/theme-sbanken/sbanken-theme-elements.min.css +1 -1
  772. package/style/themes/theme-sbanken/sbanken-theme-extensions.css +101 -129
  773. package/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  774. package/style/themes/theme-sbanken/sbanken-theme-forms.css +252 -0
  775. package/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -0
  776. package/style/themes/theme-sbanken/sbanken-theme-forms.scss +15 -0
  777. package/style/themes/theme-ui/ui-theme-basis.css +19 -26
  778. package/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  779. package/style/themes/theme-ui/ui-theme-components.css +1033 -359
  780. package/style/themes/theme-ui/ui-theme-components.min.css +35 -7
  781. package/style/themes/theme-ui/ui-theme-components.scss +1 -0
  782. package/style/themes/theme-ui/ui-theme-elements.css +19 -26
  783. package/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
  784. package/style/themes/theme-ui/ui-theme-extensions.css +101 -129
  785. package/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  786. package/style/themes/theme-ui/ui-theme-forms.css +252 -0
  787. package/style/themes/theme-ui/ui-theme-forms.min.css +1 -0
  788. package/style/themes/theme-ui/ui-theme-forms.scss +15 -0
  789. package/style/themes/theme-ui/ui-theme-tags.css +8 -7
  790. package/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  791. package/umd/dnb-ui-basis.min.js +1 -1
  792. package/umd/dnb-ui-components.min.js +1 -1
  793. package/umd/dnb-ui-elements.min.js +1 -1
  794. package/umd/dnb-ui-extensions.min.js +3 -3
  795. package/umd/dnb-ui-lib.min.js +1 -1
  796. package/cjs/components/button/style/dnb-button--tertiary.css +0 -216
  797. package/cjs/components/button/style/dnb-button--tertiary.min.css +0 -5
  798. package/cjs/extensions/forms/Field/style/dnb-forms-field.css +0 -93
  799. package/cjs/extensions/forms/Field/style/dnb-forms-field.min.css +0 -1
  800. package/cjs/extensions/forms/Field/style/dnb-forms-field.scss +0 -5
  801. package/cjs/extensions/forms/Form/style/dnb-forms-form.css +0 -33
  802. package/cjs/extensions/forms/Form/style/dnb-forms-form.min.css +0 -1
  803. package/cjs/extensions/forms/Form/style/dnb-forms-form.scss +0 -3
  804. package/cjs/extensions/forms/Form/style/index.d.ts +0 -5
  805. package/cjs/extensions/forms/Form/style/index.js +0 -4
  806. package/cjs/extensions/forms/Form/style/index.js.map +0 -1
  807. package/cjs/extensions/forms/StepsLayout/style/index.scss +0 -1
  808. package/cjs/extensions/forms/ValueBlock/style/index.scss +0 -1
  809. package/cjs/extensions/forms/style/index.d.ts +0 -1
  810. package/cjs/extensions/forms/style/index.js +0 -4
  811. package/cjs/extensions/forms/style/index.js.map +0 -1
  812. package/components/button/style/dnb-button--tertiary.css +0 -216
  813. package/components/button/style/dnb-button--tertiary.min.css +0 -5
  814. package/es/components/button/style/dnb-button--tertiary.css +0 -216
  815. package/es/components/button/style/dnb-button--tertiary.min.css +0 -5
  816. package/es/extensions/forms/Field/style/dnb-forms-field.css +0 -93
  817. package/es/extensions/forms/Field/style/dnb-forms-field.min.css +0 -1
  818. package/es/extensions/forms/Field/style/dnb-forms-field.scss +0 -5
  819. package/es/extensions/forms/Form/style/dnb-forms-form.css +0 -33
  820. package/es/extensions/forms/Form/style/dnb-forms-form.min.css +0 -1
  821. package/es/extensions/forms/Form/style/dnb-forms-form.scss +0 -3
  822. package/es/extensions/forms/Form/style/index.d.ts +0 -5
  823. package/es/extensions/forms/Form/style/index.js +0 -1
  824. package/es/extensions/forms/Form/style/index.js.map +0 -1
  825. package/es/extensions/forms/StepsLayout/style/index.scss +0 -1
  826. package/es/extensions/forms/ValueBlock/style/index.scss +0 -1
  827. package/es/extensions/forms/style/index.d.ts +0 -1
  828. package/es/extensions/forms/style/index.js +0 -1
  829. package/es/extensions/forms/style/index.js.map +0 -1
  830. package/extensions/forms/Field/style/dnb-forms-field.css +0 -93
  831. package/extensions/forms/Field/style/dnb-forms-field.min.css +0 -1
  832. package/extensions/forms/Field/style/dnb-forms-field.scss +0 -5
  833. package/extensions/forms/Form/style/dnb-forms-form.css +0 -33
  834. package/extensions/forms/Form/style/dnb-forms-form.min.css +0 -1
  835. package/extensions/forms/Form/style/dnb-forms-form.scss +0 -3
  836. package/extensions/forms/Form/style/index.d.ts +0 -5
  837. package/extensions/forms/Form/style/index.js +0 -1
  838. package/extensions/forms/Form/style/index.js.map +0 -1
  839. package/extensions/forms/StepsLayout/style/index.scss +0 -1
  840. package/extensions/forms/ValueBlock/style/index.scss +0 -1
  841. package/extensions/forms/style/index.d.ts +0 -1
  842. package/extensions/forms/style/index.js +0 -1
  843. package/extensions/forms/style/index.js.map +0 -1
  844. /package/cjs/components/button/style/{dnb-button--tertiary.scss → button--tertiary.scss} +0 -0
  845. /package/components/button/style/{dnb-button--tertiary.scss → button--tertiary.scss} +0 -0
  846. /package/es/components/button/style/{dnb-button--tertiary.scss → button--tertiary.scss} +0 -0
@@ -11,40 +11,26 @@
11
11
 
12
12
  &--fullscreen::after {
13
13
  left: -100vw;
14
- width: 200vw;
14
+ box-shadow: 100vw 0 0 0 currentcolor;
15
+ border-radius: 0;
15
16
  }
16
17
 
17
- &--light::after {
18
- border-radius: 0.25px;
18
+ --thickness: calc(var(--hr-thickness, 1px) + var(--modifier, 0px));
19
19
 
20
- /*
21
- * 60% and 65% for best result on low res screens, like on Chromebook (Acer)
22
- * Else the line will disappear!
23
- */
24
- background-image: linear-gradient(
25
- to bottom,
26
- currentcolor 60%,
27
- transparent 65%
28
- );
29
- background-size: 100% 1px;
30
- background-color: transparent;
31
- }
32
-
33
- &--medium::after {
34
- height: 2px;
35
- border-radius: 0.75px;
20
+ &--light {
21
+ --hr-thickness: 0.4px;
36
22
 
37
- /* Revert the hairline halv */
38
- background-image: linear-gradient(
39
- to bottom,
40
- currentcolor 51%,
41
- transparent 51%
42
- );
43
- background-size: 100% 3px;
44
- background-color: transparent;
23
+ // Modify the thickness, because the screenshot does not pick up the line when its under 1px.
24
+ // This may change in a later Playwright/Firefox version.
25
+ html[data-visual-test] & {
26
+ --modifier: 0.7px;
27
+ }
28
+ }
29
+ &--medium {
30
+ --hr-thickness: 1.5px;
45
31
  }
46
- }
47
32
 
48
- .dnb-spacing .dnb-hr {
49
- @include ui-spacing.defaultSpacing();
33
+ .dnb-spacing & {
34
+ @include ui-spacing.defaultSpacing();
35
+ }
50
36
  }
@@ -3,9 +3,10 @@
3
3
  @mixin hrStyle() {
4
4
  position: relative;
5
5
  padding: 0;
6
+ width: 100%; // when nested in a flex container, we need this.
6
7
  height: 0;
7
8
 
8
- display: flex;
9
+ display: flow-root; // avoid margin collapsing on Safari
9
10
 
10
11
  &:not([class*='dnb-space']) {
11
12
  margin: 0;
@@ -16,17 +17,14 @@
16
17
  &::after {
17
18
  content: '';
18
19
  position: absolute;
20
+ inset: 0;
19
21
  z-index: 1;
20
- left: 0;
21
- right: 0;
22
- top: 0;
23
22
 
24
- width: 100%;
25
- height: 1px;
23
+ height: var(--thickness);
26
24
 
27
25
  color: inherit;
28
26
  background-color: currentcolor;
29
- border-radius: 0.5px;
27
+ border-radius: calc(var(--thickness) / 2);
30
28
  }
31
29
  }
32
30
 
@@ -16,7 +16,7 @@ export interface ContextState {
16
16
  mountedFieldPaths: string[];
17
17
  handleMountField: (path: string) => void;
18
18
  handleUnMountField: (path: string) => void;
19
- setPathWithError: (path: string, hasError: boolean) => void;
19
+ setValueWithError: (identifier: string, hasError: boolean) => void;
20
20
  hasErrors: () => boolean;
21
21
  _isInsideFormElement?: boolean;
22
22
  }
@@ -9,7 +9,7 @@ export const defaultContextState = {
9
9
  handleMountField: () => null,
10
10
  handleUnMountField: () => null,
11
11
  hasErrors: () => false,
12
- setPathWithError: () => null,
12
+ setValueWithError: () => null,
13
13
  _isInsideFormElement: false
14
14
  };
15
15
  const Context = React.createContext(defaultContextState);
@@ -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 /** 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"}
1
+ {"version":3,"file":"Context.js","names":["React","defaultContextState","data","undefined","handlePathChange","handleSubmit","showAllErrors","setShowAllErrors","mountedFieldPaths","handleMountField","handleUnMountField","hasErrors","setValueWithError","_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 setValueWithError: (identifier: 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 setValueWithError: () => 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,iBAAiB,EAAEA,CAAA,KAAM,IAAI;EAC7BC,oBAAoB,EAAE;AACxB,CAAC;AAED,MAAMC,OAAO,GAAGd,KAAK,CAACe,aAAa,CAAed,mBAAmB,CAAC;AAEtE,eAAea,OAAO"}
@@ -43,7 +43,7 @@ export default function Provider(_ref) {
43
43
  const setShowAllErrors = useCallback(showAllErrors => {
44
44
  showAllErrorsRef.current = showAllErrors;
45
45
  }, []);
46
- const pathsWithErrorRef = useRef([]);
46
+ const valuesWithErrorRef = useRef([]);
47
47
  const initialData = useMemo(() => {
48
48
  if (sessionStorageId && typeof window !== 'undefined') {
49
49
  var _window$sessionStorag;
@@ -77,10 +77,13 @@ export default function Provider(_ref) {
77
77
  }, [schema, validateData]);
78
78
  const hasErrors = useCallback(() => Boolean(mountedFieldPathsRef.current.find(mountedFieldPath => {
79
79
  var _errorsRef$current;
80
- return ((_errorsRef$current = errorsRef.current) === null || _errorsRef$current === void 0 ? void 0 : _errorsRef$current[mountedFieldPath]) !== undefined || pathsWithErrorRef.current.includes(mountedFieldPath);
80
+ return ((_errorsRef$current = errorsRef.current) === null || _errorsRef$current === void 0 ? void 0 : _errorsRef$current[mountedFieldPath]) !== undefined || valuesWithErrorRef.current.includes(mountedFieldPath);
81
81
  })), []);
82
- const setPathWithError = useCallback((path, hasError) => {
83
- pathsWithErrorRef.current = hasError ? addListPath(pathsWithErrorRef.current, path) : removeListPath(pathsWithErrorRef.current, path);
82
+ const setValueWithError = useCallback((identifier, withError) => {
83
+ if (withError !== valuesWithErrorRef.current.includes(identifier)) {
84
+ valuesWithErrorRef.current = withError ? addListPath(valuesWithErrorRef.current, identifier) : removeListPath(valuesWithErrorRef.current, identifier);
85
+ forceUpdate();
86
+ }
84
87
  }, []);
85
88
  const handlePathChange = useCallback((path, value) => {
86
89
  var _internalDataRef$curr;
@@ -130,6 +133,7 @@ export default function Provider(_ref) {
130
133
  } else {
131
134
  showAllErrorsRef.current = true;
132
135
  onSubmitRequest === null || onSubmitRequest === void 0 ? void 0 : onSubmitRequest();
136
+ forceUpdate();
133
137
  }
134
138
  return internalDataRef.current;
135
139
  }, [scrollTopOnSubmit, hasErrors, onSubmit, onSubmitRequest, sessionStorageId]);
@@ -154,7 +158,7 @@ export default function Provider(_ref) {
154
158
  handleMountField,
155
159
  handleUnMountField,
156
160
  hasErrors,
157
- setPathWithError
161
+ setValueWithError
158
162
  })
159
163
  }, children);
160
164
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Provider.js","names":["React","useEffect","useRef","useMemo","useCallback","useReducer","pointer","ajv","ajvErrorsToFormErrors","useMountEffect","useUpdateEffect","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","forceUpdate","undefined","console","error","mountedFieldPathsRef","errorsRef","showAllErrorsRef","setShowAllErrors","showAllErrors","current","pathsWithErrorRef","initialData","window","_window$sessionStorag","sessionDataJSON","sessionStorage","getItem","JSON","parse","internalDataRef","ajvSchemaValidatorRef","validateData","errors","compile","hasErrors","Boolean","find","mountedFieldPath","_errorsRef$current","setPathWithError","hasError","handlePathChange","value","_internalDataRef$curr","newData","match","set","_window$sessionStorag2","setItem","stringify","handleMountField","handleUnMountField","handleSubmit","formElement","_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 useReducer,\n} from 'react'\nimport pointer, { JsonObject } from 'json-pointer'\nimport { JSONSchema7 } from 'json-schema'\nimport { ValidateFunction } from 'ajv'\nimport ajv, { ajvErrorsToFormErrors } from '../../utils/ajv'\nimport { FormError } from '../../types'\nimport useMountEffect from '../../hooks/useMountEffect'\nimport useUpdateEffect from '../../hooks/useUpdateEffect'\nimport Context, { ContextState } from '../Context'\n\n/**\n * Deprecated, as it is supported by all major 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 const [, forceUpdate] = useReducer(() => ({}), {})\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 mountedFieldPathsRef = useRef<string[]>([])\n // - Errors from provider validation (the whole data set)\n const errorsRef = useRef<Record<string, FormError> | undefined>()\n const showAllErrorsRef = useRef<boolean>(false)\n const setShowAllErrors = useCallback((showAllErrors: boolean) => {\n showAllErrorsRef.current = showAllErrors\n }, [])\n // - Errors reported by fields, based on their direct validation rules\n const pathsWithErrorRef = useRef<string[]>([])\n // - Data\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 // eslint-disable-next-line react-hooks/exhaustive-deps -- Avoid triggering code that should only run initially\n }, [])\n const internalDataRef = useRef<Partial<Data>>(initialData)\n // - Validator\n const ajvSchemaValidatorRef = useRef<ValidateFunction>()\n\n const validateData = useCallback(() => {\n if (!ajvSchemaValidatorRef.current) {\n // No schema-based validator. Assume data is valid.\n return\n }\n\n if (!ajvSchemaValidatorRef.current(internalDataRef.current)) {\n // Errors found\n const errors = ajvErrorsToFormErrors(\n ajvSchemaValidatorRef.current.errors\n )\n errorsRef.current = errors\n } else {\n errorsRef.current = undefined\n }\n forceUpdate()\n }, [])\n\n useEffect(() => {\n if (!schema) {\n return\n }\n ajvSchemaValidatorRef.current = ajv.compile(schema)\n validateData()\n }, [schema, validateData])\n\n // Error handling\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 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 internalDataRef.current ??\n (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 internalDataRef.current = newData\n\n validateData()\n showAllErrorsRef.current = false\n forceUpdate()\n },\n [onChange, onPathChange, validateData, sessionStorageId]\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?.(internalDataRef.current 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 showAllErrorsRef.current = true\n onSubmitRequest?.()\n }\n return internalDataRef.current\n },\n [\n scrollTopOnSubmit,\n hasErrors,\n onSubmit,\n onSubmitRequest,\n sessionStorageId,\n ]\n )\n\n useMountEffect(() => {\n // Validate the initial data\n validateData()\n })\n\n useUpdateEffect(() => {\n // Update and validate changes to the external data set\n internalDataRef.current = data\n validateData()\n forceUpdate()\n }, [data, validateData, forceUpdate])\n\n return (\n <Context.Provider\n value={{\n data: internalDataRef.current,\n ...rest,\n handlePathChange,\n handleSubmit,\n errors: errorsRef.current,\n showAllErrors: showAllErrorsRef.current,\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","useReducer","pointer","ajv","ajvErrorsToFormErrors","useMountEffect","useUpdateEffect","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","forceUpdate","undefined","console","error","mountedFieldPathsRef","errorsRef","showAllErrorsRef","setShowAllErrors","showAllErrors","current","valuesWithErrorRef","initialData","window","_window$sessionStorag","sessionDataJSON","sessionStorage","getItem","JSON","parse","internalDataRef","ajvSchemaValidatorRef","validateData","errors","compile","hasErrors","Boolean","find","mountedFieldPath","_errorsRef$current","setValueWithError","identifier","withError","handlePathChange","value","_internalDataRef$curr","newData","match","set","_window$sessionStorag2","setItem","stringify","handleMountField","handleUnMountField","handleSubmit","formElement","_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 useReducer,\n} from 'react'\nimport pointer, { JsonObject } from 'json-pointer'\nimport { JSONSchema7 } from 'json-schema'\nimport { ValidateFunction } from 'ajv'\nimport ajv, { ajvErrorsToFormErrors } from '../../utils/ajv'\nimport { FormError } from '../../types'\nimport useMountEffect from '../../hooks/useMountEffect'\nimport useUpdateEffect from '../../hooks/useUpdateEffect'\nimport Context, { ContextState } from '../Context'\n\n/**\n * Deprecated, as it is supported by all major 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 const [, forceUpdate] = useReducer(() => ({}), {})\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 mountedFieldPathsRef = useRef<string[]>([])\n // - Errors from provider validation (the whole data set)\n const errorsRef = useRef<Record<string, FormError> | undefined>()\n const showAllErrorsRef = useRef<boolean>(false)\n const setShowAllErrors = useCallback((showAllErrors: boolean) => {\n showAllErrorsRef.current = showAllErrors\n }, [])\n // - Errors reported by fields, based on their direct validation rules\n const valuesWithErrorRef = useRef<string[]>([])\n // - Data\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 // eslint-disable-next-line react-hooks/exhaustive-deps -- Avoid triggering code that should only run initially\n }, [])\n const internalDataRef = useRef<Partial<Data>>(initialData)\n // - Validator\n const ajvSchemaValidatorRef = useRef<ValidateFunction>()\n\n const validateData = useCallback(() => {\n if (!ajvSchemaValidatorRef.current) {\n // No schema-based validator. Assume data is valid.\n return\n }\n\n if (!ajvSchemaValidatorRef.current(internalDataRef.current)) {\n // Errors found\n const errors = ajvErrorsToFormErrors(\n ajvSchemaValidatorRef.current.errors\n )\n errorsRef.current = errors\n } else {\n errorsRef.current = undefined\n }\n forceUpdate()\n }, [])\n\n useEffect(() => {\n if (!schema) {\n return\n }\n ajvSchemaValidatorRef.current = ajv.compile(schema)\n validateData()\n }, [schema, validateData])\n\n // Error handling\n const hasErrors = useCallback(\n () =>\n Boolean(\n mountedFieldPathsRef.current.find(\n (mountedFieldPath) =>\n errorsRef.current?.[mountedFieldPath] !== undefined ||\n valuesWithErrorRef.current.includes(mountedFieldPath)\n )\n ),\n []\n )\n\n const setValueWithError = useCallback(\n (identifier: string, withError: boolean) => {\n if (withError !== valuesWithErrorRef.current.includes(identifier)) {\n // The boolean error state for the target value was changed\n valuesWithErrorRef.current = withError\n ? addListPath(valuesWithErrorRef.current, identifier)\n : removeListPath(valuesWithErrorRef.current, identifier)\n forceUpdate()\n }\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 internalDataRef.current ??\n (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 internalDataRef.current = newData\n\n validateData()\n showAllErrorsRef.current = false\n forceUpdate()\n },\n [onChange, onPathChange, validateData, sessionStorageId]\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?.(internalDataRef.current 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 showAllErrorsRef.current = true\n onSubmitRequest?.()\n forceUpdate()\n }\n return internalDataRef.current\n },\n [\n scrollTopOnSubmit,\n hasErrors,\n onSubmit,\n onSubmitRequest,\n sessionStorageId,\n ]\n )\n\n useMountEffect(() => {\n // Validate the initial data\n validateData()\n })\n\n useUpdateEffect(() => {\n // Update and validate changes to the external data set\n internalDataRef.current = data\n validateData()\n forceUpdate()\n }, [data, validateData, forceUpdate])\n\n return (\n <Context.Provider\n value={{\n data: internalDataRef.current,\n ...rest,\n handlePathChange,\n handleSubmit,\n errors: errorsRef.current,\n showAllErrors: showAllErrorsRef.current,\n setShowAllErrors,\n mountedFieldPaths: mountedFieldPathsRef.current,\n handleMountField,\n handleUnMountField,\n hasErrors,\n setValueWithError,\n }}\n >\n {children}\n </Context.Provider>\n )\n}\n"],"mappings":"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"}
@@ -1,9 +1,3 @@
1
- :root {
2
- --forms-field-width--small: 5rem;
3
- --forms-field-width--medium: 11rem;
4
- --forms-field-width--large: 21rem;
5
- }
6
-
7
1
  .dnb-forms-field-array-selection--options-layout-vertical .dnb-forms-field-array-selection__options {
8
2
  display: flex;
9
3
  flex-flow: column;
@@ -1 +1 @@
1
- :root{--forms-field-width--small:5rem;--forms-field-width--medium:11rem;--forms-field-width--large:21rem}.dnb-forms-field-array-selection--options-layout-vertical .dnb-forms-field-array-selection__options{grid-row-gap:var(--spacing-x-small);display:flex;flex-flow:column;row-gap:var(--spacing-x-small)}.dnb-forms-field-array-selection--options-layout-horizontal .dnb-forms-field-array-selection__options{grid-column-gap:var(--spacing-small);-moz-column-gap:var(--spacing-small);column-gap:var(--spacing-small);display:flex;flex-flow:row wrap}
1
+ .dnb-forms-field-array-selection--options-layout-vertical .dnb-forms-field-array-selection__options{grid-row-gap:var(--spacing-x-small);display:flex;flex-flow:column;row-gap:var(--spacing-x-small)}.dnb-forms-field-array-selection--options-layout-horizontal .dnb-forms-field-array-selection__options{grid-column-gap:var(--spacing-small);-moz-column-gap:var(--spacing-small);column-gap:var(--spacing-small);display:flex;flex-flow:row wrap}
@@ -1,5 +1,3 @@
1
- @import '../../style/field-sizes.scss';
2
-
3
1
  .dnb-forms-field-array-selection {
4
2
  &--options-layout-vertical &__options {
5
3
  display: flex;
@@ -1,6 +1,8 @@
1
+ import { Props as NumberProps } from '../Number';
1
2
  import type { FieldProps, FieldHelpProps } from '../../types';
2
3
  export type Props = FieldHelpProps & FieldProps<number, undefined> & {
3
- currency?: string;
4
+ currency?: NumberProps['currency'];
5
+ rightAligned?: NumberProps['rightAligned'];
4
6
  };
5
7
  declare function Currency(props: Props): import("react/jsx-runtime").JSX.Element;
6
8
  declare namespace Currency {
@@ -1,15 +1,21 @@
1
+ "use client";
2
+
1
3
  import _extends from "@babel/runtime/helpers/esm/extends";
2
4
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
3
5
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
4
6
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
5
7
  import React from 'react';
6
8
  import classnames from 'classnames';
9
+ import { Context } from '../../../../shared';
10
+ import { getCurrencySymbol } from '../../../../components/number-format/NumberUtils';
11
+ import { CURRENCY } from '../../../../shared/defaults';
7
12
  import NumberComponent from '../Number';
8
13
  function Currency(props) {
9
14
  var _props$currency, _props$placeholder;
15
+ const context = React.useContext(Context);
10
16
  const preparedProps = _objectSpread(_objectSpread({}, props), {}, {
11
- currency: (_props$currency = props.currency) !== null && _props$currency !== void 0 ? _props$currency : 'NOK',
12
- placeholder: (_props$placeholder = props.placeholder) !== null && _props$placeholder !== void 0 ? _props$placeholder : 'kr'
17
+ currency: (_props$currency = props.currency) !== null && _props$currency !== void 0 ? _props$currency : CURRENCY,
18
+ placeholder: (_props$placeholder = props.placeholder) !== null && _props$placeholder !== void 0 ? _props$placeholder : getCurrencySymbol(context === null || context === void 0 ? void 0 : context.locale, props.currency)
13
19
  });
14
20
  return React.createElement(NumberComponent, _extends({}, preparedProps, {
15
21
  className: classnames('dnb-forms-field-currency', props.className)
@@ -1 +1 @@
1
- {"version":3,"file":"Currency.js","names":["React","classnames","NumberComponent","Currency","props","_props$currency","_props$placeholder","preparedProps","_objectSpread","currency","placeholder","createElement","_extends","className","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Currency/Currency.tsx"],"sourcesContent":["import React from 'react'\nimport classnames from 'classnames'\nimport NumberComponent from '../Number'\nimport type { FieldProps, FieldHelpProps } from '../../types'\n\nexport type Props = FieldHelpProps &\n FieldProps<number, undefined> & {\n currency?: string\n }\n\nfunction Currency(props: Props) {\n const preparedProps = {\n ...props,\n currency: props.currency ?? 'NOK',\n placeholder: props.placeholder ?? 'kr',\n }\n\n return (\n <NumberComponent\n {...preparedProps}\n className={classnames('dnb-forms-field-currency', props.className)}\n />\n )\n}\n\nCurrency._supportsSpacingProps = true\nexport default Currency\n"],"mappings":";;;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,eAAe,MAAM,WAAW;AAQvC,SAASC,QAAQA,CAACC,KAAY,EAAE;EAAA,IAAAC,eAAA,EAAAC,kBAAA;EAC9B,MAAMC,aAAa,GAAAC,aAAA,CAAAA,aAAA,KACdJ,KAAK;IACRK,QAAQ,GAAAJ,eAAA,GAAED,KAAK,CAACK,QAAQ,cAAAJ,eAAA,cAAAA,eAAA,GAAI,KAAK;IACjCK,WAAW,GAAAJ,kBAAA,GAAEF,KAAK,CAACM,WAAW,cAAAJ,kBAAA,cAAAA,kBAAA,GAAI;EAAI,EACvC;EAED,OACEN,KAAA,CAAAW,aAAA,CAACT,eAAe,EAAAU,QAAA,KACVL,aAAa;IACjBM,SAAS,EAAEZ,UAAU,CAAC,0BAA0B,EAAEG,KAAK,CAACS,SAAS;EAAE,EACpE,CAAC;AAEN;AAEAV,QAAQ,CAACW,qBAAqB,GAAG,IAAI;AACrC,eAAeX,QAAQ"}
1
+ {"version":3,"file":"Currency.js","names":["React","classnames","Context","getCurrencySymbol","CURRENCY","NumberComponent","Currency","props","_props$currency","_props$placeholder","context","useContext","preparedProps","_objectSpread","currency","placeholder","locale","createElement","_extends","className","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Currency/Currency.tsx"],"sourcesContent":["import React from 'react'\nimport classnames from 'classnames'\nimport { Context } from '../../../../shared'\nimport { getCurrencySymbol } from '../../../../components/number-format/NumberUtils'\nimport { CURRENCY } from '../../../../shared/defaults'\nimport NumberComponent, { Props as NumberProps } from '../Number'\nimport type { FieldProps, FieldHelpProps } from '../../types'\n\nexport type Props = FieldHelpProps &\n FieldProps<number, undefined> & {\n currency?: NumberProps['currency']\n rightAligned?: NumberProps['rightAligned']\n }\n\nfunction Currency(props: Props) {\n const context = React.useContext(Context)\n const preparedProps = {\n ...props,\n currency: props.currency ?? CURRENCY,\n placeholder:\n props.placeholder ??\n getCurrencySymbol(context?.locale, props.currency),\n }\n\n return (\n <NumberComponent\n {...preparedProps}\n className={classnames('dnb-forms-field-currency', props.className)}\n />\n )\n}\n\nCurrency._supportsSpacingProps = true\nexport default Currency\n"],"mappings":";;;;;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,OAAO,QAAQ,oBAAoB;AAC5C,SAASC,iBAAiB,QAAQ,kDAAkD;AACpF,SAASC,QAAQ,QAAQ,6BAA6B;AACtD,OAAOC,eAAe,MAAgC,WAAW;AASjE,SAASC,QAAQA,CAACC,KAAY,EAAE;EAAA,IAAAC,eAAA,EAAAC,kBAAA;EAC9B,MAAMC,OAAO,GAAGV,KAAK,CAACW,UAAU,CAACT,OAAO,CAAC;EACzC,MAAMU,aAAa,GAAAC,aAAA,CAAAA,aAAA,KACdN,KAAK;IACRO,QAAQ,GAAAN,eAAA,GAAED,KAAK,CAACO,QAAQ,cAAAN,eAAA,cAAAA,eAAA,GAAIJ,QAAQ;IACpCW,WAAW,GAAAN,kBAAA,GACTF,KAAK,CAACQ,WAAW,cAAAN,kBAAA,cAAAA,kBAAA,GACjBN,iBAAiB,CAACO,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEM,MAAM,EAAET,KAAK,CAACO,QAAQ;EAAC,EACrD;EAED,OACEd,KAAA,CAAAiB,aAAA,CAACZ,eAAe,EAAAa,QAAA,KACVN,aAAa;IACjBO,SAAS,EAAElB,UAAU,CAAC,0BAA0B,EAAEM,KAAK,CAACY,SAAS;EAAE,EACpE,CAAC;AAEN;AAEAb,QAAQ,CAACc,qBAAqB,GAAG,IAAI;AACrC,eAAed,QAAQ"}
@@ -44,15 +44,15 @@ function Expiry(props) {
44
44
  const idRef = useRef(propsId || makeUniqueId()).current;
45
45
  const status = error ? 'error' : warning ? 'warn' : info ? 'info' : null;
46
46
  return React.createElement(FieldBlock, _extends({
47
- className: classnames(className),
47
+ className: classnames('dnb-forms-field-expiry', className),
48
48
  labelSecondary: labelSecondary,
49
49
  labelDescription: labelDescription,
50
50
  info: info,
51
51
  warning: warning,
52
52
  error: error
53
53
  }, pickSpacingProps(props)), React.createElement(MultiInputMask, {
54
+ stretch: true,
54
55
  id: `${idRef}__input`,
55
- className: "dnb-forms-field-expiry",
56
56
  label: label,
57
57
  labelDirection: layout,
58
58
  values: expiry,
@@ -68,12 +68,14 @@ function Expiry(props) {
68
68
  id: 'month',
69
69
  label: sharedContext === null || sharedContext === void 0 ? void 0 : sharedContext.translation.DatePicker['month'],
70
70
  mask: [/[0-1]/, expiry.month.charAt(0) === '0' || expiry.month.charAt(0) === '' ? /[1-9]/ : /[0-2]/],
71
- placeholderCharacter: placeholders['month']
71
+ placeholderCharacter: placeholders['month'],
72
+ autoComplete: 'cc-exp-month'
72
73
  }, {
73
74
  id: 'year',
74
75
  label: sharedContext === null || sharedContext === void 0 ? void 0 : sharedContext.translation.DatePicker['year'],
75
76
  mask: [/[0-9]/, /[0-9]/],
76
- placeholderCharacter: placeholders['year']
77
+ placeholderCharacter: placeholders['year'],
78
+ autoComplete: 'cc-exp-year'
77
79
  }],
78
80
  suffix: help ? React.createElement(HelpButton, {
79
81
  title: help.title
@@ -1 +1 @@
1
- {"version":3,"file":"Expiry.js","names":["React","useContext","useRef","makeUniqueId","SharedContext","pickSpacingProps","useDataValue","classnames","FieldBlock","MultiInputMask","HelpButton","Expiry","props","_value$substring","_value$substring2","sharedContext","placeholders","translation","DatePicker","placeholder_characters","id","propsId","className","label","Forms","expiryLabel","error","info","warning","help","disabled","value","labelDescription","labelSecondary","layout","required","handleFocus","handleBlur","handleChange","_objectSpread","emptyValue","expiry","month","substring","year","idRef","current","status","createElement","_extends","labelDirection","values","statusState","undefined","onChange","expiryToString","onBlur","onFocus","delimiter","inputs","mask","charAt","placeholderCharacter","suffix","title","contents","Object","join","_supportsEufemiaSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Expiry/Expiry.tsx"],"sourcesContent":["import React, { useContext, useRef } from 'react'\nimport { makeUniqueId } from '../../../../shared/component-helper'\nimport SharedContext from '../../../../shared/Context'\nimport { FieldHelpProps, FieldProps } from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport { useDataValue } from '../../hooks'\nimport classnames from 'classnames'\nimport FieldBlock from '../../FieldBlock'\nimport { MultiInputMask } from '../../../../components/input-masked'\nimport type { MultiInputMaskValue } from '../../../../components/input-masked'\nimport { HelpButton } from '../../../../components'\n\ntype ExpiryValue = MultiInputMaskValue<'month' | 'year'>\n\nexport type ExpiryProps = FieldProps<string> & FieldHelpProps\n\nfunction Expiry(props: ExpiryProps) {\n const sharedContext = useContext(SharedContext)\n const placeholders =\n sharedContext?.translation.DatePicker.placeholder_characters\n\n const {\n id: propsId,\n className,\n label = sharedContext?.translation.Forms.expiryLabel,\n error,\n info,\n warning,\n help,\n disabled,\n value = '',\n labelDescription,\n labelSecondary,\n layout = 'vertical',\n required,\n handleFocus,\n handleBlur,\n handleChange,\n } = useDataValue({\n ...props,\n emptyValue: '',\n })\n\n const expiry: ExpiryValue = {\n month: value.substring(0, 2) ?? '',\n year: value.substring(2, 4) ?? '',\n }\n\n const idRef = useRef(propsId || makeUniqueId()).current\n\n const status = error ? 'error' : warning ? 'warn' : info ? 'info' : null\n\n return (\n <FieldBlock\n className={classnames(className)}\n labelSecondary={labelSecondary}\n labelDescription={labelDescription}\n info={info}\n warning={warning}\n error={error}\n {...pickSpacingProps(props)}\n >\n <MultiInputMask\n id={`${idRef}__input`}\n className=\"dnb-forms-field-expiry\"\n label={label}\n labelDirection={layout}\n values={expiry}\n status={status}\n statusState={disabled ? 'disabled' : undefined}\n disabled={disabled}\n required={required}\n onChange={(expiry) => handleChange(expiryToString(expiry))}\n onBlur={handleBlur}\n onFocus={handleFocus}\n delimiter=\"/\"\n inputs={[\n {\n id: 'month',\n label: sharedContext?.translation.DatePicker['month'],\n mask: [\n /[0-1]/,\n expiry.month.charAt(0) === '0' ||\n expiry.month.charAt(0) === ''\n ? /[1-9]/\n : /[0-2]/,\n ],\n placeholderCharacter: placeholders['month'],\n },\n {\n id: 'year',\n label: sharedContext?.translation.DatePicker['year'],\n mask: [/[0-9]/, /[0-9]/],\n placeholderCharacter: placeholders['year'],\n },\n ]}\n suffix={\n help ? (\n <HelpButton title={help.title}>{help.contents}</HelpButton>\n ) : undefined\n }\n />\n </FieldBlock>\n )\n\n function expiryToString(values: ExpiryValue) {\n return Object.values(values).join('')\n }\n}\n\nExpiry._supportsEufemiaSpacingProps = true\nexport default Expiry\n"],"mappings":"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"}
1
+ {"version":3,"file":"Expiry.js","names":["React","useContext","useRef","makeUniqueId","SharedContext","pickSpacingProps","useDataValue","classnames","FieldBlock","MultiInputMask","HelpButton","Expiry","props","_value$substring","_value$substring2","sharedContext","placeholders","translation","DatePicker","placeholder_characters","id","propsId","className","label","Forms","expiryLabel","error","info","warning","help","disabled","value","labelDescription","labelSecondary","layout","required","handleFocus","handleBlur","handleChange","_objectSpread","emptyValue","expiry","month","substring","year","idRef","current","status","createElement","_extends","stretch","labelDirection","values","statusState","undefined","onChange","expiryToString","onBlur","onFocus","delimiter","inputs","mask","charAt","placeholderCharacter","autoComplete","suffix","title","contents","Object","join","_supportsEufemiaSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Expiry/Expiry.tsx"],"sourcesContent":["import React, { useContext, useRef } from 'react'\nimport { makeUniqueId } from '../../../../shared/component-helper'\nimport SharedContext from '../../../../shared/Context'\nimport { FieldHelpProps, FieldProps } from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport { useDataValue } from '../../hooks'\nimport classnames from 'classnames'\nimport FieldBlock from '../../FieldBlock'\nimport { MultiInputMask } from '../../../../components/input-masked'\nimport type { MultiInputMaskValue } from '../../../../components/input-masked'\nimport { HelpButton } from '../../../../components'\n\ntype ExpiryValue = MultiInputMaskValue<'month' | 'year'>\n\nexport type ExpiryProps = FieldProps<string> & FieldHelpProps\n\nfunction Expiry(props: ExpiryProps) {\n const sharedContext = useContext(SharedContext)\n const placeholders =\n sharedContext?.translation.DatePicker.placeholder_characters\n\n const {\n id: propsId,\n className,\n label = sharedContext?.translation.Forms.expiryLabel,\n error,\n info,\n warning,\n help,\n disabled,\n value = '',\n labelDescription,\n labelSecondary,\n layout = 'vertical',\n required,\n handleFocus,\n handleBlur,\n handleChange,\n } = useDataValue({\n ...props,\n emptyValue: '',\n })\n\n const expiry: ExpiryValue = {\n month: value.substring(0, 2) ?? '',\n year: value.substring(2, 4) ?? '',\n }\n\n const idRef = useRef(propsId || makeUniqueId()).current\n\n const status = error ? 'error' : warning ? 'warn' : info ? 'info' : null\n\n return (\n <FieldBlock\n className={classnames('dnb-forms-field-expiry', className)}\n labelSecondary={labelSecondary}\n labelDescription={labelDescription}\n info={info}\n warning={warning}\n error={error}\n {...pickSpacingProps(props)}\n >\n <MultiInputMask\n stretch\n id={`${idRef}__input`}\n label={label}\n labelDirection={layout}\n values={expiry}\n status={status}\n statusState={disabled ? 'disabled' : undefined}\n disabled={disabled}\n required={required}\n onChange={(expiry) => handleChange(expiryToString(expiry))}\n onBlur={handleBlur}\n onFocus={handleFocus}\n delimiter=\"/\"\n inputs={[\n {\n id: 'month',\n label: sharedContext?.translation.DatePicker['month'],\n mask: [\n /[0-1]/,\n expiry.month.charAt(0) === '0' ||\n expiry.month.charAt(0) === ''\n ? /[1-9]/\n : /[0-2]/,\n ],\n placeholderCharacter: placeholders['month'],\n autoComplete: 'cc-exp-month',\n },\n {\n id: 'year',\n label: sharedContext?.translation.DatePicker['year'],\n mask: [/[0-9]/, /[0-9]/],\n placeholderCharacter: placeholders['year'],\n autoComplete: 'cc-exp-year',\n },\n ]}\n suffix={\n help ? (\n <HelpButton title={help.title}>{help.contents}</HelpButton>\n ) : undefined\n }\n />\n </FieldBlock>\n )\n\n function expiryToString(values: ExpiryValue) {\n return Object.values(values).join('')\n }\n}\n\nExpiry._supportsEufemiaSpacingProps = true\nexport default Expiry\n"],"mappings":"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"}
@@ -1,12 +1,6 @@
1
- :root {
2
- --forms-field-width--small: 5rem;
3
- --forms-field-width--medium: 11rem;
4
- --forms-field-width--large: 21rem;
5
- }
6
-
7
- .dnb-forms-field-expiry {
1
+ .dnb-forms-field-expiry .dnb-multi-input-mask {
8
2
  width: var(--forms-field-width--small);
9
3
  }
10
- .dnb-forms-field-expiry .dnb-input__shell {
4
+ .dnb-forms-field-expiry .dnb-multi-input-mask .dnb-input__shell {
11
5
  justify-content: center;
12
6
  }
@@ -1 +1 @@
1
- :root{--forms-field-width--small:5rem;--forms-field-width--medium:11rem;--forms-field-width--large:21rem}.dnb-forms-field-expiry{width:var(--forms-field-width--small)}.dnb-forms-field-expiry .dnb-input__shell{justify-content:center}
1
+ .dnb-forms-field-expiry .dnb-multi-input-mask{width:var(--forms-field-width--small)}.dnb-forms-field-expiry .dnb-multi-input-mask .dnb-input__shell{justify-content:center}
@@ -1,9 +1,9 @@
1
- @import '../../style/field-sizes.scss';
2
-
3
1
  .dnb-forms-field-expiry {
4
- width: var(--forms-field-width--small);
2
+ .dnb-multi-input-mask {
3
+ width: var(--forms-field-width--small);
5
4
 
6
- .dnb-input__shell {
7
- justify-content: center;
5
+ .dnb-input__shell {
6
+ justify-content: center;
7
+ }
8
8
  }
9
9
  }
@@ -10,17 +10,18 @@ function NationalIdentityNumber(props) {
10
10
  var _props$pattern, _props$label, _props$width;
11
11
  const sharedContext = useContext(SharedContext);
12
12
  const tr = sharedContext === null || sharedContext === void 0 ? void 0 : sharedContext.translation.Forms;
13
+ const errorMessage = tr.nationalIdentityNumberErrorRequired;
13
14
  const {
14
15
  validate = true,
15
16
  omitMask
16
17
  } = props;
17
18
  const errorMessages = useMemo(() => _objectSpread({
18
- required: tr.nationalIdentityNumberErrorRequired,
19
- pattern: tr.nationalIdentityNumberErrorPattern
20
- }, props.errorMessages), [tr, props.errorMessages]);
21
- const mask = useMemo(() => omitMask ? [/\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/] : [/\d/, /\d/, /\d/, /\d/, /\d/, /\d/, ' ', /\d/, /\d/, /\d/, /\d/, /\d/], [omitMask]);
19
+ required: errorMessage,
20
+ pattern: errorMessage
21
+ }, props.errorMessages), [errorMessage, props.errorMessages]);
22
+ const mask = useMemo(() => omitMask ? Array(11).fill(/\d/) : [/\d/, /\d/, /\d/, /\d/, /\d/, /\d/, ' ', /\d/, /\d/, /\d/, /\d/, /\d/], [omitMask]);
22
23
  const stringComponentProps = _objectSpread(_objectSpread({}, props), {}, {
23
- pattern: (_props$pattern = props.pattern) !== null && _props$pattern !== void 0 ? _props$pattern : validate ? '^[0-9]{11}$' : undefined,
24
+ pattern: (_props$pattern = props.pattern) !== null && _props$pattern !== void 0 ? _props$pattern : validate && !props.validator ? '^[0-9]{11}$' : undefined,
24
25
  label: (_props$label = props.label) !== null && _props$label !== void 0 ? _props$label : sharedContext === null || sharedContext === void 0 ? void 0 : sharedContext.translation.Forms.nationalIdentityNumberLabel,
25
26
  errorMessages,
26
27
  mask,
@@ -1 +1 @@
1
- {"version":3,"file":"NationalIdentityNumber.js","names":["React","useContext","useMemo","StringComponent","SharedContext","NationalIdentityNumber","props","_props$pattern","_props$label","_props$width","sharedContext","tr","translation","Forms","validate","omitMask","errorMessages","_objectSpread","required","nationalIdentityNumberErrorRequired","pattern","nationalIdentityNumberErrorPattern","mask","stringComponentProps","undefined","label","nationalIdentityNumberLabel","width","createElement","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.tsx"],"sourcesContent":["import React, { useContext, useMemo } from 'react'\nimport StringComponent, { Props as StringComponentProps } from '../String'\nimport SharedContext from '../../../../shared/Context'\n\nexport type Props = StringComponentProps & {\n omitMask?: boolean\n validate?: boolean\n}\n\nfunction NationalIdentityNumber(props: Props) {\n const sharedContext = useContext(SharedContext)\n const tr = sharedContext?.translation.Forms\n\n const { validate = true, omitMask } = props\n\n const errorMessages = useMemo(\n () => ({\n required: tr.nationalIdentityNumberErrorRequired,\n pattern: tr.nationalIdentityNumberErrorPattern,\n ...props.errorMessages,\n }),\n [tr, props.errorMessages]\n )\n const mask = useMemo(\n () =>\n omitMask\n ? [\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n ]\n : [\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n ' ',\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n ],\n [omitMask]\n )\n\n const stringComponentProps: Props = {\n ...props,\n pattern: props.pattern ?? (validate ? '^[0-9]{11}$' : undefined),\n label:\n props.label ??\n sharedContext?.translation.Forms.nationalIdentityNumberLabel,\n errorMessages,\n mask,\n width: props.width ?? 'medium',\n }\n\n return <StringComponent {...stringComponentProps} />\n}\n\nNationalIdentityNumber._supportsSpacingProps = true\nexport default NationalIdentityNumber\n"],"mappings":";;;;;AAAA,OAAOA,KAAK,IAAIC,UAAU,EAAEC,OAAO,QAAQ,OAAO;AAClD,OAAOC,eAAe,MAAyC,WAAW;AAC1E,OAAOC,aAAa,MAAM,4BAA4B;AAOtD,SAASC,sBAAsBA,CAACC,KAAY,EAAE;EAAA,IAAAC,cAAA,EAAAC,YAAA,EAAAC,YAAA;EAC5C,MAAMC,aAAa,GAAGT,UAAU,CAACG,aAAa,CAAC;EAC/C,MAAMO,EAAE,GAAGD,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEE,WAAW,CAACC,KAAK;EAE3C,MAAM;IAAEC,QAAQ,GAAG,IAAI;IAAEC;EAAS,CAAC,GAAGT,KAAK;EAE3C,MAAMU,aAAa,GAAGd,OAAO,CAC3B,MAAAe,aAAA;IACEC,QAAQ,EAAEP,EAAE,CAACQ,mCAAmC;IAChDC,OAAO,EAAET,EAAE,CAACU;EAAkC,GAC3Cf,KAAK,CAACU,aAAa,CACtB,EACF,CAACL,EAAE,EAAEL,KAAK,CAACU,aAAa,CAC1B,CAAC;EACD,MAAMM,IAAI,GAAGpB,OAAO,CAClB,MACEa,QAAQ,GACJ,CACE,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,CACL,GACD,CACE,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,GAAG,EACH,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,CACL,EACP,CAACA,QAAQ,CACX,CAAC;EAED,MAAMQ,oBAA2B,GAAAN,aAAA,CAAAA,aAAA,KAC5BX,KAAK;IACRc,OAAO,GAAAb,cAAA,GAAED,KAAK,CAACc,OAAO,cAAAb,cAAA,cAAAA,cAAA,GAAKO,QAAQ,GAAG,aAAa,GAAGU,SAAU;IAChEC,KAAK,GAAAjB,YAAA,GACHF,KAAK,CAACmB,KAAK,cAAAjB,YAAA,cAAAA,YAAA,GACXE,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEE,WAAW,CAACC,KAAK,CAACa,2BAA2B;IAC9DV,aAAa;IACbM,IAAI;IACJK,KAAK,GAAAlB,YAAA,GAAEH,KAAK,CAACqB,KAAK,cAAAlB,YAAA,cAAAA,YAAA,GAAI;EAAQ,EAC/B;EAED,OAAOT,KAAA,CAAA4B,aAAA,CAACzB,eAAe,EAAKoB,oBAAuB,CAAC;AACtD;AAEAlB,sBAAsB,CAACwB,qBAAqB,GAAG,IAAI;AACnD,eAAexB,sBAAsB"}
1
+ {"version":3,"file":"NationalIdentityNumber.js","names":["React","useContext","useMemo","StringComponent","SharedContext","NationalIdentityNumber","props","_props$pattern","_props$label","_props$width","sharedContext","tr","translation","Forms","errorMessage","nationalIdentityNumberErrorRequired","validate","omitMask","errorMessages","_objectSpread","required","pattern","mask","Array","fill","stringComponentProps","validator","undefined","label","nationalIdentityNumberLabel","width","createElement","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.tsx"],"sourcesContent":["import React, { useContext, useMemo } from 'react'\nimport StringComponent, { Props as StringComponentProps } from '../String'\nimport SharedContext from '../../../../shared/Context'\n\nexport type Props = StringComponentProps & {\n omitMask?: boolean\n validate?: boolean\n}\n\nfunction NationalIdentityNumber(props: Props) {\n const sharedContext = useContext(SharedContext)\n const tr = sharedContext?.translation.Forms\n const errorMessage = tr.nationalIdentityNumberErrorRequired\n\n const { validate = true, omitMask } = props\n\n const errorMessages = useMemo(\n () => ({\n required: errorMessage,\n pattern: errorMessage,\n ...props.errorMessages,\n }),\n [errorMessage, props.errorMessages]\n )\n const mask = useMemo(\n () =>\n omitMask\n ? Array(11).fill(/\\d/)\n : [\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n ' ',\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n ],\n [omitMask]\n )\n\n const stringComponentProps: Props = {\n ...props,\n pattern:\n props.pattern ??\n (validate && !props.validator ? '^[0-9]{11}$' : undefined),\n label:\n props.label ??\n sharedContext?.translation.Forms.nationalIdentityNumberLabel,\n errorMessages,\n mask,\n width: props.width ?? 'medium',\n }\n\n return <StringComponent {...stringComponentProps} />\n}\n\nNationalIdentityNumber._supportsSpacingProps = true\nexport default NationalIdentityNumber\n"],"mappings":";;;;;AAAA,OAAOA,KAAK,IAAIC,UAAU,EAAEC,OAAO,QAAQ,OAAO;AAClD,OAAOC,eAAe,MAAyC,WAAW;AAC1E,OAAOC,aAAa,MAAM,4BAA4B;AAOtD,SAASC,sBAAsBA,CAACC,KAAY,EAAE;EAAA,IAAAC,cAAA,EAAAC,YAAA,EAAAC,YAAA;EAC5C,MAAMC,aAAa,GAAGT,UAAU,CAACG,aAAa,CAAC;EAC/C,MAAMO,EAAE,GAAGD,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEE,WAAW,CAACC,KAAK;EAC3C,MAAMC,YAAY,GAAGH,EAAE,CAACI,mCAAmC;EAE3D,MAAM;IAAEC,QAAQ,GAAG,IAAI;IAAEC;EAAS,CAAC,GAAGX,KAAK;EAE3C,MAAMY,aAAa,GAAGhB,OAAO,CAC3B,MAAAiB,aAAA;IACEC,QAAQ,EAAEN,YAAY;IACtBO,OAAO,EAAEP;EAAY,GAClBR,KAAK,CAACY,aAAa,CACtB,EACF,CAACJ,YAAY,EAAER,KAAK,CAACY,aAAa,CACpC,CAAC;EACD,MAAMI,IAAI,GAAGpB,OAAO,CAClB,MACEe,QAAQ,GACJM,KAAK,CAAC,EAAE,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC,GACpB,CACE,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,GAAG,EACH,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,CACL,EACP,CAACP,QAAQ,CACX,CAAC;EAED,MAAMQ,oBAA2B,GAAAN,aAAA,CAAAA,aAAA,KAC5Bb,KAAK;IACRe,OAAO,GAAAd,cAAA,GACLD,KAAK,CAACe,OAAO,cAAAd,cAAA,cAAAA,cAAA,GACZS,QAAQ,IAAI,CAACV,KAAK,CAACoB,SAAS,GAAG,aAAa,GAAGC,SAAU;IAC5DC,KAAK,GAAApB,YAAA,GACHF,KAAK,CAACsB,KAAK,cAAApB,YAAA,cAAAA,YAAA,GACXE,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEE,WAAW,CAACC,KAAK,CAACgB,2BAA2B;IAC9DX,aAAa;IACbI,IAAI;IACJQ,KAAK,GAAArB,YAAA,GAAEH,KAAK,CAACwB,KAAK,cAAArB,YAAA,cAAAA,YAAA,GAAI;EAAQ,EAC/B;EAED,OAAOT,KAAA,CAAA+B,aAAA,CAAC5B,eAAe,EAAKsB,oBAAuB,CAAC;AACtD;AAEApB,sBAAsB,CAAC2B,qBAAqB,GAAG,IAAI;AACnD,eAAe3B,sBAAsB"}
@@ -26,17 +26,14 @@ function NumberComponent(props) {
26
26
  suffix,
27
27
  rightAligned
28
28
  } = props;
29
- const errorMessages = useMemo(() => {
30
- var _props$minimum, _props$maximum, _props$exclusiveMinim, _props$exclusiveMaxim, _props$multipleOf;
31
- return _objectSpread({
32
- required: tr.inputErrorRequired,
33
- minimum: tr.numberFieldErrorMinimum.replace('{minimum}', (_props$minimum = props.minimum) === null || _props$minimum === void 0 ? void 0 : _props$minimum.toString()),
34
- maximum: tr.numberFieldErrorMaximum.replace('{maximum}', (_props$maximum = props.maximum) === null || _props$maximum === void 0 ? void 0 : _props$maximum.toString()),
35
- exclusiveMinimum: tr.numberFieldErrorExclusiveMinimum.replace('{exclusiveMinimum}', (_props$exclusiveMinim = props.exclusiveMinimum) === null || _props$exclusiveMinim === void 0 ? void 0 : _props$exclusiveMinim.toString()),
36
- exclusiveMaximum: tr.numberFieldErrorExclusiveMaximum.replace('{exclusiveMaximum}', (_props$exclusiveMaxim = props.exclusiveMaximum) === null || _props$exclusiveMaxim === void 0 ? void 0 : _props$exclusiveMaxim.toString()),
37
- multipleOf: tr.numberFieldErrorMultipleOf.replace('{multipleOf}', (_props$multipleOf = props.multipleOf) === null || _props$multipleOf === void 0 ? void 0 : _props$multipleOf.toString())
38
- }, props.errorMessages);
39
- }, [tr, props.errorMessages, props.minimum, props.maximum, props.exclusiveMinimum, props.exclusiveMaximum, props.multipleOf]);
29
+ const errorMessages = useMemo(() => _objectSpread({
30
+ required: tr.inputErrorRequired,
31
+ minimum: tr.numberFieldErrorMinimum,
32
+ maximum: tr.numberFieldErrorMaximum,
33
+ exclusiveMinimum: tr.numberFieldErrorExclusiveMinimum,
34
+ exclusiveMaximum: tr.numberFieldErrorExclusiveMaximum,
35
+ multipleOf: tr.numberFieldErrorMultipleOf
36
+ }, props.errorMessages), [tr, props.errorMessages]);
40
37
  const schema = useMemo(() => {
41
38
  var _props$schema;
42
39
  return (_props$schema = props.schema) !== null && _props$schema !== void 0 ? _props$schema : {
@@ -127,6 +124,8 @@ function NumberComponent(props) {
127
124
  info: info,
128
125
  warning: warning,
129
126
  error: error,
127
+ disabled: disabled,
128
+ width: width === 'stretch' ? width : undefined,
130
129
  contentsWidth: width !== false ? width : undefined
131
130
  }, pickSpacingProps(props)), React.createElement(InputMasked, _extends({
132
131
  id: id,
@@ -136,7 +135,7 @@ function NumberComponent(props) {
136
135
  placeholder: placeholder,
137
136
  value: value
138
137
  }, maskProps, {
139
- right: rightAligned,
138
+ align: rightAligned && 'right',
140
139
  on_focus: handleFocus,
141
140
  on_blur: handleBlur,
142
141
  on_change: handleChange,
@@ -1 +1 @@
1
- {"version":3,"file":"Number.js","names":["React","useContext","useMemo","useCallback","InputMasked","HelpButton","SharedContext","classnames","FieldBlock","useDataValue","pickSpacingProps","NumberComponent","props","_props$width","sharedContext","tr","translation","Forms","currency","percent","mask","thousandSeparator","decimalSymbol","decimalLimit","prefix","suffix","rightAligned","errorMessages","_props$minimum","_props$maximum","_props$exclusiveMinim","_props$exclusiveMaxim","_props$multipleOf","_objectSpread","required","inputErrorRequired","minimum","numberFieldErrorMinimum","replace","toString","maximum","numberFieldErrorMaximum","exclusiveMinimum","numberFieldErrorExclusiveMinimum","exclusiveMaximum","numberFieldErrorExclusiveMaximum","multipleOf","numberFieldErrorMultipleOf","schema","_props$schema","type","toInput","external","undefined","fromInput","value","numberValue","emptyValue","maskProps","as_currency","as_percent","as_number","number_mask","includeThousandsSeparator","thousandsSeparatorSymbol","preparedProps","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, { useContext, useMemo, useCallback } from 'react'\nimport { JSONSchema7 } from 'json-schema'\nimport { InputMasked, HelpButton } from '../../../../components'\nimport { InputMaskedProps } from '../../../../components/InputMasked'\nimport SharedContext from '../../../../shared/Context'\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 sharedContext = useContext(SharedContext)\n const tr = sharedContext?.translation.Forms\n\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 errorMessages = useMemo(\n () => ({\n required: tr.inputErrorRequired,\n minimum: tr.numberFieldErrorMinimum.replace(\n '{minimum}',\n props.minimum?.toString()\n ),\n maximum: tr.numberFieldErrorMaximum.replace(\n '{maximum}',\n props.maximum?.toString()\n ),\n exclusiveMinimum: tr.numberFieldErrorExclusiveMinimum.replace(\n '{exclusiveMinimum}',\n props.exclusiveMinimum?.toString()\n ),\n exclusiveMaximum: tr.numberFieldErrorExclusiveMaximum.replace(\n '{exclusiveMaximum}',\n props.exclusiveMaximum?.toString()\n ),\n multipleOf: tr.numberFieldErrorMultipleOf.replace(\n '{multipleOf}',\n props.multipleOf?.toString()\n ),\n ...props.errorMessages,\n }),\n [\n tr,\n props.errorMessages,\n props.minimum,\n props.maximum,\n props.exclusiveMinimum,\n props.exclusiveMaximum,\n props.multipleOf,\n ]\n )\n const schema = useMemo<JSONSchema7>(\n () =>\n 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 [\n props.schema,\n props.minimum,\n props.maximum,\n props.exclusiveMinimum,\n props.exclusiveMaximum,\n props.multipleOf,\n ]\n )\n\n const toInput = useCallback((external: number | undefined) => {\n if (external === undefined) {\n return ''\n }\n return external\n }, [])\n const fromInput = useCallback(\n ({ value, numberValue }: { value: string; numberValue: number }) => {\n if (value === '') {\n return emptyValue\n }\n return numberValue\n },\n []\n )\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 errorMessages,\n schema,\n toInput,\n fromInput,\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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"}
1
+ {"version":3,"file":"Number.js","names":["React","useContext","useMemo","useCallback","InputMasked","HelpButton","SharedContext","classnames","FieldBlock","useDataValue","pickSpacingProps","NumberComponent","props","_props$width","sharedContext","tr","translation","Forms","currency","percent","mask","thousandSeparator","decimalSymbol","decimalLimit","prefix","suffix","rightAligned","errorMessages","_objectSpread","required","inputErrorRequired","minimum","numberFieldErrorMinimum","maximum","numberFieldErrorMaximum","exclusiveMinimum","numberFieldErrorExclusiveMinimum","exclusiveMaximum","numberFieldErrorExclusiveMaximum","multipleOf","numberFieldErrorMultipleOf","schema","_props$schema","type","toInput","external","undefined","fromInput","value","numberValue","emptyValue","maskProps","as_currency","as_percent","as_number","number_mask","includeThousandsSeparator","thousandsSeparatorSymbol","preparedProps","width","id","name","className","autoComplete","inputClassName","layout","placeholder","label","labelDescription","labelSecondary","disabled","info","warning","error","help","handleFocus","handleBlur","handleChange","createElement","_extends","forId","contentsWidth","align","on_focus","on_blur","on_change","status","stretch","title","contents","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Number/Number.tsx"],"sourcesContent":["import React, { useContext, useMemo, useCallback } from 'react'\nimport { JSONSchema7 } from 'json-schema'\nimport { InputMasked, HelpButton } from '../../../../components'\nimport { InputMaskedProps } from '../../../../components/InputMasked'\nimport SharedContext from '../../../../shared/Context'\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 sharedContext = useContext(SharedContext)\n const tr = sharedContext?.translation.Forms\n\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 errorMessages = useMemo(\n () => ({\n required: tr.inputErrorRequired,\n minimum: tr.numberFieldErrorMinimum,\n maximum: tr.numberFieldErrorMaximum,\n exclusiveMinimum: tr.numberFieldErrorExclusiveMinimum,\n exclusiveMaximum: tr.numberFieldErrorExclusiveMaximum,\n multipleOf: tr.numberFieldErrorMultipleOf,\n ...props.errorMessages,\n }),\n [tr, props.errorMessages]\n )\n const schema = useMemo<JSONSchema7>(\n () =>\n 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 [\n props.schema,\n props.minimum,\n props.maximum,\n props.exclusiveMinimum,\n props.exclusiveMaximum,\n props.multipleOf,\n ]\n )\n\n const toInput = useCallback((external: number | undefined) => {\n if (external === undefined) {\n return ''\n }\n return external\n }, [])\n const fromInput = useCallback(\n ({ value, numberValue }: { value: string; numberValue: number }) => {\n if (value === '') {\n return emptyValue\n }\n return numberValue\n },\n []\n )\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 errorMessages,\n schema,\n toInput,\n fromInput,\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 disabled={disabled}\n width={width === 'stretch' ? width : undefined}\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 align={rightAligned && 'right'}\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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"}