@dnb/eufemia 10.13.0 → 10.14.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 (885) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/cjs/components/accordion/AccordionContent.js +1 -0
  3. package/cjs/components/accordion/AccordionContent.js.map +1 -1
  4. package/cjs/components/anchor/Anchor.js +1 -0
  5. package/cjs/components/anchor/Anchor.js.map +1 -1
  6. package/cjs/components/autocomplete/Autocomplete.js +80 -77
  7. package/cjs/components/autocomplete/Autocomplete.js.map +1 -1
  8. package/cjs/components/avatar/Avatar.js +1 -0
  9. package/cjs/components/avatar/Avatar.js.map +1 -1
  10. package/cjs/components/avatar/AvatarGroup.js +1 -0
  11. package/cjs/components/avatar/AvatarGroup.js.map +1 -1
  12. package/cjs/components/badge/Badge.js +1 -0
  13. package/cjs/components/badge/Badge.js.map +1 -1
  14. package/cjs/components/breadcrumb/BreadcrumbItem.js +1 -0
  15. package/cjs/components/breadcrumb/BreadcrumbItem.js.map +1 -1
  16. package/cjs/components/button/Button.js +2 -0
  17. package/cjs/components/button/Button.js.map +1 -1
  18. package/cjs/components/checkbox/Checkbox.js +2 -0
  19. package/cjs/components/checkbox/Checkbox.js.map +1 -1
  20. package/cjs/components/date-picker/DatePicker.js +2 -0
  21. package/cjs/components/date-picker/DatePicker.js.map +1 -1
  22. package/cjs/components/date-picker/DatePickerProvider.js +1 -0
  23. package/cjs/components/date-picker/DatePickerProvider.js.map +1 -1
  24. package/cjs/components/dropdown/Dropdown.js +1 -0
  25. package/cjs/components/dropdown/Dropdown.js.map +1 -1
  26. package/cjs/components/flex/Container.js +1 -0
  27. package/cjs/components/flex/Container.js.map +1 -1
  28. package/cjs/components/flex/Flex.d.ts +1 -1
  29. package/cjs/components/flex/Flex.js +1 -1
  30. package/cjs/components/flex/Flex.js.map +1 -1
  31. package/cjs/components/flex/export.d.ts +5 -0
  32. package/cjs/components/flex/export.js +42 -0
  33. package/cjs/components/flex/export.js.map +1 -0
  34. package/cjs/components/flex/index.d.ts +2 -5
  35. package/cjs/components/flex/index.js +5 -36
  36. package/cjs/components/flex/index.js.map +1 -1
  37. package/cjs/components/form-label/FormLabel.d.ts +1 -0
  38. package/cjs/components/form-label/FormLabel.js +2 -0
  39. package/cjs/components/form-label/FormLabel.js.map +1 -1
  40. package/cjs/components/form-row/FormRow.js +1 -0
  41. package/cjs/components/form-row/FormRow.js.map +1 -1
  42. package/cjs/components/form-set/FormSet.js +1 -0
  43. package/cjs/components/form-set/FormSet.js.map +1 -1
  44. package/cjs/components/form-status/FormStatus.js +1 -0
  45. package/cjs/components/form-status/FormStatus.js.map +1 -1
  46. package/cjs/components/global-error/GlobalError.js +1 -0
  47. package/cjs/components/global-error/GlobalError.js.map +1 -1
  48. package/cjs/components/global-status/GlobalStatus.js +1 -0
  49. package/cjs/components/global-status/GlobalStatus.js.map +1 -1
  50. package/cjs/components/grid/Grid.d.ts +1 -1
  51. package/cjs/components/grid/Grid.js +1 -1
  52. package/cjs/components/grid/Grid.js.map +1 -1
  53. package/cjs/components/grid/export.d.ts +2 -0
  54. package/cjs/components/grid/export.js +21 -0
  55. package/cjs/components/grid/export.js.map +1 -0
  56. package/cjs/components/grid/index.d.ts +2 -2
  57. package/cjs/components/grid/index.js +5 -15
  58. package/cjs/components/grid/index.js.map +1 -1
  59. package/cjs/components/heading/Heading.js +1 -0
  60. package/cjs/components/heading/Heading.js.map +1 -1
  61. package/cjs/components/help-button/HelpButton.js +1 -0
  62. package/cjs/components/help-button/HelpButton.js.map +1 -1
  63. package/cjs/components/help-button/HelpButtonInstance.js +1 -0
  64. package/cjs/components/help-button/HelpButtonInstance.js.map +1 -1
  65. package/cjs/components/icon/Icon.js +1 -0
  66. package/cjs/components/icon/Icon.js.map +1 -1
  67. package/cjs/components/icon-primary/IconPrimary.js +1 -0
  68. package/cjs/components/icon-primary/IconPrimary.js.map +1 -1
  69. package/cjs/components/info-card/InfoCard.js +1 -0
  70. package/cjs/components/info-card/InfoCard.js.map +1 -1
  71. package/cjs/components/input/Input.d.ts +4 -0
  72. package/cjs/components/input/Input.js +12 -2
  73. package/cjs/components/input/Input.js.map +1 -1
  74. package/cjs/components/input/InputPassword.js +2 -0
  75. package/cjs/components/input/InputPassword.js.map +1 -1
  76. package/cjs/components/input-masked/InputMasked.js +2 -0
  77. package/cjs/components/input-masked/InputMasked.js.map +1 -1
  78. package/cjs/components/input-masked/MultiInputMask.d.ts +9 -1
  79. package/cjs/components/input-masked/MultiInputMask.js +14 -7
  80. package/cjs/components/input-masked/MultiInputMask.js.map +1 -1
  81. package/cjs/components/input-masked/TextMask.d.ts +1 -1
  82. package/cjs/components/input-masked/hooks/useHandleCursorPosition.js +1 -1
  83. package/cjs/components/input-masked/hooks/useHandleCursorPosition.js.map +1 -1
  84. package/cjs/components/lib.d.ts +2 -0
  85. package/cjs/components/logo/Logo.js +1 -0
  86. package/cjs/components/logo/Logo.js.map +1 -1
  87. package/cjs/components/modal/Modal.js +1 -0
  88. package/cjs/components/modal/Modal.js.map +1 -1
  89. package/cjs/components/modal/ModalContent.js +1 -0
  90. package/cjs/components/modal/ModalContent.js.map +1 -1
  91. package/cjs/components/modal/parts/CloseButton.js +1 -0
  92. package/cjs/components/modal/parts/CloseButton.js.map +1 -1
  93. package/cjs/components/number-format/NumberFormat.js +1 -0
  94. package/cjs/components/number-format/NumberFormat.js.map +1 -1
  95. package/cjs/components/number-format/NumberUtils.js +1 -0
  96. package/cjs/components/number-format/NumberUtils.js.map +1 -1
  97. package/cjs/components/pagination/PaginationHelpers.js +1 -0
  98. package/cjs/components/pagination/PaginationHelpers.js.map +1 -1
  99. package/cjs/components/pagination/PaginationInfinity.js +1 -0
  100. package/cjs/components/pagination/PaginationInfinity.js.map +1 -1
  101. package/cjs/components/pagination/PaginationProvider.js +1 -0
  102. package/cjs/components/pagination/PaginationProvider.js.map +1 -1
  103. package/cjs/components/progress-indicator/ProgressIndicator.js +1 -0
  104. package/cjs/components/progress-indicator/ProgressIndicator.js.map +1 -1
  105. package/cjs/components/radio/Radio.js +4 -2
  106. package/cjs/components/radio/Radio.js.map +1 -1
  107. package/cjs/components/radio/RadioGroup.js +5 -4
  108. package/cjs/components/radio/RadioGroup.js.map +1 -1
  109. package/cjs/components/radio/style/dnb-radio.css +106 -0
  110. package/cjs/components/radio/style/dnb-radio.min.css +1 -1
  111. package/cjs/components/radio/style/dnb-radio.scss +202 -0
  112. package/cjs/components/radio/style/themes/dnb-radio-theme-sbanken.css +26 -0
  113. package/cjs/components/radio/style/themes/dnb-radio-theme-sbanken.min.css +1 -0
  114. package/cjs/components/radio/style/themes/dnb-radio-theme-sbanken.scss +33 -0
  115. package/cjs/components/radio/style/themes/dnb-radio-theme-ui.css +20 -86
  116. package/cjs/components/radio/style/themes/dnb-radio-theme-ui.min.css +1 -1
  117. package/cjs/components/radio/style/themes/dnb-radio-theme-ui.scss +26 -143
  118. package/cjs/components/section/Section.js +1 -0
  119. package/cjs/components/section/Section.js.map +1 -1
  120. package/cjs/components/skeleton/Skeleton.js +1 -0
  121. package/cjs/components/skeleton/Skeleton.js.map +1 -1
  122. package/cjs/components/skeleton/figures/Article.js +1 -0
  123. package/cjs/components/skeleton/figures/Article.js.map +1 -1
  124. package/cjs/components/skeleton/figures/Circle.js +1 -0
  125. package/cjs/components/skeleton/figures/Circle.js.map +1 -1
  126. package/cjs/components/skeleton/figures/Product.js +1 -0
  127. package/cjs/components/skeleton/figures/Product.js.map +1 -1
  128. package/cjs/components/skeleton/figures/Table.js +1 -0
  129. package/cjs/components/skeleton/figures/Table.js.map +1 -1
  130. package/cjs/components/slider/Slider.d.ts +1 -0
  131. package/cjs/components/slider/Slider.js +1 -0
  132. package/cjs/components/slider/Slider.js.map +1 -1
  133. package/cjs/components/slider/SliderInstance.js +1 -0
  134. package/cjs/components/slider/SliderInstance.js.map +1 -1
  135. package/cjs/components/slider/SliderProvider.js +1 -0
  136. package/cjs/components/slider/SliderProvider.js.map +1 -1
  137. package/cjs/components/space/Space.js +1 -0
  138. package/cjs/components/space/Space.js.map +1 -1
  139. package/cjs/components/switch/Switch.js +2 -0
  140. package/cjs/components/switch/Switch.js.map +1 -1
  141. package/cjs/components/table/Table.js +1 -0
  142. package/cjs/components/table/Table.js.map +1 -1
  143. package/cjs/components/tabs/Tabs.js +1 -0
  144. package/cjs/components/tabs/Tabs.js.map +1 -1
  145. package/cjs/components/tag/Tag.d.ts +1 -0
  146. package/cjs/components/tag/Tag.js +2 -0
  147. package/cjs/components/tag/Tag.js.map +1 -1
  148. package/cjs/components/tag/TagGroup.js +1 -0
  149. package/cjs/components/tag/TagGroup.js.map +1 -1
  150. package/cjs/components/textarea/Textarea.js +2 -0
  151. package/cjs/components/textarea/Textarea.js.map +1 -1
  152. package/cjs/components/timeline/Timeline.js +1 -0
  153. package/cjs/components/timeline/Timeline.js.map +1 -1
  154. package/cjs/components/timeline/TimelineItem.js +1 -0
  155. package/cjs/components/timeline/TimelineItem.js.map +1 -1
  156. package/cjs/components/toggle-button/ToggleButton.js +2 -0
  157. package/cjs/components/toggle-button/ToggleButton.js.map +1 -1
  158. package/cjs/components/toggle-button/ToggleButtonGroup.js +5 -4
  159. package/cjs/components/toggle-button/ToggleButtonGroup.js.map +1 -1
  160. package/cjs/components/tooltip/Tooltip.js +1 -0
  161. package/cjs/components/tooltip/Tooltip.js.map +1 -1
  162. package/cjs/components/tooltip/TooltipPortal.js +1 -0
  163. package/cjs/components/tooltip/TooltipPortal.js.map +1 -1
  164. package/cjs/components/upload/Upload.d.ts +1 -0
  165. package/cjs/components/upload/Upload.js +2 -0
  166. package/cjs/components/upload/Upload.js.map +1 -1
  167. package/cjs/components/upload/useUpload.js +1 -0
  168. package/cjs/components/upload/useUpload.js.map +1 -1
  169. package/cjs/components/visually-hidden/VisuallyHidden.js +1 -0
  170. package/cjs/components/visually-hidden/VisuallyHidden.js.map +1 -1
  171. package/cjs/elements/Element.js +1 -0
  172. package/cjs/elements/Element.js.map +1 -1
  173. package/cjs/elements/typography/H.js +1 -0
  174. package/cjs/elements/typography/H.js.map +1 -1
  175. package/cjs/extensions/forms/DataContext/Provider/Provider.js +52 -42
  176. package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  177. package/cjs/extensions/forms/Field/BankAccountNumber/BankAccountNumber.js +8 -5
  178. package/cjs/extensions/forms/Field/BankAccountNumber/BankAccountNumber.js.map +1 -1
  179. package/cjs/extensions/forms/Field/Email/Email.js +6 -4
  180. package/cjs/extensions/forms/Field/Email/Email.js.map +1 -1
  181. package/cjs/extensions/forms/Field/Expiry/Expiry.d.ts +7 -0
  182. package/cjs/extensions/forms/Field/Expiry/Expiry.js +99 -0
  183. package/cjs/extensions/forms/Field/Expiry/Expiry.js.map +1 -0
  184. package/cjs/extensions/forms/Field/Expiry/index.d.ts +2 -0
  185. package/cjs/extensions/forms/Field/Expiry/index.js +27 -0
  186. package/cjs/extensions/forms/Field/Expiry/index.js.map +1 -0
  187. package/cjs/extensions/forms/Field/Expiry/style/dnb-expiry.css +12 -0
  188. package/cjs/extensions/forms/Field/Expiry/style/dnb-expiry.min.css +1 -0
  189. package/cjs/extensions/forms/Field/Expiry/style/dnb-expiry.scss +9 -0
  190. package/cjs/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js +8 -5
  191. package/cjs/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js.map +1 -1
  192. package/cjs/extensions/forms/Field/Number/Number.js +47 -25
  193. package/cjs/extensions/forms/Field/Number/Number.js.map +1 -1
  194. package/cjs/extensions/forms/Field/OrganizationNumber/OrganizationNumber.js +8 -5
  195. package/cjs/extensions/forms/Field/OrganizationNumber/OrganizationNumber.js.map +1 -1
  196. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.js +46 -33
  197. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  198. package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.js +6 -4
  199. package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
  200. package/cjs/extensions/forms/Field/String/String.js +30 -20
  201. package/cjs/extensions/forms/Field/String/String.js.map +1 -1
  202. package/cjs/extensions/forms/Field/index.d.ts +1 -0
  203. package/cjs/extensions/forms/Field/index.js +7 -0
  204. package/cjs/extensions/forms/Field/index.js.map +1 -1
  205. package/cjs/extensions/forms/Field/style/dnb-forms-field.css +13 -0
  206. package/cjs/extensions/forms/Field/style/dnb-forms-field.min.css +1 -1
  207. package/cjs/extensions/forms/Field/style/dnb-forms-field.scss +1 -0
  208. package/cjs/extensions/forms/FieldBlock/FieldBlock.js +36 -2
  209. package/cjs/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  210. package/cjs/extensions/forms/Form/Element/Element.js +1 -0
  211. package/cjs/extensions/forms/Form/Element/Element.js.map +1 -1
  212. package/cjs/extensions/forms/Form/Handler/Handler.js +1 -0
  213. package/cjs/extensions/forms/Form/Handler/Handler.js.map +1 -1
  214. package/cjs/extensions/forms/hooks/index.d.ts +3 -0
  215. package/cjs/extensions/forms/hooks/index.js +21 -0
  216. package/cjs/extensions/forms/hooks/index.js.map +1 -1
  217. package/cjs/extensions/forms/hooks/useDataValue.js +127 -61
  218. package/cjs/extensions/forms/hooks/useDataValue.js.map +1 -1
  219. package/cjs/extensions/forms/hooks/useMountEffect.d.ts +5 -0
  220. package/cjs/extensions/forms/hooks/useMountEffect.js +14 -0
  221. package/cjs/extensions/forms/hooks/useMountEffect.js.map +1 -0
  222. package/cjs/extensions/forms/hooks/useProcessManager.d.ts +6 -0
  223. package/cjs/extensions/forms/hooks/useProcessManager.js +21 -0
  224. package/cjs/extensions/forms/hooks/useProcessManager.js.map +1 -0
  225. package/cjs/extensions/forms/hooks/useUpdateEffect.d.ts +5 -0
  226. package/cjs/extensions/forms/hooks/useUpdateEffect.js +19 -0
  227. package/cjs/extensions/forms/hooks/useUpdateEffect.js.map +1 -0
  228. package/cjs/extensions/forms/style/dnb-forms.css +13 -0
  229. package/cjs/extensions/forms/style/dnb-forms.min.css +1 -1
  230. package/cjs/extensions/forms/types.d.ts +10 -2
  231. package/cjs/extensions/forms/types.js +2 -0
  232. package/cjs/extensions/forms/types.js.map +1 -1
  233. package/cjs/extensions/forms/utils/ajv.js +25 -1
  234. package/cjs/extensions/forms/utils/ajv.js.map +1 -1
  235. package/cjs/extensions/forms/utils/errors.d.ts +2 -0
  236. package/cjs/extensions/forms/utils/errors.js +16 -0
  237. package/cjs/extensions/forms/utils/errors.js.map +1 -0
  238. package/cjs/extensions/forms/utils/index.d.ts +1 -0
  239. package/cjs/extensions/forms/utils/index.js +12 -0
  240. package/cjs/extensions/forms/utils/index.js.map +1 -1
  241. package/cjs/extensions/payment-card/PaymentCard.js +1 -0
  242. package/cjs/extensions/payment-card/PaymentCard.js.map +1 -1
  243. package/cjs/fragments/drawer-list/DrawerListProvider.js +1 -0
  244. package/cjs/fragments/drawer-list/DrawerListProvider.js.map +1 -1
  245. package/cjs/fragments/scroll-view/ScrollView.js +1 -0
  246. package/cjs/fragments/scroll-view/ScrollView.js.map +1 -1
  247. package/cjs/shared/Eufemia.d.ts +1 -1
  248. package/cjs/shared/Eufemia.js +2 -2
  249. package/cjs/shared/Eufemia.js.map +1 -1
  250. package/cjs/shared/MediaQuery.js +1 -0
  251. package/cjs/shared/MediaQuery.js.map +1 -1
  252. package/cjs/shared/Provider.js +1 -0
  253. package/cjs/shared/Provider.js.map +1 -1
  254. package/cjs/shared/Theme.js +1 -0
  255. package/cjs/shared/Theme.js.map +1 -1
  256. package/cjs/shared/VisibilityByTheme.js +1 -0
  257. package/cjs/shared/VisibilityByTheme.js.map +1 -1
  258. package/cjs/shared/index.js +1 -0
  259. package/cjs/shared/index.js.map +1 -1
  260. package/cjs/shared/locales/en-GB.d.ts +11 -0
  261. package/cjs/shared/locales/en-GB.js +12 -1
  262. package/cjs/shared/locales/en-GB.js.map +1 -1
  263. package/cjs/shared/locales/en-US.d.ts +11 -0
  264. package/cjs/shared/locales/index.d.ts +22 -0
  265. package/cjs/shared/locales/nb-NO.d.ts +11 -0
  266. package/cjs/shared/locales/nb-NO.js +12 -1
  267. package/cjs/shared/locales/nb-NO.js.map +1 -1
  268. package/cjs/shared/useMedia.js +1 -0
  269. package/cjs/shared/useMedia.js.map +1 -1
  270. package/cjs/shared/useMediaQuery.js +1 -0
  271. package/cjs/shared/useMediaQuery.js.map +1 -1
  272. package/cjs/shared/useTheme.js +1 -0
  273. package/cjs/shared/useTheme.js.map +1 -1
  274. package/cjs/shared/useTranslation.js +1 -0
  275. package/cjs/shared/useTranslation.js.map +1 -1
  276. package/cjs/style/dnb-ui-components.css +106 -0
  277. package/cjs/style/dnb-ui-components.min.css +1 -1
  278. package/cjs/style/dnb-ui-extensions.css +13 -0
  279. package/cjs/style/dnb-ui-extensions.min.css +1 -1
  280. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +126 -86
  281. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  282. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.css +13 -0
  283. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  284. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +133 -93
  285. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +3 -3
  286. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.scss +1 -1
  287. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.css +13 -0
  288. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  289. package/cjs/style/themes/theme-ui/ui-theme-components.css +126 -86
  290. package/cjs/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  291. package/cjs/style/themes/theme-ui/ui-theme-extensions.css +13 -0
  292. package/cjs/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  293. package/components/accordion/AccordionContent.js +2 -0
  294. package/components/accordion/AccordionContent.js.map +1 -1
  295. package/components/anchor/Anchor.js +2 -0
  296. package/components/anchor/Anchor.js.map +1 -1
  297. package/components/autocomplete/Autocomplete.js +80 -77
  298. package/components/autocomplete/Autocomplete.js.map +1 -1
  299. package/components/avatar/Avatar.js +2 -0
  300. package/components/avatar/Avatar.js.map +1 -1
  301. package/components/avatar/AvatarGroup.js +2 -0
  302. package/components/avatar/AvatarGroup.js.map +1 -1
  303. package/components/badge/Badge.js +2 -0
  304. package/components/badge/Badge.js.map +1 -1
  305. package/components/breadcrumb/BreadcrumbItem.js +2 -0
  306. package/components/breadcrumb/BreadcrumbItem.js.map +1 -1
  307. package/components/button/Button.js +3 -0
  308. package/components/button/Button.js.map +1 -1
  309. package/components/checkbox/Checkbox.js +3 -0
  310. package/components/checkbox/Checkbox.js.map +1 -1
  311. package/components/date-picker/DatePicker.js +3 -0
  312. package/components/date-picker/DatePicker.js.map +1 -1
  313. package/components/date-picker/DatePickerProvider.js +2 -0
  314. package/components/date-picker/DatePickerProvider.js.map +1 -1
  315. package/components/dropdown/Dropdown.js +1 -0
  316. package/components/dropdown/Dropdown.js.map +1 -1
  317. package/components/flex/Container.js +2 -0
  318. package/components/flex/Container.js.map +1 -1
  319. package/components/flex/Flex.d.ts +1 -1
  320. package/components/flex/Flex.js +1 -1
  321. package/components/flex/Flex.js.map +1 -1
  322. package/components/flex/export.d.ts +5 -0
  323. package/components/flex/export.js +6 -0
  324. package/components/flex/export.js.map +1 -0
  325. package/components/flex/index.d.ts +2 -5
  326. package/components/flex/index.js +2 -5
  327. package/components/flex/index.js.map +1 -1
  328. package/components/form-label/FormLabel.d.ts +1 -0
  329. package/components/form-label/FormLabel.js +3 -0
  330. package/components/form-label/FormLabel.js.map +1 -1
  331. package/components/form-row/FormRow.js +2 -0
  332. package/components/form-row/FormRow.js.map +1 -1
  333. package/components/form-set/FormSet.js +2 -0
  334. package/components/form-set/FormSet.js.map +1 -1
  335. package/components/form-status/FormStatus.js +2 -0
  336. package/components/form-status/FormStatus.js.map +1 -1
  337. package/components/global-error/GlobalError.js +2 -0
  338. package/components/global-error/GlobalError.js.map +1 -1
  339. package/components/global-status/GlobalStatus.js +2 -0
  340. package/components/global-status/GlobalStatus.js.map +1 -1
  341. package/components/grid/Grid.d.ts +1 -1
  342. package/components/grid/Grid.js +1 -1
  343. package/components/grid/Grid.js.map +1 -1
  344. package/components/grid/export.d.ts +2 -0
  345. package/components/grid/export.js +3 -0
  346. package/components/grid/export.js.map +1 -0
  347. package/components/grid/index.d.ts +2 -2
  348. package/components/grid/index.js +2 -2
  349. package/components/grid/index.js.map +1 -1
  350. package/components/heading/Heading.js +2 -0
  351. package/components/heading/Heading.js.map +1 -1
  352. package/components/help-button/HelpButton.js +2 -0
  353. package/components/help-button/HelpButton.js.map +1 -1
  354. package/components/help-button/HelpButtonInstance.js +2 -0
  355. package/components/help-button/HelpButtonInstance.js.map +1 -1
  356. package/components/icon/Icon.js +2 -0
  357. package/components/icon/Icon.js.map +1 -1
  358. package/components/icon-primary/IconPrimary.js +2 -0
  359. package/components/icon-primary/IconPrimary.js.map +1 -1
  360. package/components/info-card/InfoCard.js +2 -0
  361. package/components/info-card/InfoCard.js.map +1 -1
  362. package/components/input/Input.d.ts +4 -0
  363. package/components/input/Input.js +13 -2
  364. package/components/input/Input.js.map +1 -1
  365. package/components/input/InputPassword.js +3 -0
  366. package/components/input/InputPassword.js.map +1 -1
  367. package/components/input-masked/InputMasked.js +3 -0
  368. package/components/input-masked/InputMasked.js.map +1 -1
  369. package/components/input-masked/MultiInputMask.d.ts +9 -1
  370. package/components/input-masked/MultiInputMask.js +14 -7
  371. package/components/input-masked/MultiInputMask.js.map +1 -1
  372. package/components/input-masked/TextMask.d.ts +1 -1
  373. package/components/input-masked/hooks/useHandleCursorPosition.js +1 -1
  374. package/components/input-masked/hooks/useHandleCursorPosition.js.map +1 -1
  375. package/components/lib.d.ts +2 -0
  376. package/components/logo/Logo.js +2 -0
  377. package/components/logo/Logo.js.map +1 -1
  378. package/components/modal/Modal.js +2 -0
  379. package/components/modal/Modal.js.map +1 -1
  380. package/components/modal/ModalContent.js +2 -0
  381. package/components/modal/ModalContent.js.map +1 -1
  382. package/components/modal/parts/CloseButton.js +2 -0
  383. package/components/modal/parts/CloseButton.js.map +1 -1
  384. package/components/number-format/NumberFormat.js +2 -0
  385. package/components/number-format/NumberFormat.js.map +1 -1
  386. package/components/number-format/NumberUtils.js +2 -0
  387. package/components/number-format/NumberUtils.js.map +1 -1
  388. package/components/pagination/PaginationHelpers.js +2 -0
  389. package/components/pagination/PaginationHelpers.js.map +1 -1
  390. package/components/pagination/PaginationInfinity.js +2 -0
  391. package/components/pagination/PaginationInfinity.js.map +1 -1
  392. package/components/pagination/PaginationProvider.js +2 -0
  393. package/components/pagination/PaginationProvider.js.map +1 -1
  394. package/components/progress-indicator/ProgressIndicator.js +2 -0
  395. package/components/progress-indicator/ProgressIndicator.js.map +1 -1
  396. package/components/radio/Radio.js +5 -2
  397. package/components/radio/Radio.js.map +1 -1
  398. package/components/radio/RadioGroup.js +6 -4
  399. package/components/radio/RadioGroup.js.map +1 -1
  400. package/components/radio/style/dnb-radio.css +106 -0
  401. package/components/radio/style/dnb-radio.min.css +1 -1
  402. package/components/radio/style/dnb-radio.scss +202 -0
  403. package/components/radio/style/themes/dnb-radio-theme-sbanken.css +26 -0
  404. package/components/radio/style/themes/dnb-radio-theme-sbanken.min.css +1 -0
  405. package/components/radio/style/themes/dnb-radio-theme-sbanken.scss +33 -0
  406. package/components/radio/style/themes/dnb-radio-theme-ui.css +20 -86
  407. package/components/radio/style/themes/dnb-radio-theme-ui.min.css +1 -1
  408. package/components/radio/style/themes/dnb-radio-theme-ui.scss +26 -143
  409. package/components/section/Section.js +2 -0
  410. package/components/section/Section.js.map +1 -1
  411. package/components/skeleton/Skeleton.js +2 -0
  412. package/components/skeleton/Skeleton.js.map +1 -1
  413. package/components/skeleton/figures/Article.js +2 -0
  414. package/components/skeleton/figures/Article.js.map +1 -1
  415. package/components/skeleton/figures/Circle.js +2 -0
  416. package/components/skeleton/figures/Circle.js.map +1 -1
  417. package/components/skeleton/figures/Product.js +2 -0
  418. package/components/skeleton/figures/Product.js.map +1 -1
  419. package/components/skeleton/figures/Table.js +2 -0
  420. package/components/skeleton/figures/Table.js.map +1 -1
  421. package/components/slider/Slider.d.ts +1 -0
  422. package/components/slider/Slider.js +1 -0
  423. package/components/slider/Slider.js.map +1 -1
  424. package/components/slider/SliderInstance.js +2 -0
  425. package/components/slider/SliderInstance.js.map +1 -1
  426. package/components/slider/SliderProvider.js +2 -0
  427. package/components/slider/SliderProvider.js.map +1 -1
  428. package/components/space/Space.js +2 -0
  429. package/components/space/Space.js.map +1 -1
  430. package/components/switch/Switch.js +3 -0
  431. package/components/switch/Switch.js.map +1 -1
  432. package/components/table/Table.js +2 -0
  433. package/components/table/Table.js.map +1 -1
  434. package/components/tabs/Tabs.js +2 -0
  435. package/components/tabs/Tabs.js.map +1 -1
  436. package/components/tag/Tag.d.ts +1 -0
  437. package/components/tag/Tag.js +3 -0
  438. package/components/tag/Tag.js.map +1 -1
  439. package/components/tag/TagGroup.js +2 -0
  440. package/components/tag/TagGroup.js.map +1 -1
  441. package/components/textarea/Textarea.js +3 -0
  442. package/components/textarea/Textarea.js.map +1 -1
  443. package/components/timeline/Timeline.js +2 -0
  444. package/components/timeline/Timeline.js.map +1 -1
  445. package/components/timeline/TimelineItem.js +2 -0
  446. package/components/timeline/TimelineItem.js.map +1 -1
  447. package/components/toggle-button/ToggleButton.js +3 -0
  448. package/components/toggle-button/ToggleButton.js.map +1 -1
  449. package/components/toggle-button/ToggleButtonGroup.js +6 -4
  450. package/components/toggle-button/ToggleButtonGroup.js.map +1 -1
  451. package/components/tooltip/Tooltip.js +2 -0
  452. package/components/tooltip/Tooltip.js.map +1 -1
  453. package/components/tooltip/TooltipPortal.js +2 -0
  454. package/components/tooltip/TooltipPortal.js.map +1 -1
  455. package/components/upload/Upload.d.ts +1 -0
  456. package/components/upload/Upload.js +3 -0
  457. package/components/upload/Upload.js.map +1 -1
  458. package/components/upload/useUpload.js +2 -0
  459. package/components/upload/useUpload.js.map +1 -1
  460. package/components/visually-hidden/VisuallyHidden.js +2 -0
  461. package/components/visually-hidden/VisuallyHidden.js.map +1 -1
  462. package/elements/Element.js +2 -0
  463. package/elements/Element.js.map +1 -1
  464. package/elements/typography/H.js +2 -0
  465. package/elements/typography/H.js.map +1 -1
  466. package/es/components/accordion/AccordionContent.js +2 -0
  467. package/es/components/accordion/AccordionContent.js.map +1 -1
  468. package/es/components/anchor/Anchor.js +2 -0
  469. package/es/components/anchor/Anchor.js.map +1 -1
  470. package/es/components/autocomplete/Autocomplete.js +79 -77
  471. package/es/components/autocomplete/Autocomplete.js.map +1 -1
  472. package/es/components/avatar/Avatar.js +2 -0
  473. package/es/components/avatar/Avatar.js.map +1 -1
  474. package/es/components/avatar/AvatarGroup.js +2 -0
  475. package/es/components/avatar/AvatarGroup.js.map +1 -1
  476. package/es/components/badge/Badge.js +2 -0
  477. package/es/components/badge/Badge.js.map +1 -1
  478. package/es/components/breadcrumb/BreadcrumbItem.js +2 -0
  479. package/es/components/breadcrumb/BreadcrumbItem.js.map +1 -1
  480. package/es/components/button/Button.js +3 -0
  481. package/es/components/button/Button.js.map +1 -1
  482. package/es/components/checkbox/Checkbox.js +3 -0
  483. package/es/components/checkbox/Checkbox.js.map +1 -1
  484. package/es/components/date-picker/DatePicker.js +3 -0
  485. package/es/components/date-picker/DatePicker.js.map +1 -1
  486. package/es/components/date-picker/DatePickerProvider.js +2 -0
  487. package/es/components/date-picker/DatePickerProvider.js.map +1 -1
  488. package/es/components/dropdown/Dropdown.js +1 -0
  489. package/es/components/dropdown/Dropdown.js.map +1 -1
  490. package/es/components/flex/Container.js +2 -0
  491. package/es/components/flex/Container.js.map +1 -1
  492. package/es/components/flex/Flex.d.ts +1 -1
  493. package/es/components/flex/Flex.js +1 -1
  494. package/es/components/flex/Flex.js.map +1 -1
  495. package/es/components/flex/export.d.ts +5 -0
  496. package/es/components/flex/export.js +6 -0
  497. package/es/components/flex/export.js.map +1 -0
  498. package/es/components/flex/index.d.ts +2 -5
  499. package/es/components/flex/index.js +2 -5
  500. package/es/components/flex/index.js.map +1 -1
  501. package/es/components/form-label/FormLabel.d.ts +1 -0
  502. package/es/components/form-label/FormLabel.js +3 -0
  503. package/es/components/form-label/FormLabel.js.map +1 -1
  504. package/es/components/form-row/FormRow.js +2 -0
  505. package/es/components/form-row/FormRow.js.map +1 -1
  506. package/es/components/form-set/FormSet.js +2 -0
  507. package/es/components/form-set/FormSet.js.map +1 -1
  508. package/es/components/form-status/FormStatus.js +2 -0
  509. package/es/components/form-status/FormStatus.js.map +1 -1
  510. package/es/components/global-error/GlobalError.js +2 -0
  511. package/es/components/global-error/GlobalError.js.map +1 -1
  512. package/es/components/global-status/GlobalStatus.js +2 -0
  513. package/es/components/global-status/GlobalStatus.js.map +1 -1
  514. package/es/components/grid/Grid.d.ts +1 -1
  515. package/es/components/grid/Grid.js +1 -1
  516. package/es/components/grid/Grid.js.map +1 -1
  517. package/es/components/grid/export.d.ts +2 -0
  518. package/es/components/grid/export.js +3 -0
  519. package/es/components/grid/export.js.map +1 -0
  520. package/es/components/grid/index.d.ts +2 -2
  521. package/es/components/grid/index.js +2 -2
  522. package/es/components/grid/index.js.map +1 -1
  523. package/es/components/heading/Heading.js +2 -0
  524. package/es/components/heading/Heading.js.map +1 -1
  525. package/es/components/help-button/HelpButton.js +2 -0
  526. package/es/components/help-button/HelpButton.js.map +1 -1
  527. package/es/components/help-button/HelpButtonInstance.js +2 -0
  528. package/es/components/help-button/HelpButtonInstance.js.map +1 -1
  529. package/es/components/icon/Icon.js +2 -0
  530. package/es/components/icon/Icon.js.map +1 -1
  531. package/es/components/icon-primary/IconPrimary.js +2 -0
  532. package/es/components/icon-primary/IconPrimary.js.map +1 -1
  533. package/es/components/info-card/InfoCard.js +2 -0
  534. package/es/components/info-card/InfoCard.js.map +1 -1
  535. package/es/components/input/Input.d.ts +4 -0
  536. package/es/components/input/Input.js +13 -2
  537. package/es/components/input/Input.js.map +1 -1
  538. package/es/components/input/InputPassword.js +3 -0
  539. package/es/components/input/InputPassword.js.map +1 -1
  540. package/es/components/input-masked/InputMasked.js +3 -0
  541. package/es/components/input-masked/InputMasked.js.map +1 -1
  542. package/es/components/input-masked/MultiInputMask.d.ts +9 -1
  543. package/es/components/input-masked/MultiInputMask.js +14 -7
  544. package/es/components/input-masked/MultiInputMask.js.map +1 -1
  545. package/es/components/input-masked/TextMask.d.ts +1 -1
  546. package/es/components/input-masked/hooks/useHandleCursorPosition.js +1 -1
  547. package/es/components/input-masked/hooks/useHandleCursorPosition.js.map +1 -1
  548. package/es/components/lib.d.ts +2 -0
  549. package/es/components/logo/Logo.js +2 -0
  550. package/es/components/logo/Logo.js.map +1 -1
  551. package/es/components/modal/Modal.js +2 -0
  552. package/es/components/modal/Modal.js.map +1 -1
  553. package/es/components/modal/ModalContent.js +2 -0
  554. package/es/components/modal/ModalContent.js.map +1 -1
  555. package/es/components/modal/parts/CloseButton.js +2 -0
  556. package/es/components/modal/parts/CloseButton.js.map +1 -1
  557. package/es/components/number-format/NumberFormat.js +2 -0
  558. package/es/components/number-format/NumberFormat.js.map +1 -1
  559. package/es/components/number-format/NumberUtils.js +2 -0
  560. package/es/components/number-format/NumberUtils.js.map +1 -1
  561. package/es/components/pagination/PaginationHelpers.js +2 -0
  562. package/es/components/pagination/PaginationHelpers.js.map +1 -1
  563. package/es/components/pagination/PaginationInfinity.js +2 -0
  564. package/es/components/pagination/PaginationInfinity.js.map +1 -1
  565. package/es/components/pagination/PaginationProvider.js +2 -0
  566. package/es/components/pagination/PaginationProvider.js.map +1 -1
  567. package/es/components/progress-indicator/ProgressIndicator.js +2 -0
  568. package/es/components/progress-indicator/ProgressIndicator.js.map +1 -1
  569. package/es/components/radio/Radio.js +5 -2
  570. package/es/components/radio/Radio.js.map +1 -1
  571. package/es/components/radio/RadioGroup.js +6 -4
  572. package/es/components/radio/RadioGroup.js.map +1 -1
  573. package/es/components/radio/style/dnb-radio.css +106 -0
  574. package/es/components/radio/style/dnb-radio.min.css +1 -1
  575. package/es/components/radio/style/dnb-radio.scss +202 -0
  576. package/es/components/radio/style/themes/dnb-radio-theme-sbanken.css +26 -0
  577. package/es/components/radio/style/themes/dnb-radio-theme-sbanken.min.css +1 -0
  578. package/es/components/radio/style/themes/dnb-radio-theme-sbanken.scss +33 -0
  579. package/es/components/radio/style/themes/dnb-radio-theme-ui.css +20 -86
  580. package/es/components/radio/style/themes/dnb-radio-theme-ui.min.css +1 -1
  581. package/es/components/radio/style/themes/dnb-radio-theme-ui.scss +26 -143
  582. package/es/components/section/Section.js +2 -0
  583. package/es/components/section/Section.js.map +1 -1
  584. package/es/components/skeleton/Skeleton.js +2 -0
  585. package/es/components/skeleton/Skeleton.js.map +1 -1
  586. package/es/components/skeleton/figures/Article.js +2 -0
  587. package/es/components/skeleton/figures/Article.js.map +1 -1
  588. package/es/components/skeleton/figures/Circle.js +2 -0
  589. package/es/components/skeleton/figures/Circle.js.map +1 -1
  590. package/es/components/skeleton/figures/Product.js +2 -0
  591. package/es/components/skeleton/figures/Product.js.map +1 -1
  592. package/es/components/skeleton/figures/Table.js +2 -0
  593. package/es/components/skeleton/figures/Table.js.map +1 -1
  594. package/es/components/slider/Slider.d.ts +1 -0
  595. package/es/components/slider/Slider.js +1 -0
  596. package/es/components/slider/Slider.js.map +1 -1
  597. package/es/components/slider/SliderInstance.js +2 -0
  598. package/es/components/slider/SliderInstance.js.map +1 -1
  599. package/es/components/slider/SliderProvider.js +2 -0
  600. package/es/components/slider/SliderProvider.js.map +1 -1
  601. package/es/components/space/Space.js +2 -0
  602. package/es/components/space/Space.js.map +1 -1
  603. package/es/components/switch/Switch.js +3 -0
  604. package/es/components/switch/Switch.js.map +1 -1
  605. package/es/components/table/Table.js +2 -0
  606. package/es/components/table/Table.js.map +1 -1
  607. package/es/components/tabs/Tabs.js +2 -0
  608. package/es/components/tabs/Tabs.js.map +1 -1
  609. package/es/components/tag/Tag.d.ts +1 -0
  610. package/es/components/tag/Tag.js +3 -0
  611. package/es/components/tag/Tag.js.map +1 -1
  612. package/es/components/tag/TagGroup.js +2 -0
  613. package/es/components/tag/TagGroup.js.map +1 -1
  614. package/es/components/textarea/Textarea.js +3 -0
  615. package/es/components/textarea/Textarea.js.map +1 -1
  616. package/es/components/timeline/Timeline.js +2 -0
  617. package/es/components/timeline/Timeline.js.map +1 -1
  618. package/es/components/timeline/TimelineItem.js +2 -0
  619. package/es/components/timeline/TimelineItem.js.map +1 -1
  620. package/es/components/toggle-button/ToggleButton.js +3 -0
  621. package/es/components/toggle-button/ToggleButton.js.map +1 -1
  622. package/es/components/toggle-button/ToggleButtonGroup.js +6 -4
  623. package/es/components/toggle-button/ToggleButtonGroup.js.map +1 -1
  624. package/es/components/tooltip/Tooltip.js +2 -0
  625. package/es/components/tooltip/Tooltip.js.map +1 -1
  626. package/es/components/tooltip/TooltipPortal.js +2 -0
  627. package/es/components/tooltip/TooltipPortal.js.map +1 -1
  628. package/es/components/upload/Upload.d.ts +1 -0
  629. package/es/components/upload/Upload.js +3 -0
  630. package/es/components/upload/Upload.js.map +1 -1
  631. package/es/components/upload/useUpload.js +2 -0
  632. package/es/components/upload/useUpload.js.map +1 -1
  633. package/es/components/visually-hidden/VisuallyHidden.js +2 -0
  634. package/es/components/visually-hidden/VisuallyHidden.js.map +1 -1
  635. package/es/elements/Element.js +2 -0
  636. package/es/elements/Element.js.map +1 -1
  637. package/es/elements/typography/H.js +2 -0
  638. package/es/elements/typography/H.js.map +1 -1
  639. package/es/extensions/forms/DataContext/Provider/Provider.js +53 -43
  640. package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  641. package/es/extensions/forms/Field/BankAccountNumber/BankAccountNumber.js +9 -6
  642. package/es/extensions/forms/Field/BankAccountNumber/BankAccountNumber.js.map +1 -1
  643. package/es/extensions/forms/Field/Email/Email.js +7 -5
  644. package/es/extensions/forms/Field/Email/Email.js.map +1 -1
  645. package/es/extensions/forms/Field/Expiry/Expiry.d.ts +7 -0
  646. package/es/extensions/forms/Field/Expiry/Expiry.js +88 -0
  647. package/es/extensions/forms/Field/Expiry/Expiry.js.map +1 -0
  648. package/es/extensions/forms/Field/Expiry/index.d.ts +2 -0
  649. package/es/extensions/forms/Field/Expiry/index.js +3 -0
  650. package/es/extensions/forms/Field/Expiry/index.js.map +1 -0
  651. package/es/extensions/forms/Field/Expiry/style/dnb-expiry.css +12 -0
  652. package/es/extensions/forms/Field/Expiry/style/dnb-expiry.min.css +1 -0
  653. package/es/extensions/forms/Field/Expiry/style/dnb-expiry.scss +9 -0
  654. package/es/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js +9 -6
  655. package/es/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js.map +1 -1
  656. package/es/extensions/forms/Field/Number/Number.js +48 -25
  657. package/es/extensions/forms/Field/Number/Number.js.map +1 -1
  658. package/es/extensions/forms/Field/OrganizationNumber/OrganizationNumber.js +9 -6
  659. package/es/extensions/forms/Field/OrganizationNumber/OrganizationNumber.js.map +1 -1
  660. package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.js +34 -21
  661. package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  662. package/es/extensions/forms/Field/SelectCountry/SelectCountry.js +6 -4
  663. package/es/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
  664. package/es/extensions/forms/Field/String/String.js +30 -20
  665. package/es/extensions/forms/Field/String/String.js.map +1 -1
  666. package/es/extensions/forms/Field/index.d.ts +1 -0
  667. package/es/extensions/forms/Field/index.js +1 -0
  668. package/es/extensions/forms/Field/index.js.map +1 -1
  669. package/es/extensions/forms/Field/style/dnb-forms-field.css +13 -0
  670. package/es/extensions/forms/Field/style/dnb-forms-field.min.css +1 -1
  671. package/es/extensions/forms/Field/style/dnb-forms-field.scss +1 -0
  672. package/es/extensions/forms/FieldBlock/FieldBlock.js +36 -3
  673. package/es/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  674. package/es/extensions/forms/Form/Element/Element.js +2 -0
  675. package/es/extensions/forms/Form/Element/Element.js.map +1 -1
  676. package/es/extensions/forms/Form/Handler/Handler.js +2 -0
  677. package/es/extensions/forms/Form/Handler/Handler.js.map +1 -1
  678. package/es/extensions/forms/hooks/index.d.ts +3 -0
  679. package/es/extensions/forms/hooks/index.js +5 -1
  680. package/es/extensions/forms/hooks/index.js.map +1 -1
  681. package/es/extensions/forms/hooks/useDataValue.js +127 -62
  682. package/es/extensions/forms/hooks/useDataValue.js.map +1 -1
  683. package/es/extensions/forms/hooks/useMountEffect.d.ts +5 -0
  684. package/es/extensions/forms/hooks/useMountEffect.js +9 -0
  685. package/es/extensions/forms/hooks/useMountEffect.js.map +1 -0
  686. package/es/extensions/forms/hooks/useProcessManager.d.ts +6 -0
  687. package/es/extensions/forms/hooks/useProcessManager.js +16 -0
  688. package/es/extensions/forms/hooks/useProcessManager.js.map +1 -0
  689. package/es/extensions/forms/hooks/useUpdateEffect.d.ts +5 -0
  690. package/es/extensions/forms/hooks/useUpdateEffect.js +14 -0
  691. package/es/extensions/forms/hooks/useUpdateEffect.js.map +1 -0
  692. package/es/extensions/forms/style/dnb-forms.css +13 -0
  693. package/es/extensions/forms/style/dnb-forms.min.css +1 -1
  694. package/es/extensions/forms/types.d.ts +10 -2
  695. package/es/extensions/forms/types.js +2 -0
  696. package/es/extensions/forms/types.js.map +1 -1
  697. package/es/extensions/forms/utils/ajv.js +25 -1
  698. package/es/extensions/forms/utils/ajv.js.map +1 -1
  699. package/es/extensions/forms/utils/errors.d.ts +2 -0
  700. package/es/extensions/forms/utils/errors.js +10 -0
  701. package/es/extensions/forms/utils/errors.js.map +1 -0
  702. package/es/extensions/forms/utils/index.d.ts +1 -0
  703. package/es/extensions/forms/utils/index.js +1 -0
  704. package/es/extensions/forms/utils/index.js.map +1 -1
  705. package/es/extensions/payment-card/PaymentCard.js +2 -0
  706. package/es/extensions/payment-card/PaymentCard.js.map +1 -1
  707. package/es/fragments/drawer-list/DrawerListProvider.js +2 -0
  708. package/es/fragments/drawer-list/DrawerListProvider.js.map +1 -1
  709. package/es/fragments/scroll-view/ScrollView.js +2 -0
  710. package/es/fragments/scroll-view/ScrollView.js.map +1 -1
  711. package/es/shared/Eufemia.d.ts +1 -1
  712. package/es/shared/Eufemia.js +2 -2
  713. package/es/shared/Eufemia.js.map +1 -1
  714. package/es/shared/MediaQuery.js +2 -0
  715. package/es/shared/MediaQuery.js.map +1 -1
  716. package/es/shared/Provider.js +2 -0
  717. package/es/shared/Provider.js.map +1 -1
  718. package/es/shared/Theme.js +2 -0
  719. package/es/shared/Theme.js.map +1 -1
  720. package/es/shared/VisibilityByTheme.js +2 -0
  721. package/es/shared/VisibilityByTheme.js.map +1 -1
  722. package/es/shared/index.js +2 -0
  723. package/es/shared/index.js.map +1 -1
  724. package/es/shared/locales/en-GB.d.ts +11 -0
  725. package/es/shared/locales/en-GB.js +12 -1
  726. package/es/shared/locales/en-GB.js.map +1 -1
  727. package/es/shared/locales/en-US.d.ts +11 -0
  728. package/es/shared/locales/index.d.ts +22 -0
  729. package/es/shared/locales/nb-NO.d.ts +11 -0
  730. package/es/shared/locales/nb-NO.js +12 -1
  731. package/es/shared/locales/nb-NO.js.map +1 -1
  732. package/es/shared/useMedia.js +2 -0
  733. package/es/shared/useMedia.js.map +1 -1
  734. package/es/shared/useMediaQuery.js +2 -0
  735. package/es/shared/useMediaQuery.js.map +1 -1
  736. package/es/shared/useTheme.js +2 -0
  737. package/es/shared/useTheme.js.map +1 -1
  738. package/es/shared/useTranslation.js +2 -0
  739. package/es/shared/useTranslation.js.map +1 -1
  740. package/es/style/dnb-ui-components.css +106 -0
  741. package/es/style/dnb-ui-components.min.css +1 -1
  742. package/es/style/dnb-ui-extensions.css +13 -0
  743. package/es/style/dnb-ui-extensions.min.css +1 -1
  744. package/es/style/themes/theme-eiendom/eiendom-theme-components.css +126 -86
  745. package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  746. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.css +13 -0
  747. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  748. package/es/style/themes/theme-sbanken/sbanken-theme-components.css +133 -93
  749. package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +3 -3
  750. package/es/style/themes/theme-sbanken/sbanken-theme-components.scss +1 -1
  751. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.css +13 -0
  752. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  753. package/es/style/themes/theme-ui/ui-theme-components.css +126 -86
  754. package/es/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  755. package/es/style/themes/theme-ui/ui-theme-extensions.css +13 -0
  756. package/es/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  757. package/esm/dnb-ui-basis.min.mjs +1 -1
  758. package/esm/dnb-ui-components.min.mjs +1 -1
  759. package/esm/dnb-ui-elements.min.mjs +1 -1
  760. package/esm/dnb-ui-extensions.min.mjs +3 -3
  761. package/esm/dnb-ui-lib.min.mjs +1 -1
  762. package/extensions/forms/DataContext/Provider/Provider.js +53 -43
  763. package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  764. package/extensions/forms/Field/BankAccountNumber/BankAccountNumber.js +9 -6
  765. package/extensions/forms/Field/BankAccountNumber/BankAccountNumber.js.map +1 -1
  766. package/extensions/forms/Field/Email/Email.js +7 -5
  767. package/extensions/forms/Field/Email/Email.js.map +1 -1
  768. package/extensions/forms/Field/Expiry/Expiry.d.ts +7 -0
  769. package/extensions/forms/Field/Expiry/Expiry.js +88 -0
  770. package/extensions/forms/Field/Expiry/Expiry.js.map +1 -0
  771. package/extensions/forms/Field/Expiry/index.d.ts +2 -0
  772. package/extensions/forms/Field/Expiry/index.js +3 -0
  773. package/extensions/forms/Field/Expiry/index.js.map +1 -0
  774. package/extensions/forms/Field/Expiry/style/dnb-expiry.css +12 -0
  775. package/extensions/forms/Field/Expiry/style/dnb-expiry.min.css +1 -0
  776. package/extensions/forms/Field/Expiry/style/dnb-expiry.scss +9 -0
  777. package/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js +9 -6
  778. package/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js.map +1 -1
  779. package/extensions/forms/Field/Number/Number.js +49 -26
  780. package/extensions/forms/Field/Number/Number.js.map +1 -1
  781. package/extensions/forms/Field/OrganizationNumber/OrganizationNumber.js +9 -6
  782. package/extensions/forms/Field/OrganizationNumber/OrganizationNumber.js.map +1 -1
  783. package/extensions/forms/Field/PhoneNumber/PhoneNumber.js +46 -33
  784. package/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  785. package/extensions/forms/Field/SelectCountry/SelectCountry.js +6 -4
  786. package/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
  787. package/extensions/forms/Field/String/String.js +31 -21
  788. package/extensions/forms/Field/String/String.js.map +1 -1
  789. package/extensions/forms/Field/index.d.ts +1 -0
  790. package/extensions/forms/Field/index.js +1 -0
  791. package/extensions/forms/Field/index.js.map +1 -1
  792. package/extensions/forms/Field/style/dnb-forms-field.css +13 -0
  793. package/extensions/forms/Field/style/dnb-forms-field.min.css +1 -1
  794. package/extensions/forms/Field/style/dnb-forms-field.scss +1 -0
  795. package/extensions/forms/FieldBlock/FieldBlock.js +37 -3
  796. package/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  797. package/extensions/forms/Form/Element/Element.js +2 -0
  798. package/extensions/forms/Form/Element/Element.js.map +1 -1
  799. package/extensions/forms/Form/Handler/Handler.js +2 -0
  800. package/extensions/forms/Form/Handler/Handler.js.map +1 -1
  801. package/extensions/forms/hooks/index.d.ts +3 -0
  802. package/extensions/forms/hooks/index.js +5 -1
  803. package/extensions/forms/hooks/index.js.map +1 -1
  804. package/extensions/forms/hooks/useDataValue.js +128 -62
  805. package/extensions/forms/hooks/useDataValue.js.map +1 -1
  806. package/extensions/forms/hooks/useMountEffect.d.ts +5 -0
  807. package/extensions/forms/hooks/useMountEffect.js +9 -0
  808. package/extensions/forms/hooks/useMountEffect.js.map +1 -0
  809. package/extensions/forms/hooks/useProcessManager.d.ts +6 -0
  810. package/extensions/forms/hooks/useProcessManager.js +16 -0
  811. package/extensions/forms/hooks/useProcessManager.js.map +1 -0
  812. package/extensions/forms/hooks/useUpdateEffect.d.ts +5 -0
  813. package/extensions/forms/hooks/useUpdateEffect.js +14 -0
  814. package/extensions/forms/hooks/useUpdateEffect.js.map +1 -0
  815. package/extensions/forms/style/dnb-forms.css +13 -0
  816. package/extensions/forms/style/dnb-forms.min.css +1 -1
  817. package/extensions/forms/types.d.ts +10 -2
  818. package/extensions/forms/types.js +2 -0
  819. package/extensions/forms/types.js.map +1 -1
  820. package/extensions/forms/utils/ajv.js +25 -1
  821. package/extensions/forms/utils/ajv.js.map +1 -1
  822. package/extensions/forms/utils/errors.d.ts +2 -0
  823. package/extensions/forms/utils/errors.js +10 -0
  824. package/extensions/forms/utils/errors.js.map +1 -0
  825. package/extensions/forms/utils/index.d.ts +1 -0
  826. package/extensions/forms/utils/index.js +1 -0
  827. package/extensions/forms/utils/index.js.map +1 -1
  828. package/extensions/payment-card/PaymentCard.js +2 -0
  829. package/extensions/payment-card/PaymentCard.js.map +1 -1
  830. package/fragments/drawer-list/DrawerListProvider.js +2 -0
  831. package/fragments/drawer-list/DrawerListProvider.js.map +1 -1
  832. package/fragments/scroll-view/ScrollView.js +2 -0
  833. package/fragments/scroll-view/ScrollView.js.map +1 -1
  834. package/package.json +1 -1
  835. package/shared/Eufemia.d.ts +1 -1
  836. package/shared/Eufemia.js +2 -2
  837. package/shared/Eufemia.js.map +1 -1
  838. package/shared/MediaQuery.js +2 -0
  839. package/shared/MediaQuery.js.map +1 -1
  840. package/shared/Provider.js +2 -0
  841. package/shared/Provider.js.map +1 -1
  842. package/shared/Theme.js +2 -0
  843. package/shared/Theme.js.map +1 -1
  844. package/shared/VisibilityByTheme.js +2 -0
  845. package/shared/VisibilityByTheme.js.map +1 -1
  846. package/shared/index.js +2 -0
  847. package/shared/index.js.map +1 -1
  848. package/shared/locales/en-GB.d.ts +11 -0
  849. package/shared/locales/en-GB.js +12 -1
  850. package/shared/locales/en-GB.js.map +1 -1
  851. package/shared/locales/en-US.d.ts +11 -0
  852. package/shared/locales/index.d.ts +22 -0
  853. package/shared/locales/nb-NO.d.ts +11 -0
  854. package/shared/locales/nb-NO.js +12 -1
  855. package/shared/locales/nb-NO.js.map +1 -1
  856. package/shared/useMedia.js +2 -0
  857. package/shared/useMedia.js.map +1 -1
  858. package/shared/useMediaQuery.js +2 -0
  859. package/shared/useMediaQuery.js.map +1 -1
  860. package/shared/useTheme.js +2 -0
  861. package/shared/useTheme.js.map +1 -1
  862. package/shared/useTranslation.js +2 -0
  863. package/shared/useTranslation.js.map +1 -1
  864. package/style/dnb-ui-components.css +106 -0
  865. package/style/dnb-ui-components.min.css +1 -1
  866. package/style/dnb-ui-extensions.css +13 -0
  867. package/style/dnb-ui-extensions.min.css +1 -1
  868. package/style/themes/theme-eiendom/eiendom-theme-components.css +126 -86
  869. package/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  870. package/style/themes/theme-eiendom/eiendom-theme-extensions.css +13 -0
  871. package/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  872. package/style/themes/theme-sbanken/sbanken-theme-components.css +133 -93
  873. package/style/themes/theme-sbanken/sbanken-theme-components.min.css +3 -3
  874. package/style/themes/theme-sbanken/sbanken-theme-components.scss +1 -1
  875. package/style/themes/theme-sbanken/sbanken-theme-extensions.css +13 -0
  876. package/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  877. package/style/themes/theme-ui/ui-theme-components.css +126 -86
  878. package/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  879. package/style/themes/theme-ui/ui-theme-extensions.css +13 -0
  880. package/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  881. package/umd/dnb-ui-basis.min.js +1 -1
  882. package/umd/dnb-ui-components.min.js +1 -1
  883. package/umd/dnb-ui-elements.min.js +1 -1
  884. package/umd/dnb-ui-extensions.min.js +2 -2
  885. package/umd/dnb-ui-lib.min.js +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.js","names":["React","classnames","Context","makeUniqueId","validateDOMAttributes","createSpacingClasses","TooltipWithEvents","defaultProps","getPropsFromTooltipProp","getRefElement","getTargetElement","injectTooltipSemantic","convertSnakeCaseProps","Tooltip","localProps","context","useContext","inherited","props","_objectSpread","getTranslation","targetElement","targetSelector","className","id","tooltip","size","fixedPosition","skipPortal","noAnimation","showDelay","hideDelay","active","position","arrow","align","params","_objectWithoutProperties","_excluded","target","element","setElement","useState","internalId","useEffect","classes","attributes","createElement","_extends","children"],"sources":["../../../../src/components/tooltip/Tooltip.tsx"],"sourcesContent":["/**\n * Web Tooltip Component\n *\n */\n\nimport React from 'react'\nimport classnames from 'classnames'\nimport Context from '../../shared/Context'\nimport {\n makeUniqueId,\n validateDOMAttributes,\n} from '../../shared/component-helper'\nimport { createSpacingClasses } from '../space/SpacingHelper'\nimport TooltipWithEvents from './TooltipWithEvents'\nimport {\n defaultProps,\n getPropsFromTooltipProp,\n getRefElement,\n getTargetElement,\n injectTooltipSemantic,\n} from './TooltipHelpers'\nimport { TooltipAllProps } from './types'\nimport { convertSnakeCaseProps } from '../../shared/helpers/withSnakeCaseProps'\n\nfunction Tooltip(localProps: TooltipAllProps) {\n const context = React.useContext(Context)\n\n const inherited = getPropsFromTooltipProp(localProps)\n\n // use only the props from context, who are available here anyway\n const props = convertSnakeCaseProps({\n ...defaultProps,\n ...localProps,\n ...inherited,\n ...context.getTranslation(localProps).Tooltip,\n ...context.Tooltip,\n })\n\n const {\n targetElement,\n targetSelector,\n className,\n id, // eslint-disable-line\n tooltip, // eslint-disable-line\n size,\n fixedPosition, // eslint-disable-line\n skipPortal, // eslint-disable-line\n noAnimation, // eslint-disable-line\n showDelay, // eslint-disable-line\n hideDelay, // eslint-disable-line\n active, // eslint-disable-line\n position, // eslint-disable-line\n arrow, // eslint-disable-line\n align, // eslint-disable-line\n ...params\n } = props\n\n const target = targetElement || targetSelector\n\n const [element, setElement] = React.useState<\n HTMLElement | React.ReactElement\n >()\n const [internalId] = React.useState(() => props.id || makeUniqueId()) // cause we need an id anyway\n props.internalId = internalId\n\n React.useEffect(() => {\n const element = getTargetElement(getRefElement(target))\n setElement(element)\n }, [target])\n\n const classes = classnames(\n 'dnb-tooltip',\n size === 'large' && 'dnb-tooltip--large',\n createSpacingClasses(props),\n className\n )\n\n const attributes = {\n className: classes,\n ...params,\n }\n\n // also used for code markup simulation\n validateDOMAttributes(localProps, attributes)\n\n if (target && !element) {\n return null\n }\n\n return (\n <TooltipWithEvents target={element} attributes={attributes} {...props}>\n {props.children}\n </TooltipWithEvents>\n )\n}\n\nexport { injectTooltipSemantic }\nexport default Tooltip\n"],"mappings":";;;;;;AAKA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,OAAO,MAAM,sBAAsB;AAC1C,SACEC,YAAY,EACZC,qBAAqB,QAChB,+BAA+B;AACtC,SAASC,oBAAoB,QAAQ,wBAAwB;AAC7D,OAAOC,iBAAiB,MAAM,qBAAqB;AACnD,SACEC,YAAY,EACZC,uBAAuB,EACvBC,aAAa,EACbC,gBAAgB,EAChBC,qBAAqB,QAChB,kBAAkB;AAEzB,SAASC,qBAAqB,QAAQ,yCAAyC;AAE/E,SAASC,OAAOA,CAACC,UAA2B,EAAE;EAC5C,MAAMC,OAAO,GAAGf,KAAK,CAACgB,UAAU,CAACd,OAAO,CAAC;EAEzC,MAAMe,SAAS,GAAGT,uBAAuB,CAACM,UAAU,CAAC;EAGrD,MAAMI,KAAK,GAAGN,qBAAqB,CAAAO,aAAA,CAAAA,aAAA,CAAAA,aAAA,CAAAA,aAAA,CAAAA,aAAA,KAC9BZ,YAAY,GACZO,UAAU,GACVG,SAAS,GACTF,OAAO,CAACK,cAAc,CAACN,UAAU,CAAC,CAACD,OAAO,GAC1CE,OAAO,CAACF,OAAO,CACnB,CAAC;EAEF,MAAM;MACJQ,aAAa;MACbC,cAAc;MACdC,SAAS;MACTC,EAAE;MACFC,OAAO;MACPC,IAAI;MACJC,aAAa;MACbC,UAAU;MACVC,WAAW;MACXC,SAAS;MACTC,SAAS;MACTC,MAAM;MACNC,QAAQ;MACRC,KAAK;MACLC;IAEF,CAAC,GAAGjB,KAAK;IADJkB,MAAM,GAAAC,wBAAA,CACPnB,KAAK,EAAAoB,SAAA;EAET,MAAMC,MAAM,GAAGlB,aAAa,IAAIC,cAAc;EAE9C,MAAM,CAACkB,OAAO,EAAEC,UAAU,CAAC,GAAGzC,KAAK,CAAC0C,QAAQ,CAE1C,CAAC;EACH,MAAM,CAACC,UAAU,CAAC,GAAG3C,KAAK,CAAC0C,QAAQ,CAAC,MAAMxB,KAAK,CAACM,EAAE,IAAIrB,YAAY,CAAC,CAAC,CAAC;EACrEe,KAAK,CAACyB,UAAU,GAAGA,UAAU;EAE7B3C,KAAK,CAAC4C,SAAS,CAAC,MAAM;IACpB,MAAMJ,OAAO,GAAG9B,gBAAgB,CAACD,aAAa,CAAC8B,MAAM,CAAC,CAAC;IACvDE,UAAU,CAACD,OAAO,CAAC;EACrB,CAAC,EAAE,CAACD,MAAM,CAAC,CAAC;EAEZ,MAAMM,OAAO,GAAG5C,UAAU,CACxB,aAAa,EAEbI,oBAAoB,CAACa,KAAK,CAAC,EAC3BK,SAAS,EAFTG,IAAI,KAAK,OAAO,IAAI,oBAGtB,CAAC;EAED,MAAMoB,UAAU,GAAA3B,aAAA;IACdI,SAAS,EAAEsB;EAAO,GACfT,MAAM,CACV;EAGDhC,qBAAqB,CAACU,UAAU,EAAEgC,UAAU,CAAC;EAE7C,IAAIP,MAAM,IAAI,CAACC,OAAO,EAAE;IACtB,OAAO,IAAI;EACb;EAEA,OACExC,KAAA,CAAA+C,aAAA,CAACzC,iBAAiB,EAAA0C,QAAA;IAACT,MAAM,EAAEC,OAAQ;IAACM,UAAU,EAAEA;EAAW,GAAK5B,KAAK,GAClEA,KAAK,CAAC+B,QACU,CAAC;AAExB;AAEA,SAAStC,qBAAqB;AAC9B,eAAeE,OAAO"}
1
+ {"version":3,"file":"Tooltip.js","names":["React","classnames","Context","makeUniqueId","validateDOMAttributes","createSpacingClasses","TooltipWithEvents","defaultProps","getPropsFromTooltipProp","getRefElement","getTargetElement","injectTooltipSemantic","convertSnakeCaseProps","Tooltip","localProps","context","useContext","inherited","props","_objectSpread","getTranslation","targetElement","targetSelector","className","id","tooltip","size","fixedPosition","skipPortal","noAnimation","showDelay","hideDelay","active","position","arrow","align","params","_objectWithoutProperties","_excluded","target","element","setElement","useState","internalId","useEffect","classes","attributes","createElement","_extends","children"],"sources":["../../../../src/components/tooltip/Tooltip.tsx"],"sourcesContent":["/**\n * Web Tooltip Component\n *\n */\n\nimport React from 'react'\nimport classnames from 'classnames'\nimport Context from '../../shared/Context'\nimport {\n makeUniqueId,\n validateDOMAttributes,\n} from '../../shared/component-helper'\nimport { createSpacingClasses } from '../space/SpacingHelper'\nimport TooltipWithEvents from './TooltipWithEvents'\nimport {\n defaultProps,\n getPropsFromTooltipProp,\n getRefElement,\n getTargetElement,\n injectTooltipSemantic,\n} from './TooltipHelpers'\nimport { TooltipAllProps } from './types'\nimport { convertSnakeCaseProps } from '../../shared/helpers/withSnakeCaseProps'\n\nfunction Tooltip(localProps: TooltipAllProps) {\n const context = React.useContext(Context)\n\n const inherited = getPropsFromTooltipProp(localProps)\n\n // use only the props from context, who are available here anyway\n const props = convertSnakeCaseProps({\n ...defaultProps,\n ...localProps,\n ...inherited,\n ...context.getTranslation(localProps).Tooltip,\n ...context.Tooltip,\n })\n\n const {\n targetElement,\n targetSelector,\n className,\n id, // eslint-disable-line\n tooltip, // eslint-disable-line\n size,\n fixedPosition, // eslint-disable-line\n skipPortal, // eslint-disable-line\n noAnimation, // eslint-disable-line\n showDelay, // eslint-disable-line\n hideDelay, // eslint-disable-line\n active, // eslint-disable-line\n position, // eslint-disable-line\n arrow, // eslint-disable-line\n align, // eslint-disable-line\n ...params\n } = props\n\n const target = targetElement || targetSelector\n\n const [element, setElement] = React.useState<\n HTMLElement | React.ReactElement\n >()\n const [internalId] = React.useState(() => props.id || makeUniqueId()) // cause we need an id anyway\n props.internalId = internalId\n\n React.useEffect(() => {\n const element = getTargetElement(getRefElement(target))\n setElement(element)\n }, [target])\n\n const classes = classnames(\n 'dnb-tooltip',\n size === 'large' && 'dnb-tooltip--large',\n createSpacingClasses(props),\n className\n )\n\n const attributes = {\n className: classes,\n ...params,\n }\n\n // also used for code markup simulation\n validateDOMAttributes(localProps, attributes)\n\n if (target && !element) {\n return null\n }\n\n return (\n <TooltipWithEvents target={element} attributes={attributes} {...props}>\n {props.children}\n </TooltipWithEvents>\n )\n}\n\nexport { injectTooltipSemantic }\nexport default Tooltip\n"],"mappings":";;;;;;;;AAKA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,OAAO,MAAM,sBAAsB;AAC1C,SACEC,YAAY,EACZC,qBAAqB,QAChB,+BAA+B;AACtC,SAASC,oBAAoB,QAAQ,wBAAwB;AAC7D,OAAOC,iBAAiB,MAAM,qBAAqB;AACnD,SACEC,YAAY,EACZC,uBAAuB,EACvBC,aAAa,EACbC,gBAAgB,EAChBC,qBAAqB,QAChB,kBAAkB;AAEzB,SAASC,qBAAqB,QAAQ,yCAAyC;AAE/E,SAASC,OAAOA,CAACC,UAA2B,EAAE;EAC5C,MAAMC,OAAO,GAAGf,KAAK,CAACgB,UAAU,CAACd,OAAO,CAAC;EAEzC,MAAMe,SAAS,GAAGT,uBAAuB,CAACM,UAAU,CAAC;EAGrD,MAAMI,KAAK,GAAGN,qBAAqB,CAAAO,aAAA,CAAAA,aAAA,CAAAA,aAAA,CAAAA,aAAA,CAAAA,aAAA,KAC9BZ,YAAY,GACZO,UAAU,GACVG,SAAS,GACTF,OAAO,CAACK,cAAc,CAACN,UAAU,CAAC,CAACD,OAAO,GAC1CE,OAAO,CAACF,OAAO,CACnB,CAAC;EAEF,MAAM;MACJQ,aAAa;MACbC,cAAc;MACdC,SAAS;MACTC,EAAE;MACFC,OAAO;MACPC,IAAI;MACJC,aAAa;MACbC,UAAU;MACVC,WAAW;MACXC,SAAS;MACTC,SAAS;MACTC,MAAM;MACNC,QAAQ;MACRC,KAAK;MACLC;IAEF,CAAC,GAAGjB,KAAK;IADJkB,MAAM,GAAAC,wBAAA,CACPnB,KAAK,EAAAoB,SAAA;EAET,MAAMC,MAAM,GAAGlB,aAAa,IAAIC,cAAc;EAE9C,MAAM,CAACkB,OAAO,EAAEC,UAAU,CAAC,GAAGzC,KAAK,CAAC0C,QAAQ,CAE1C,CAAC;EACH,MAAM,CAACC,UAAU,CAAC,GAAG3C,KAAK,CAAC0C,QAAQ,CAAC,MAAMxB,KAAK,CAACM,EAAE,IAAIrB,YAAY,CAAC,CAAC,CAAC;EACrEe,KAAK,CAACyB,UAAU,GAAGA,UAAU;EAE7B3C,KAAK,CAAC4C,SAAS,CAAC,MAAM;IACpB,MAAMJ,OAAO,GAAG9B,gBAAgB,CAACD,aAAa,CAAC8B,MAAM,CAAC,CAAC;IACvDE,UAAU,CAACD,OAAO,CAAC;EACrB,CAAC,EAAE,CAACD,MAAM,CAAC,CAAC;EAEZ,MAAMM,OAAO,GAAG5C,UAAU,CACxB,aAAa,EAEbI,oBAAoB,CAACa,KAAK,CAAC,EAC3BK,SAAS,EAFTG,IAAI,KAAK,OAAO,IAAI,oBAGtB,CAAC;EAED,MAAMoB,UAAU,GAAA3B,aAAA;IACdI,SAAS,EAAEsB;EAAO,GACfT,MAAM,CACV;EAGDhC,qBAAqB,CAACU,UAAU,EAAEgC,UAAU,CAAC;EAE7C,IAAIP,MAAM,IAAI,CAACC,OAAO,EAAE;IACtB,OAAO,IAAI;EACb;EAEA,OACExC,KAAA,CAAA+C,aAAA,CAACzC,iBAAiB,EAAA0C,QAAA;IAACT,MAAM,EAAEC,OAAQ;IAACM,UAAU,EAAEA;EAAW,GAAK5B,KAAK,GAClEA,KAAK,CAAC+B,QACU,CAAC;AAExB;AAEA,SAAStC,qBAAqB;AAC9B,eAAeE,OAAO"}
@@ -1,3 +1,5 @@
1
+ "use client";
2
+
1
3
  import _extends from "@babel/runtime/helpers/esm/extends";
2
4
  import React from 'react';
3
5
  import ReactDOM from 'react-dom';
@@ -1 +1 @@
1
- {"version":3,"file":"TooltipPortal.js","names":["React","ReactDOM","makeUniqueId","warn","TooltipContainer","useTheme","getThemeClasses","tooltipPortal","globalThis","TooltipPortal","props","_tooltipPortal$id3","active","targetElement","hideDelay","keepInDOM","noAnimation","children","isMounted","setIsMounted","useState","isActive","setIsActive","id","isInDOM","useRef","theme","makePortal","count","node","createRootElement","clearTimers","_tooltipPortal$id","_tooltipPortal$id2","clearTimeout","delayTimeout","hiddenTimeout","removeFromDOM","hide","ref","useEffect","current","delayRender","delayHidden","IS_TEST","delay","parseFloat","String","setTimeout","root","createPortal","createElement","_extends","className","element","document","querySelector","elem","classList","add","call","split","body","appendChild","e"],"sources":["../../../../src/components/tooltip/TooltipPortal.tsx"],"sourcesContent":["/**\n * Web Tooltip Component\n *\n */\n\nimport React from 'react'\nimport ReactDOM from 'react-dom'\nimport { makeUniqueId, warn } from '../../shared/component-helper'\nimport TooltipContainer from './TooltipContainer'\nimport { TooltipProps } from './types'\nimport { useTheme } from '../../shared'\nimport { ThemeProps, getThemeClasses } from '../../shared/Theme'\n\ntype TooltipType = {\n node: HTMLElement\n count?: number\n delayTimeout?: NodeJS.Timeout\n hiddenTimeout?: NodeJS.Timeout\n}\n\nlet tooltipPortal: Record<string, TooltipType>\nif (typeof globalThis !== 'undefined') {\n globalThis.tooltipPortal = globalThis.tooltipPortal || {}\n tooltipPortal = globalThis.tooltipPortal\n} else {\n tooltipPortal = {}\n}\n\ntype TooltipPortalProps = {\n targetElement: HTMLElement\n active: boolean\n keepInDOM?: boolean\n children?: React.ReactNode\n}\n\nfunction TooltipPortal(\n props: TooltipProps & TooltipPortalProps\n): JSX.Element {\n const {\n active,\n targetElement,\n hideDelay,\n keepInDOM,\n noAnimation,\n children,\n } = props\n\n const [isMounted, setIsMounted] = React.useState(false)\n const [isActive, setIsActive] = React.useState(active)\n const [id] = React.useState(() => makeUniqueId())\n const isInDOM = React.useRef(false)\n\n const theme = useTheme()\n\n const makePortal = () => {\n if (!tooltipPortal[id]) {\n tooltipPortal[id] = {\n count: 0,\n node: createRootElement(theme),\n }\n }\n }\n\n const clearTimers = () => {\n clearTimeout(tooltipPortal[id]?.delayTimeout)\n clearTimeout(tooltipPortal[id]?.hiddenTimeout)\n }\n\n const removeFromDOM = (hide?: boolean) => {\n if (isActive && hide) {\n return // stop here\n }\n\n const ref = tooltipPortal[id]\n if (ref?.node) {\n ref.count--\n if (ref.count <= 0) {\n /**\n * Remove the referenced data\n */\n delete tooltipPortal[id]\n }\n }\n }\n\n React.useEffect(() => {\n setIsMounted(true)\n\n clearTimers()\n\n if (active) {\n makePortal()\n setIsActive(true)\n\n isInDOM.current = true\n\n if (!isMounted) {\n tooltipPortal[id].count++\n }\n } else if (!active && isMounted) {\n const delayRender = () => {\n setIsActive(false)\n }\n\n const delayHidden = () => {\n isInDOM.current = false\n removeFromDOM(true)\n }\n\n if (noAnimation || globalThis.IS_TEST) {\n delayRender()\n delayHidden()\n } else if (tooltipPortal[id]) {\n const delay = parseFloat(String(hideDelay))\n tooltipPortal[id].delayTimeout = setTimeout(delayRender, delay)\n tooltipPortal[id].hiddenTimeout = setTimeout(\n delayHidden,\n delay + 300\n )\n }\n }\n\n return clearTimers\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [children, active, id, hideDelay, noAnimation])\n\n React.useEffect(() => {\n /**\n * Because of \"aria-describedby\" on the target element,\n * the Tooltip should exist in the DOM\n */\n if (keepInDOM) {\n makePortal()\n }\n\n return removeFromDOM\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const root = tooltipPortal[id]?.node\n\n if (root) {\n return ReactDOM.createPortal(\n isInDOM.current || keepInDOM ? (\n <TooltipContainer\n {...props}\n targetElement={targetElement}\n active={isActive}\n >\n {children}\n </TooltipContainer>\n ) : null,\n root\n )\n }\n\n return null\n}\n\nexport default TooltipPortal\n\nconst createRootElement = (theme: ThemeProps, className = null) => {\n if (!className) {\n className = 'dnb-tooltip__portal'\n }\n try {\n const element: HTMLElement = document.querySelector(`.${className}`)\n\n if (element) {\n return element\n }\n\n const elem = document.createElement('div')\n elem.classList.add(className)\n elem.classList.add('dnb-core-style')\n\n if (theme) {\n elem.classList.add.call(\n elem.classList,\n ...getThemeClasses(theme).split(' ')\n )\n }\n\n document.body.appendChild(elem)\n\n return elem\n } catch (e) {\n warn(e)\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"TooltipPortal.js","names":["React","ReactDOM","makeUniqueId","warn","TooltipContainer","useTheme","getThemeClasses","tooltipPortal","globalThis","TooltipPortal","props","_tooltipPortal$id3","active","targetElement","hideDelay","keepInDOM","noAnimation","children","isMounted","setIsMounted","useState","isActive","setIsActive","id","isInDOM","useRef","theme","makePortal","count","node","createRootElement","clearTimers","_tooltipPortal$id","_tooltipPortal$id2","clearTimeout","delayTimeout","hiddenTimeout","removeFromDOM","hide","ref","useEffect","current","delayRender","delayHidden","IS_TEST","delay","parseFloat","String","setTimeout","root","createPortal","createElement","_extends","className","element","document","querySelector","elem","classList","add","call","split","body","appendChild","e"],"sources":["../../../../src/components/tooltip/TooltipPortal.tsx"],"sourcesContent":["/**\n * Web Tooltip Component\n *\n */\n\nimport React from 'react'\nimport ReactDOM from 'react-dom'\nimport { makeUniqueId, warn } from '../../shared/component-helper'\nimport TooltipContainer from './TooltipContainer'\nimport { TooltipProps } from './types'\nimport { useTheme } from '../../shared'\nimport { ThemeProps, getThemeClasses } from '../../shared/Theme'\n\ntype TooltipType = {\n node: HTMLElement\n count?: number\n delayTimeout?: NodeJS.Timeout\n hiddenTimeout?: NodeJS.Timeout\n}\n\nlet tooltipPortal: Record<string, TooltipType>\nif (typeof globalThis !== 'undefined') {\n globalThis.tooltipPortal = globalThis.tooltipPortal || {}\n tooltipPortal = globalThis.tooltipPortal\n} else {\n tooltipPortal = {}\n}\n\ntype TooltipPortalProps = {\n targetElement: HTMLElement\n active: boolean\n keepInDOM?: boolean\n children?: React.ReactNode\n}\n\nfunction TooltipPortal(\n props: TooltipProps & TooltipPortalProps\n): JSX.Element {\n const {\n active,\n targetElement,\n hideDelay,\n keepInDOM,\n noAnimation,\n children,\n } = props\n\n const [isMounted, setIsMounted] = React.useState(false)\n const [isActive, setIsActive] = React.useState(active)\n const [id] = React.useState(() => makeUniqueId())\n const isInDOM = React.useRef(false)\n\n const theme = useTheme()\n\n const makePortal = () => {\n if (!tooltipPortal[id]) {\n tooltipPortal[id] = {\n count: 0,\n node: createRootElement(theme),\n }\n }\n }\n\n const clearTimers = () => {\n clearTimeout(tooltipPortal[id]?.delayTimeout)\n clearTimeout(tooltipPortal[id]?.hiddenTimeout)\n }\n\n const removeFromDOM = (hide?: boolean) => {\n if (isActive && hide) {\n return // stop here\n }\n\n const ref = tooltipPortal[id]\n if (ref?.node) {\n ref.count--\n if (ref.count <= 0) {\n /**\n * Remove the referenced data\n */\n delete tooltipPortal[id]\n }\n }\n }\n\n React.useEffect(() => {\n setIsMounted(true)\n\n clearTimers()\n\n if (active) {\n makePortal()\n setIsActive(true)\n\n isInDOM.current = true\n\n if (!isMounted) {\n tooltipPortal[id].count++\n }\n } else if (!active && isMounted) {\n const delayRender = () => {\n setIsActive(false)\n }\n\n const delayHidden = () => {\n isInDOM.current = false\n removeFromDOM(true)\n }\n\n if (noAnimation || globalThis.IS_TEST) {\n delayRender()\n delayHidden()\n } else if (tooltipPortal[id]) {\n const delay = parseFloat(String(hideDelay))\n tooltipPortal[id].delayTimeout = setTimeout(delayRender, delay)\n tooltipPortal[id].hiddenTimeout = setTimeout(\n delayHidden,\n delay + 300\n )\n }\n }\n\n return clearTimers\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [children, active, id, hideDelay, noAnimation])\n\n React.useEffect(() => {\n /**\n * Because of \"aria-describedby\" on the target element,\n * the Tooltip should exist in the DOM\n */\n if (keepInDOM) {\n makePortal()\n }\n\n return removeFromDOM\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const root = tooltipPortal[id]?.node\n\n if (root) {\n return ReactDOM.createPortal(\n isInDOM.current || keepInDOM ? (\n <TooltipContainer\n {...props}\n targetElement={targetElement}\n active={isActive}\n >\n {children}\n </TooltipContainer>\n ) : null,\n root\n )\n }\n\n return null\n}\n\nexport default TooltipPortal\n\nconst createRootElement = (theme: ThemeProps, className = null) => {\n if (!className) {\n className = 'dnb-tooltip__portal'\n }\n try {\n const element: HTMLElement = document.querySelector(`.${className}`)\n\n if (element) {\n return element\n }\n\n const elem = document.createElement('div')\n elem.classList.add(className)\n elem.classList.add('dnb-core-style')\n\n if (theme) {\n elem.classList.add.call(\n elem.classList,\n ...getThemeClasses(theme).split(' ')\n )\n }\n\n document.body.appendChild(elem)\n\n return elem\n } catch (e) {\n warn(e)\n }\n}\n"],"mappings":"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"}
@@ -5,6 +5,7 @@ export { defaultProps };
5
5
  declare const Upload: {
6
6
  (localProps: UploadAllProps): import("react/jsx-runtime").JSX.Element;
7
7
  useUpload: typeof useUpload;
8
+ _formElement: boolean;
8
9
  _supportsSpacingProps: boolean;
9
10
  };
10
11
  export default Upload;
@@ -1,3 +1,5 @@
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
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
@@ -111,6 +113,7 @@ const Upload = localProps => {
111
113
  }
112
114
  };
113
115
  Upload.useUpload = useUpload;
116
+ Upload._formElement = true;
114
117
  Upload._supportsSpacingProps = true;
115
118
  export default Upload;
116
119
  //# sourceMappingURL=Upload.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Upload.js","names":["React","classnames","createSpacingClasses","Provider","Context","extendPropsWithContext","makeUniqueId","UploadFileInput","useUpload","UploadDropzone","UploadContext","defaultProps","verifyFiles","UploadFileList","UploadInfo","Upload","localProps","context","useContext","_context$getTranslati","getTranslation","buttonTextSingular","textSingular","translations","_objectWithoutProperties","_excluded","filesAmountLimit","buttonText","text","extendedProps","skeleton","id","className","acceptedFileTypes","fileMaxSize","onChange","onFileDelete","title","fileTypeDescription","fileSizeDescription","fileAmountDescription","fileSizeContent","loadingText","errorLargeFile","errorUnsupportedFile","errorAmountLimit","deleteButton","fileListAriaLabel","props","_excluded2","spacingClasses","files","setFiles","setInternalFiles","getExistingFile","filesRef","useRef","useEffect","current","createElement","value","_objectSpread","onInputUpload","_extends","_UploadInfo","_UploadFileInput","_UploadFileList","newFiles","mergedFiles","map","fileItem","file","existingFile","exists","Boolean","verifiedFiles","filter","validFiles","slice","_supportsSpacingProps"],"sources":["../../../../src/components/upload/Upload.tsx"],"sourcesContent":["import React from 'react'\nimport classnames from 'classnames'\n\n// Shared\nimport { createSpacingClasses } from '../space/SpacingHelper'\nimport Provider from '../../shared/Provider'\nimport Context from '../../shared/Context'\nimport {\n extendPropsWithContext,\n makeUniqueId,\n} from '../../shared/component-helper'\n\n// Internal\nimport UploadFileInput from './UploadFileInput'\nimport useUpload from './useUpload'\nimport UploadDropzone from './UploadDropzone'\nimport { UploadContext, defaultProps } from './UploadContext'\nimport { verifyFiles } from './UploadVerify'\n\nimport type { UploadFile, UploadAllProps } from './types'\nimport UploadFileList from './UploadFileList'\nimport UploadInfo from './UploadInfo'\n\nexport { defaultProps }\n\nconst Upload = (localProps: UploadAllProps) => {\n const context = React.useContext(Context)\n\n const { buttonTextSingular, textSingular, ...translations } =\n context.getTranslation(localProps).Upload\n\n if (localProps?.filesAmountLimit === 1) {\n translations.buttonText = buttonTextSingular\n translations.text = textSingular\n }\n\n const extendedProps = extendPropsWithContext(\n localProps,\n defaultProps,\n { skeleton: context?.skeleton },\n translations,\n context.Upload\n )\n\n const {\n id,\n skeleton,\n className,\n acceptedFileTypes,\n filesAmountLimit,\n fileMaxSize,\n onChange,\n onFileDelete, // eslint-disable-line\n title, // eslint-disable-line\n text, // eslint-disable-line\n fileTypeDescription, // eslint-disable-line\n fileSizeDescription, // eslint-disable-line\n fileAmountDescription, // eslint-disable-line\n fileSizeContent, // eslint-disable-line\n buttonText, // eslint-disable-line\n loadingText, // eslint-disable-line\n errorLargeFile,\n errorUnsupportedFile,\n errorAmountLimit, // eslint-disable-line\n deleteButton, // eslint-disable-line\n fileListAriaLabel, // eslint-disable-line\n ...props\n } = extendedProps\n\n const spacingClasses = createSpacingClasses(props)\n\n const { files, setFiles, setInternalFiles, getExistingFile } =\n useUpload(id)\n\n const filesRef = React.useRef<UploadFile[]>(files)\n React.useEffect(() => {\n filesRef.current = files\n }) // keep our ref updated on every re-render\n\n return (\n <UploadContext.Provider\n value={{\n ...extendedProps,\n id,\n onInputUpload,\n }}\n >\n <Provider skeleton={skeleton}>\n <UploadDropzone\n className={classnames('dnb-upload', spacingClasses, className)}\n {...props}\n >\n <UploadInfo />\n\n <UploadFileInput />\n\n <UploadFileList />\n </UploadDropzone>\n </Provider>\n </UploadContext.Provider>\n )\n\n function onInputUpload(newFiles: UploadFile[]) {\n const files = filesRef.current\n const mergedFiles = [\n ...files,\n ...newFiles.map((fileItem) => {\n const { file } = fileItem\n\n const existingFile = getExistingFile(file, files)\n\n fileItem.exists = Boolean(existingFile)\n fileItem.id = fileItem.exists ? existingFile.id : makeUniqueId()\n\n return fileItem\n }),\n ]\n\n const verifiedFiles = verifyFiles(\n mergedFiles.filter(({ exists }) => !exists),\n {\n fileMaxSize,\n acceptedFileTypes,\n errorUnsupportedFile,\n errorLargeFile,\n }\n )\n\n const validFiles = [...verifiedFiles].slice(0, filesAmountLimit)\n\n setFiles(validFiles)\n setInternalFiles(mergedFiles)\n\n if (typeof onChange === 'function') {\n onChange({ files: validFiles })\n }\n\n return validFiles\n }\n}\n\nUpload.useUpload = useUpload\n\nUpload._supportsSpacingProps = true\n\nexport default Upload\n"],"mappings":"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"}
1
+ {"version":3,"file":"Upload.js","names":["React","classnames","createSpacingClasses","Provider","Context","extendPropsWithContext","makeUniqueId","UploadFileInput","useUpload","UploadDropzone","UploadContext","defaultProps","verifyFiles","UploadFileList","UploadInfo","Upload","localProps","context","useContext","_context$getTranslati","getTranslation","buttonTextSingular","textSingular","translations","_objectWithoutProperties","_excluded","filesAmountLimit","buttonText","text","extendedProps","skeleton","id","className","acceptedFileTypes","fileMaxSize","onChange","onFileDelete","title","fileTypeDescription","fileSizeDescription","fileAmountDescription","fileSizeContent","loadingText","errorLargeFile","errorUnsupportedFile","errorAmountLimit","deleteButton","fileListAriaLabel","props","_excluded2","spacingClasses","files","setFiles","setInternalFiles","getExistingFile","filesRef","useRef","useEffect","current","createElement","value","_objectSpread","onInputUpload","_extends","_UploadInfo","_UploadFileInput","_UploadFileList","newFiles","mergedFiles","map","fileItem","file","existingFile","exists","Boolean","verifiedFiles","filter","validFiles","slice","_formElement","_supportsSpacingProps"],"sources":["../../../../src/components/upload/Upload.tsx"],"sourcesContent":["import React from 'react'\nimport classnames from 'classnames'\n\n// Shared\nimport { createSpacingClasses } from '../space/SpacingHelper'\nimport Provider from '../../shared/Provider'\nimport Context from '../../shared/Context'\nimport {\n extendPropsWithContext,\n makeUniqueId,\n} from '../../shared/component-helper'\n\n// Internal\nimport UploadFileInput from './UploadFileInput'\nimport useUpload from './useUpload'\nimport UploadDropzone from './UploadDropzone'\nimport { UploadContext, defaultProps } from './UploadContext'\nimport { verifyFiles } from './UploadVerify'\n\nimport type { UploadFile, UploadAllProps } from './types'\nimport UploadFileList from './UploadFileList'\nimport UploadInfo from './UploadInfo'\n\nexport { defaultProps }\n\nconst Upload = (localProps: UploadAllProps) => {\n const context = React.useContext(Context)\n\n const { buttonTextSingular, textSingular, ...translations } =\n context.getTranslation(localProps).Upload\n\n if (localProps?.filesAmountLimit === 1) {\n translations.buttonText = buttonTextSingular\n translations.text = textSingular\n }\n\n const extendedProps = extendPropsWithContext(\n localProps,\n defaultProps,\n { skeleton: context?.skeleton },\n translations,\n context.Upload\n )\n\n const {\n id,\n skeleton,\n className,\n acceptedFileTypes,\n filesAmountLimit,\n fileMaxSize,\n onChange,\n onFileDelete, // eslint-disable-line\n title, // eslint-disable-line\n text, // eslint-disable-line\n fileTypeDescription, // eslint-disable-line\n fileSizeDescription, // eslint-disable-line\n fileAmountDescription, // eslint-disable-line\n fileSizeContent, // eslint-disable-line\n buttonText, // eslint-disable-line\n loadingText, // eslint-disable-line\n errorLargeFile,\n errorUnsupportedFile,\n errorAmountLimit, // eslint-disable-line\n deleteButton, // eslint-disable-line\n fileListAriaLabel, // eslint-disable-line\n ...props\n } = extendedProps\n\n const spacingClasses = createSpacingClasses(props)\n\n const { files, setFiles, setInternalFiles, getExistingFile } =\n useUpload(id)\n\n const filesRef = React.useRef<UploadFile[]>(files)\n React.useEffect(() => {\n filesRef.current = files\n }) // keep our ref updated on every re-render\n\n return (\n <UploadContext.Provider\n value={{\n ...extendedProps,\n id,\n onInputUpload,\n }}\n >\n <Provider skeleton={skeleton}>\n <UploadDropzone\n className={classnames('dnb-upload', spacingClasses, className)}\n {...props}\n >\n <UploadInfo />\n\n <UploadFileInput />\n\n <UploadFileList />\n </UploadDropzone>\n </Provider>\n </UploadContext.Provider>\n )\n\n function onInputUpload(newFiles: UploadFile[]) {\n const files = filesRef.current\n const mergedFiles = [\n ...files,\n ...newFiles.map((fileItem) => {\n const { file } = fileItem\n\n const existingFile = getExistingFile(file, files)\n\n fileItem.exists = Boolean(existingFile)\n fileItem.id = fileItem.exists ? existingFile.id : makeUniqueId()\n\n return fileItem\n }),\n ]\n\n const verifiedFiles = verifyFiles(\n mergedFiles.filter(({ exists }) => !exists),\n {\n fileMaxSize,\n acceptedFileTypes,\n errorUnsupportedFile,\n errorLargeFile,\n }\n )\n\n const validFiles = [...verifiedFiles].slice(0, filesAmountLimit)\n\n setFiles(validFiles)\n setInternalFiles(mergedFiles)\n\n if (typeof onChange === 'function') {\n onChange({ files: validFiles })\n }\n\n return validFiles\n }\n}\n\nUpload.useUpload = useUpload\n\nUpload._formElement = true\nUpload._supportsSpacingProps = true\n\nexport default Upload\n"],"mappings":"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"}
@@ -1,3 +1,5 @@
1
+ "use client";
2
+
1
3
  import { useEventEmitter } from '../../shared/component-helper';
2
4
  function useUpload(id) {
3
5
  const {
@@ -1 +1 @@
1
- {"version":3,"file":"useUpload.js","names":["useEventEmitter","useUpload","id","data","update","setFiles","files","setInternalFiles","internalFiles","getExistingFile","file","fileItems","find","f","name","size","lastModified"],"sources":["../../../../src/components/upload/useUpload.ts"],"sourcesContent":["import { useEventEmitter } from '../../shared/component-helper'\nimport type { UploadFile } from './types'\n\nexport type useUploadReturn = {\n files: UploadFile[]\n setFiles: (files: UploadFile[]) => void\n internalFiles: UploadFile[]\n setInternalFiles: (files: UploadFile[]) => void\n getExistingFile: (file: File, fileItems?: UploadFile[]) => UploadFile\n}\n\n/**\n * Use together with Upload with the same id to manage the files from outside the component.\n */\nfunction useUpload(id: string): useUploadReturn {\n const { data, update } = useEventEmitter(id)\n\n const setFiles = (files: UploadFile[]) => {\n update({ files })\n }\n\n const setInternalFiles = (internalFiles: UploadFile[]) => {\n update({ internalFiles })\n }\n\n const files = data?.files || []\n const internalFiles = data?.internalFiles || []\n\n const getExistingFile = (\n file: File,\n fileItems: UploadFile[] = files\n ) => {\n return fileItems.find(({ file: f }) => {\n return (\n f.name === file.name &&\n f.size === file.size &&\n f.lastModified === file.lastModified\n )\n })\n }\n\n return {\n files,\n setFiles,\n internalFiles,\n setInternalFiles,\n getExistingFile,\n }\n}\n\nexport default useUpload\n"],"mappings":"AAAA,SAASA,eAAe,QAAQ,+BAA+B;AAc/D,SAASC,SAASA,CAACC,EAAU,EAAmB;EAC9C,MAAM;IAAEC,IAAI;IAAEC;EAAO,CAAC,GAAGJ,eAAe,CAACE,EAAE,CAAC;EAE5C,MAAMG,QAAQ,GAAIC,KAAmB,IAAK;IACxCF,MAAM,CAAC;MAAEE;IAAM,CAAC,CAAC;EACnB,CAAC;EAED,MAAMC,gBAAgB,GAAIC,aAA2B,IAAK;IACxDJ,MAAM,CAAC;MAAEI;IAAc,CAAC,CAAC;EAC3B,CAAC;EAED,MAAMF,KAAK,GAAG,CAAAH,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEG,KAAK,KAAI,EAAE;EAC/B,MAAME,aAAa,GAAG,CAAAL,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEK,aAAa,KAAI,EAAE;EAE/C,MAAMC,eAAe,GAAGA,CACtBC,IAAU,EACVC,SAAuB,GAAGL,KAAK,KAC5B;IACH,OAAOK,SAAS,CAACC,IAAI,CAAC,CAAC;MAAEF,IAAI,EAAEG;IAAE,CAAC,KAAK;MACrC,OACEA,CAAC,CAACC,IAAI,KAAKJ,IAAI,CAACI,IAAI,IACpBD,CAAC,CAACE,IAAI,KAAKL,IAAI,CAACK,IAAI,IACpBF,CAAC,CAACG,YAAY,KAAKN,IAAI,CAACM,YAAY;IAExC,CAAC,CAAC;EACJ,CAAC;EAED,OAAO;IACLV,KAAK;IACLD,QAAQ;IACRG,aAAa;IACbD,gBAAgB;IAChBE;EACF,CAAC;AACH;AAEA,eAAeR,SAAS"}
1
+ {"version":3,"file":"useUpload.js","names":["useEventEmitter","useUpload","id","data","update","setFiles","files","setInternalFiles","internalFiles","getExistingFile","file","fileItems","find","f","name","size","lastModified"],"sources":["../../../../src/components/upload/useUpload.ts"],"sourcesContent":["import { useEventEmitter } from '../../shared/component-helper'\nimport type { UploadFile } from './types'\n\nexport type useUploadReturn = {\n files: UploadFile[]\n setFiles: (files: UploadFile[]) => void\n internalFiles: UploadFile[]\n setInternalFiles: (files: UploadFile[]) => void\n getExistingFile: (file: File, fileItems?: UploadFile[]) => UploadFile\n}\n\n/**\n * Use together with Upload with the same id to manage the files from outside the component.\n */\nfunction useUpload(id: string): useUploadReturn {\n const { data, update } = useEventEmitter(id)\n\n const setFiles = (files: UploadFile[]) => {\n update({ files })\n }\n\n const setInternalFiles = (internalFiles: UploadFile[]) => {\n update({ internalFiles })\n }\n\n const files = data?.files || []\n const internalFiles = data?.internalFiles || []\n\n const getExistingFile = (\n file: File,\n fileItems: UploadFile[] = files\n ) => {\n return fileItems.find(({ file: f }) => {\n return (\n f.name === file.name &&\n f.size === file.size &&\n f.lastModified === file.lastModified\n )\n })\n }\n\n return {\n files,\n setFiles,\n internalFiles,\n setInternalFiles,\n getExistingFile,\n }\n}\n\nexport default useUpload\n"],"mappings":";;AAAA,SAASA,eAAe,QAAQ,+BAA+B;AAc/D,SAASC,SAASA,CAACC,EAAU,EAAmB;EAC9C,MAAM;IAAEC,IAAI;IAAEC;EAAO,CAAC,GAAGJ,eAAe,CAACE,EAAE,CAAC;EAE5C,MAAMG,QAAQ,GAAIC,KAAmB,IAAK;IACxCF,MAAM,CAAC;MAAEE;IAAM,CAAC,CAAC;EACnB,CAAC;EAED,MAAMC,gBAAgB,GAAIC,aAA2B,IAAK;IACxDJ,MAAM,CAAC;MAAEI;IAAc,CAAC,CAAC;EAC3B,CAAC;EAED,MAAMF,KAAK,GAAG,CAAAH,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEG,KAAK,KAAI,EAAE;EAC/B,MAAME,aAAa,GAAG,CAAAL,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEK,aAAa,KAAI,EAAE;EAE/C,MAAMC,eAAe,GAAGA,CACtBC,IAAU,EACVC,SAAuB,GAAGL,KAAK,KAC5B;IACH,OAAOK,SAAS,CAACC,IAAI,CAAC,CAAC;MAAEF,IAAI,EAAEG;IAAE,CAAC,KAAK;MACrC,OACEA,CAAC,CAACC,IAAI,KAAKJ,IAAI,CAACI,IAAI,IACpBD,CAAC,CAACE,IAAI,KAAKL,IAAI,CAACK,IAAI,IACpBF,CAAC,CAACG,YAAY,KAAKN,IAAI,CAACM,YAAY;IAExC,CAAC,CAAC;EACJ,CAAC;EAED,OAAO;IACLV,KAAK;IACLD,QAAQ;IACRG,aAAa;IACbD,gBAAgB;IAChBE;EACF,CAAC;AACH;AAEA,eAAeR,SAAS"}
@@ -1,3 +1,5 @@
1
+ "use client";
2
+
1
3
  import _extends from "@babel/runtime/helpers/esm/extends";
2
4
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
5
  const _excluded = ["element", "children", "className", "focusable"];
@@ -1 +1 @@
1
- {"version":3,"file":"VisuallyHidden.js","names":["React","classnames","Context","extendPropsWithContext","defaultProps","focusable","element","VisuallyHidden","localProps","context","useContext","_extendPropsWithConte","children","className","props","_objectWithoutProperties","_excluded","visuallyHiddenClassNames","Element","createElement","_extends","_supportsSpacingProps"],"sources":["../../../../src/components/visually-hidden/VisuallyHidden.tsx"],"sourcesContent":["import React from 'react'\nimport classnames from 'classnames'\n\n// Shared\nimport Context from '../../shared/Context'\nimport { extendPropsWithContext } from '../../shared/component-helper'\nimport type { DynamicElement } from '../../shared/types'\n\nexport interface VisuallyHiddenProps {\n /**\n * Hide an element by default, but to display it when it’s focused (e.g. by a keyboard-only user)\n * Default: false\n */\n focusable?: boolean\n\n /**\n * Root element of the component\n * Default: span\n */\n element?: DynamicElement\n}\n\nexport type VisuallyHiddenAllProps = VisuallyHiddenProps &\n React.HTMLProps<HTMLSpanElement>\n\nexport const defaultProps = {\n focusable: false,\n element: 'span',\n}\n\nconst VisuallyHidden = (localProps: VisuallyHiddenAllProps) => {\n // Every component should have a context\n const context = React.useContext(Context)\n\n // Extract additional props from global context\n const { element, children, className, focusable, ...props } =\n extendPropsWithContext(\n localProps,\n defaultProps,\n context?.VisuallyHidden\n )\n\n const visuallyHiddenClassNames = classnames(\n 'dnb-visually-hidden',\n focusable ? 'dnb-visually-hidden--focusable' : 'dnb-sr-only',\n className\n )\n const Element = element || 'span'\n\n return (\n <Element\n className={visuallyHiddenClassNames}\n {...(props as Record<string, unknown>)}\n >\n {children}\n </Element>\n )\n}\n\nVisuallyHidden._supportsSpacingProps = true\n\nexport default VisuallyHidden\n"],"mappings":";;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,UAAU,MAAM,YAAY;AAGnC,OAAOC,OAAO,MAAM,sBAAsB;AAC1C,SAASC,sBAAsB,QAAQ,+BAA+B;AAoBtE,OAAO,MAAMC,YAAY,GAAG;EAC1BC,SAAS,EAAE,KAAK;EAChBC,OAAO,EAAE;AACX,CAAC;AAED,MAAMC,cAAc,GAAIC,UAAkC,IAAK;EAE7D,MAAMC,OAAO,GAAGT,KAAK,CAACU,UAAU,CAACR,OAAO,CAAC;EAGzC,MAAAS,qBAAA,GACER,sBAAsB,CACpBK,UAAU,EACVJ,YAAY,EACZK,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEF,cACX,CAAC;IALG;MAAED,OAAO;MAAEM,QAAQ;MAAEC,SAAS;MAAER;IAAoB,CAAC,GAAAM,qBAAA;IAAPG,KAAK,GAAAC,wBAAA,CAAAJ,qBAAA,EAAAK,SAAA;EAOzD,MAAMC,wBAAwB,GAAGhB,UAAU,CACzC,qBAAqB,EACrBI,SAAS,GAAG,gCAAgC,GAAG,aAAa,EAC5DQ,SACF,CAAC;EACD,MAAMK,OAAO,GAAGZ,OAAO,IAAI,MAAM;EAEjC,OACEN,KAAA,CAAAmB,aAAA,CAACD,OAAO,EAAAE,QAAA;IACNP,SAAS,EAAEI;EAAyB,GAC/BH,KAAK,GAETF,QACM,CAAC;AAEd,CAAC;AAEDL,cAAc,CAACc,qBAAqB,GAAG,IAAI;AAE3C,eAAed,cAAc"}
1
+ {"version":3,"file":"VisuallyHidden.js","names":["React","classnames","Context","extendPropsWithContext","defaultProps","focusable","element","VisuallyHidden","localProps","context","useContext","_extendPropsWithConte","children","className","props","_objectWithoutProperties","_excluded","visuallyHiddenClassNames","Element","createElement","_extends","_supportsSpacingProps"],"sources":["../../../../src/components/visually-hidden/VisuallyHidden.tsx"],"sourcesContent":["import React from 'react'\nimport classnames from 'classnames'\n\n// Shared\nimport Context from '../../shared/Context'\nimport { extendPropsWithContext } from '../../shared/component-helper'\nimport type { DynamicElement } from '../../shared/types'\n\nexport interface VisuallyHiddenProps {\n /**\n * Hide an element by default, but to display it when it’s focused (e.g. by a keyboard-only user)\n * Default: false\n */\n focusable?: boolean\n\n /**\n * Root element of the component\n * Default: span\n */\n element?: DynamicElement\n}\n\nexport type VisuallyHiddenAllProps = VisuallyHiddenProps &\n React.HTMLProps<HTMLSpanElement>\n\nexport const defaultProps = {\n focusable: false,\n element: 'span',\n}\n\nconst VisuallyHidden = (localProps: VisuallyHiddenAllProps) => {\n // Every component should have a context\n const context = React.useContext(Context)\n\n // Extract additional props from global context\n const { element, children, className, focusable, ...props } =\n extendPropsWithContext(\n localProps,\n defaultProps,\n context?.VisuallyHidden\n )\n\n const visuallyHiddenClassNames = classnames(\n 'dnb-visually-hidden',\n focusable ? 'dnb-visually-hidden--focusable' : 'dnb-sr-only',\n className\n )\n const Element = element || 'span'\n\n return (\n <Element\n className={visuallyHiddenClassNames}\n {...(props as Record<string, unknown>)}\n >\n {children}\n </Element>\n )\n}\n\nVisuallyHidden._supportsSpacingProps = true\n\nexport default VisuallyHidden\n"],"mappings":";;;;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,UAAU,MAAM,YAAY;AAGnC,OAAOC,OAAO,MAAM,sBAAsB;AAC1C,SAASC,sBAAsB,QAAQ,+BAA+B;AAoBtE,OAAO,MAAMC,YAAY,GAAG;EAC1BC,SAAS,EAAE,KAAK;EAChBC,OAAO,EAAE;AACX,CAAC;AAED,MAAMC,cAAc,GAAIC,UAAkC,IAAK;EAE7D,MAAMC,OAAO,GAAGT,KAAK,CAACU,UAAU,CAACR,OAAO,CAAC;EAGzC,MAAAS,qBAAA,GACER,sBAAsB,CACpBK,UAAU,EACVJ,YAAY,EACZK,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEF,cACX,CAAC;IALG;MAAED,OAAO;MAAEM,QAAQ;MAAEC,SAAS;MAAER;IAAoB,CAAC,GAAAM,qBAAA;IAAPG,KAAK,GAAAC,wBAAA,CAAAJ,qBAAA,EAAAK,SAAA;EAOzD,MAAMC,wBAAwB,GAAGhB,UAAU,CACzC,qBAAqB,EACrBI,SAAS,GAAG,gCAAgC,GAAG,aAAa,EAC5DQ,SACF,CAAC;EACD,MAAMK,OAAO,GAAGZ,OAAO,IAAI,MAAM;EAEjC,OACEN,KAAA,CAAAmB,aAAA,CAACD,OAAO,EAAAE,QAAA;IACNP,SAAS,EAAEI;EAAyB,GAC/BH,KAAK,GAETF,QACM,CAAC;AAEd,CAAC;AAEDL,cAAc,CAACc,qBAAqB,GAAG,IAAI;AAE3C,eAAed,cAAc"}
@@ -1,3 +1,5 @@
1
+ "use client";
2
+
1
3
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
2
4
  import _extends from "@babel/runtime/helpers/esm/extends";
3
5
  const _excluded = ["className", "internalClass", "as", "innerRef", "skeleton", "skeletonMethod"];
@@ -1 +1 @@
1
- {"version":3,"file":"Element.js","names":["React","classnames","Context","validateDOMAttributes","extendPropsWithContext","createSpacingClasses","createSkeletonClass","skeletonDOMAttributes","defaultProps","skeletonMethod","Element","forwardRef","props","ref","createElement","ElementInstance","_extends","innerRef","localProps","context","useContext","skeleton","className","internalClass","as","rest","_objectWithoutProperties","_excluded","Tag","attributes","tagClass","internalClassName","RegExp","test","String"],"sources":["../../../src/elements/Element.tsx"],"sourcesContent":["/**\n * This is mainly a Wrapper, to build more easily HTML Elements\n *\n */\n\nimport React from 'react'\nimport classnames from 'classnames'\nimport Context from '../shared/Context'\nimport {\n validateDOMAttributes,\n extendPropsWithContext,\n} from '../shared/component-helper'\nimport { createSpacingClasses } from '../components/space/SpacingHelper'\nimport {\n createSkeletonClass,\n skeletonDOMAttributes,\n SkeletonMethods,\n} from '../components/skeleton/SkeletonHelper'\nimport type { SkeletonShow } from '../components/skeleton/Skeleton'\n\nimport type { DynamicElement, SpacingProps } from '../shared/types'\n\nexport type ElementIsType = DynamicElement | React.ReactNode\n\nexport type ElementInternalProps = {\n /**\n * Defines the Element Type, like \"div\"\n */\n as: ElementIsType\n}\n\nexport type ElementProps = {\n skeleton?: SkeletonShow\n skeletonMethod?: SkeletonMethods\n internalClass?: string\n innerRef?: React.RefObject<HTMLElement> | React.ForwardedRef<unknown>\n children?: React.ReactNode\n} & SpacingProps\n\nexport type ElementAllProps = ElementProps &\n ElementInternalProps &\n Omit<React.HTMLProps<HTMLElement>, 'ref'>\n\ntype Attributes = Record<string, unknown>\n\nexport const defaultProps = {\n skeletonMethod: 'font',\n}\n\nconst Element = React.forwardRef((props: ElementAllProps, ref) => {\n return <ElementInstance innerRef={ref} {...props} />\n})\n\nfunction ElementInstance(localProps: ElementAllProps) {\n const context = React.useContext(Context)\n const props = extendPropsWithContext(localProps, defaultProps, {\n skeleton: context?.skeleton,\n })\n\n const {\n className,\n internalClass,\n as,\n innerRef,\n skeleton,\n skeletonMethod,\n ...rest\n } = props\n\n const Tag = as as DynamicElement\n const attributes = rest as Attributes\n\n const tagClass =\n internalClass || (typeof Tag === 'string' ? `dnb-${Tag}` : '')\n const internalClassName = classnames(\n !new RegExp(`${tagClass}(\\\\s|$)`).test(String(className)) && tagClass,\n className,\n createSkeletonClass(skeletonMethod, skeleton, context),\n createSpacingClasses(\n attributes,\n typeof Tag === 'string' ? `dnb-${Tag}` : null\n )\n )\n\n validateDOMAttributes(null, attributes)\n\n skeletonDOMAttributes(attributes, skeleton, context)\n\n if (typeof Tag !== 'function' && innerRef) {\n attributes.ref = innerRef\n }\n\n return <Tag className={internalClassName} {...attributes} />\n}\n\nexport default Element\n"],"mappings":";;;AAKA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,OAAO,MAAM,mBAAmB;AACvC,SACEC,qBAAqB,EACrBC,sBAAsB,QACjB,4BAA4B;AACnC,SAASC,oBAAoB,QAAQ,mCAAmC;AACxE,SACEC,mBAAmB,EACnBC,qBAAqB,QAEhB,uCAAuC;AA4B9C,OAAO,MAAMC,YAAY,GAAG;EAC1BC,cAAc,EAAE;AAClB,CAAC;AAED,MAAMC,OAAO,GAAGV,KAAK,CAACW,UAAU,CAAC,CAACC,KAAsB,EAAEC,GAAG,KAAK;EAChE,OAAOb,KAAA,CAAAc,aAAA,CAACC,eAAe,EAAAC,QAAA;IAACC,QAAQ,EAAEJ;EAAI,GAAKD,KAAK,CAAG,CAAC;AACtD,CAAC,CAAC;AAEF,SAASG,eAAeA,CAACG,UAA2B,EAAE;EACpD,MAAMC,OAAO,GAAGnB,KAAK,CAACoB,UAAU,CAAClB,OAAO,CAAC;EACzC,MAAMU,KAAK,GAAGR,sBAAsB,CAACc,UAAU,EAAEV,YAAY,EAAE;IAC7Da,QAAQ,EAAEF,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEE;EACrB,CAAC,CAAC;EAEF,MAAM;MACJC,SAAS;MACTC,aAAa;MACbC,EAAE;MACFP,QAAQ;MACRI,QAAQ;MACRZ;IAEF,CAAC,GAAGG,KAAK;IADJa,IAAI,GAAAC,wBAAA,CACLd,KAAK,EAAAe,SAAA;EAET,MAAMC,GAAG,GAAGJ,EAAoB;EAChC,MAAMK,UAAU,GAAGJ,IAAkB;EAErC,MAAMK,QAAQ,GACZP,aAAa,KAAK,OAAOK,GAAG,KAAK,QAAQ,GAAI,OAAMA,GAAI,EAAC,GAAG,EAAE,CAAC;EAChE,MAAMG,iBAAiB,GAAG9B,UAAU,CAElCqB,SAAS,EACThB,mBAAmB,CAACG,cAAc,EAAEY,QAAQ,EAAEF,OAAO,CAAC,EACtDd,oBAAoB,CAClBwB,UAAU,EACV,OAAOD,GAAG,KAAK,QAAQ,GAAI,OAAMA,GAAI,EAAC,GAAG,IAC3C,CAAC,EAND,CAAC,IAAII,MAAM,CAAE,GAAEF,QAAS,SAAQ,CAAC,CAACG,IAAI,CAACC,MAAM,CAACZ,SAAS,CAAC,CAAC,IAAIQ,QAO/D,CAAC;EAED3B,qBAAqB,CAAC,IAAI,EAAE0B,UAAU,CAAC;EAEvCtB,qBAAqB,CAACsB,UAAU,EAAER,QAAQ,EAAEF,OAAO,CAAC;EAEpD,IAAI,OAAOS,GAAG,KAAK,UAAU,IAAIX,QAAQ,EAAE;IACzCY,UAAU,CAAChB,GAAG,GAAGI,QAAQ;EAC3B;EAEA,OAAOjB,KAAA,CAAAc,aAAA,CAACc,GAAG,EAAAZ,QAAA;IAACM,SAAS,EAAES;EAAkB,GAAKF,UAAU,CAAG,CAAC;AAC9D;AAEA,eAAenB,OAAO"}
1
+ {"version":3,"file":"Element.js","names":["React","classnames","Context","validateDOMAttributes","extendPropsWithContext","createSpacingClasses","createSkeletonClass","skeletonDOMAttributes","defaultProps","skeletonMethod","Element","forwardRef","props","ref","createElement","ElementInstance","_extends","innerRef","localProps","context","useContext","skeleton","className","internalClass","as","rest","_objectWithoutProperties","_excluded","Tag","attributes","tagClass","internalClassName","RegExp","test","String"],"sources":["../../../src/elements/Element.tsx"],"sourcesContent":["/**\n * This is mainly a Wrapper, to build more easily HTML Elements\n *\n */\n\nimport React from 'react'\nimport classnames from 'classnames'\nimport Context from '../shared/Context'\nimport {\n validateDOMAttributes,\n extendPropsWithContext,\n} from '../shared/component-helper'\nimport { createSpacingClasses } from '../components/space/SpacingHelper'\nimport {\n createSkeletonClass,\n skeletonDOMAttributes,\n SkeletonMethods,\n} from '../components/skeleton/SkeletonHelper'\nimport type { SkeletonShow } from '../components/skeleton/Skeleton'\n\nimport type { DynamicElement, SpacingProps } from '../shared/types'\n\nexport type ElementIsType = DynamicElement | React.ReactNode\n\nexport type ElementInternalProps = {\n /**\n * Defines the Element Type, like \"div\"\n */\n as: ElementIsType\n}\n\nexport type ElementProps = {\n skeleton?: SkeletonShow\n skeletonMethod?: SkeletonMethods\n internalClass?: string\n innerRef?: React.RefObject<HTMLElement> | React.ForwardedRef<unknown>\n children?: React.ReactNode\n} & SpacingProps\n\nexport type ElementAllProps = ElementProps &\n ElementInternalProps &\n Omit<React.HTMLProps<HTMLElement>, 'ref'>\n\ntype Attributes = Record<string, unknown>\n\nexport const defaultProps = {\n skeletonMethod: 'font',\n}\n\nconst Element = React.forwardRef((props: ElementAllProps, ref) => {\n return <ElementInstance innerRef={ref} {...props} />\n})\n\nfunction ElementInstance(localProps: ElementAllProps) {\n const context = React.useContext(Context)\n const props = extendPropsWithContext(localProps, defaultProps, {\n skeleton: context?.skeleton,\n })\n\n const {\n className,\n internalClass,\n as,\n innerRef,\n skeleton,\n skeletonMethod,\n ...rest\n } = props\n\n const Tag = as as DynamicElement\n const attributes = rest as Attributes\n\n const tagClass =\n internalClass || (typeof Tag === 'string' ? `dnb-${Tag}` : '')\n const internalClassName = classnames(\n !new RegExp(`${tagClass}(\\\\s|$)`).test(String(className)) && tagClass,\n className,\n createSkeletonClass(skeletonMethod, skeleton, context),\n createSpacingClasses(\n attributes,\n typeof Tag === 'string' ? `dnb-${Tag}` : null\n )\n )\n\n validateDOMAttributes(null, attributes)\n\n skeletonDOMAttributes(attributes, skeleton, context)\n\n if (typeof Tag !== 'function' && innerRef) {\n attributes.ref = innerRef\n }\n\n return <Tag className={internalClassName} {...attributes} />\n}\n\nexport default Element\n"],"mappings":";;;;;AAKA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,OAAO,MAAM,mBAAmB;AACvC,SACEC,qBAAqB,EACrBC,sBAAsB,QACjB,4BAA4B;AACnC,SAASC,oBAAoB,QAAQ,mCAAmC;AACxE,SACEC,mBAAmB,EACnBC,qBAAqB,QAEhB,uCAAuC;AA4B9C,OAAO,MAAMC,YAAY,GAAG;EAC1BC,cAAc,EAAE;AAClB,CAAC;AAED,MAAMC,OAAO,GAAGV,KAAK,CAACW,UAAU,CAAC,CAACC,KAAsB,EAAEC,GAAG,KAAK;EAChE,OAAOb,KAAA,CAAAc,aAAA,CAACC,eAAe,EAAAC,QAAA;IAACC,QAAQ,EAAEJ;EAAI,GAAKD,KAAK,CAAG,CAAC;AACtD,CAAC,CAAC;AAEF,SAASG,eAAeA,CAACG,UAA2B,EAAE;EACpD,MAAMC,OAAO,GAAGnB,KAAK,CAACoB,UAAU,CAAClB,OAAO,CAAC;EACzC,MAAMU,KAAK,GAAGR,sBAAsB,CAACc,UAAU,EAAEV,YAAY,EAAE;IAC7Da,QAAQ,EAAEF,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEE;EACrB,CAAC,CAAC;EAEF,MAAM;MACJC,SAAS;MACTC,aAAa;MACbC,EAAE;MACFP,QAAQ;MACRI,QAAQ;MACRZ;IAEF,CAAC,GAAGG,KAAK;IADJa,IAAI,GAAAC,wBAAA,CACLd,KAAK,EAAAe,SAAA;EAET,MAAMC,GAAG,GAAGJ,EAAoB;EAChC,MAAMK,UAAU,GAAGJ,IAAkB;EAErC,MAAMK,QAAQ,GACZP,aAAa,KAAK,OAAOK,GAAG,KAAK,QAAQ,GAAI,OAAMA,GAAI,EAAC,GAAG,EAAE,CAAC;EAChE,MAAMG,iBAAiB,GAAG9B,UAAU,CAElCqB,SAAS,EACThB,mBAAmB,CAACG,cAAc,EAAEY,QAAQ,EAAEF,OAAO,CAAC,EACtDd,oBAAoB,CAClBwB,UAAU,EACV,OAAOD,GAAG,KAAK,QAAQ,GAAI,OAAMA,GAAI,EAAC,GAAG,IAC3C,CAAC,EAND,CAAC,IAAII,MAAM,CAAE,GAAEF,QAAS,SAAQ,CAAC,CAACG,IAAI,CAACC,MAAM,CAACZ,SAAS,CAAC,CAAC,IAAIQ,QAO/D,CAAC;EAED3B,qBAAqB,CAAC,IAAI,EAAE0B,UAAU,CAAC;EAEvCtB,qBAAqB,CAACsB,UAAU,EAAER,QAAQ,EAAEF,OAAO,CAAC;EAEpD,IAAI,OAAOS,GAAG,KAAK,UAAU,IAAIX,QAAQ,EAAE;IACzCY,UAAU,CAAChB,GAAG,GAAGI,QAAQ;EAC3B;EAEA,OAAOjB,KAAA,CAAAc,aAAA,CAACc,GAAG,EAAAZ,QAAA;IAACM,SAAS,EAAES;EAAkB,GAAKF,UAAU,CAAG,CAAC;AAC9D;AAEA,eAAenB,OAAO"}
@@ -1,3 +1,5 @@
1
+ "use client";
2
+
1
3
  import _extends from "@babel/runtime/helpers/esm/extends";
2
4
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
5
  const _excluded = ["as", "is", "level", "size", "className"];
@@ -1 +1 @@
1
- {"version":3,"file":"H.js","names":["React","classnames","E","setNextLevel","getHeadingSize","useTheme","H","_ref","as","is","level","size","className","props","_objectWithoutProperties","_excluded","numSiz","parseFloat","String","substring","theme","targetSize","name","createElement","_extends","internalClass","_isHeadingElement","_supportsSpacingProps"],"sources":["../../../../src/elements/typography/H.tsx"],"sourcesContent":["/**\n * HTML Element\n *\n */\n\nimport React from 'react'\nimport classnames from 'classnames'\nimport { SpacingProps } from '../../components/space/types'\nimport E, { ElementProps } from '../Element'\nimport { HeadingSize } from '../../components/heading/Heading'\nimport {\n setNextLevel,\n getHeadingSize,\n} from '../../components/heading/HeadingHelpers'\nimport { useTheme } from '../../shared'\n\nexport type HSize = HeadingSize\n\ntype HProps = SpacingProps &\n React.HTMLAttributes<HTMLHeadingElement> & {\n /**\n * Defines the Element Type, like \"h1\"\n * Default: h1\n */\n as?: string\n /**\n * Makes the component use the elements heading level. e.g. h3 will make the component use level 3\n */\n level?: 'use'\n /**\n * Sets the font size based on headingSize_#{HEADING_SIZE} mixins found in typography-mixins.scss. For more detailed information go here: https://eufemia.dnb.no/uilib/typography/font-size/.\n * Use value 'auto' to base size on heading level\n * Default: xx-large\n */\n size?: HSize | 'auto'\n } & ElementProps\n\nexport type SharedHProps = Omit<HProps, 'as'>\n\nconst H = ({\n as = 'h1',\n is,\n level,\n size,\n className,\n ...props\n}: HProps) => {\n const numSiz = parseFloat(String(as || is).substring(1))\n\n if (level === 'use') {\n setNextLevel(numSiz)\n }\n\n const theme = useTheme()\n const targetSize =\n (size === 'auto' && getHeadingSize(theme?.name)[numSiz]) ||\n size ||\n 'xx-large'\n\n return (\n <E\n as={as || is}\n internalClass={classnames(\n targetSize && `dnb-h--${targetSize}`,\n className\n )}\n {...props}\n />\n )\n}\n\nH._isHeadingElement = true\nH._supportsSpacingProps = true\n\nexport default H\n"],"mappings":";;;AAKA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,UAAU,MAAM,YAAY;AAEnC,OAAOC,CAAC,MAAwB,YAAY;AAE5C,SACEC,YAAY,EACZC,cAAc,QACT,yCAAyC;AAChD,SAASC,QAAQ,QAAQ,cAAc;AAyBvC,MAAMC,CAAC,GAAGC,IAAA,IAOI;EAAA,IAPH;MACTC,EAAE,GAAG,IAAI;MACTC,EAAE;MACFC,KAAK;MACLC,IAAI;MACJC;IAEM,CAAC,GAAAL,IAAA;IADJM,KAAK,GAAAC,wBAAA,CAAAP,IAAA,EAAAQ,SAAA;EAER,MAAMC,MAAM,GAAGC,UAAU,CAACC,MAAM,CAACV,EAAE,IAAIC,EAAE,CAAC,CAACU,SAAS,CAAC,CAAC,CAAC,CAAC;EAExD,IAAIT,KAAK,KAAK,KAAK,EAAE;IACnBP,YAAY,CAACa,MAAM,CAAC;EACtB;EAEA,MAAMI,KAAK,GAAGf,QAAQ,CAAC,CAAC;EACxB,MAAMgB,UAAU,GACbV,IAAI,KAAK,MAAM,IAAIP,cAAc,CAACgB,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEE,IAAI,CAAC,CAACN,MAAM,CAAC,IACvDL,IAAI,IACJ,UAAU;EAEZ,OACEX,KAAA,CAAAuB,aAAA,CAACrB,CAAC,EAAAsB,QAAA;IACAhB,EAAE,EAAEA,EAAE,IAAIC,EAAG;IACbgB,aAAa,EAAExB,UAAU,CAEvBW,SAAS,EADTS,UAAU,IAAK,UAASA,UAAW,EAErC;EAAE,GACER,KAAK,CACV,CAAC;AAEN,CAAC;AAEDP,CAAC,CAACoB,iBAAiB,GAAG,IAAI;AAC1BpB,CAAC,CAACqB,qBAAqB,GAAG,IAAI;AAE9B,eAAerB,CAAC"}
1
+ {"version":3,"file":"H.js","names":["React","classnames","E","setNextLevel","getHeadingSize","useTheme","H","_ref","as","is","level","size","className","props","_objectWithoutProperties","_excluded","numSiz","parseFloat","String","substring","theme","targetSize","name","createElement","_extends","internalClass","_isHeadingElement","_supportsSpacingProps"],"sources":["../../../../src/elements/typography/H.tsx"],"sourcesContent":["/**\n * HTML Element\n *\n */\n\nimport React from 'react'\nimport classnames from 'classnames'\nimport { SpacingProps } from '../../components/space/types'\nimport E, { ElementProps } from '../Element'\nimport { HeadingSize } from '../../components/heading/Heading'\nimport {\n setNextLevel,\n getHeadingSize,\n} from '../../components/heading/HeadingHelpers'\nimport { useTheme } from '../../shared'\n\nexport type HSize = HeadingSize\n\ntype HProps = SpacingProps &\n React.HTMLAttributes<HTMLHeadingElement> & {\n /**\n * Defines the Element Type, like \"h1\"\n * Default: h1\n */\n as?: string\n /**\n * Makes the component use the elements heading level. e.g. h3 will make the component use level 3\n */\n level?: 'use'\n /**\n * Sets the font size based on headingSize_#{HEADING_SIZE} mixins found in typography-mixins.scss. For more detailed information go here: https://eufemia.dnb.no/uilib/typography/font-size/.\n * Use value 'auto' to base size on heading level\n * Default: xx-large\n */\n size?: HSize | 'auto'\n } & ElementProps\n\nexport type SharedHProps = Omit<HProps, 'as'>\n\nconst H = ({\n as = 'h1',\n is,\n level,\n size,\n className,\n ...props\n}: HProps) => {\n const numSiz = parseFloat(String(as || is).substring(1))\n\n if (level === 'use') {\n setNextLevel(numSiz)\n }\n\n const theme = useTheme()\n const targetSize =\n (size === 'auto' && getHeadingSize(theme?.name)[numSiz]) ||\n size ||\n 'xx-large'\n\n return (\n <E\n as={as || is}\n internalClass={classnames(\n targetSize && `dnb-h--${targetSize}`,\n className\n )}\n {...props}\n />\n )\n}\n\nH._isHeadingElement = true\nH._supportsSpacingProps = true\n\nexport default H\n"],"mappings":";;;;;AAKA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,UAAU,MAAM,YAAY;AAEnC,OAAOC,CAAC,MAAwB,YAAY;AAE5C,SACEC,YAAY,EACZC,cAAc,QACT,yCAAyC;AAChD,SAASC,QAAQ,QAAQ,cAAc;AAyBvC,MAAMC,CAAC,GAAGC,IAAA,IAOI;EAAA,IAPH;MACTC,EAAE,GAAG,IAAI;MACTC,EAAE;MACFC,KAAK;MACLC,IAAI;MACJC;IAEM,CAAC,GAAAL,IAAA;IADJM,KAAK,GAAAC,wBAAA,CAAAP,IAAA,EAAAQ,SAAA;EAER,MAAMC,MAAM,GAAGC,UAAU,CAACC,MAAM,CAACV,EAAE,IAAIC,EAAE,CAAC,CAACU,SAAS,CAAC,CAAC,CAAC,CAAC;EAExD,IAAIT,KAAK,KAAK,KAAK,EAAE;IACnBP,YAAY,CAACa,MAAM,CAAC;EACtB;EAEA,MAAMI,KAAK,GAAGf,QAAQ,CAAC,CAAC;EACxB,MAAMgB,UAAU,GACbV,IAAI,KAAK,MAAM,IAAIP,cAAc,CAACgB,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEE,IAAI,CAAC,CAACN,MAAM,CAAC,IACvDL,IAAI,IACJ,UAAU;EAEZ,OACEX,KAAA,CAAAuB,aAAA,CAACrB,CAAC,EAAAsB,QAAA;IACAhB,EAAE,EAAEA,EAAE,IAAIC,EAAG;IACbgB,aAAa,EAAExB,UAAU,CAEvBW,SAAS,EADTS,UAAU,IAAK,UAASA,UAAW,EAErC;EAAE,GACER,KAAK,CACV,CAAC;AAEN,CAAC;AAEDP,CAAC,CAACoB,iBAAiB,GAAG,IAAI;AAC1BpB,CAAC,CAACqB,qBAAqB,GAAG,IAAI;AAE9B,eAAerB,CAAC"}
@@ -5,9 +5,11 @@ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutPr
5
5
  const _excluded = ["defaultData", "data", "schema", "onChange", "onPathChange", "onSubmit", "onSubmitRequest", "scrollTopOnSubmit", "sessionStorageId", "children"];
6
6
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
7
7
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
8
- import React, { useEffect, useRef, useMemo, useCallback, useState } from 'react';
8
+ import React, { useEffect, useRef, useMemo, useCallback, useReducer } from 'react';
9
9
  import pointer from 'json-pointer';
10
10
  import ajv, { ajvErrorsToFormErrors } from '../../utils/ajv';
11
+ import useMountEffect from '../../hooks/useMountEffect';
12
+ import useUpdateEffect from '../../hooks/useUpdateEffect';
11
13
  import Context from '../Context';
12
14
  import structuredClone from '@ungap/structured-clone';
13
15
  function addListPath(paths, path) {
@@ -31,10 +33,17 @@ export default function Provider(_ref) {
31
33
  children
32
34
  } = _ref,
33
35
  rest = _objectWithoutProperties(_ref, _excluded);
36
+ const [, forceUpdate] = useReducer(() => ({}), {});
34
37
  if (data !== undefined && sessionStorageId !== undefined) {
35
38
  console.error('Providing both data and sessionStorageId could lead to competing data sources. To provide default data to use only before anything is changed in the interface, use defaultData.');
36
39
  }
37
- const wasMounted = useRef(false);
40
+ const mountedFieldPathsRef = useRef([]);
41
+ const errorsRef = useRef();
42
+ const showAllErrorsRef = useRef(false);
43
+ const setShowAllErrors = useCallback(showAllErrors => {
44
+ showAllErrorsRef.current = showAllErrors;
45
+ }, []);
46
+ const pathsWithErrorRef = useRef([]);
38
47
  const initialData = useMemo(() => {
39
48
  if (sessionStorageId && typeof window !== 'undefined') {
40
49
  var _window$sessionStorag;
@@ -44,45 +53,42 @@ export default function Provider(_ref) {
44
53
  }
45
54
  }
46
55
  return data !== null && data !== void 0 ? data : defaultData;
47
- }, [data, defaultData, sessionStorageId]);
48
- const ajvSchemaValidator = useMemo(() => schema ? ajv.compile(schema) : undefined, [schema]);
49
- const [internalData, setInternalData] = useState(initialData);
50
- const mountedFieldPathsRef = useRef([]);
51
- const errorsRef = useRef({});
52
- const [showAllErrors, setShowAllErrors] = useState(false);
53
- const pathsWithErrorRef = useRef([]);
54
- const hasErrors = useCallback(() => Boolean(mountedFieldPathsRef.current.find(mountedFieldPath => errorsRef.current[mountedFieldPath] !== undefined || pathsWithErrorRef.current.includes(mountedFieldPath))), []);
55
- useEffect(() => {
56
- if (!wasMounted.current) {
57
- wasMounted.current = true;
58
- return;
59
- }
60
- setInternalData(data);
61
- }, [data]);
62
- const validateBySchema = useCallback(data => {
63
- if (!ajvSchemaValidator) {
56
+ }, []);
57
+ const internalDataRef = useRef(initialData);
58
+ const ajvSchemaValidatorRef = useRef();
59
+ const validateData = useCallback(() => {
60
+ if (!ajvSchemaValidatorRef.current) {
64
61
  return;
65
62
  }
66
- if (!ajvSchemaValidator(data)) {
67
- const errors = ajvErrorsToFormErrors(ajvSchemaValidator.errors);
68
- return errors;
63
+ if (!ajvSchemaValidatorRef.current(internalDataRef.current)) {
64
+ const errors = ajvErrorsToFormErrors(ajvSchemaValidatorRef.current.errors);
65
+ errorsRef.current = errors;
69
66
  } else {
67
+ errorsRef.current = undefined;
68
+ }
69
+ forceUpdate();
70
+ }, []);
71
+ useEffect(() => {
72
+ if (!schema) {
70
73
  return;
71
74
  }
72
- }, [ajvSchemaValidator]);
73
- const validateBySchemaAndUpdateState = useCallback(data => {
74
- var _validateBySchema;
75
- errorsRef.current = (_validateBySchema = validateBySchema(data)) !== null && _validateBySchema !== void 0 ? _validateBySchema : {};
76
- }, [validateBySchema]);
75
+ ajvSchemaValidatorRef.current = ajv.compile(schema);
76
+ validateData();
77
+ }, [schema, validateData]);
78
+ const hasErrors = useCallback(() => Boolean(mountedFieldPathsRef.current.find(mountedFieldPath => {
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);
81
+ })), []);
77
82
  const setPathWithError = useCallback((path, hasError) => {
78
83
  pathsWithErrorRef.current = hasError ? addListPath(pathsWithErrorRef.current, path) : removeListPath(pathsWithErrorRef.current, path);
79
84
  }, []);
80
85
  const handlePathChange = useCallback((path, value) => {
86
+ var _internalDataRef$curr;
81
87
  if (!path) {
82
88
  return;
83
89
  }
84
90
  onPathChange === null || onPathChange === void 0 ? void 0 : onPathChange(path, value);
85
- const newData = structuredClone(path === '/' ? value : internalData !== null && internalData !== void 0 ? internalData : path.match(isArrayJsonPointer) ? [] : {});
91
+ const newData = structuredClone(path === '/' ? value : (_internalDataRef$curr = internalDataRef.current) !== null && _internalDataRef$curr !== void 0 ? _internalDataRef$curr : path.match(isArrayJsonPointer) ? [] : {});
86
92
  if (path !== '/') {
87
93
  pointer.set(newData, path, value);
88
94
  }
@@ -91,10 +97,11 @@ export default function Provider(_ref) {
91
97
  var _window$sessionStorag2;
92
98
  (_window$sessionStorag2 = window.sessionStorage) === null || _window$sessionStorag2 === void 0 ? void 0 : _window$sessionStorag2.setItem(sessionStorageId, JSON.stringify(newData));
93
99
  }
94
- validateBySchemaAndUpdateState(newData);
95
- setInternalData(newData);
96
- setShowAllErrors(false);
97
- }, [internalData, onChange, onPathChange, validateBySchemaAndUpdateState]);
100
+ internalDataRef.current = newData;
101
+ validateData();
102
+ showAllErrorsRef.current = false;
103
+ forceUpdate();
104
+ }, [onChange, onPathChange, validateData, sessionStorageId]);
98
105
  const handleMountField = useCallback(path => {
99
106
  mountedFieldPathsRef.current = addListPath(mountedFieldPathsRef.current, path);
100
107
  }, []);
@@ -106,7 +113,7 @@ export default function Provider(_ref) {
106
113
  } = {}) => {
107
114
  if (!hasErrors()) {
108
115
  var _formElement$reset;
109
- onSubmit === null || onSubmit === void 0 ? void 0 : onSubmit(internalData);
116
+ onSubmit === null || onSubmit === void 0 ? void 0 : onSubmit(internalDataRef.current);
110
117
  formElement === null || formElement === void 0 ? void 0 : (_formElement$reset = formElement.reset) === null || _formElement$reset === void 0 ? void 0 : _formElement$reset.call(formElement);
111
118
  if (typeof window !== 'undefined') {
112
119
  if (sessionStorageId) {
@@ -121,24 +128,27 @@ export default function Provider(_ref) {
121
128
  }
122
129
  }
123
130
  } else {
124
- setShowAllErrors(true);
131
+ showAllErrorsRef.current = true;
125
132
  onSubmitRequest === null || onSubmitRequest === void 0 ? void 0 : onSubmitRequest();
126
133
  }
127
- return internalData;
128
- }, [internalData, scrollTopOnSubmit, hasErrors, onSubmit, onSubmitRequest]);
129
- useEffect(() => {
130
- if (initialData) {
131
- validateBySchemaAndUpdateState(initialData);
132
- }
133
- }, []);
134
+ return internalDataRef.current;
135
+ }, [scrollTopOnSubmit, hasErrors, onSubmit, onSubmitRequest, sessionStorageId]);
136
+ useMountEffect(() => {
137
+ validateData();
138
+ });
139
+ useUpdateEffect(() => {
140
+ internalDataRef.current = data;
141
+ validateData();
142
+ forceUpdate();
143
+ }, [data, validateData, forceUpdate]);
134
144
  return React.createElement(Context.Provider, {
135
145
  value: _objectSpread(_objectSpread({
136
- data: internalData
146
+ data: internalDataRef.current
137
147
  }, rest), {}, {
138
148
  handlePathChange,
139
149
  handleSubmit,
140
150
  errors: errorsRef.current,
141
- showAllErrors,
151
+ showAllErrors: showAllErrorsRef.current,
142
152
  setShowAllErrors,
143
153
  mountedFieldPaths: mountedFieldPathsRef.current,
144
154
  handleMountField,
@@ -1 +1 @@
1
- {"version":3,"file":"Provider.js","names":["React","useEffect","useRef","useMemo","useCallback","useState","pointer","ajv","ajvErrorsToFormErrors","Context","structuredClone","addListPath","paths","path","includes","concat","removeListPath","filter","thisPath","isArrayJsonPointer","Provider","_ref","defaultData","data","schema","onChange","onPathChange","onSubmit","onSubmitRequest","scrollTopOnSubmit","sessionStorageId","children","rest","_objectWithoutProperties","_excluded","undefined","console","error","wasMounted","initialData","window","_window$sessionStorag","sessionDataJSON","sessionStorage","getItem","JSON","parse","ajvSchemaValidator","compile","internalData","setInternalData","mountedFieldPathsRef","errorsRef","showAllErrors","setShowAllErrors","pathsWithErrorRef","hasErrors","Boolean","current","find","mountedFieldPath","validateBySchema","errors","validateBySchemaAndUpdateState","_validateBySchema","setPathWithError","hasError","handlePathChange","value","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 useState,\n} from 'react'\nimport pointer, { JsonObject } from 'json-pointer'\nimport { JSONSchema7 } from 'json-schema'\nimport ajv, { ajvErrorsToFormErrors } from '../../utils/ajv'\nimport { FormError } from '../../types'\nimport Context, { ContextState } from '../Context'\n\n/**\n * Deprecated, as it is supported 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 // Prop error handling\n if (data !== undefined && sessionStorageId !== undefined) {\n console.error(\n 'Providing both data and sessionStorageId could lead to competing data sources. To provide default data to use only before anything is changed in the interface, use defaultData.'\n )\n }\n\n // State\n const wasMounted = useRef(false)\n const initialData = useMemo(() => {\n if (sessionStorageId && typeof window !== 'undefined') {\n const sessionDataJSON =\n window.sessionStorage?.getItem(sessionStorageId)\n if (sessionDataJSON) {\n return JSON.parse(sessionDataJSON)\n }\n }\n return data ?? defaultData\n }, [data, defaultData, sessionStorageId])\n const ajvSchemaValidator = useMemo(\n () => (schema ? ajv.compile(schema) : undefined),\n [schema]\n )\n const [internalData, setInternalData] =\n useState<Partial<Data>>(initialData)\n const mountedFieldPathsRef = useRef<string[]>([])\n\n // Errors from provider validation (the whole data set)\n const errorsRef = useRef<Record<string, FormError>>({})\n const [showAllErrors, setShowAllErrors] = useState<boolean>(false)\n // Errors reported by fields, based on their direct validation rules\n const pathsWithErrorRef = useRef<string[]>([])\n\n const hasErrors = useCallback(\n () =>\n Boolean(\n mountedFieldPathsRef.current.find(\n (mountedFieldPath) =>\n errorsRef.current[mountedFieldPath] !== undefined ||\n pathsWithErrorRef.current.includes(mountedFieldPath)\n )\n ),\n []\n )\n\n useEffect(() => {\n if (!wasMounted.current) {\n wasMounted.current = true\n return\n }\n // When receiving the initial data, or receiving updated data by props, update the internal data (controlled state)\n setInternalData(data)\n }, [data])\n\n const validateBySchema = useCallback(\n (data: Partial<Data>): Record<string, Error> | undefined => {\n if (!ajvSchemaValidator) {\n // No schema-based validator. Assume data is valid.\n return\n }\n\n if (!ajvSchemaValidator(data)) {\n // Errors found\n const errors = ajvErrorsToFormErrors(ajvSchemaValidator.errors)\n return errors\n } else {\n return\n }\n },\n [ajvSchemaValidator]\n )\n\n const validateBySchemaAndUpdateState = useCallback(\n (data: Partial<Data>) => {\n errorsRef.current = validateBySchema(data) ?? {}\n },\n [validateBySchema]\n )\n\n const setPathWithError = useCallback(\n (path: string, hasError: boolean) => {\n pathsWithErrorRef.current = hasError\n ? addListPath(pathsWithErrorRef.current, path)\n : removeListPath(pathsWithErrorRef.current, path)\n },\n []\n )\n\n const handlePathChange = useCallback(\n (path, value) => {\n if (!path) {\n return\n }\n onPathChange?.(path, value)\n\n // Update the data even if it contains errors. Submit/SubmitRequest will be called accordingly\n const newData = structuredClone(\n path === '/'\n ? // When setting the root of the data, the whole data set should be the new value\n value\n : // For sub paths, use the the existing data set (or empty array/object), but modify it below (since pointer.set is not immutable)\n internalData ?? (path.match(isArrayJsonPointer) ? [] : {})\n )\n if (path !== '/') {\n pointer.set(newData as Data, path, value)\n }\n\n onChange?.(newData as Data)\n\n if (sessionStorageId && typeof window !== 'undefined') {\n window.sessionStorage?.setItem(\n sessionStorageId,\n JSON.stringify(newData)\n )\n }\n\n validateBySchemaAndUpdateState(newData)\n\n setInternalData(newData)\n\n setShowAllErrors(false)\n },\n [internalData, onChange, onPathChange, validateBySchemaAndUpdateState]\n )\n\n // Mounted fields\n const handleMountField = useCallback((path: string) => {\n mountedFieldPathsRef.current = addListPath(\n mountedFieldPathsRef.current,\n path\n )\n }, [])\n\n const handleUnMountField = useCallback((path: string) => {\n mountedFieldPathsRef.current = removeListPath(\n mountedFieldPathsRef.current,\n path\n )\n }, [])\n\n /**\n * Request to submit the whole form\n */\n const handleSubmit = useCallback<ContextState['handleSubmit']>(\n ({ formElement = null } = {}) => {\n if (!hasErrors()) {\n onSubmit?.(internalData as Data)\n\n formElement?.reset?.()\n\n if (typeof window !== 'undefined') {\n if (sessionStorageId) {\n window.sessionStorage.removeItem(sessionStorageId)\n }\n\n if (scrollTopOnSubmit) {\n window?.scrollTo({ top: 0, behavior: 'smooth' })\n }\n }\n } else {\n setShowAllErrors(true)\n onSubmitRequest?.()\n }\n return internalData\n },\n [internalData, scrollTopOnSubmit, hasErrors, onSubmit, onSubmitRequest]\n )\n\n useEffect(() => {\n // Mount procedure\n if (initialData) {\n // Validate the initial data to know if the user can submit, and to show errors if inputs are requested to with props\n validateBySchemaAndUpdateState(initialData)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- Only run for mount and unmount\n }, [])\n\n return (\n <Context.Provider\n value={{\n data: internalData,\n ...rest,\n handlePathChange,\n handleSubmit,\n errors: errorsRef.current,\n showAllErrors,\n setShowAllErrors,\n mountedFieldPaths: mountedFieldPathsRef.current,\n handleMountField,\n handleUnMountField,\n hasErrors,\n setPathWithError,\n }}\n >\n {children}\n </Context.Provider>\n )\n}\n"],"mappings":"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"}
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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"}
@@ -3,25 +3,28 @@
3
3
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
4
4
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
5
5
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
6
- import React, { useContext } from 'react';
6
+ import React, { useContext, useMemo } from 'react';
7
7
  import StringComponent from '../String';
8
8
  import SharedContext from '../../../../shared/Context';
9
9
  function BankAccountNumber(props) {
10
10
  var _props$pattern, _props$label, _props$width;
11
11
  const sharedContext = useContext(SharedContext);
12
+ const tr = sharedContext === null || sharedContext === void 0 ? void 0 : sharedContext.translation.Forms;
12
13
  const {
13
14
  validate = true,
14
15
  omitMask
15
16
  } = props;
17
+ const errorMessages = useMemo(() => _objectSpread({
18
+ required: tr.bankAccountNumberErrorRequired,
19
+ pattern: tr.bankAccountNumberErrorPattern
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]);
16
22
  const stringComponentProps = _objectSpread(_objectSpread({}, props), {}, {
17
23
  className: 'dnb-forms-field-bank-account-number',
18
24
  pattern: (_props$pattern = props.pattern) !== null && _props$pattern !== void 0 ? _props$pattern : validate ? '^[0-9]{11}$' : undefined,
19
25
  label: (_props$label = props.label) !== null && _props$label !== void 0 ? _props$label : sharedContext === null || sharedContext === void 0 ? void 0 : sharedContext.translation.Forms.bankAccountNumberLabel,
20
- errorMessages: _objectSpread({
21
- required: sharedContext === null || sharedContext === void 0 ? void 0 : sharedContext.translation.Forms.bankAccountNumberErrorRequired,
22
- pattern: sharedContext === null || sharedContext === void 0 ? void 0 : sharedContext.translation.Forms.bankAccountNumberErrorPattern
23
- }, props.errorMessages),
24
- mask: omitMask ? [/\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/] : [/\d/, /\d/, /\d/, /\d/, ' ', /\d/, /\d/, ' ', /\d/, /\d/, /\d/, /\d/, /\d/],
26
+ errorMessages,
27
+ mask,
25
28
  width: (_props$width = props.width) !== null && _props$width !== void 0 ? _props$width : 'medium'
26
29
  });
27
30
  return React.createElement(StringComponent, stringComponentProps);
@@ -1 +1 @@
1
- {"version":3,"file":"BankAccountNumber.js","names":["React","useContext","StringComponent","SharedContext","BankAccountNumber","props","_props$pattern","_props$label","_props$width","sharedContext","validate","omitMask","stringComponentProps","_objectSpread","className","pattern","undefined","label","translation","Forms","bankAccountNumberLabel","errorMessages","required","bankAccountNumberErrorRequired","bankAccountNumberErrorPattern","mask","width","createElement","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/BankAccountNumber/BankAccountNumber.tsx"],"sourcesContent":["import React, { useContext } from 'react'\nimport StringComponent, { Props as StringComponentProps } from '../String'\nimport SharedContext from '../../../../shared/Context'\n\nexport type Props = StringComponentProps & {\n validate?: boolean\n omitMask?: boolean\n}\n\nfunction BankAccountNumber(props: Props) {\n const sharedContext = useContext(SharedContext)\n const { validate = true, omitMask } = props\n\n const stringComponentProps: Props = {\n ...props,\n className: 'dnb-forms-field-bank-account-number',\n pattern: props.pattern ?? (validate ? '^[0-9]{11}$' : undefined),\n label:\n props.label ??\n sharedContext?.translation.Forms.bankAccountNumberLabel,\n errorMessages: {\n required:\n sharedContext?.translation.Forms.bankAccountNumberErrorRequired,\n pattern:\n sharedContext?.translation.Forms.bankAccountNumberErrorPattern,\n ...props.errorMessages,\n },\n mask: omitMask\n ? [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n : [\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n ' ',\n /\\d/,\n /\\d/,\n ' ',\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n ],\n width: props.width ?? 'medium',\n }\n\n return <StringComponent {...stringComponentProps} />\n}\n\nBankAccountNumber._supportsSpacingProps = true\nexport default BankAccountNumber\n"],"mappings":";;;;;AAAA,OAAOA,KAAK,IAAIC,UAAU,QAAQ,OAAO;AACzC,OAAOC,eAAe,MAAyC,WAAW;AAC1E,OAAOC,aAAa,MAAM,4BAA4B;AAOtD,SAASC,iBAAiBA,CAACC,KAAY,EAAE;EAAA,IAAAC,cAAA,EAAAC,YAAA,EAAAC,YAAA;EACvC,MAAMC,aAAa,GAAGR,UAAU,CAACE,aAAa,CAAC;EAC/C,MAAM;IAAEO,QAAQ,GAAG,IAAI;IAAEC;EAAS,CAAC,GAAGN,KAAK;EAE3C,MAAMO,oBAA2B,GAAAC,aAAA,CAAAA,aAAA,KAC5BR,KAAK;IACRS,SAAS,EAAE,qCAAqC;IAChDC,OAAO,GAAAT,cAAA,GAAED,KAAK,CAACU,OAAO,cAAAT,cAAA,cAAAA,cAAA,GAAKI,QAAQ,GAAG,aAAa,GAAGM,SAAU;IAChEC,KAAK,GAAAV,YAAA,GACHF,KAAK,CAACY,KAAK,cAAAV,YAAA,cAAAA,YAAA,GACXE,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAES,WAAW,CAACC,KAAK,CAACC,sBAAsB;IACzDC,aAAa,EAAAR,aAAA;MACXS,QAAQ,EACNb,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAES,WAAW,CAACC,KAAK,CAACI,8BAA8B;MACjER,OAAO,EACLN,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAES,WAAW,CAACC,KAAK,CAACK;IAA6B,GAC7DnB,KAAK,CAACgB,aAAa,CACvB;IACDI,IAAI,EAAEd,QAAQ,GACV,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAClE,CACE,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,GAAG,EACH,IAAI,EACJ,IAAI,EACJ,GAAG,EACH,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,CACL;IACLe,KAAK,GAAAlB,YAAA,GAAEH,KAAK,CAACqB,KAAK,cAAAlB,YAAA,cAAAA,YAAA,GAAI;EAAQ,EAC/B;EAED,OAAOR,KAAA,CAAA2B,aAAA,CAACzB,eAAe,EAAKU,oBAAuB,CAAC;AACtD;AAEAR,iBAAiB,CAACwB,qBAAqB,GAAG,IAAI;AAC9C,eAAexB,iBAAiB"}
1
+ {"version":3,"file":"BankAccountNumber.js","names":["React","useContext","useMemo","StringComponent","SharedContext","BankAccountNumber","props","_props$pattern","_props$label","_props$width","sharedContext","tr","translation","Forms","validate","omitMask","errorMessages","_objectSpread","required","bankAccountNumberErrorRequired","pattern","bankAccountNumberErrorPattern","mask","stringComponentProps","className","undefined","label","bankAccountNumberLabel","width","createElement","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/BankAccountNumber/BankAccountNumber.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 validate?: boolean\n omitMask?: boolean\n}\n\nfunction BankAccountNumber(props: Props) {\n const sharedContext = useContext(SharedContext)\n const tr = sharedContext?.translation.Forms\n const { validate = true, omitMask } = props\n\n const errorMessages = useMemo(\n () => ({\n required: tr.bankAccountNumberErrorRequired,\n pattern: tr.bankAccountNumberErrorPattern,\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 ' ',\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 className: 'dnb-forms-field-bank-account-number',\n pattern: props.pattern ?? (validate ? '^[0-9]{11}$' : undefined),\n label:\n props.label ??\n sharedContext?.translation.Forms.bankAccountNumberLabel,\n errorMessages,\n mask,\n width: props.width ?? 'medium',\n }\n\n return <StringComponent {...stringComponentProps} />\n}\n\nBankAccountNumber._supportsSpacingProps = true\nexport default BankAccountNumber\n"],"mappings":";;;;;AAAA,OAAOA,KAAK,IAAIC,UAAU,EAAEC,OAAO,QAAQ,OAAO;AAClD,OAAOC,eAAe,MAAyC,WAAW;AAC1E,OAAOC,aAAa,MAAM,4BAA4B;AAOtD,SAASC,iBAAiBA,CAACC,KAAY,EAAE;EAAA,IAAAC,cAAA,EAAAC,YAAA,EAAAC,YAAA;EACvC,MAAMC,aAAa,GAAGT,UAAU,CAACG,aAAa,CAAC;EAC/C,MAAMO,EAAE,GAAGD,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEE,WAAW,CAACC,KAAK;EAC3C,MAAM;IAAEC,QAAQ,GAAG,IAAI;IAAEC;EAAS,CAAC,GAAGT,KAAK;EAE3C,MAAMU,aAAa,GAAGd,OAAO,CAC3B,MAAAe,aAAA;IACEC,QAAQ,EAAEP,EAAE,CAACQ,8BAA8B;IAC3CC,OAAO,EAAET,EAAE,CAACU;EAA6B,GACtCf,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,GAAG,EACH,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;IACRkB,SAAS,EAAE,qCAAqC;IAChDJ,OAAO,GAAAb,cAAA,GAAED,KAAK,CAACc,OAAO,cAAAb,cAAA,cAAAA,cAAA,GAAKO,QAAQ,GAAG,aAAa,GAAGW,SAAU;IAChEC,KAAK,GAAAlB,YAAA,GACHF,KAAK,CAACoB,KAAK,cAAAlB,YAAA,cAAAA,YAAA,GACXE,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEE,WAAW,CAACC,KAAK,CAACc,sBAAsB;IACzDX,aAAa;IACbM,IAAI;IACJM,KAAK,GAAAnB,YAAA,GAAEH,KAAK,CAACsB,KAAK,cAAAnB,YAAA,cAAAA,YAAA,GAAI;EAAQ,EAC/B;EAED,OAAOT,KAAA,CAAA6B,aAAA,CAAC1B,eAAe,EAAKoB,oBAAuB,CAAC;AACtD;AAEAlB,iBAAiB,CAACyB,qBAAqB,GAAG,IAAI;AAC9C,eAAezB,iBAAiB"}