@dnb/eufemia 10.19.0 → 10.20.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 (759) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/cjs/components/accordion/AccordionContent.d.ts +1 -1
  3. package/cjs/components/accordion/AccordionContent.js.map +1 -1
  4. package/cjs/components/accordion/style/dnb-accordion.css +0 -3
  5. package/cjs/components/accordion/style/dnb-accordion.min.css +1 -1
  6. package/cjs/components/accordion/style/dnb-accordion.scss +0 -5
  7. package/cjs/components/breadcrumb/Breadcrumb.js +11 -2
  8. package/cjs/components/breadcrumb/Breadcrumb.js.map +1 -1
  9. package/cjs/components/breadcrumb/BreadcrumbItem.js +11 -8
  10. package/cjs/components/breadcrumb/BreadcrumbItem.js.map +1 -1
  11. package/cjs/components/card/Card.d.ts +6 -4
  12. package/cjs/components/card/Card.js +11 -15
  13. package/cjs/components/card/Card.js.map +1 -1
  14. package/cjs/components/card/style/dnb-card.css +29 -0
  15. package/cjs/components/card/style/dnb-card.min.css +1 -1
  16. package/cjs/components/card/style/dnb-card.scss +41 -0
  17. package/cjs/components/card/style/themes/dnb-card-theme-ui.css +1 -19
  18. package/cjs/components/card/style/themes/dnb-card-theme-ui.min.css +1 -1
  19. package/cjs/components/card/style/themes/dnb-card-theme-ui.scss +1 -27
  20. package/cjs/components/date-picker/DatePickerProvider.js +10 -10
  21. package/cjs/components/date-picker/DatePickerProvider.js.map +1 -1
  22. package/cjs/components/flex/Container.js +1 -1
  23. package/cjs/components/flex/Container.js.map +1 -1
  24. package/cjs/components/flex/Item.js +8 -13
  25. package/cjs/components/flex/Item.js.map +1 -1
  26. package/cjs/components/flex/style/dnb-flex.css +3 -0
  27. package/cjs/components/flex/style/dnb-flex.min.css +1 -1
  28. package/cjs/components/flex/style/flex-container.scss +3 -0
  29. package/cjs/components/flex/utils.d.ts +35 -7
  30. package/cjs/components/flex/utils.js +65 -33
  31. package/cjs/components/flex/utils.js.map +1 -1
  32. package/cjs/components/form-status/FormStatus.d.ts +5 -1
  33. package/cjs/components/form-status/FormStatus.js +38 -44
  34. package/cjs/components/form-status/FormStatus.js.map +1 -1
  35. package/cjs/components/form-status/style/dnb-form-status.css +0 -18
  36. package/cjs/components/form-status/style/dnb-form-status.min.css +1 -1
  37. package/cjs/components/form-status/style/dnb-form-status.scss +0 -45
  38. package/cjs/components/global-status/GlobalStatus.js +52 -138
  39. package/cjs/components/global-status/GlobalStatus.js.map +1 -1
  40. package/cjs/components/global-status/style/dnb-global-status.css +6 -16
  41. package/cjs/components/global-status/style/dnb-global-status.min.css +1 -1
  42. package/cjs/components/global-status/style/dnb-global-status.scss +11 -23
  43. package/cjs/components/global-status/style/themes/dnb-global-status-theme-ui.css +0 -3
  44. package/cjs/components/global-status/style/themes/dnb-global-status-theme-ui.min.css +1 -1
  45. package/cjs/components/global-status/style/themes/dnb-global-status-theme-ui.scss +0 -10
  46. package/cjs/components/height-animation/HeightAnimation.d.ts +12 -4
  47. package/cjs/components/height-animation/HeightAnimation.js +31 -14
  48. package/cjs/components/height-animation/HeightAnimation.js.map +1 -1
  49. package/cjs/components/height-animation/HeightAnimationInstance.d.ts +35 -18
  50. package/cjs/components/height-animation/HeightAnimationInstance.js +186 -158
  51. package/cjs/components/height-animation/HeightAnimationInstance.js.map +1 -1
  52. package/cjs/components/height-animation/style/dnb-height-animation.css +16 -2
  53. package/cjs/components/height-animation/style/dnb-height-animation.min.css +1 -1
  54. package/cjs/components/height-animation/style/dnb-height-animation.scss +18 -2
  55. package/cjs/components/height-animation/useHeightAnimation.d.ts +6 -1
  56. package/cjs/components/height-animation/useHeightAnimation.js +125 -92
  57. package/cjs/components/height-animation/useHeightAnimation.js.map +1 -1
  58. package/cjs/components/number-format/NumberFormat.d.ts +7 -12
  59. package/cjs/components/step-indicator/StepIndicatorItem.js +3 -21
  60. package/cjs/components/step-indicator/StepIndicatorItem.js.map +1 -1
  61. package/cjs/components/step-indicator/StepIndicatorTriggerButton.js +2 -16
  62. package/cjs/components/step-indicator/StepIndicatorTriggerButton.js.map +1 -1
  63. package/cjs/components/step-indicator/style/dnb-step-indicator.css +0 -5
  64. package/cjs/components/step-indicator/style/dnb-step-indicator.min.css +1 -1
  65. package/cjs/components/step-indicator/style/dnb-step-indicator.scss +0 -7
  66. package/cjs/components/table/TableAccordionContent.js +51 -23
  67. package/cjs/components/table/TableAccordionContent.js.map +1 -1
  68. package/cjs/components/table/style/dnb-table.css +6 -3
  69. package/cjs/components/table/style/dnb-table.min.css +1 -1
  70. package/cjs/components/table/style/table-accordion.scss +6 -3
  71. package/cjs/components/tabs/Tabs.js +2 -1
  72. package/cjs/components/tabs/Tabs.js.map +1 -1
  73. package/cjs/components/tabs/TabsContentWrapper.d.ts +1 -0
  74. package/cjs/components/tabs/TabsContentWrapper.js +8 -6
  75. package/cjs/components/tabs/TabsContentWrapper.js.map +1 -1
  76. package/cjs/components/upload/Upload.js +15 -18
  77. package/cjs/components/upload/Upload.js.map +1 -1
  78. package/cjs/components/upload/UploadFileInput.js +3 -1
  79. package/cjs/components/upload/UploadFileInput.js.map +1 -1
  80. package/cjs/components/upload/UploadFileList.js +1 -1
  81. package/cjs/components/upload/UploadFileList.js.map +1 -1
  82. package/cjs/components/upload/UploadStatus.js +6 -2
  83. package/cjs/components/upload/UploadStatus.js.map +1 -1
  84. package/cjs/components/upload/useUpload.js +5 -6
  85. package/cjs/components/upload/useUpload.js.map +1 -1
  86. package/cjs/elements/lib.d.ts +6 -0
  87. package/cjs/elements/typography/H1.d.ts +1 -0
  88. package/cjs/elements/typography/H1.js +1 -1
  89. package/cjs/elements/typography/H1.js.map +1 -1
  90. package/cjs/elements/typography/H2.d.ts +1 -0
  91. package/cjs/elements/typography/H2.js +1 -1
  92. package/cjs/elements/typography/H2.js.map +1 -1
  93. package/cjs/elements/typography/H3.d.ts +1 -0
  94. package/cjs/elements/typography/H3.js +1 -1
  95. package/cjs/elements/typography/H3.js.map +1 -1
  96. package/cjs/elements/typography/H4.d.ts +1 -0
  97. package/cjs/elements/typography/H4.js +1 -1
  98. package/cjs/elements/typography/H4.js.map +1 -1
  99. package/cjs/elements/typography/H5.d.ts +1 -0
  100. package/cjs/elements/typography/H5.js +1 -1
  101. package/cjs/elements/typography/H5.js.map +1 -1
  102. package/cjs/elements/typography/H6.d.ts +1 -0
  103. package/cjs/elements/typography/H6.js +1 -1
  104. package/cjs/elements/typography/H6.js.map +1 -1
  105. package/cjs/extensions/forms/DataContext/Context.d.ts +18 -5
  106. package/cjs/extensions/forms/DataContext/Context.js +9 -0
  107. package/cjs/extensions/forms/DataContext/Context.js.map +1 -1
  108. package/cjs/extensions/forms/DataContext/Provider/Provider.d.ts +57 -19
  109. package/cjs/extensions/forms/DataContext/Provider/Provider.js +127 -57
  110. package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  111. package/cjs/extensions/forms/Field/BankAccountNumber/BankAccountNumber.js +3 -2
  112. package/cjs/extensions/forms/Field/BankAccountNumber/BankAccountNumber.js.map +1 -1
  113. package/cjs/extensions/forms/Field/Date/Date.js +4 -3
  114. package/cjs/extensions/forms/Field/Date/Date.js.map +1 -1
  115. package/cjs/extensions/forms/Field/Email/Email.js +3 -2
  116. package/cjs/extensions/forms/Field/Email/Email.js.map +1 -1
  117. package/cjs/extensions/forms/Field/Expiry/Expiry.js +4 -3
  118. package/cjs/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
  119. package/cjs/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js +3 -2
  120. package/cjs/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js.map +1 -1
  121. package/cjs/extensions/forms/Field/Number/Number.d.ts +2 -4
  122. package/cjs/extensions/forms/Field/Number/Number.js +14 -15
  123. package/cjs/extensions/forms/Field/Number/Number.js.map +1 -1
  124. package/cjs/extensions/forms/Field/OrganizationNumber/OrganizationNumber.js +3 -2
  125. package/cjs/extensions/forms/Field/OrganizationNumber/OrganizationNumber.js.map +1 -1
  126. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.js +3 -2
  127. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  128. package/cjs/extensions/forms/Field/PostalCodeAndCity/style/dnb-postal-code-and-city.css +9 -0
  129. package/cjs/extensions/forms/Field/PostalCodeAndCity/style/dnb-postal-code-and-city.min.css +1 -1
  130. package/cjs/extensions/forms/Field/PostalCodeAndCity/style/dnb-postal-code-and-city.scss +7 -0
  131. package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.js +3 -2
  132. package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
  133. package/cjs/extensions/forms/Field/String/String.d.ts +2 -2
  134. package/cjs/extensions/forms/Field/String/String.js +5 -3
  135. package/cjs/extensions/forms/Field/String/String.js.map +1 -1
  136. package/cjs/extensions/forms/Field/Toggle/Toggle.js +5 -2
  137. package/cjs/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  138. package/cjs/extensions/forms/FieldBlock/FieldBlock.js +2 -4
  139. package/cjs/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  140. package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.css +19 -5
  141. package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
  142. package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.scss +25 -1
  143. package/cjs/extensions/forms/Form/Handler/Handler.d.ts +1 -1
  144. package/cjs/extensions/forms/Form/Handler/Handler.js +7 -1
  145. package/cjs/extensions/forms/Form/Handler/Handler.js.map +1 -1
  146. package/cjs/extensions/forms/Form/Visibility/Visibility.d.ts +6 -1
  147. package/cjs/extensions/forms/Form/Visibility/Visibility.js +54 -39
  148. package/cjs/extensions/forms/Form/Visibility/Visibility.js.map +1 -1
  149. package/cjs/extensions/forms/Form/data-context/getData.d.ts +8 -0
  150. package/cjs/extensions/forms/Form/data-context/getData.js +21 -0
  151. package/cjs/extensions/forms/Form/data-context/getData.js.map +1 -0
  152. package/cjs/extensions/forms/Form/data-context/setData.d.ts +2 -0
  153. package/cjs/extensions/forms/Form/data-context/setData.js +12 -0
  154. package/cjs/extensions/forms/Form/data-context/setData.js.map +1 -0
  155. package/cjs/extensions/forms/Form/data-context/useData.d.ts +22 -0
  156. package/cjs/extensions/forms/Form/data-context/useData.js +65 -0
  157. package/cjs/extensions/forms/Form/data-context/useData.js.map +1 -0
  158. package/cjs/extensions/forms/Form/data-context/useError.d.ts +5 -0
  159. package/cjs/extensions/forms/Form/data-context/useError.js +18 -0
  160. package/cjs/extensions/forms/Form/data-context/useError.js.map +1 -0
  161. package/cjs/extensions/forms/Form/index.d.ts +4 -1
  162. package/cjs/extensions/forms/Form/index.js +22 -1
  163. package/cjs/extensions/forms/Form/index.js.map +1 -1
  164. package/cjs/extensions/forms/Iterate/Array/Array.d.ts +2 -2
  165. package/cjs/extensions/forms/Iterate/Array/Array.js.map +1 -1
  166. package/cjs/extensions/forms/StepsLayout/StepsLayout.d.ts +3 -0
  167. package/cjs/extensions/forms/StepsLayout/StepsLayout.js +30 -21
  168. package/cjs/extensions/forms/StepsLayout/StepsLayout.js.map +1 -1
  169. package/cjs/extensions/forms/StepsLayout/style/dnb-steps-layout.css +6 -0
  170. package/cjs/extensions/forms/StepsLayout/style/dnb-steps-layout.min.css +1 -1
  171. package/cjs/extensions/forms/StepsLayout/style/dnb-steps-layout.scss +7 -0
  172. package/cjs/extensions/forms/Value/Currency/Currency.js +2 -3
  173. package/cjs/extensions/forms/Value/Currency/Currency.js.map +1 -1
  174. package/cjs/extensions/forms/Value/Number/Number.d.ts +6 -10
  175. package/cjs/extensions/forms/Value/Number/Number.js +25 -27
  176. package/cjs/extensions/forms/Value/Number/Number.js.map +1 -1
  177. package/cjs/extensions/forms/Value/PhoneNumber/PhoneNumber.js +6 -4
  178. package/cjs/extensions/forms/Value/PhoneNumber/PhoneNumber.js.map +1 -1
  179. package/cjs/extensions/forms/hooks/index.d.ts +1 -0
  180. package/cjs/extensions/forms/hooks/index.js +7 -0
  181. package/cjs/extensions/forms/hooks/index.js.map +1 -1
  182. package/cjs/extensions/forms/hooks/useDataValue.d.ts +6 -1
  183. package/cjs/extensions/forms/hooks/useDataValue.js +76 -21
  184. package/cjs/extensions/forms/hooks/useDataValue.js.map +1 -1
  185. package/cjs/extensions/forms/hooks/useErrorMessage.d.ts +10 -0
  186. package/cjs/extensions/forms/hooks/useErrorMessage.js +23 -0
  187. package/cjs/extensions/forms/hooks/useErrorMessage.js.map +1 -0
  188. package/cjs/extensions/forms/index.d.ts +1 -0
  189. package/cjs/extensions/forms/index.js +9 -1
  190. package/cjs/extensions/forms/index.js.map +1 -1
  191. package/cjs/extensions/forms/style/dnb-forms.css +34 -5
  192. package/cjs/extensions/forms/style/dnb-forms.min.css +1 -1
  193. package/cjs/extensions/forms/types.d.ts +22 -7
  194. package/cjs/extensions/forms/types.js.map +1 -1
  195. package/cjs/extensions/forms/utils/ajv.d.ts +47 -6
  196. package/cjs/extensions/forms/utils/ajv.js +29 -13
  197. package/cjs/extensions/forms/utils/ajv.js.map +1 -1
  198. package/cjs/extensions/forms/utils/index.d.ts +0 -1
  199. package/cjs/extensions/forms/utils/index.js +0 -12
  200. package/cjs/extensions/forms/utils/index.js.map +1 -1
  201. package/cjs/shared/Eufemia.d.ts +1 -1
  202. package/cjs/shared/Eufemia.js +2 -2
  203. package/cjs/shared/Eufemia.js.map +1 -1
  204. package/cjs/shared/component-helper.js +0 -3
  205. package/cjs/shared/component-helper.js.map +1 -1
  206. package/cjs/shared/helpers/useSharedState.d.ts +28 -7
  207. package/cjs/shared/helpers/useSharedState.js +62 -43
  208. package/cjs/shared/helpers/useSharedState.js.map +1 -1
  209. package/cjs/shared/locales/en-GB.d.ts +1 -0
  210. package/cjs/shared/locales/en-GB.js +1 -0
  211. package/cjs/shared/locales/en-GB.js.map +1 -1
  212. package/cjs/shared/locales/en-US.d.ts +1 -0
  213. package/cjs/shared/locales/index.d.ts +2 -0
  214. package/cjs/shared/locales/nb-NO.d.ts +1 -0
  215. package/cjs/shared/locales/nb-NO.js +1 -0
  216. package/cjs/shared/locales/nb-NO.js.map +1 -1
  217. package/cjs/style/core/utilities.scss +1 -1
  218. package/cjs/style/dnb-ui-components.css +94 -52
  219. package/cjs/style/dnb-ui-components.min.css +3 -3
  220. package/cjs/style/dnb-ui-extensions.css +34 -5
  221. package/cjs/style/dnb-ui-extensions.min.css +1 -1
  222. package/cjs/style/dnb-ui-forms.css +34 -5
  223. package/cjs/style/dnb-ui-forms.min.css +1 -1
  224. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +129 -79
  225. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +4 -4
  226. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.css +34 -5
  227. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  228. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.css +34 -5
  229. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  230. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +129 -76
  231. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +4 -4
  232. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.css +34 -5
  233. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  234. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.css +34 -5
  235. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  236. package/cjs/style/themes/theme-ui/ui-theme-components.css +129 -79
  237. package/cjs/style/themes/theme-ui/ui-theme-components.min.css +4 -4
  238. package/cjs/style/themes/theme-ui/ui-theme-extensions.css +34 -5
  239. package/cjs/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  240. package/cjs/style/themes/theme-ui/ui-theme-forms.css +34 -5
  241. package/cjs/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  242. package/components/accordion/AccordionContent.d.ts +1 -1
  243. package/components/accordion/AccordionContent.js.map +1 -1
  244. package/components/accordion/style/dnb-accordion.css +0 -3
  245. package/components/accordion/style/dnb-accordion.min.css +1 -1
  246. package/components/accordion/style/dnb-accordion.scss +0 -5
  247. package/components/breadcrumb/Breadcrumb.js +11 -2
  248. package/components/breadcrumb/Breadcrumb.js.map +1 -1
  249. package/components/breadcrumb/BreadcrumbItem.js +11 -8
  250. package/components/breadcrumb/BreadcrumbItem.js.map +1 -1
  251. package/components/card/Card.d.ts +6 -4
  252. package/components/card/Card.js +11 -15
  253. package/components/card/Card.js.map +1 -1
  254. package/components/card/style/dnb-card.css +29 -0
  255. package/components/card/style/dnb-card.min.css +1 -1
  256. package/components/card/style/dnb-card.scss +41 -0
  257. package/components/card/style/themes/dnb-card-theme-ui.css +1 -19
  258. package/components/card/style/themes/dnb-card-theme-ui.min.css +1 -1
  259. package/components/card/style/themes/dnb-card-theme-ui.scss +1 -27
  260. package/components/date-picker/DatePickerProvider.js +10 -10
  261. package/components/date-picker/DatePickerProvider.js.map +1 -1
  262. package/components/flex/Container.js +1 -1
  263. package/components/flex/Container.js.map +1 -1
  264. package/components/flex/Item.js +8 -11
  265. package/components/flex/Item.js.map +1 -1
  266. package/components/flex/style/dnb-flex.css +3 -0
  267. package/components/flex/style/dnb-flex.min.css +1 -1
  268. package/components/flex/style/flex-container.scss +3 -0
  269. package/components/flex/utils.d.ts +35 -7
  270. package/components/flex/utils.js +56 -24
  271. package/components/flex/utils.js.map +1 -1
  272. package/components/form-status/FormStatus.d.ts +5 -1
  273. package/components/form-status/FormStatus.js +38 -44
  274. package/components/form-status/FormStatus.js.map +1 -1
  275. package/components/form-status/style/dnb-form-status.css +0 -18
  276. package/components/form-status/style/dnb-form-status.min.css +1 -1
  277. package/components/form-status/style/dnb-form-status.scss +0 -45
  278. package/components/global-status/GlobalStatus.js +53 -139
  279. package/components/global-status/GlobalStatus.js.map +1 -1
  280. package/components/global-status/style/dnb-global-status.css +6 -16
  281. package/components/global-status/style/dnb-global-status.min.css +1 -1
  282. package/components/global-status/style/dnb-global-status.scss +11 -23
  283. package/components/global-status/style/themes/dnb-global-status-theme-ui.css +0 -3
  284. package/components/global-status/style/themes/dnb-global-status-theme-ui.min.css +1 -1
  285. package/components/global-status/style/themes/dnb-global-status-theme-ui.scss +0 -10
  286. package/components/height-animation/HeightAnimation.d.ts +12 -4
  287. package/components/height-animation/HeightAnimation.js +27 -14
  288. package/components/height-animation/HeightAnimation.js.map +1 -1
  289. package/components/height-animation/HeightAnimationInstance.d.ts +35 -18
  290. package/components/height-animation/HeightAnimationInstance.js +186 -158
  291. package/components/height-animation/HeightAnimationInstance.js.map +1 -1
  292. package/components/height-animation/style/dnb-height-animation.css +16 -2
  293. package/components/height-animation/style/dnb-height-animation.min.css +1 -1
  294. package/components/height-animation/style/dnb-height-animation.scss +18 -2
  295. package/components/height-animation/useHeightAnimation.d.ts +6 -1
  296. package/components/height-animation/useHeightAnimation.js +124 -92
  297. package/components/height-animation/useHeightAnimation.js.map +1 -1
  298. package/components/number-format/NumberFormat.d.ts +7 -12
  299. package/components/step-indicator/StepIndicatorItem.js +4 -22
  300. package/components/step-indicator/StepIndicatorItem.js.map +1 -1
  301. package/components/step-indicator/StepIndicatorTriggerButton.js +3 -17
  302. package/components/step-indicator/StepIndicatorTriggerButton.js.map +1 -1
  303. package/components/step-indicator/style/dnb-step-indicator.css +0 -5
  304. package/components/step-indicator/style/dnb-step-indicator.min.css +1 -1
  305. package/components/step-indicator/style/dnb-step-indicator.scss +0 -7
  306. package/components/table/TableAccordionContent.js +48 -23
  307. package/components/table/TableAccordionContent.js.map +1 -1
  308. package/components/table/style/dnb-table.css +6 -3
  309. package/components/table/style/dnb-table.min.css +1 -1
  310. package/components/table/style/table-accordion.scss +6 -3
  311. package/components/tabs/Tabs.js +2 -1
  312. package/components/tabs/Tabs.js.map +1 -1
  313. package/components/tabs/TabsContentWrapper.d.ts +1 -0
  314. package/components/tabs/TabsContentWrapper.js +8 -6
  315. package/components/tabs/TabsContentWrapper.js.map +1 -1
  316. package/components/upload/Upload.js +13 -18
  317. package/components/upload/Upload.js.map +1 -1
  318. package/components/upload/UploadFileInput.js +3 -1
  319. package/components/upload/UploadFileInput.js.map +1 -1
  320. package/components/upload/UploadFileList.js +1 -1
  321. package/components/upload/UploadFileList.js.map +1 -1
  322. package/components/upload/UploadStatus.js +6 -2
  323. package/components/upload/UploadStatus.js.map +1 -1
  324. package/components/upload/useUpload.js +5 -7
  325. package/components/upload/useUpload.js.map +1 -1
  326. package/elements/lib.d.ts +6 -0
  327. package/elements/typography/H1.d.ts +1 -0
  328. package/elements/typography/H1.js +1 -1
  329. package/elements/typography/H1.js.map +1 -1
  330. package/elements/typography/H2.d.ts +1 -0
  331. package/elements/typography/H2.js +1 -1
  332. package/elements/typography/H2.js.map +1 -1
  333. package/elements/typography/H3.d.ts +1 -0
  334. package/elements/typography/H3.js +1 -1
  335. package/elements/typography/H3.js.map +1 -1
  336. package/elements/typography/H4.d.ts +1 -0
  337. package/elements/typography/H4.js +1 -1
  338. package/elements/typography/H4.js.map +1 -1
  339. package/elements/typography/H5.d.ts +1 -0
  340. package/elements/typography/H5.js +1 -1
  341. package/elements/typography/H5.js.map +1 -1
  342. package/elements/typography/H6.d.ts +1 -0
  343. package/elements/typography/H6.js +1 -1
  344. package/elements/typography/H6.js.map +1 -1
  345. package/es/components/accordion/AccordionContent.d.ts +1 -1
  346. package/es/components/accordion/AccordionContent.js.map +1 -1
  347. package/es/components/accordion/style/dnb-accordion.css +0 -3
  348. package/es/components/accordion/style/dnb-accordion.min.css +1 -1
  349. package/es/components/accordion/style/dnb-accordion.scss +0 -5
  350. package/es/components/breadcrumb/Breadcrumb.js +11 -2
  351. package/es/components/breadcrumb/Breadcrumb.js.map +1 -1
  352. package/es/components/breadcrumb/BreadcrumbItem.js +11 -8
  353. package/es/components/breadcrumb/BreadcrumbItem.js.map +1 -1
  354. package/es/components/card/Card.d.ts +6 -4
  355. package/es/components/card/Card.js +11 -15
  356. package/es/components/card/Card.js.map +1 -1
  357. package/es/components/card/style/dnb-card.css +29 -0
  358. package/es/components/card/style/dnb-card.min.css +1 -1
  359. package/es/components/card/style/dnb-card.scss +41 -0
  360. package/es/components/card/style/themes/dnb-card-theme-ui.css +1 -19
  361. package/es/components/card/style/themes/dnb-card-theme-ui.min.css +1 -1
  362. package/es/components/card/style/themes/dnb-card-theme-ui.scss +1 -27
  363. package/es/components/date-picker/DatePickerProvider.js +10 -10
  364. package/es/components/date-picker/DatePickerProvider.js.map +1 -1
  365. package/es/components/flex/Container.js +1 -1
  366. package/es/components/flex/Container.js.map +1 -1
  367. package/es/components/flex/Item.js +8 -11
  368. package/es/components/flex/Item.js.map +1 -1
  369. package/es/components/flex/style/dnb-flex.css +3 -0
  370. package/es/components/flex/style/dnb-flex.min.css +1 -1
  371. package/es/components/flex/style/flex-container.scss +3 -0
  372. package/es/components/flex/utils.d.ts +35 -7
  373. package/es/components/flex/utils.js +55 -24
  374. package/es/components/flex/utils.js.map +1 -1
  375. package/es/components/form-status/FormStatus.d.ts +5 -1
  376. package/es/components/form-status/FormStatus.js +38 -44
  377. package/es/components/form-status/FormStatus.js.map +1 -1
  378. package/es/components/form-status/style/dnb-form-status.css +0 -18
  379. package/es/components/form-status/style/dnb-form-status.min.css +1 -1
  380. package/es/components/form-status/style/dnb-form-status.scss +0 -45
  381. package/es/components/global-status/GlobalStatus.js +51 -133
  382. package/es/components/global-status/GlobalStatus.js.map +1 -1
  383. package/es/components/global-status/style/dnb-global-status.css +6 -16
  384. package/es/components/global-status/style/dnb-global-status.min.css +1 -1
  385. package/es/components/global-status/style/dnb-global-status.scss +11 -23
  386. package/es/components/global-status/style/themes/dnb-global-status-theme-ui.css +0 -3
  387. package/es/components/global-status/style/themes/dnb-global-status-theme-ui.min.css +1 -1
  388. package/es/components/global-status/style/themes/dnb-global-status-theme-ui.scss +0 -10
  389. package/es/components/height-animation/HeightAnimation.d.ts +12 -4
  390. package/es/components/height-animation/HeightAnimation.js +27 -14
  391. package/es/components/height-animation/HeightAnimation.js.map +1 -1
  392. package/es/components/height-animation/HeightAnimationInstance.d.ts +35 -18
  393. package/es/components/height-animation/HeightAnimationInstance.js +188 -155
  394. package/es/components/height-animation/HeightAnimationInstance.js.map +1 -1
  395. package/es/components/height-animation/style/dnb-height-animation.css +16 -2
  396. package/es/components/height-animation/style/dnb-height-animation.min.css +1 -1
  397. package/es/components/height-animation/style/dnb-height-animation.scss +18 -2
  398. package/es/components/height-animation/useHeightAnimation.d.ts +6 -1
  399. package/es/components/height-animation/useHeightAnimation.js +124 -92
  400. package/es/components/height-animation/useHeightAnimation.js.map +1 -1
  401. package/es/components/number-format/NumberFormat.d.ts +7 -12
  402. package/es/components/step-indicator/StepIndicatorItem.js +4 -22
  403. package/es/components/step-indicator/StepIndicatorItem.js.map +1 -1
  404. package/es/components/step-indicator/StepIndicatorTriggerButton.js +3 -17
  405. package/es/components/step-indicator/StepIndicatorTriggerButton.js.map +1 -1
  406. package/es/components/step-indicator/style/dnb-step-indicator.css +0 -5
  407. package/es/components/step-indicator/style/dnb-step-indicator.min.css +1 -1
  408. package/es/components/step-indicator/style/dnb-step-indicator.scss +0 -7
  409. package/es/components/table/TableAccordionContent.js +47 -23
  410. package/es/components/table/TableAccordionContent.js.map +1 -1
  411. package/es/components/table/style/dnb-table.css +6 -3
  412. package/es/components/table/style/dnb-table.min.css +1 -1
  413. package/es/components/table/style/table-accordion.scss +6 -3
  414. package/es/components/tabs/Tabs.js +2 -1
  415. package/es/components/tabs/Tabs.js.map +1 -1
  416. package/es/components/tabs/TabsContentWrapper.d.ts +1 -0
  417. package/es/components/tabs/TabsContentWrapper.js +8 -6
  418. package/es/components/tabs/TabsContentWrapper.js.map +1 -1
  419. package/es/components/upload/Upload.js +13 -18
  420. package/es/components/upload/Upload.js.map +1 -1
  421. package/es/components/upload/UploadFileInput.js +3 -1
  422. package/es/components/upload/UploadFileInput.js.map +1 -1
  423. package/es/components/upload/UploadFileList.js +1 -1
  424. package/es/components/upload/UploadFileList.js.map +1 -1
  425. package/es/components/upload/UploadStatus.js +6 -2
  426. package/es/components/upload/UploadStatus.js.map +1 -1
  427. package/es/components/upload/useUpload.js +5 -7
  428. package/es/components/upload/useUpload.js.map +1 -1
  429. package/es/elements/lib.d.ts +6 -0
  430. package/es/elements/typography/H1.d.ts +1 -0
  431. package/es/elements/typography/H1.js +1 -1
  432. package/es/elements/typography/H1.js.map +1 -1
  433. package/es/elements/typography/H2.d.ts +1 -0
  434. package/es/elements/typography/H2.js +1 -1
  435. package/es/elements/typography/H2.js.map +1 -1
  436. package/es/elements/typography/H3.d.ts +1 -0
  437. package/es/elements/typography/H3.js +1 -1
  438. package/es/elements/typography/H3.js.map +1 -1
  439. package/es/elements/typography/H4.d.ts +1 -0
  440. package/es/elements/typography/H4.js +1 -1
  441. package/es/elements/typography/H4.js.map +1 -1
  442. package/es/elements/typography/H5.d.ts +1 -0
  443. package/es/elements/typography/H5.js +1 -1
  444. package/es/elements/typography/H5.js.map +1 -1
  445. package/es/elements/typography/H6.d.ts +1 -0
  446. package/es/elements/typography/H6.js +1 -1
  447. package/es/elements/typography/H6.js.map +1 -1
  448. package/es/extensions/forms/DataContext/Context.d.ts +18 -5
  449. package/es/extensions/forms/DataContext/Context.js +9 -0
  450. package/es/extensions/forms/DataContext/Context.js.map +1 -1
  451. package/es/extensions/forms/DataContext/Provider/Provider.d.ts +57 -19
  452. package/es/extensions/forms/DataContext/Provider/Provider.js +126 -58
  453. package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  454. package/es/extensions/forms/Field/BankAccountNumber/BankAccountNumber.js +3 -2
  455. package/es/extensions/forms/Field/BankAccountNumber/BankAccountNumber.js.map +1 -1
  456. package/es/extensions/forms/Field/Date/Date.js +4 -3
  457. package/es/extensions/forms/Field/Date/Date.js.map +1 -1
  458. package/es/extensions/forms/Field/Email/Email.js +4 -3
  459. package/es/extensions/forms/Field/Email/Email.js.map +1 -1
  460. package/es/extensions/forms/Field/Expiry/Expiry.js +5 -4
  461. package/es/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
  462. package/es/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js +3 -2
  463. package/es/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js.map +1 -1
  464. package/es/extensions/forms/Field/Number/Number.d.ts +2 -4
  465. package/es/extensions/forms/Field/Number/Number.js +14 -15
  466. package/es/extensions/forms/Field/Number/Number.js.map +1 -1
  467. package/es/extensions/forms/Field/OrganizationNumber/OrganizationNumber.js +3 -2
  468. package/es/extensions/forms/Field/OrganizationNumber/OrganizationNumber.js.map +1 -1
  469. package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.js +3 -2
  470. package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  471. package/es/extensions/forms/Field/PostalCodeAndCity/style/dnb-postal-code-and-city.css +9 -0
  472. package/es/extensions/forms/Field/PostalCodeAndCity/style/dnb-postal-code-and-city.min.css +1 -1
  473. package/es/extensions/forms/Field/PostalCodeAndCity/style/dnb-postal-code-and-city.scss +7 -0
  474. package/es/extensions/forms/Field/SelectCountry/SelectCountry.js +3 -2
  475. package/es/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
  476. package/es/extensions/forms/Field/String/String.d.ts +2 -2
  477. package/es/extensions/forms/Field/String/String.js +5 -3
  478. package/es/extensions/forms/Field/String/String.js.map +1 -1
  479. package/es/extensions/forms/Field/Toggle/Toggle.js +5 -2
  480. package/es/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  481. package/es/extensions/forms/FieldBlock/FieldBlock.js +2 -4
  482. package/es/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  483. package/es/extensions/forms/FieldBlock/style/dnb-field-block.css +19 -5
  484. package/es/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
  485. package/es/extensions/forms/FieldBlock/style/dnb-field-block.scss +25 -1
  486. package/es/extensions/forms/Form/Handler/Handler.d.ts +1 -1
  487. package/es/extensions/forms/Form/Handler/Handler.js +7 -1
  488. package/es/extensions/forms/Form/Handler/Handler.js.map +1 -1
  489. package/es/extensions/forms/Form/Visibility/Visibility.d.ts +6 -1
  490. package/es/extensions/forms/Form/Visibility/Visibility.js +55 -40
  491. package/es/extensions/forms/Form/Visibility/Visibility.js.map +1 -1
  492. package/es/extensions/forms/Form/data-context/getData.d.ts +8 -0
  493. package/es/extensions/forms/Form/data-context/getData.js +15 -0
  494. package/es/extensions/forms/Form/data-context/getData.js.map +1 -0
  495. package/es/extensions/forms/Form/data-context/setData.d.ts +2 -0
  496. package/es/extensions/forms/Form/data-context/setData.js +6 -0
  497. package/es/extensions/forms/Form/data-context/setData.js.map +1 -0
  498. package/es/extensions/forms/Form/data-context/useData.d.ts +22 -0
  499. package/es/extensions/forms/Form/data-context/useData.js +58 -0
  500. package/es/extensions/forms/Form/data-context/useData.js.map +1 -0
  501. package/es/extensions/forms/Form/data-context/useError.d.ts +5 -0
  502. package/es/extensions/forms/Form/data-context/useError.js +13 -0
  503. package/es/extensions/forms/Form/data-context/useError.js.map +1 -0
  504. package/es/extensions/forms/Form/index.d.ts +4 -1
  505. package/es/extensions/forms/Form/index.js +4 -1
  506. package/es/extensions/forms/Form/index.js.map +1 -1
  507. package/es/extensions/forms/Iterate/Array/Array.d.ts +2 -2
  508. package/es/extensions/forms/Iterate/Array/Array.js.map +1 -1
  509. package/es/extensions/forms/StepsLayout/StepsLayout.d.ts +3 -0
  510. package/es/extensions/forms/StepsLayout/StepsLayout.js +31 -22
  511. package/es/extensions/forms/StepsLayout/StepsLayout.js.map +1 -1
  512. package/es/extensions/forms/StepsLayout/style/dnb-steps-layout.css +6 -0
  513. package/es/extensions/forms/StepsLayout/style/dnb-steps-layout.min.css +1 -1
  514. package/es/extensions/forms/StepsLayout/style/dnb-steps-layout.scss +7 -0
  515. package/es/extensions/forms/Value/Currency/Currency.js +2 -3
  516. package/es/extensions/forms/Value/Currency/Currency.js.map +1 -1
  517. package/es/extensions/forms/Value/Number/Number.d.ts +6 -10
  518. package/es/extensions/forms/Value/Number/Number.js +22 -27
  519. package/es/extensions/forms/Value/Number/Number.js.map +1 -1
  520. package/es/extensions/forms/Value/PhoneNumber/PhoneNumber.js +6 -4
  521. package/es/extensions/forms/Value/PhoneNumber/PhoneNumber.js.map +1 -1
  522. package/es/extensions/forms/hooks/index.d.ts +1 -0
  523. package/es/extensions/forms/hooks/index.js +1 -0
  524. package/es/extensions/forms/hooks/index.js.map +1 -1
  525. package/es/extensions/forms/hooks/useDataValue.d.ts +6 -1
  526. package/es/extensions/forms/hooks/useDataValue.js +72 -19
  527. package/es/extensions/forms/hooks/useDataValue.js.map +1 -1
  528. package/es/extensions/forms/hooks/useErrorMessage.d.ts +10 -0
  529. package/es/extensions/forms/hooks/useErrorMessage.js +15 -0
  530. package/es/extensions/forms/hooks/useErrorMessage.js.map +1 -0
  531. package/es/extensions/forms/index.d.ts +1 -0
  532. package/es/extensions/forms/index.js +1 -0
  533. package/es/extensions/forms/index.js.map +1 -1
  534. package/es/extensions/forms/style/dnb-forms.css +34 -5
  535. package/es/extensions/forms/style/dnb-forms.min.css +1 -1
  536. package/es/extensions/forms/types.d.ts +22 -7
  537. package/es/extensions/forms/types.js.map +1 -1
  538. package/es/extensions/forms/utils/ajv.d.ts +47 -6
  539. package/es/extensions/forms/utils/ajv.js +23 -15
  540. package/es/extensions/forms/utils/ajv.js.map +1 -1
  541. package/es/extensions/forms/utils/index.d.ts +0 -1
  542. package/es/extensions/forms/utils/index.js +0 -1
  543. package/es/extensions/forms/utils/index.js.map +1 -1
  544. package/es/shared/Eufemia.d.ts +1 -1
  545. package/es/shared/Eufemia.js +2 -2
  546. package/es/shared/Eufemia.js.map +1 -1
  547. package/es/shared/component-helper.js +0 -3
  548. package/es/shared/component-helper.js.map +1 -1
  549. package/es/shared/helpers/useSharedState.d.ts +28 -7
  550. package/es/shared/helpers/useSharedState.js +62 -43
  551. package/es/shared/helpers/useSharedState.js.map +1 -1
  552. package/es/shared/locales/en-GB.d.ts +1 -0
  553. package/es/shared/locales/en-GB.js +1 -0
  554. package/es/shared/locales/en-GB.js.map +1 -1
  555. package/es/shared/locales/en-US.d.ts +1 -0
  556. package/es/shared/locales/index.d.ts +2 -0
  557. package/es/shared/locales/nb-NO.d.ts +1 -0
  558. package/es/shared/locales/nb-NO.js +1 -0
  559. package/es/shared/locales/nb-NO.js.map +1 -1
  560. package/es/style/core/utilities.scss +1 -1
  561. package/es/style/dnb-ui-components.css +94 -52
  562. package/es/style/dnb-ui-components.min.css +3 -3
  563. package/es/style/dnb-ui-extensions.css +34 -5
  564. package/es/style/dnb-ui-extensions.min.css +1 -1
  565. package/es/style/dnb-ui-forms.css +34 -5
  566. package/es/style/dnb-ui-forms.min.css +1 -1
  567. package/es/style/themes/theme-eiendom/eiendom-theme-components.css +129 -79
  568. package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +4 -4
  569. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.css +34 -5
  570. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  571. package/es/style/themes/theme-eiendom/eiendom-theme-forms.css +34 -5
  572. package/es/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  573. package/es/style/themes/theme-sbanken/sbanken-theme-components.css +129 -76
  574. package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +4 -4
  575. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.css +34 -5
  576. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  577. package/es/style/themes/theme-sbanken/sbanken-theme-forms.css +34 -5
  578. package/es/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  579. package/es/style/themes/theme-ui/ui-theme-components.css +129 -79
  580. package/es/style/themes/theme-ui/ui-theme-components.min.css +4 -4
  581. package/es/style/themes/theme-ui/ui-theme-extensions.css +34 -5
  582. package/es/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  583. package/es/style/themes/theme-ui/ui-theme-forms.css +34 -5
  584. package/es/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  585. package/esm/dnb-ui-basis.min.mjs +1 -1
  586. package/esm/dnb-ui-components.min.mjs +1 -1
  587. package/esm/dnb-ui-elements.min.mjs +1 -1
  588. package/esm/dnb-ui-extensions.min.mjs +3 -3
  589. package/esm/dnb-ui-lib.min.mjs +1 -1
  590. package/extensions/forms/DataContext/Context.d.ts +18 -5
  591. package/extensions/forms/DataContext/Context.js +9 -0
  592. package/extensions/forms/DataContext/Context.js.map +1 -1
  593. package/extensions/forms/DataContext/Provider/Provider.d.ts +57 -19
  594. package/extensions/forms/DataContext/Provider/Provider.js +128 -58
  595. package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  596. package/extensions/forms/Field/BankAccountNumber/BankAccountNumber.js +3 -2
  597. package/extensions/forms/Field/BankAccountNumber/BankAccountNumber.js.map +1 -1
  598. package/extensions/forms/Field/Date/Date.js +4 -3
  599. package/extensions/forms/Field/Date/Date.js.map +1 -1
  600. package/extensions/forms/Field/Email/Email.js +4 -3
  601. package/extensions/forms/Field/Email/Email.js.map +1 -1
  602. package/extensions/forms/Field/Expiry/Expiry.js +5 -4
  603. package/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
  604. package/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js +3 -2
  605. package/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js.map +1 -1
  606. package/extensions/forms/Field/Number/Number.d.ts +2 -4
  607. package/extensions/forms/Field/Number/Number.js +14 -15
  608. package/extensions/forms/Field/Number/Number.js.map +1 -1
  609. package/extensions/forms/Field/OrganizationNumber/OrganizationNumber.js +3 -2
  610. package/extensions/forms/Field/OrganizationNumber/OrganizationNumber.js.map +1 -1
  611. package/extensions/forms/Field/PhoneNumber/PhoneNumber.js +3 -2
  612. package/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  613. package/extensions/forms/Field/PostalCodeAndCity/style/dnb-postal-code-and-city.css +9 -0
  614. package/extensions/forms/Field/PostalCodeAndCity/style/dnb-postal-code-and-city.min.css +1 -1
  615. package/extensions/forms/Field/PostalCodeAndCity/style/dnb-postal-code-and-city.scss +7 -0
  616. package/extensions/forms/Field/SelectCountry/SelectCountry.js +3 -2
  617. package/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
  618. package/extensions/forms/Field/String/String.d.ts +2 -2
  619. package/extensions/forms/Field/String/String.js +5 -3
  620. package/extensions/forms/Field/String/String.js.map +1 -1
  621. package/extensions/forms/Field/Toggle/Toggle.js +5 -2
  622. package/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  623. package/extensions/forms/FieldBlock/FieldBlock.js +2 -4
  624. package/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  625. package/extensions/forms/FieldBlock/style/dnb-field-block.css +19 -5
  626. package/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
  627. package/extensions/forms/FieldBlock/style/dnb-field-block.scss +25 -1
  628. package/extensions/forms/Form/Handler/Handler.d.ts +1 -1
  629. package/extensions/forms/Form/Handler/Handler.js +7 -1
  630. package/extensions/forms/Form/Handler/Handler.js.map +1 -1
  631. package/extensions/forms/Form/Visibility/Visibility.d.ts +6 -1
  632. package/extensions/forms/Form/Visibility/Visibility.js +53 -39
  633. package/extensions/forms/Form/Visibility/Visibility.js.map +1 -1
  634. package/extensions/forms/Form/data-context/getData.d.ts +8 -0
  635. package/extensions/forms/Form/data-context/getData.js +15 -0
  636. package/extensions/forms/Form/data-context/getData.js.map +1 -0
  637. package/extensions/forms/Form/data-context/setData.d.ts +2 -0
  638. package/extensions/forms/Form/data-context/setData.js +6 -0
  639. package/extensions/forms/Form/data-context/setData.js.map +1 -0
  640. package/extensions/forms/Form/data-context/useData.d.ts +22 -0
  641. package/extensions/forms/Form/data-context/useData.js +59 -0
  642. package/extensions/forms/Form/data-context/useData.js.map +1 -0
  643. package/extensions/forms/Form/data-context/useError.d.ts +5 -0
  644. package/extensions/forms/Form/data-context/useError.js +13 -0
  645. package/extensions/forms/Form/data-context/useError.js.map +1 -0
  646. package/extensions/forms/Form/index.d.ts +4 -1
  647. package/extensions/forms/Form/index.js +4 -1
  648. package/extensions/forms/Form/index.js.map +1 -1
  649. package/extensions/forms/Iterate/Array/Array.d.ts +2 -2
  650. package/extensions/forms/Iterate/Array/Array.js.map +1 -1
  651. package/extensions/forms/StepsLayout/StepsLayout.d.ts +3 -0
  652. package/extensions/forms/StepsLayout/StepsLayout.js +31 -22
  653. package/extensions/forms/StepsLayout/StepsLayout.js.map +1 -1
  654. package/extensions/forms/StepsLayout/style/dnb-steps-layout.css +6 -0
  655. package/extensions/forms/StepsLayout/style/dnb-steps-layout.min.css +1 -1
  656. package/extensions/forms/StepsLayout/style/dnb-steps-layout.scss +7 -0
  657. package/extensions/forms/Value/Currency/Currency.js +2 -3
  658. package/extensions/forms/Value/Currency/Currency.js.map +1 -1
  659. package/extensions/forms/Value/Number/Number.d.ts +6 -10
  660. package/extensions/forms/Value/Number/Number.js +22 -27
  661. package/extensions/forms/Value/Number/Number.js.map +1 -1
  662. package/extensions/forms/Value/PhoneNumber/PhoneNumber.js +6 -4
  663. package/extensions/forms/Value/PhoneNumber/PhoneNumber.js.map +1 -1
  664. package/extensions/forms/hooks/index.d.ts +1 -0
  665. package/extensions/forms/hooks/index.js +1 -0
  666. package/extensions/forms/hooks/index.js.map +1 -1
  667. package/extensions/forms/hooks/useDataValue.d.ts +6 -1
  668. package/extensions/forms/hooks/useDataValue.js +74 -19
  669. package/extensions/forms/hooks/useDataValue.js.map +1 -1
  670. package/extensions/forms/hooks/useErrorMessage.d.ts +10 -0
  671. package/extensions/forms/hooks/useErrorMessage.js +15 -0
  672. package/extensions/forms/hooks/useErrorMessage.js.map +1 -0
  673. package/extensions/forms/index.d.ts +1 -0
  674. package/extensions/forms/index.js +1 -0
  675. package/extensions/forms/index.js.map +1 -1
  676. package/extensions/forms/style/dnb-forms.css +34 -5
  677. package/extensions/forms/style/dnb-forms.min.css +1 -1
  678. package/extensions/forms/types.d.ts +22 -7
  679. package/extensions/forms/types.js.map +1 -1
  680. package/extensions/forms/utils/ajv.d.ts +47 -6
  681. package/extensions/forms/utils/ajv.js +23 -15
  682. package/extensions/forms/utils/ajv.js.map +1 -1
  683. package/extensions/forms/utils/index.d.ts +0 -1
  684. package/extensions/forms/utils/index.js +0 -1
  685. package/extensions/forms/utils/index.js.map +1 -1
  686. package/package.json +1 -1
  687. package/shared/Eufemia.d.ts +1 -1
  688. package/shared/Eufemia.js +2 -2
  689. package/shared/Eufemia.js.map +1 -1
  690. package/shared/component-helper.js +0 -3
  691. package/shared/component-helper.js.map +1 -1
  692. package/shared/helpers/useSharedState.d.ts +28 -7
  693. package/shared/helpers/useSharedState.js +62 -43
  694. package/shared/helpers/useSharedState.js.map +1 -1
  695. package/shared/locales/en-GB.d.ts +1 -0
  696. package/shared/locales/en-GB.js +1 -0
  697. package/shared/locales/en-GB.js.map +1 -1
  698. package/shared/locales/en-US.d.ts +1 -0
  699. package/shared/locales/index.d.ts +2 -0
  700. package/shared/locales/nb-NO.d.ts +1 -0
  701. package/shared/locales/nb-NO.js +1 -0
  702. package/shared/locales/nb-NO.js.map +1 -1
  703. package/style/core/utilities.scss +1 -1
  704. package/style/dnb-ui-components.css +94 -52
  705. package/style/dnb-ui-components.min.css +3 -3
  706. package/style/dnb-ui-extensions.css +34 -5
  707. package/style/dnb-ui-extensions.min.css +1 -1
  708. package/style/dnb-ui-forms.css +34 -5
  709. package/style/dnb-ui-forms.min.css +1 -1
  710. package/style/themes/theme-eiendom/eiendom-theme-components.css +129 -79
  711. package/style/themes/theme-eiendom/eiendom-theme-components.min.css +4 -4
  712. package/style/themes/theme-eiendom/eiendom-theme-extensions.css +34 -5
  713. package/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  714. package/style/themes/theme-eiendom/eiendom-theme-forms.css +34 -5
  715. package/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  716. package/style/themes/theme-sbanken/sbanken-theme-components.css +129 -76
  717. package/style/themes/theme-sbanken/sbanken-theme-components.min.css +4 -4
  718. package/style/themes/theme-sbanken/sbanken-theme-extensions.css +34 -5
  719. package/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  720. package/style/themes/theme-sbanken/sbanken-theme-forms.css +34 -5
  721. package/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  722. package/style/themes/theme-ui/ui-theme-components.css +129 -79
  723. package/style/themes/theme-ui/ui-theme-components.min.css +4 -4
  724. package/style/themes/theme-ui/ui-theme-extensions.css +34 -5
  725. package/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  726. package/style/themes/theme-ui/ui-theme-forms.css +34 -5
  727. package/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  728. package/umd/dnb-ui-basis.min.js +1 -1
  729. package/umd/dnb-ui-components.min.js +1 -1
  730. package/umd/dnb-ui-elements.min.js +1 -1
  731. package/umd/dnb-ui-extensions.min.js +3 -3
  732. package/umd/dnb-ui-lib.min.js +1 -1
  733. package/cjs/components/global-status/AnimationHelper.d.ts +0 -12
  734. package/cjs/components/global-status/AnimationHelper.js +0 -109
  735. package/cjs/components/global-status/AnimationHelper.js.map +0 -1
  736. package/cjs/extensions/forms/Form/hooks/useData.d.ts +0 -10
  737. package/cjs/extensions/forms/Form/hooks/useData.js +0 -39
  738. package/cjs/extensions/forms/Form/hooks/useData.js.map +0 -1
  739. package/cjs/extensions/forms/utils/numbers.d.ts +0 -17
  740. package/cjs/extensions/forms/utils/numbers.js +0 -42
  741. package/cjs/extensions/forms/utils/numbers.js.map +0 -1
  742. package/components/global-status/AnimationHelper.d.ts +0 -12
  743. package/components/global-status/AnimationHelper.js +0 -100
  744. package/components/global-status/AnimationHelper.js.map +0 -1
  745. package/es/components/global-status/AnimationHelper.d.ts +0 -12
  746. package/es/components/global-status/AnimationHelper.js +0 -100
  747. package/es/components/global-status/AnimationHelper.js.map +0 -1
  748. package/es/extensions/forms/Form/hooks/useData.d.ts +0 -10
  749. package/es/extensions/forms/Form/hooks/useData.js +0 -32
  750. package/es/extensions/forms/Form/hooks/useData.js.map +0 -1
  751. package/es/extensions/forms/utils/numbers.d.ts +0 -17
  752. package/es/extensions/forms/utils/numbers.js +0 -35
  753. package/es/extensions/forms/utils/numbers.js.map +0 -1
  754. package/extensions/forms/Form/hooks/useData.d.ts +0 -10
  755. package/extensions/forms/Form/hooks/useData.js +0 -33
  756. package/extensions/forms/Form/hooks/useData.js.map +0 -1
  757. package/extensions/forms/utils/numbers.d.ts +0 -17
  758. package/extensions/forms/utils/numbers.js +0 -35
  759. package/extensions/forms/utils/numbers.js.map +0 -1
@@ -0,0 +1,15 @@
1
+ "use client";
2
+
3
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
4
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
5
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
6
+ import { useContext, useMemo } from 'react';
7
+ import Context from '../DataContext/Context';
8
+ export default function useErrorMessage(path, errorMessages, defaultErrorMessages) {
9
+ const context = useContext(Context);
10
+ return useMemo(() => {
11
+ const fromContext = context === null || context === void 0 ? void 0 : context.contextErrorMessages;
12
+ return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, defaultErrorMessages), fromContext), fromContext === null || fromContext === void 0 ? void 0 : fromContext[path]), errorMessages);
13
+ }, [context === null || context === void 0 ? void 0 : context.contextErrorMessages, path, defaultErrorMessages, errorMessages]);
14
+ }
15
+ //# sourceMappingURL=useErrorMessage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useErrorMessage.js","names":["useContext","useMemo","Context","useErrorMessage","path","errorMessages","defaultErrorMessages","context","fromContext","contextErrorMessages","_objectSpread"],"sources":["../../../../../src/extensions/forms/hooks/useErrorMessage.ts"],"sourcesContent":["import { useContext, useMemo } from 'react'\nimport {\n DefaultErrorMessages,\n CustomErrorMessagesWithPaths,\n} from '../types'\nimport Context from '../DataContext/Context'\n\n/**\n * Custom hook that retrieves error messages based on the provided path and error configurations.\n *\n * @param path - The path to the error messages in the configuration.\n * @param errorMessages - Custom error messages with paths.\n * @param defaultErrorMessages - Default error messages.\n * @returns An object containing the merged error messages.\n */\nexport default function useErrorMessage(\n path: string,\n errorMessages: DefaultErrorMessages | CustomErrorMessagesWithPaths,\n defaultErrorMessages: Record<string, string>\n) {\n const context = useContext(Context)\n\n return useMemo(() => {\n const fromContext = context?.contextErrorMessages\n return {\n ...defaultErrorMessages,\n ...fromContext,\n ...fromContext?.[path],\n ...errorMessages,\n }\n }, [\n context?.contextErrorMessages,\n path,\n defaultErrorMessages,\n errorMessages,\n ])\n}\n"],"mappings":";;;;;AAAA,SAASA,UAAU,EAAEC,OAAO,QAAQ,OAAO;AAK3C,OAAOC,OAAO,MAAM,wBAAwB;AAU5C,eAAe,SAASC,eAAeA,CACrCC,IAAY,EACZC,aAAkE,EAClEC,oBAA4C,EAC5C;EACA,MAAMC,OAAO,GAAGP,UAAU,CAACE,OAAO,CAAC;EAEnC,OAAOD,OAAO,CAAC,MAAM;IACnB,MAAMO,WAAW,GAAGD,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEE,oBAAoB;IACjD,OAAAC,aAAA,CAAAA,aAAA,CAAAA,aAAA,CAAAA,aAAA,KACKJ,oBAAoB,GACpBE,WAAW,GACXA,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAGJ,IAAI,CAAC,GACnBC,aAAa;EAEpB,CAAC,EAAE,CACDE,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEE,oBAAoB,EAC7BL,IAAI,EACJE,oBAAoB,EACpBD,aAAa,CACd,CAAC;AACJ"}
@@ -9,6 +9,7 @@ export * as Iterate from './Iterate';
9
9
  export { default as FieldBlock } from './FieldBlock';
10
10
  export { default as ValueBlock } from './ValueBlock';
11
11
  export { default as StepsLayout, StepsContext } from './StepsLayout';
12
+ export { default as Ajv } from 'ajv/dist/2020';
12
13
  /**
13
14
  * Deprecated and will be removed in v11
14
15
  *
@@ -9,6 +9,7 @@ export * as Iterate from './Iterate';
9
9
  export { default as FieldBlock } from './FieldBlock';
10
10
  export { default as ValueBlock } from './ValueBlock';
11
11
  export { default as StepsLayout, StepsContext } from './StepsLayout';
12
+ export { default as Ajv } from 'ajv/dist/2020';
12
13
  export function Visibility() {
13
14
  console.error('Please import Visibility from "Form.Visibility"');
14
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["Field","Value","Form","DataContext","Iterate","default","FieldBlock","ValueBlock","StepsLayout","StepsContext","Visibility","console","error"],"sources":["../../../../src/extensions/forms/index.ts"],"sourcesContent":["export * from './types'\nexport * from './utils'\nexport * from './hooks'\nexport * as Field from './Field'\nexport * as Value from './Value'\nexport * as Form from './Form'\nexport * as DataContext from './DataContext'\nexport * as Iterate from './Iterate'\nexport { default as FieldBlock } from './FieldBlock'\nexport { default as ValueBlock } from './ValueBlock'\nexport { default as StepsLayout, StepsContext } from './StepsLayout'\n\n/**\n * Deprecated and will be removed in v11\n *\n * @deprecated use import { Field } from 'Form'\tinstead\n */\nexport function Visibility() {\n console.error('Please import Visibility from \"Form.Visibility\"')\n}\n"],"mappings":"AAAA,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,OAAO,KAAKA,KAAK,MAAM,SAAS;AAChC,OAAO,KAAKC,KAAK,MAAM,SAAS;AAChC,OAAO,KAAKC,IAAI,MAAM,QAAQ;AAC9B,OAAO,KAAKC,WAAW,MAAM,eAAe;AAC5C,OAAO,KAAKC,OAAO,MAAM,WAAW;AACpC,SAASC,OAAO,IAAIC,UAAU,QAAQ,cAAc;AACpD,SAASD,OAAO,IAAIE,UAAU,QAAQ,cAAc;AACpD,SAASF,OAAO,IAAIG,WAAW,EAAEC,YAAY,QAAQ,eAAe;AAOpE,OAAO,SAASC,UAAUA,CAAA,EAAG;EAC3BC,OAAO,CAACC,KAAK,CAAC,iDAAiD,CAAC;AAClE"}
1
+ {"version":3,"file":"index.js","names":["Field","Value","Form","DataContext","Iterate","default","FieldBlock","ValueBlock","StepsLayout","StepsContext","Ajv","Visibility","console","error"],"sources":["../../../../src/extensions/forms/index.ts"],"sourcesContent":["export * from './types'\nexport * from './utils'\nexport * from './hooks'\nexport * as Field from './Field'\nexport * as Value from './Value'\nexport * as Form from './Form'\nexport * as DataContext from './DataContext'\nexport * as Iterate from './Iterate'\nexport { default as FieldBlock } from './FieldBlock'\nexport { default as ValueBlock } from './ValueBlock'\nexport { default as StepsLayout, StepsContext } from './StepsLayout'\nexport { default as Ajv } from 'ajv/dist/2020'\n\n/**\n * Deprecated and will be removed in v11\n *\n * @deprecated use import { Field } from 'Form'\tinstead\n */\nexport function Visibility() {\n console.error('Please import Visibility from \"Form.Visibility\"')\n}\n"],"mappings":"AAAA,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,OAAO,KAAKA,KAAK,MAAM,SAAS;AAChC,OAAO,KAAKC,KAAK,MAAM,SAAS;AAChC,OAAO,KAAKC,IAAI,MAAM,QAAQ;AAC9B,OAAO,KAAKC,WAAW,MAAM,eAAe;AAC5C,OAAO,KAAKC,OAAO,MAAM,WAAW;AACpC,SAASC,OAAO,IAAIC,UAAU,QAAQ,cAAc;AACpD,SAASD,OAAO,IAAIE,UAAU,QAAQ,cAAc;AACpD,SAASF,OAAO,IAAIG,WAAW,EAAEC,YAAY,QAAQ,eAAe;AACpE,SAASJ,OAAO,IAAIK,GAAG,QAAQ,eAAe;AAO9C,OAAO,SAASC,UAAUA,CAAA,EAAG;EAC3BC,OAAO,CAACC,KAAK,CAAC,iDAAiD,CAAC;AAClE"}
@@ -235,12 +235,21 @@ html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-control
235
235
  max-width: 14ch;
236
236
  }
237
237
 
238
+ /*
239
+ * Utilities
240
+ */
238
241
  .dnb-forms-field-postal-code-and-city__fields {
239
242
  display: flex;
240
243
  flex-flow: row;
241
244
  -moz-column-gap: var(--spacing-small);
242
245
  column-gap: var(--spacing-small);
243
246
  }
247
+ @media screen and (max-width: 25em) {
248
+ .dnb-forms-field-postal-code-and-city__fields {
249
+ row-gap: var(--spacing-x-small);
250
+ flex-flow: column;
251
+ }
252
+ }
244
253
  .dnb-forms-field-postal-code-and-city__postal-code {
245
254
  flex: 0 5rem;
246
255
  }
@@ -258,15 +267,22 @@ html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-control
258
267
  line-height: 2.5rem;
259
268
  }
260
269
 
270
+ /*
271
+ * Utilities
272
+ */
261
273
  :root {
262
274
  --forms-field-width--small: 5rem;
263
275
  --forms-field-width--medium: 11rem;
264
276
  --forms-field-width--large: 21rem;
265
277
  }
266
278
 
267
- /*
268
- * Utilities
269
- */
279
+ @media screen and (max-width: 15em) {
280
+ .dnb-forms-field-string .dnb-input__shell,
281
+ .dnb-forms-field-number .dnb-input__shell {
282
+ width: 90%;
283
+ }
284
+ }
285
+
270
286
  fieldset.dnb-forms-field-block {
271
287
  padding: 0;
272
288
  border: none;
@@ -284,6 +300,9 @@ fieldset.dnb-forms-field-block:not([class*=space__left]) {
284
300
  margin-left: 0;
285
301
  }
286
302
 
303
+ .dnb-forms-field-block {
304
+ width: 100%;
305
+ }
287
306
  .dnb-forms-field-block__grid {
288
307
  display: grid;
289
308
  }
@@ -307,7 +326,7 @@ fieldset.dnb-forms-field-block:not([class*=space__left]) {
307
326
  .dnb-forms-field-block--width-stretch {
308
327
  flex-grow: 1;
309
328
  }
310
- @media screen and (min-width: 30em) {
329
+ @media screen and (min-width: 25em) {
311
330
  .dnb-forms-field-block--width-small {
312
331
  width: var(--forms-field-width--small);
313
332
  }
@@ -331,13 +350,17 @@ fieldset.dnb-forms-field-block:not([class*=space__left]) {
331
350
  .dnb-forms-field-block__status {
332
351
  grid-area: status;
333
352
  }
353
+ .dnb-forms-field-block__status .dnb-form-status__shell {
354
+ margin-top: 0.5rem;
355
+ }
334
356
  .dnb-forms-field-block__contents {
335
357
  grid-area: contents;
358
+ width: 100%;
336
359
  }
337
360
  .dnb-forms-field-block__contents--width-stretch {
338
361
  width: 100%;
339
362
  }
340
- @media screen and (min-width: 30em) {
363
+ @media screen and (min-width: 25em) {
341
364
  .dnb-forms-field-block__contents--width-small {
342
365
  width: var(--forms-field-width--small);
343
366
  }
@@ -398,8 +421,14 @@ fieldset.dnb-forms-field-block:not([class*=space__left]) {
398
421
  -moz-column-gap: var(--spacing-medium);
399
422
  column-gap: var(--spacing-medium);
400
423
  }
424
+ .dnb-forms-steps-layout--drawer {
425
+ flex-direction: column;
426
+ justify-content: stretch;
427
+ align-items: stretch;
428
+ }
401
429
  .dnb-forms-steps-layout__sidebar {
402
430
  flex: 0;
431
+ margin-bottom: 2rem;
403
432
  }
404
433
  .dnb-forms-steps-layout__contents {
405
434
  flex: 1 0 25rem;
@@ -1 +1 @@
1
- .dnb-forms-field-array-selection--layout-vertical .dnb-forms-field-array-selection__options{display:flex;flex-flow:column;row-gap:var(--spacing-x-small)}.dnb-forms-field-array-selection--layout-horizontal .dnb-forms-field-array-selection__options{-moz-column-gap:var(--spacing-small);column-gap:var(--spacing-small);display:flex;flex-flow:row wrap;row-gap:var(--spacing-x-small)}@media screen and (min-width:40em){.dnb-forms-field-array-selection .dnb-forms-field-block--layout-horizontal .dnb-form-label{line-height:2.5rem;margin-bottom:0}}.dnb-forms-field-expiry .dnb-multi-input-mask{width:var(--forms-field-width--small)}.dnb-forms-field-expiry .dnb-multi-input-mask .dnb-input__shell{justify-content:center}.dnb-forms-field-number{--number-control-button-border-color:#000;--number-control-button-border-color--hover:#a9a9a9;--number-control-button-border-color--focus:#a9a9a9;--number-control-button-border-width--focus:0.125rem;--number-control-button-background-color--hover:grey;--number-control-button-color--hover:#000;--number-control-button-background-color--active:#000;--number-control-button-color--active:#d3d3d3;--number-control-button--error:red;--number-control-button--error-contrast:#fff;--number-control-button-width--small:2rem;--number-control-button-width--medium:2.5rem;--number-control-button-width--large:3rem;--forms-field-block--number-control-buttons-width--small:calc(var(--number-control-button-width--small)*2);--forms-field-block--number-control-buttons-width--medium:calc(var(--number-control-button-width--medium)*2);--forms-field-block--number-control-buttons-width--large:calc(var(--number-control-button-width--large)*2)}.dnb-forms-field-number__contents{align-items:center;display:flex}.dnb-forms-field-number__contents--has-controls{--border-color:var(--number-control-button-border-color);--border-width:0.0625rem;border-color:transparent;border-radius:.25rem;box-shadow:0 0 0 var(--border-width) var(--border-color)}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls:hover[disabled]{cursor:not-allowed}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls:hover:not([disabled]){--border-color:var(--number-control-button-border-color);--border-width:0.125rem;border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color)}html[data-whatinput=keyboard] .dnb-forms-field-number__contents--has-controls:focus-within{--border-color:var(--number-control-button-border-color--focus);--border-width:var(--number-control-button-border-width--focus);border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color)}.dnb-forms-field-number__contents--has-controls .dnb-input__shell{border-radius:0;box-shadow:none}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-input__shell:hover[disabled]{cursor:not-allowed}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-input__shell:hover:not([disabled]){box-shadow:none}.dnb-forms-field-number__contents--has-controls .dnb-input:not([data-input-state=disabled]):not(:active)[data-input-state=focus] .dnb-input__shell{box-shadow:none;outline:initial}html[data-whatinput=""] .dnb-forms-field-number__contents--has-controls .dnb-input:not([data-input-state=disabled]):not(:active)[data-input-state=focus] .dnb-input__shell{box-shadow:none}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-after:hover[disabled],html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-before:hover[disabled]{cursor:not-allowed}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-after:hover:not([disabled]),html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-before:hover:not([disabled]){background-color:var(--number-control-button-background-color--hover);color:var(--number-control-button-color--hover)}.dnb-forms-field-number__contents--has-controls .dnb-button--control-after:active[disabled],.dnb-forms-field-number__contents--has-controls .dnb-button--control-before:active[disabled],html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-after:active[disabled],html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-before:active[disabled]{cursor:not-allowed}.dnb-forms-field-number__contents--has-controls .dnb-button--control-after:active:not([disabled]),.dnb-forms-field-number__contents--has-controls .dnb-button--control-before:active:not([disabled]),html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-after:active:not([disabled]),html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-before:active:not([disabled]){background-color:var(--number-control-button-background-color--active);color:var(--number-control-button-color--active)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error{--border-color:var(--number-control-button--error);--border-width:0.125rem;border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color)}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error:hover[disabled]{cursor:not-allowed}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error:hover:not([disabled]){--border-color:var(--number-control-button--error);--border-width:0.125rem;border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-input__status--error:not([data-input-state=disabled]):not(:hover):not(:active) .dnb-input__shell{box-shadow:none}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after,.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before{color:var(--number-control-button--error)}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after:hover[disabled],html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before:hover[disabled]{cursor:not-allowed}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after:hover:not([disabled]),html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before:hover:not([disabled]){background-color:var(--number-control-button--error-contrast);color:var(--number-control-button--error)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after:active[disabled],.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before:active[disabled],html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after:active[disabled],html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before:active[disabled]{cursor:not-allowed}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after:active:not([disabled]),.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before:active:not([disabled]),html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after:active:not([disabled]),html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before:active:not([disabled]){background-color:var(--number-control-button--error);color:var(--number-control-button--error-contrast)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after[disabled],.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before[disabled]{color:var(--number-control-button--error-contrast)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--is-disabled{--border-color:var(--color-black-55);--border-width:0.0625rem;border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color)}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--is-disabled:hover[disabled]{cursor:not-allowed}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--is-disabled:hover:not([disabled]){--border-color:var(--color-black-55);--border-width:0.0625rem;border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--is-disabled .dnb-input[data-input-state=disabled] .dnb-input__shell{box-shadow:none}.dnb-input[data-input-state=disabled] .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--is-disabled{--border-color:var(--color-black-55);--border-width:0.0625rem;border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--is-disabled .dnb-button--control-after[disabled],.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--is-disabled .dnb-button--control-before[disabled]{background-color:var(--color-black-3);color:var(--color-black-20)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-small{width:calc(var(--forms-field-width--small) + var(--forms-field-block--number-control-buttons-width--small))}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-small .dnb-button--control-after,.dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-small .dnb-button--control-before{width:var(--number-control-button-width--small)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-medium{width:calc(var(--forms-field-width--medium) + var(--forms-field-block--number-control-buttons-width--medium))}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-medium .dnb-button--control-after,.dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-medium .dnb-button--control-before{width:var(--number-control-button-width--medium)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-large{width:calc(var(--forms-field-width--large) + var(--forms-field-block--number-control-buttons-width--large))}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-large .dnb-button--control-after,.dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-large .dnb-button--control-before{width:var(--number-control-button-width--large)}.dnb-forms-field-phone-number__country-code,.dnb-forms-field-phone-number__country-code .dnb-autocomplete__shell{width:calc(var(--forms-field-width--medium) - 2rem)}.dnb-forms-field-phone-number__number{flex:1}.dnb-forms-field-phone-number .dnb-form-label{max-width:14ch}.dnb-forms-field-postal-code-and-city__fields{-moz-column-gap:var(--spacing-small);column-gap:var(--spacing-small);display:flex;flex-flow:row}.dnb-forms-field-postal-code-and-city__postal-code{flex:0 5rem}.dnb-forms-field-postal-code-and-city__city{flex:1}.dnb-forms-field-selection__variant--dropdown .dnb-forms-field-block--layout-horizontal .dnb-form-label{align-self:center}.dnb-forms-field-selection__options-layout--horizontal .dnb-forms-field-block--layout-horizontal .dnb-form-label,.dnb-forms-field-selection__variant--dropdown .dnb-forms-field-block--layout-horizontal .dnb-form-label{margin-bottom:0}.dnb-forms-field-selection__variant--button .dnb-forms-field-block--layout-horizontal .dnb-form-label{line-height:2.5rem}:root{--forms-field-width--small:5rem;--forms-field-width--medium:11rem;--forms-field-width--large:21rem}fieldset.dnb-forms-field-block{border:none;padding:0}fieldset.dnb-forms-field-block:not([class*=space__top]){margin-top:0}fieldset.dnb-forms-field-block:not([class*=space__right]){margin-right:0}fieldset.dnb-forms-field-block:not([class*=space__bottom]){margin-bottom:0}fieldset.dnb-forms-field-block:not([class*=space__left]){margin-left:0}.dnb-forms-field-block__grid{display:grid}@media screen and (max-width:40em){.dnb-forms-field-block__grid{flex-wrap:wrap}.dnb-forms-field-block__grid>.dnb-form-label{margin-bottom:.5rem;margin-top:.5rem}}.dnb-forms-field-block--layout-vertical{grid-template-areas:"label" "contents" "status";grid-template-columns:auto}.dnb-forms-field-block--layout-horizontal{grid-template-areas:"label contents" "status status";grid-template-columns:fit-content(100%) auto}.dnb-forms-field-block--width-stretch{flex-grow:1}@media screen and (min-width:30em){.dnb-forms-field-block--width-small{width:var(--forms-field-width--small)}.dnb-forms-field-block--width-medium{width:var(--forms-field-width--medium)}.dnb-forms-field-block--width-large{width:var(--forms-field-width--large)}}.dnb-forms-field-block__label{align-items:center;display:flex;flex-flow:row;grid-area:label;justify-content:space-between}.dnb-forms-field-block__label-description{margin-left:.3em}.dnb-forms-field-block__status{grid-area:status}.dnb-forms-field-block__contents{grid-area:contents}.dnb-forms-field-block__contents--width-stretch{width:100%}@media screen and (min-width:30em){.dnb-forms-field-block__contents--width-small{width:var(--forms-field-width--small)}.dnb-forms-field-block__contents--width-medium{width:var(--forms-field-width--medium)}.dnb-forms-field-block__contents--width-large{width:var(--forms-field-width--large)}}.dnb-forms-button-row{-moz-column-gap:var(--spacing-small);column-gap:var(--spacing-small);display:flex;flex-flow:row}@media screen and (min-width:40em){.dnb-card+.dnb-forms-button-row:not([class*=space__left]){margin-left:var(--spacing-medium)}}.dnb-spacing .dnb-form-main-heading.dnb-h--large:not([class*=space__]){margin:0}@media screen and (min-width:40em){.dnb-form-main-heading:has(+.dnb-flex-stack>.dnb-card,+.dnb-card):not([class*=space__left]){margin-left:var(--spacing-medium)}}.dnb-form-main-heading:has(+.dnb-flex-stack>.dnb-card,+.dnb-card):not([class*=space__bottom]){margin-bottom:var(--spacing-small)}.dnb-spacing .dnb-form-sub-heading.dnb-h--medium:not([class*=space__]){margin:0}.dnb-form-sub-heading:has(+.dnb-flex-stack>.dnb-card,+.dnb-card):not([class*=space__bottom]){margin-bottom:var(--spacing-small)}.dnb-forms-steps-layout{-moz-column-gap:var(--spacing-medium);column-gap:var(--spacing-medium);display:flex;flex-flow:row wrap}.dnb-forms-steps-layout__sidebar{flex:0}.dnb-forms-steps-layout__contents{flex:1 0 25rem}.dnb-forms-steps-layout__contents .dnb-card{--border-color:var(--color-pistachio)}@media screen and (max-width:60em){.dnb-forms-steps-layout{align-items:stretch;flex-direction:column;justify-content:stretch}.dnb-forms-steps-layout__contents{flex-basis:auto}}.dnb-forms-steps-layout .dnb-step-indicator__sidebar{margin-right:0}.dnb-forms-value-block{display:block;font-size:var(--font-size-basis)}.dnb-forms-value-block--inline{display:inline-block;font-size:inherit;margin-left:var(--spacing-xx-small);margin-right:var(--spacing-xx-small)}.dnb-forms-value-block__label{font-weight:var(--font-weight-medium)}.dnb-forms-value-block__placeholder{color:rgba(0,0,0,.5)}.dnb-forms-test-element{border:1px dashed grey;border-radius:.5rem;color:#909090;padding:.5rem 1rem}
1
+ .dnb-forms-field-array-selection--layout-vertical .dnb-forms-field-array-selection__options{display:flex;flex-flow:column;row-gap:var(--spacing-x-small)}.dnb-forms-field-array-selection--layout-horizontal .dnb-forms-field-array-selection__options{-moz-column-gap:var(--spacing-small);column-gap:var(--spacing-small);display:flex;flex-flow:row wrap;row-gap:var(--spacing-x-small)}@media screen and (min-width:40em){.dnb-forms-field-array-selection .dnb-forms-field-block--layout-horizontal .dnb-form-label{line-height:2.5rem;margin-bottom:0}}.dnb-forms-field-expiry .dnb-multi-input-mask{width:var(--forms-field-width--small)}.dnb-forms-field-expiry .dnb-multi-input-mask .dnb-input__shell{justify-content:center}.dnb-forms-field-number{--number-control-button-border-color:#000;--number-control-button-border-color--hover:#a9a9a9;--number-control-button-border-color--focus:#a9a9a9;--number-control-button-border-width--focus:0.125rem;--number-control-button-background-color--hover:grey;--number-control-button-color--hover:#000;--number-control-button-background-color--active:#000;--number-control-button-color--active:#d3d3d3;--number-control-button--error:red;--number-control-button--error-contrast:#fff;--number-control-button-width--small:2rem;--number-control-button-width--medium:2.5rem;--number-control-button-width--large:3rem;--forms-field-block--number-control-buttons-width--small:calc(var(--number-control-button-width--small)*2);--forms-field-block--number-control-buttons-width--medium:calc(var(--number-control-button-width--medium)*2);--forms-field-block--number-control-buttons-width--large:calc(var(--number-control-button-width--large)*2)}.dnb-forms-field-number__contents{align-items:center;display:flex}.dnb-forms-field-number__contents--has-controls{--border-color:var(--number-control-button-border-color);--border-width:0.0625rem;border-color:transparent;border-radius:.25rem;box-shadow:0 0 0 var(--border-width) var(--border-color)}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls:hover[disabled]{cursor:not-allowed}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls:hover:not([disabled]){--border-color:var(--number-control-button-border-color);--border-width:0.125rem;border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color)}html[data-whatinput=keyboard] .dnb-forms-field-number__contents--has-controls:focus-within{--border-color:var(--number-control-button-border-color--focus);--border-width:var(--number-control-button-border-width--focus);border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color)}.dnb-forms-field-number__contents--has-controls .dnb-input__shell{border-radius:0;box-shadow:none}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-input__shell:hover[disabled]{cursor:not-allowed}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-input__shell:hover:not([disabled]){box-shadow:none}.dnb-forms-field-number__contents--has-controls .dnb-input:not([data-input-state=disabled]):not(:active)[data-input-state=focus] .dnb-input__shell{box-shadow:none;outline:initial}html[data-whatinput=""] .dnb-forms-field-number__contents--has-controls .dnb-input:not([data-input-state=disabled]):not(:active)[data-input-state=focus] .dnb-input__shell{box-shadow:none}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-after:hover[disabled],html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-before:hover[disabled]{cursor:not-allowed}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-after:hover:not([disabled]),html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-before:hover:not([disabled]){background-color:var(--number-control-button-background-color--hover);color:var(--number-control-button-color--hover)}.dnb-forms-field-number__contents--has-controls .dnb-button--control-after:active[disabled],.dnb-forms-field-number__contents--has-controls .dnb-button--control-before:active[disabled],html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-after:active[disabled],html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-before:active[disabled]{cursor:not-allowed}.dnb-forms-field-number__contents--has-controls .dnb-button--control-after:active:not([disabled]),.dnb-forms-field-number__contents--has-controls .dnb-button--control-before:active:not([disabled]),html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-after:active:not([disabled]),html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-before:active:not([disabled]){background-color:var(--number-control-button-background-color--active);color:var(--number-control-button-color--active)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error{--border-color:var(--number-control-button--error);--border-width:0.125rem;border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color)}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error:hover[disabled]{cursor:not-allowed}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error:hover:not([disabled]){--border-color:var(--number-control-button--error);--border-width:0.125rem;border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-input__status--error:not([data-input-state=disabled]):not(:hover):not(:active) .dnb-input__shell{box-shadow:none}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after,.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before{color:var(--number-control-button--error)}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after:hover[disabled],html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before:hover[disabled]{cursor:not-allowed}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after:hover:not([disabled]),html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before:hover:not([disabled]){background-color:var(--number-control-button--error-contrast);color:var(--number-control-button--error)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after:active[disabled],.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before:active[disabled],html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after:active[disabled],html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before:active[disabled]{cursor:not-allowed}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after:active:not([disabled]),.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before:active:not([disabled]),html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after:active:not([disabled]),html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before:active:not([disabled]){background-color:var(--number-control-button--error);color:var(--number-control-button--error-contrast)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after[disabled],.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before[disabled]{color:var(--number-control-button--error-contrast)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--is-disabled{--border-color:var(--color-black-55);--border-width:0.0625rem;border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color)}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--is-disabled:hover[disabled]{cursor:not-allowed}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--is-disabled:hover:not([disabled]){--border-color:var(--color-black-55);--border-width:0.0625rem;border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--is-disabled .dnb-input[data-input-state=disabled] .dnb-input__shell{box-shadow:none}.dnb-input[data-input-state=disabled] .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--is-disabled{--border-color:var(--color-black-55);--border-width:0.0625rem;border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--is-disabled .dnb-button--control-after[disabled],.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--is-disabled .dnb-button--control-before[disabled]{background-color:var(--color-black-3);color:var(--color-black-20)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-small{width:calc(var(--forms-field-width--small) + var(--forms-field-block--number-control-buttons-width--small))}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-small .dnb-button--control-after,.dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-small .dnb-button--control-before{width:var(--number-control-button-width--small)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-medium{width:calc(var(--forms-field-width--medium) + var(--forms-field-block--number-control-buttons-width--medium))}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-medium .dnb-button--control-after,.dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-medium .dnb-button--control-before{width:var(--number-control-button-width--medium)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-large{width:calc(var(--forms-field-width--large) + var(--forms-field-block--number-control-buttons-width--large))}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-large .dnb-button--control-after,.dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-large .dnb-button--control-before{width:var(--number-control-button-width--large)}.dnb-forms-field-phone-number__country-code,.dnb-forms-field-phone-number__country-code .dnb-autocomplete__shell{width:calc(var(--forms-field-width--medium) - 2rem)}.dnb-forms-field-phone-number__number{flex:1}.dnb-forms-field-phone-number .dnb-form-label{max-width:14ch}.dnb-forms-field-postal-code-and-city__fields{-moz-column-gap:var(--spacing-small);column-gap:var(--spacing-small);display:flex;flex-flow:row}@media screen and (max-width:25em){.dnb-forms-field-postal-code-and-city__fields{flex-flow:column;row-gap:var(--spacing-x-small)}}.dnb-forms-field-postal-code-and-city__postal-code{flex:0 5rem}.dnb-forms-field-postal-code-and-city__city{flex:1}.dnb-forms-field-selection__variant--dropdown .dnb-forms-field-block--layout-horizontal .dnb-form-label{align-self:center}.dnb-forms-field-selection__options-layout--horizontal .dnb-forms-field-block--layout-horizontal .dnb-form-label,.dnb-forms-field-selection__variant--dropdown .dnb-forms-field-block--layout-horizontal .dnb-form-label{margin-bottom:0}.dnb-forms-field-selection__variant--button .dnb-forms-field-block--layout-horizontal .dnb-form-label{line-height:2.5rem}:root{--forms-field-width--small:5rem;--forms-field-width--medium:11rem;--forms-field-width--large:21rem}@media screen and (max-width:15em){.dnb-forms-field-number .dnb-input__shell,.dnb-forms-field-string .dnb-input__shell{width:90%}}fieldset.dnb-forms-field-block{border:none;padding:0}fieldset.dnb-forms-field-block:not([class*=space__top]){margin-top:0}fieldset.dnb-forms-field-block:not([class*=space__right]){margin-right:0}fieldset.dnb-forms-field-block:not([class*=space__bottom]){margin-bottom:0}fieldset.dnb-forms-field-block:not([class*=space__left]){margin-left:0}.dnb-forms-field-block{width:100%}.dnb-forms-field-block__grid{display:grid}@media screen and (max-width:40em){.dnb-forms-field-block__grid{flex-wrap:wrap}.dnb-forms-field-block__grid>.dnb-form-label{margin-bottom:.5rem;margin-top:.5rem}}.dnb-forms-field-block--layout-vertical{grid-template-areas:"label" "contents" "status";grid-template-columns:auto}.dnb-forms-field-block--layout-horizontal{grid-template-areas:"label contents" "status status";grid-template-columns:fit-content(100%) auto}.dnb-forms-field-block--width-stretch{flex-grow:1}@media screen and (min-width:25em){.dnb-forms-field-block--width-small{width:var(--forms-field-width--small)}.dnb-forms-field-block--width-medium{width:var(--forms-field-width--medium)}.dnb-forms-field-block--width-large{width:var(--forms-field-width--large)}}.dnb-forms-field-block__label{align-items:center;display:flex;flex-flow:row;grid-area:label;justify-content:space-between}.dnb-forms-field-block__label-description{margin-left:.3em}.dnb-forms-field-block__status{grid-area:status}.dnb-forms-field-block__status .dnb-form-status__shell{margin-top:.5rem}.dnb-forms-field-block__contents{grid-area:contents;width:100%}.dnb-forms-field-block__contents--width-stretch{width:100%}@media screen and (min-width:25em){.dnb-forms-field-block__contents--width-small{width:var(--forms-field-width--small)}.dnb-forms-field-block__contents--width-medium{width:var(--forms-field-width--medium)}.dnb-forms-field-block__contents--width-large{width:var(--forms-field-width--large)}}.dnb-forms-button-row{-moz-column-gap:var(--spacing-small);column-gap:var(--spacing-small);display:flex;flex-flow:row}@media screen and (min-width:40em){.dnb-card+.dnb-forms-button-row:not([class*=space__left]){margin-left:var(--spacing-medium)}}.dnb-spacing .dnb-form-main-heading.dnb-h--large:not([class*=space__]){margin:0}@media screen and (min-width:40em){.dnb-form-main-heading:has(+.dnb-flex-stack>.dnb-card,+.dnb-card):not([class*=space__left]){margin-left:var(--spacing-medium)}}.dnb-form-main-heading:has(+.dnb-flex-stack>.dnb-card,+.dnb-card):not([class*=space__bottom]){margin-bottom:var(--spacing-small)}.dnb-spacing .dnb-form-sub-heading.dnb-h--medium:not([class*=space__]){margin:0}.dnb-form-sub-heading:has(+.dnb-flex-stack>.dnb-card,+.dnb-card):not([class*=space__bottom]){margin-bottom:var(--spacing-small)}.dnb-forms-steps-layout{-moz-column-gap:var(--spacing-medium);column-gap:var(--spacing-medium);display:flex;flex-flow:row wrap}.dnb-forms-steps-layout--drawer{align-items:stretch;flex-direction:column;justify-content:stretch}.dnb-forms-steps-layout__sidebar{flex:0;margin-bottom:2rem}.dnb-forms-steps-layout__contents{flex:1 0 25rem}.dnb-forms-steps-layout__contents .dnb-card{--border-color:var(--color-pistachio)}@media screen and (max-width:60em){.dnb-forms-steps-layout{align-items:stretch;flex-direction:column;justify-content:stretch}.dnb-forms-steps-layout__contents{flex-basis:auto}}.dnb-forms-steps-layout .dnb-step-indicator__sidebar{margin-right:0}.dnb-forms-value-block{display:block;font-size:var(--font-size-basis)}.dnb-forms-value-block--inline{display:inline-block;font-size:inherit;margin-left:var(--spacing-xx-small);margin-right:var(--spacing-xx-small)}.dnb-forms-value-block__label{font-weight:var(--font-weight-medium)}.dnb-forms-value-block__placeholder{color:rgba(0,0,0,.5)}.dnb-forms-test-element{border:1px dashed grey;border-radius:.5rem;color:#909090;padding:.5rem 1rem}
@@ -1,7 +1,11 @@
1
1
  /// <reference types="react" />
2
2
  import type { SpacingProps } from '../../components/space/types';
3
- import type { JSONSchema7 as JSONSchema } from 'json-schema';
4
- export type { JSONSchema };
3
+ import type { JSONSchema7 } from 'json-schema';
4
+ import type { JSONSchemaType } from 'ajv/dist/2020';
5
+ export type * from 'json-schema';
6
+ export type JSONSchema = JSONSchema7;
7
+ export type AllJSONSchemaVersions = JSONSchema7 | JSONSchemaType<unknown>;
8
+ export { JSONSchemaType };
5
9
  type ValidationRule = string | string[];
6
10
  type MessageValues = Record<string, string>;
7
11
  interface IFormErrorOptions {
@@ -23,8 +27,20 @@ export declare class FormError extends Error {
23
27
  messageValues?: MessageValues;
24
28
  constructor(message: string, options?: IFormErrorOptions);
25
29
  }
26
- interface DefaultErrorMessages {
30
+ /**
31
+ * Accept any key, so custom message keys can be used
32
+ */
33
+ export type CustomErrorMessages = Record<string, string>;
34
+ /**
35
+ * Accept any key, so custom message keys can be used
36
+ * including the path to the field the message is for
37
+ */
38
+ export type CustomErrorMessagesWithPaths = CustomErrorMessages | {
39
+ [K in `/${string}`]?: CustomErrorMessages;
40
+ };
41
+ export interface DefaultErrorMessages {
27
42
  required?: string;
43
+ pattern?: string;
28
44
  }
29
45
  export interface DataValueReadProps<Value = unknown> {
30
46
  /** JSON Pointer for where the data for this field is located in the source dataset */
@@ -52,9 +68,7 @@ export type ComponentProps = SpacingProps & {
52
68
  export type AdditionalEventArgs = Record<string, unknown>;
53
69
  export type DataValueReadComponentProps<Value = unknown> = ComponentProps & DataValueReadProps<Value>;
54
70
  export type DataValueReadWriteComponentProps<Value = unknown, EmptyValue = undefined | string> = ComponentProps & DataValueReadProps<Value> & DataValueWriteProps<Value, EmptyValue>;
55
- export interface FieldProps<Value = unknown, EmptyValue = undefined | string, ErrorMessages extends {
56
- required?: string;
57
- } = DefaultErrorMessages> extends DataValueReadWriteComponentProps<Value, EmptyValue> {
71
+ export interface FieldProps<Value = unknown, EmptyValue = undefined | string, ErrorMessages extends DefaultErrorMessages = DefaultErrorMessages> extends DataValueReadWriteComponentProps<Value, EmptyValue> {
58
72
  /** ID added to the actual field component, and linked to the label via for-attribute */
59
73
  id?: string;
60
74
  name?: string;
@@ -71,10 +85,11 @@ export interface FieldProps<Value = unknown, EmptyValue = undefined | string, Er
71
85
  error?: Error | FormError;
72
86
  hasError?: boolean;
73
87
  disabled?: boolean;
88
+ readOnly?: boolean;
74
89
  capitalize?: boolean;
75
90
  trim?: boolean;
76
91
  required?: boolean;
77
- schema?: JSONSchema;
92
+ schema?: AllJSONSchemaVersions;
78
93
  validator?: (value: Value | EmptyValue, errorMessages?: ErrorMessages) => Error | undefined | Promise<Error | undefined>;
79
94
  onBlurValidator?: (value: Value | EmptyValue) => Error | undefined | Promise<Error | undefined>;
80
95
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":["FormError","Error","constructor","message","options","_defineProperty","validationRule","messageValues","dataValueReadProps","pickDataValueReadProps","props","Object","fromEntries","entries","filter","key","includes","omitDataValueReadProps","dataValueWriteProps","pickDataValueWriteProps","omitDataValueWriteProps","pickDataValueReadWriteProps","omitDataValueReadWriteProps"],"sources":["../../../../src/extensions/forms/types.ts"],"sourcesContent":["import type { SpacingProps } from '../../components/space/types'\nimport type { JSONSchema7 as JSONSchema } from 'json-schema'\n\nexport type { JSONSchema }\n\ntype ValidationRule = string | string[]\ntype MessageValues = Record<string, string>\n\ninterface IFormErrorOptions {\n validationRule?: ValidationRule\n messageValues?: MessageValues\n}\n\n/**\n * Standard error object for Eufemia Forms, extending the built-in error with additional information for data handling\n */\nexport class FormError extends Error {\n /**\n * What validation rule did the error occur based on? (i.e: minLength, required or maximum)\n */\n validationRule?: ValidationRule\n\n /**\n * Replacement values relevant for this error.\n * @example { minLength: 3 } to be able to replace values in a message like \"Minimum {minLength} characters\"\n */\n messageValues?: MessageValues\n\n constructor(message: string, options?: IFormErrorOptions) {\n super(message)\n\n if (options) {\n this.validationRule = options.validationRule\n this.messageValues = options.messageValues\n }\n }\n}\n\n// Data value\n\ninterface DefaultErrorMessages {\n required?: string\n}\n\nexport interface DataValueReadProps<Value = unknown> {\n /** JSON Pointer for where the data for this field is located in the source dataset */\n path?: string\n /** JSON Pointer for where the data for this field is located in the source iterate loop element */\n itemPath?: string\n value?: Value\n}\n\nconst dataValueReadProps = ['path', 'itemPath', 'value']\n\nexport function pickDataValueReadProps<Props extends DataValueReadProps>(\n props: Props\n): DataValueReadProps {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(([key]) =>\n dataValueReadProps.includes(key)\n )\n )\n}\n\nexport function omitDataValueReadProps<Props extends DataValueReadProps>(\n props: Props\n): Omit<DataValueReadProps, keyof DataValueReadProps> {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(\n ([key]) => !dataValueReadProps.includes(key)\n )\n )\n}\n\nexport interface DataValueWriteProps<\n Value = unknown,\n EmptyValue = undefined | string,\n> {\n emptyValue?: EmptyValue\n onFocus?: (value: Value | EmptyValue) => void\n onBlur?: (value: Value | EmptyValue) => void\n onChange?: (\n value: Value | EmptyValue,\n additionalArgs?: AdditionalEventArgs\n ) => void\n}\n\nconst dataValueWriteProps = ['emptyValue', 'onFocus', 'onBlur', 'onChange']\n\nexport function pickDataValueWriteProps<Props extends DataValueWriteProps>(\n props: Props\n): DataValueWriteProps {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(([key]) =>\n dataValueWriteProps.includes(key)\n )\n )\n}\n\nexport function omitDataValueWriteProps<Props extends DataValueWriteProps>(\n props: Props\n): Omit<DataValueWriteProps, keyof DataValueWriteProps> {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(\n ([key]) => !dataValueWriteProps.includes(key)\n )\n )\n}\n\nexport type DataValueReadWriteProps<\n Value = unknown,\n EmptyValue = undefined | string,\n> = DataValueReadProps<Value> & DataValueWriteProps<Value, EmptyValue>\n\nexport function pickDataValueReadWriteProps<\n Props extends DataValueReadWriteProps,\n>(props: Props): DataValueReadWriteProps {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(\n ([key]) =>\n dataValueReadProps.includes(key) ||\n dataValueWriteProps.includes(key)\n )\n )\n}\n\nexport function omitDataValueReadWriteProps<\n Props extends DataValueReadWriteProps,\n>(\n props: Props\n): Omit<DataValueReadWriteProps, keyof DataValueReadWriteProps> {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(\n ([key]) =>\n !dataValueReadProps.includes(key) &&\n !dataValueWriteProps.includes(key)\n )\n )\n}\n\nexport type ComponentProps = SpacingProps & {\n className?: string\n}\n\nexport type AdditionalEventArgs = Record<string, unknown>\n\nexport type DataValueReadComponentProps<Value = unknown> = ComponentProps &\n DataValueReadProps<Value>\n\nexport type DataValueReadWriteComponentProps<\n Value = unknown,\n EmptyValue = undefined | string,\n> = ComponentProps &\n DataValueReadProps<Value> &\n DataValueWriteProps<Value, EmptyValue>\n\nexport interface FieldProps<\n Value = unknown,\n EmptyValue = undefined | string,\n ErrorMessages extends { required?: string } = DefaultErrorMessages,\n> extends DataValueReadWriteComponentProps<Value, EmptyValue> {\n /** ID added to the actual field component, and linked to the label via for-attribute */\n id?: string\n name?: string\n layout?: 'horizontal' | 'vertical'\n /** Main label text */\n label?: React.ReactNode\n /** A more discreet text displayed beside the label */\n labelDescription?: React.ReactNode\n /** Text showing in place of the value if no value is given */\n placeholder?: string\n autoComplete?:\n | HTMLInputElement['autocomplete']\n | HTMLTextAreaElement['autocomplete']\n info?: Error | FormError | string\n warning?: Error | FormError | string\n error?: Error | FormError\n hasError?: boolean\n disabled?: boolean\n capitalize?: boolean\n trim?: boolean\n // Validation\n required?: boolean\n schema?: JSONSchema\n validator?: (\n value: Value | EmptyValue,\n errorMessages?: ErrorMessages\n ) => Error | undefined | Promise<Error | undefined>\n onBlurValidator?: (\n value: Value | EmptyValue\n ) => Error | undefined | Promise<Error | undefined>\n /**\n * Should error messages based on validation be shown initially (from given value-prop or source data)\n * before the user interacts with the field?\n * @default false\n */\n validateInitially?: boolean\n /**\n * Should error messages be shown when touching (like focusing a field and blurring) without having changed\n * the value? So the user did not introduce a new error, but it was invalid based on validation initially.\n */\n validateUnchanged?: boolean\n /** Should validation be done while writing, not just when blurring the field? */\n continuousValidation?: boolean\n errorMessages?: ErrorMessages\n // Derivatives\n toInput?: (external: Value | unknown) => Value | unknown\n fromInput?: (external: Value | unknown) => Value\n toEvent?: (\n internal: Value,\n type: 'onChange' | 'onFocus' | 'onBlur' | 'onBlurValidator'\n ) => Value\n fromExternal?: (external: Value) => Value\n transformValue?: (value: Value, currentValue?: Value) => Value\n validateRequired?: (\n internal: Value,\n {\n emptyValue,\n required,\n isChanged,\n error,\n }: {\n emptyValue: EmptyValue\n required: boolean\n isChanged: boolean\n error: FormError | undefined\n }\n ) => FormError | undefined\n}\n\nexport interface FieldHelpProps {\n help?: {\n title?: string\n content?: string\n }\n}\n\nexport interface ValueProps<Value>\n extends DataValueReadComponentProps<Value> {\n label?: string\n /** Field label to show above the data value. */\n showEmpty?: boolean\n /** Text showing in place of the value if no value is given. */\n placeholder?: string\n /** JSON Pointer for where the data for this field is located in the source iterate loop element */\n itemPath?: string\n /** For showing the value inline (not as a block element) */\n inline?: boolean\n // Derivatives\n /** Prepare value for display (regardless of source like props or data context) */\n prepare?: (external: Value | undefined) => string\n}\n"],"mappings":";AAgBA,OAAO,MAAMA,SAAS,SAASC,KAAK,CAAC;EAYnCC,WAAWA,CAACC,OAAe,EAAEC,OAA2B,EAAE;IACxD,KAAK,CAACD,OAAO,CAAC;IAAAE,eAAA;IAAAA,eAAA;IAEd,IAAID,OAAO,EAAE;MACX,IAAI,CAACE,cAAc,GAAGF,OAAO,CAACE,cAAc;MAC5C,IAAI,CAACC,aAAa,GAAGH,OAAO,CAACG,aAAa;IAC5C;EACF;AACF;AAgBA,MAAMC,kBAAkB,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC;AAExD,OAAO,SAASC,sBAAsBA,CACpCC,KAAY,EACQ;EACpB,OAAOC,MAAM,CAACC,WAAW,CACvBD,MAAM,CAACE,OAAO,CAACH,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,CAAC,CAAC,CAAC,CAACI,MAAM,CAAC,CAAC,CAACC,GAAG,CAAC,KACvCP,kBAAkB,CAACQ,QAAQ,CAACD,GAAG,CACjC,CACF,CAAC;AACH;AAEA,OAAO,SAASE,sBAAsBA,CACpCP,KAAY,EACwC;EACpD,OAAOC,MAAM,CAACC,WAAW,CACvBD,MAAM,CAACE,OAAO,CAACH,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,CAAC,CAAC,CAAC,CAACI,MAAM,CAChC,CAAC,CAACC,GAAG,CAAC,KAAK,CAACP,kBAAkB,CAACQ,QAAQ,CAACD,GAAG,CAC7C,CACF,CAAC;AACH;AAeA,MAAMG,mBAAmB,GAAG,CAAC,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAC;AAE3E,OAAO,SAASC,uBAAuBA,CACrCT,KAAY,EACS;EACrB,OAAOC,MAAM,CAACC,WAAW,CACvBD,MAAM,CAACE,OAAO,CAACH,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,CAAC,CAAC,CAAC,CAACI,MAAM,CAAC,CAAC,CAACC,GAAG,CAAC,KACvCG,mBAAmB,CAACF,QAAQ,CAACD,GAAG,CAClC,CACF,CAAC;AACH;AAEA,OAAO,SAASK,uBAAuBA,CACrCV,KAAY,EAC0C;EACtD,OAAOC,MAAM,CAACC,WAAW,CACvBD,MAAM,CAACE,OAAO,CAACH,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,CAAC,CAAC,CAAC,CAACI,MAAM,CAChC,CAAC,CAACC,GAAG,CAAC,KAAK,CAACG,mBAAmB,CAACF,QAAQ,CAACD,GAAG,CAC9C,CACF,CAAC;AACH;AAOA,OAAO,SAASM,2BAA2BA,CAEzCX,KAAY,EAA2B;EACvC,OAAOC,MAAM,CAACC,WAAW,CACvBD,MAAM,CAACE,OAAO,CAACH,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,CAAC,CAAC,CAAC,CAACI,MAAM,CAChC,CAAC,CAACC,GAAG,CAAC,KACJP,kBAAkB,CAACQ,QAAQ,CAACD,GAAG,CAAC,IAChCG,mBAAmB,CAACF,QAAQ,CAACD,GAAG,CACpC,CACF,CAAC;AACH;AAEA,OAAO,SAASO,2BAA2BA,CAGzCZ,KAAY,EACkD;EAC9D,OAAOC,MAAM,CAACC,WAAW,CACvBD,MAAM,CAACE,OAAO,CAACH,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,CAAC,CAAC,CAAC,CAACI,MAAM,CAChC,CAAC,CAACC,GAAG,CAAC,KACJ,CAACP,kBAAkB,CAACQ,QAAQ,CAACD,GAAG,CAAC,IACjC,CAACG,mBAAmB,CAACF,QAAQ,CAACD,GAAG,CACrC,CACF,CAAC;AACH"}
1
+ {"version":3,"file":"types.js","names":["FormError","Error","constructor","message","options","_defineProperty","validationRule","messageValues","dataValueReadProps","pickDataValueReadProps","props","Object","fromEntries","entries","filter","key","includes","omitDataValueReadProps","dataValueWriteProps","pickDataValueWriteProps","omitDataValueWriteProps","pickDataValueReadWriteProps","omitDataValueReadWriteProps"],"sources":["../../../../src/extensions/forms/types.ts"],"sourcesContent":["import type { SpacingProps } from '../../components/space/types'\nimport type { JSONSchema7 } from 'json-schema'\nimport type { JSONSchemaType } from 'ajv/dist/2020'\n\nexport type * from 'json-schema'\nexport type JSONSchema = JSONSchema7\nexport type AllJSONSchemaVersions = JSONSchema7 | JSONSchemaType<unknown>\nexport { JSONSchemaType }\n\ntype ValidationRule = string | string[]\ntype MessageValues = Record<string, string>\n\ninterface IFormErrorOptions {\n validationRule?: ValidationRule\n messageValues?: MessageValues\n}\n\n/**\n * Standard error object for Eufemia Forms, extending the built-in error with additional information for data handling\n */\nexport class FormError extends Error {\n /**\n * What validation rule did the error occur based on? (i.e: minLength, required or maximum)\n */\n validationRule?: ValidationRule\n\n /**\n * Replacement values relevant for this error.\n * @example { minLength: 3 } to be able to replace values in a message like \"Minimum {minLength} characters\"\n */\n messageValues?: MessageValues\n\n constructor(message: string, options?: IFormErrorOptions) {\n super(message)\n\n if (options) {\n this.validationRule = options.validationRule\n this.messageValues = options.messageValues\n }\n }\n}\n\n/**\n * Accept any key, so custom message keys can be used\n */\nexport type CustomErrorMessages = Record<string, string>\n\n/**\n * Accept any key, so custom message keys can be used\n * including the path to the field the message is for\n */\nexport type CustomErrorMessagesWithPaths =\n | CustomErrorMessages\n | {\n // eslint-disable-next-line no-unused-vars\n [K in `/${string}`]?: CustomErrorMessages\n }\n\nexport interface DefaultErrorMessages {\n required?: string\n pattern?: string\n}\n\nexport interface DataValueReadProps<Value = unknown> {\n /** JSON Pointer for where the data for this field is located in the source dataset */\n path?: string\n /** JSON Pointer for where the data for this field is located in the source iterate loop element */\n itemPath?: string\n value?: Value\n}\n\nconst dataValueReadProps = ['path', 'itemPath', 'value']\n\nexport function pickDataValueReadProps<Props extends DataValueReadProps>(\n props: Props\n): DataValueReadProps {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(([key]) =>\n dataValueReadProps.includes(key)\n )\n )\n}\n\nexport function omitDataValueReadProps<Props extends DataValueReadProps>(\n props: Props\n): Omit<DataValueReadProps, keyof DataValueReadProps> {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(\n ([key]) => !dataValueReadProps.includes(key)\n )\n )\n}\n\nexport interface DataValueWriteProps<\n Value = unknown,\n EmptyValue = undefined | string,\n> {\n emptyValue?: EmptyValue\n onFocus?: (value: Value | EmptyValue) => void\n onBlur?: (value: Value | EmptyValue) => void\n onChange?: (\n value: Value | EmptyValue,\n additionalArgs?: AdditionalEventArgs\n ) => void\n}\n\nconst dataValueWriteProps = ['emptyValue', 'onFocus', 'onBlur', 'onChange']\n\nexport function pickDataValueWriteProps<Props extends DataValueWriteProps>(\n props: Props\n): DataValueWriteProps {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(([key]) =>\n dataValueWriteProps.includes(key)\n )\n )\n}\n\nexport function omitDataValueWriteProps<Props extends DataValueWriteProps>(\n props: Props\n): Omit<DataValueWriteProps, keyof DataValueWriteProps> {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(\n ([key]) => !dataValueWriteProps.includes(key)\n )\n )\n}\n\nexport type DataValueReadWriteProps<\n Value = unknown,\n EmptyValue = undefined | string,\n> = DataValueReadProps<Value> & DataValueWriteProps<Value, EmptyValue>\n\nexport function pickDataValueReadWriteProps<\n Props extends DataValueReadWriteProps,\n>(props: Props): DataValueReadWriteProps {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(\n ([key]) =>\n dataValueReadProps.includes(key) ||\n dataValueWriteProps.includes(key)\n )\n )\n}\n\nexport function omitDataValueReadWriteProps<\n Props extends DataValueReadWriteProps,\n>(\n props: Props\n): Omit<DataValueReadWriteProps, keyof DataValueReadWriteProps> {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(\n ([key]) =>\n !dataValueReadProps.includes(key) &&\n !dataValueWriteProps.includes(key)\n )\n )\n}\n\nexport type ComponentProps = SpacingProps & {\n className?: string\n}\n\nexport type AdditionalEventArgs = Record<string, unknown>\n\nexport type DataValueReadComponentProps<Value = unknown> = ComponentProps &\n DataValueReadProps<Value>\n\nexport type DataValueReadWriteComponentProps<\n Value = unknown,\n EmptyValue = undefined | string,\n> = ComponentProps &\n DataValueReadProps<Value> &\n DataValueWriteProps<Value, EmptyValue>\n\nexport interface FieldProps<\n Value = unknown,\n EmptyValue = undefined | string,\n ErrorMessages extends DefaultErrorMessages = DefaultErrorMessages,\n> extends DataValueReadWriteComponentProps<Value, EmptyValue> {\n /** ID added to the actual field component, and linked to the label via for-attribute */\n id?: string\n name?: string\n layout?: 'horizontal' | 'vertical'\n /** Main label text */\n label?: React.ReactNode\n /** A more discreet text displayed beside the label */\n labelDescription?: React.ReactNode\n /** Text showing in place of the value if no value is given */\n placeholder?: string\n autoComplete?:\n | HTMLInputElement['autocomplete']\n | HTMLTextAreaElement['autocomplete']\n info?: Error | FormError | string\n warning?: Error | FormError | string\n error?: Error | FormError\n hasError?: boolean\n disabled?: boolean\n readOnly?: boolean\n capitalize?: boolean\n trim?: boolean\n // Validation\n required?: boolean\n schema?: AllJSONSchemaVersions\n validator?: (\n value: Value | EmptyValue,\n errorMessages?: ErrorMessages\n ) => Error | undefined | Promise<Error | undefined>\n onBlurValidator?: (\n value: Value | EmptyValue\n ) => Error | undefined | Promise<Error | undefined>\n /**\n * Should error messages based on validation be shown initially (from given value-prop or source data)\n * before the user interacts with the field?\n * @default false\n */\n validateInitially?: boolean\n /**\n * Should error messages be shown when touching (like focusing a field and blurring) without having changed\n * the value? So the user did not introduce a new error, but it was invalid based on validation initially.\n */\n validateUnchanged?: boolean\n /** Should validation be done while writing, not just when blurring the field? */\n continuousValidation?: boolean\n errorMessages?: ErrorMessages\n // Derivatives\n toInput?: (external: Value | unknown) => Value | unknown\n fromInput?: (external: Value | unknown) => Value\n toEvent?: (\n internal: Value,\n type: 'onChange' | 'onFocus' | 'onBlur' | 'onBlurValidator'\n ) => Value\n fromExternal?: (external: Value) => Value\n transformValue?: (value: Value, currentValue?: Value) => Value\n validateRequired?: (\n internal: Value,\n {\n emptyValue,\n required,\n isChanged,\n error,\n }: {\n emptyValue: EmptyValue\n required: boolean\n isChanged: boolean\n error: FormError | undefined\n }\n ) => FormError | undefined\n}\n\nexport interface FieldHelpProps {\n help?: {\n title?: string\n content?: string\n }\n}\n\nexport interface ValueProps<Value>\n extends DataValueReadComponentProps<Value> {\n label?: string\n /** Field label to show above the data value. */\n showEmpty?: boolean\n /** Text showing in place of the value if no value is given. */\n placeholder?: string\n /** JSON Pointer for where the data for this field is located in the source iterate loop element */\n itemPath?: string\n /** For showing the value inline (not as a block element) */\n inline?: boolean\n // Derivatives\n /** Prepare value for display (regardless of source like props or data context) */\n prepare?: (external: Value | undefined) => string\n}\n"],"mappings":";AAoBA,OAAO,MAAMA,SAAS,SAASC,KAAK,CAAC;EAYnCC,WAAWA,CAACC,OAAe,EAAEC,OAA2B,EAAE;IACxD,KAAK,CAACD,OAAO,CAAC;IAAAE,eAAA;IAAAA,eAAA;IAEd,IAAID,OAAO,EAAE;MACX,IAAI,CAACE,cAAc,GAAGF,OAAO,CAACE,cAAc;MAC5C,IAAI,CAACC,aAAa,GAAGH,OAAO,CAACG,aAAa;IAC5C;EACF;AACF;AA+BA,MAAMC,kBAAkB,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC;AAExD,OAAO,SAASC,sBAAsBA,CACpCC,KAAY,EACQ;EACpB,OAAOC,MAAM,CAACC,WAAW,CACvBD,MAAM,CAACE,OAAO,CAACH,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,CAAC,CAAC,CAAC,CAACI,MAAM,CAAC,CAAC,CAACC,GAAG,CAAC,KACvCP,kBAAkB,CAACQ,QAAQ,CAACD,GAAG,CACjC,CACF,CAAC;AACH;AAEA,OAAO,SAASE,sBAAsBA,CACpCP,KAAY,EACwC;EACpD,OAAOC,MAAM,CAACC,WAAW,CACvBD,MAAM,CAACE,OAAO,CAACH,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,CAAC,CAAC,CAAC,CAACI,MAAM,CAChC,CAAC,CAACC,GAAG,CAAC,KAAK,CAACP,kBAAkB,CAACQ,QAAQ,CAACD,GAAG,CAC7C,CACF,CAAC;AACH;AAeA,MAAMG,mBAAmB,GAAG,CAAC,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAC;AAE3E,OAAO,SAASC,uBAAuBA,CACrCT,KAAY,EACS;EACrB,OAAOC,MAAM,CAACC,WAAW,CACvBD,MAAM,CAACE,OAAO,CAACH,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,CAAC,CAAC,CAAC,CAACI,MAAM,CAAC,CAAC,CAACC,GAAG,CAAC,KACvCG,mBAAmB,CAACF,QAAQ,CAACD,GAAG,CAClC,CACF,CAAC;AACH;AAEA,OAAO,SAASK,uBAAuBA,CACrCV,KAAY,EAC0C;EACtD,OAAOC,MAAM,CAACC,WAAW,CACvBD,MAAM,CAACE,OAAO,CAACH,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,CAAC,CAAC,CAAC,CAACI,MAAM,CAChC,CAAC,CAACC,GAAG,CAAC,KAAK,CAACG,mBAAmB,CAACF,QAAQ,CAACD,GAAG,CAC9C,CACF,CAAC;AACH;AAOA,OAAO,SAASM,2BAA2BA,CAEzCX,KAAY,EAA2B;EACvC,OAAOC,MAAM,CAACC,WAAW,CACvBD,MAAM,CAACE,OAAO,CAACH,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,CAAC,CAAC,CAAC,CAACI,MAAM,CAChC,CAAC,CAACC,GAAG,CAAC,KACJP,kBAAkB,CAACQ,QAAQ,CAACD,GAAG,CAAC,IAChCG,mBAAmB,CAACF,QAAQ,CAACD,GAAG,CACpC,CACF,CAAC;AACH;AAEA,OAAO,SAASO,2BAA2BA,CAGzCZ,KAAY,EACkD;EAC9D,OAAOC,MAAM,CAACC,WAAW,CACvBD,MAAM,CAACE,OAAO,CAACH,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,CAAC,CAAC,CAAC,CAACI,MAAM,CAChC,CAAC,CAACC,GAAG,CAAC,KACJ,CAACP,kBAAkB,CAACQ,QAAQ,CAACD,GAAG,CAAC,IACjC,CAACG,mBAAmB,CAACF,QAAQ,CAACD,GAAG,CACrC,CACF,CAAC;AACH"}
@@ -1,14 +1,55 @@
1
- import Ajv, { ErrorObject } from 'ajv';
1
+ import ajvInstance, { ErrorObject } from 'ajv/dist/2020';
2
2
  import { FormError } from '../types';
3
- declare const ajv: Ajv;
3
+ import type Ajv from 'ajv/dist/2020';
4
+ export type AjvInstance = typeof ajvInstance;
5
+ export { ajvInstance, Ajv };
4
6
  /**
5
- * Transform errors from ajv-validation into one error object (i.e for validating a flat value)
7
+ * Creates an instance of Ajv (Another JSON Schema Validator) with optional custom instance.
8
+ * If no instance is provided, a new instance of Ajv is created with the specified options.
9
+ * The created Ajv instance is enhanced with custom error handling.
10
+ *
11
+ * @param instance - Optional custom instance of Ajv.
12
+ * @returns The created or provided instance of Ajv.
6
13
  */
7
- export declare function ajvErrorsToOneFormError(errors?: ErrorObject[] | null): FormError | undefined;
14
+ export declare function makeAjvInstance(instance?: Ajv): ajvInstance;
15
+ /**
16
+ * Returns the instance path of the given Ajv error.
17
+ * If the error is of type 'required', it is considered an object error and the missing property is shown under the relevant field.
18
+ * If the error is of type 'errorMessage', it is a wrapped error and the instance path is found from the original error to avoid issues like required-errors pointing at the parent object.
19
+ * @param ajvError - The Ajv error object.
20
+ * @returns The instance path of the error.
21
+ */
22
+ export declare function getInstancePath(ajvError: ErrorObject): string;
8
23
  /**
24
+ * Retrieves the validation rule from an AJV error object.
25
+ * If the error object has an 'errorMessage' keyword, it unwraps the original error
26
+ * to avoid issues like required-errors pointing at the parent object.
27
+ * @param ajvError - The AJV error object.
28
+ * @returns The validation rule.
29
+ */
30
+ export declare function getValidationRule(ajvError: ErrorObject): string;
31
+ /**
32
+ * Retrieves the message values from an AJV error object.
33
+ * @param ajvError The AJV error object.
34
+ * @returns The message values extracted from the error object.
35
+ */
36
+ export declare function getMessageValues(ajvError: ErrorObject): FormError['messageValues'];
37
+ /**
38
+ * Converts an AJV error object to a FormError object.
9
39
  *
10
- * @param errors Transform errors from ajv-validation into a record of errors (path as key, error as value)
40
+ * @param ajvError - The AJV error object to convert.
41
+ * @returns The converted FormError object.
42
+ */
43
+ export declare function ajvErrorToFormError(ajvError: ErrorObject): FormError;
44
+ /**
45
+ * Converts an array of Ajv errors to a single FormError.
46
+ * @param errors - An array of Ajv errors.
47
+ * @returns A single FormError or undefined if there are no errors.
48
+ */
49
+ export declare function ajvErrorsToOneFormError(errors?: ErrorObject[] | null): FormError | undefined;
50
+ /**
51
+ * Transform errors from ajv-validation into a record of errors (path as key, error as value)
52
+ * @param errors
11
53
  * @returns
12
54
  */
13
55
  export declare const ajvErrorsToFormErrors: (errors?: ErrorObject[] | null) => Record<string, FormError>;
14
- export default ajv;
@@ -1,14 +1,21 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
2
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3
3
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
- import Ajv from 'ajv';
4
+ import ajvInstance from 'ajv/dist/2020';
5
5
  import ajvErrors from 'ajv-errors';
6
6
  import { FormError } from '../types';
7
- const ajv = new Ajv({
8
- allErrors: true
9
- });
10
- ajvErrors(ajv);
11
- function getInstancePath(ajvError) {
7
+ export { ajvInstance };
8
+ export function makeAjvInstance(instance) {
9
+ const ajv = instance || new ajvInstance({
10
+ allErrors: true
11
+ });
12
+ if (!ajv['__ajvErrors__']) {
13
+ ajvErrors(ajv);
14
+ ajv['__ajvErrors__'] = true;
15
+ }
16
+ return ajv;
17
+ }
18
+ export function getInstancePath(ajvError) {
12
19
  switch (ajvError.keyword) {
13
20
  case 'required':
14
21
  {
@@ -23,13 +30,13 @@ function getInstancePath(ajvError) {
23
30
  }
24
31
  return ajvError.instancePath;
25
32
  }
26
- function getValidationRule(ajvError) {
33
+ export function getValidationRule(ajvError) {
27
34
  if (ajvError.keyword === 'errorMessage' && ajvError.params.errors[0]) {
28
35
  return getValidationRule(ajvError.params.errors[0]);
29
36
  }
30
37
  return ajvError.keyword;
31
38
  }
32
- function getMessageValues(ajvError) {
39
+ export function getMessageValues(ajvError) {
33
40
  var _ajvError$params, _ajvError$params2, _ajvError$params3;
34
41
  const validationRule = getValidationRule(ajvError);
35
42
  switch (validationRule) {
@@ -52,7 +59,7 @@ function getMessageValues(ajvError) {
52
59
  };
53
60
  }
54
61
  }
55
- function ajvErrorToFormError(ajvError) {
62
+ export function ajvErrorToFormError(ajvError) {
56
63
  var _ajvError$message;
57
64
  const error = new FormError((_ajvError$message = ajvError.message) !== null && _ajvError$message !== void 0 ? _ajvError$message : 'Unknown error', {
58
65
  validationRule: getValidationRule(ajvError),
@@ -72,10 +79,11 @@ export function ajvErrorsToOneFormError(errors) {
72
79
  validationRule: errors.map(getValidationRule)
73
80
  });
74
81
  }
75
- export const ajvErrorsToFormErrors = errors => (errors !== null && errors !== void 0 ? errors : []).reduce((errors, ajvError) => {
76
- return _objectSpread(_objectSpread({}, errors), {}, {
77
- [getInstancePath(ajvError)]: ajvErrorToFormError(ajvError)
78
- });
79
- }, {});
80
- export default ajv;
82
+ export const ajvErrorsToFormErrors = errors => {
83
+ return (errors !== null && errors !== void 0 ? errors : []).reduce((errors, ajvError) => {
84
+ return _objectSpread(_objectSpread({}, errors), {}, {
85
+ [getInstancePath(ajvError)]: ajvErrorToFormError(ajvError)
86
+ });
87
+ }, {});
88
+ };
81
89
  //# sourceMappingURL=ajv.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ajv.js","names":["Ajv","ajvErrors","FormError","ajv","allErrors","getInstancePath","ajvError","keyword","instancePath","params","missingProperty","errors","getValidationRule","getMessageValues","_ajvError$params","_ajvError$params2","_ajvError$params3","validationRule","limit","multipleOf","pattern","ajvErrorToFormError","_ajvError$message","error","message","messageValues","ajvErrorsToOneFormError","length","errorMessages","map","join","ajvErrorsToFormErrors","reduce","_objectSpread"],"sources":["../../../../../src/extensions/forms/utils/ajv.ts"],"sourcesContent":["import Ajv, { ErrorObject } from 'ajv'\nimport ajvErrors from 'ajv-errors'\nimport { FormError } from '../types'\n\nconst ajv = new Ajv({\n // If allErrors is off, ajv only give you the first error it finds\n allErrors: true,\n})\n\najvErrors(ajv)\n\nfunction getInstancePath(ajvError: ErrorObject): string {\n switch (ajvError.keyword) {\n case 'required': {\n // Required-errors are considered object errors by ajv, so they don't have instancePaths. We want to\n // show them under the relevant field\n return `${ajvError.instancePath}/${ajvError.params.missingProperty}`\n }\n case 'errorMessage': {\n // errorMessage structures (from ajv-errors) wrap the original error. Find instance path from original\n // to avoid issues like required-errors pointing at parent object.\n if (ajvError.params.errors[0]) {\n return getInstancePath(ajvError.params.errors[0])\n }\n }\n }\n return ajvError.instancePath\n}\n\nfunction getValidationRule(ajvError: ErrorObject): string {\n if (ajvError.keyword === 'errorMessage' && ajvError.params.errors[0]) {\n // errorMessage structures (from ajv-errors) wrap the original error. Find keyword from original\n // to avoid issues like required-errors pointing at parent object.\n return getValidationRule(ajvError.params.errors[0])\n }\n return ajvError.keyword\n}\n\nfunction getMessageValues(\n ajvError: ErrorObject\n): FormError['messageValues'] {\n const validationRule = getValidationRule(ajvError)\n\n switch (validationRule) {\n case 'minLength':\n case 'maxLength':\n case 'minimum':\n case 'maximum':\n case 'exclusiveMinimum':\n case 'exclusiveMaximum':\n return {\n [validationRule]: ajvError.params?.limit,\n }\n case 'multipleOf':\n return {\n [validationRule]: ajvError.params?.multipleOf,\n }\n case 'pattern':\n return {\n [validationRule]: ajvError.params?.pattern,\n }\n }\n}\n\nfunction ajvErrorToFormError(ajvError: ErrorObject): FormError {\n const error = new FormError(ajvError.message ?? 'Unknown error', {\n validationRule: getValidationRule(ajvError),\n // Keep the message values in the error object instead of injecting them into the message\n // at once, since an error might be validated one place, and then get a new message before it is displayed.\n messageValues: getMessageValues(ajvError),\n })\n return error\n}\n\n/**\n * Transform errors from ajv-validation into one error object (i.e for validating a flat value)\n */\nexport function ajvErrorsToOneFormError(\n errors?: ErrorObject[] | null\n): FormError | undefined {\n if (!errors || errors.length === 0) {\n return\n }\n if (errors.length === 1) {\n return ajvErrorToFormError(errors[0])\n }\n\n const errorMessages = errors?.map((error) => error.message)\n return new FormError(errorMessages.join(' | '), {\n validationRule: errors.map(getValidationRule),\n })\n}\n\n/**\n *\n * @param errors Transform errors from ajv-validation into a record of errors (path as key, error as value)\n * @returns\n */\nexport const ajvErrorsToFormErrors = (\n errors?: ErrorObject[] | null\n): Record<string, FormError> =>\n (errors ?? []).reduce((errors, ajvError) => {\n return {\n ...errors,\n [getInstancePath(ajvError)]: ajvErrorToFormError(ajvError),\n }\n }, {})\n\nexport default ajv\n"],"mappings":";;;AAAA,OAAOA,GAAG,MAAuB,KAAK;AACtC,OAAOC,SAAS,MAAM,YAAY;AAClC,SAASC,SAAS,QAAQ,UAAU;AAEpC,MAAMC,GAAG,GAAG,IAAIH,GAAG,CAAC;EAElBI,SAAS,EAAE;AACb,CAAC,CAAC;AAEFH,SAAS,CAACE,GAAG,CAAC;AAEd,SAASE,eAAeA,CAACC,QAAqB,EAAU;EACtD,QAAQA,QAAQ,CAACC,OAAO;IACtB,KAAK,UAAU;MAAE;QAGf,OAAQ,GAAED,QAAQ,CAACE,YAAa,IAAGF,QAAQ,CAACG,MAAM,CAACC,eAAgB,EAAC;MACtE;IACA,KAAK,cAAc;MAAE;QAGnB,IAAIJ,QAAQ,CAACG,MAAM,CAACE,MAAM,CAAC,CAAC,CAAC,EAAE;UAC7B,OAAON,eAAe,CAACC,QAAQ,CAACG,MAAM,CAACE,MAAM,CAAC,CAAC,CAAC,CAAC;QACnD;MACF;EACF;EACA,OAAOL,QAAQ,CAACE,YAAY;AAC9B;AAEA,SAASI,iBAAiBA,CAACN,QAAqB,EAAU;EACxD,IAAIA,QAAQ,CAACC,OAAO,KAAK,cAAc,IAAID,QAAQ,CAACG,MAAM,CAACE,MAAM,CAAC,CAAC,CAAC,EAAE;IAGpE,OAAOC,iBAAiB,CAACN,QAAQ,CAACG,MAAM,CAACE,MAAM,CAAC,CAAC,CAAC,CAAC;EACrD;EACA,OAAOL,QAAQ,CAACC,OAAO;AACzB;AAEA,SAASM,gBAAgBA,CACvBP,QAAqB,EACO;EAAA,IAAAQ,gBAAA,EAAAC,iBAAA,EAAAC,iBAAA;EAC5B,MAAMC,cAAc,GAAGL,iBAAiB,CAACN,QAAQ,CAAC;EAElD,QAAQW,cAAc;IACpB,KAAK,WAAW;IAChB,KAAK,WAAW;IAChB,KAAK,SAAS;IACd,KAAK,SAAS;IACd,KAAK,kBAAkB;IACvB,KAAK,kBAAkB;MACrB,OAAO;QACL,CAACA,cAAc,IAAAH,gBAAA,GAAGR,QAAQ,CAACG,MAAM,cAAAK,gBAAA,uBAAfA,gBAAA,CAAiBI;MACrC,CAAC;IACH,KAAK,YAAY;MACf,OAAO;QACL,CAACD,cAAc,IAAAF,iBAAA,GAAGT,QAAQ,CAACG,MAAM,cAAAM,iBAAA,uBAAfA,iBAAA,CAAiBI;MACrC,CAAC;IACH,KAAK,SAAS;MACZ,OAAO;QACL,CAACF,cAAc,IAAAD,iBAAA,GAAGV,QAAQ,CAACG,MAAM,cAAAO,iBAAA,uBAAfA,iBAAA,CAAiBI;MACrC,CAAC;EACL;AACF;AAEA,SAASC,mBAAmBA,CAACf,QAAqB,EAAa;EAAA,IAAAgB,iBAAA;EAC7D,MAAMC,KAAK,GAAG,IAAIrB,SAAS,EAAAoB,iBAAA,GAAChB,QAAQ,CAACkB,OAAO,cAAAF,iBAAA,cAAAA,iBAAA,GAAI,eAAe,EAAE;IAC/DL,cAAc,EAAEL,iBAAiB,CAACN,QAAQ,CAAC;IAG3CmB,aAAa,EAAEZ,gBAAgB,CAACP,QAAQ;EAC1C,CAAC,CAAC;EACF,OAAOiB,KAAK;AACd;AAKA,OAAO,SAASG,uBAAuBA,CACrCf,MAA6B,EACN;EACvB,IAAI,CAACA,MAAM,IAAIA,MAAM,CAACgB,MAAM,KAAK,CAAC,EAAE;IAClC;EACF;EACA,IAAIhB,MAAM,CAACgB,MAAM,KAAK,CAAC,EAAE;IACvB,OAAON,mBAAmB,CAACV,MAAM,CAAC,CAAC,CAAC,CAAC;EACvC;EAEA,MAAMiB,aAAa,GAAGjB,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEkB,GAAG,CAAEN,KAAK,IAAKA,KAAK,CAACC,OAAO,CAAC;EAC3D,OAAO,IAAItB,SAAS,CAAC0B,aAAa,CAACE,IAAI,CAAC,KAAK,CAAC,EAAE;IAC9Cb,cAAc,EAAEN,MAAM,CAACkB,GAAG,CAACjB,iBAAiB;EAC9C,CAAC,CAAC;AACJ;AAOA,OAAO,MAAMmB,qBAAqB,GAChCpB,MAA6B,IAE7B,CAACA,MAAM,aAANA,MAAM,cAANA,MAAM,GAAI,EAAE,EAAEqB,MAAM,CAAC,CAACrB,MAAM,EAAEL,QAAQ,KAAK;EAC1C,OAAA2B,aAAA,CAAAA,aAAA,KACKtB,MAAM;IACT,CAACN,eAAe,CAACC,QAAQ,CAAC,GAAGe,mBAAmB,CAACf,QAAQ;EAAC;AAE9D,CAAC,EAAE,CAAC,CAAC,CAAC;AAER,eAAeH,GAAG"}
1
+ {"version":3,"file":"ajv.js","names":["ajvInstance","ajvErrors","FormError","makeAjvInstance","instance","ajv","allErrors","getInstancePath","ajvError","keyword","instancePath","params","missingProperty","errors","getValidationRule","getMessageValues","_ajvError$params","_ajvError$params2","_ajvError$params3","validationRule","limit","multipleOf","pattern","ajvErrorToFormError","_ajvError$message","error","message","messageValues","ajvErrorsToOneFormError","length","errorMessages","map","join","ajvErrorsToFormErrors","reduce","_objectSpread"],"sources":["../../../../../src/extensions/forms/utils/ajv.ts"],"sourcesContent":["import ajvInstance, { ErrorObject } from 'ajv/dist/2020'\nimport ajvErrors from 'ajv-errors'\nimport { FormError } from '../types'\nimport type Ajv from 'ajv/dist/2020'\n\nexport type AjvInstance = typeof ajvInstance\nexport { ajvInstance, Ajv }\n\n/**\n * Creates an instance of Ajv (Another JSON Schema Validator) with optional custom instance.\n * If no instance is provided, a new instance of Ajv is created with the specified options.\n * The created Ajv instance is enhanced with custom error handling.\n *\n * @param instance - Optional custom instance of Ajv.\n * @returns The created or provided instance of Ajv.\n */\nexport function makeAjvInstance(instance?: Ajv) {\n const ajv =\n instance ||\n new ajvInstance({\n // If allErrors is off, Ajv only give you the first error it finds\n allErrors: true,\n })\n\n if (!ajv['__ajvErrors__']) {\n ajvErrors(ajv)\n ajv['__ajvErrors__'] = true\n }\n\n return ajv\n}\n\n/**\n * Returns the instance path of the given Ajv error.\n * If the error is of type 'required', it is considered an object error and the missing property is shown under the relevant field.\n * If the error is of type 'errorMessage', it is a wrapped error and the instance path is found from the original error to avoid issues like required-errors pointing at the parent object.\n * @param ajvError - The Ajv error object.\n * @returns The instance path of the error.\n */\nexport function getInstancePath(ajvError: ErrorObject): string {\n switch (ajvError.keyword) {\n case 'required': {\n // Required-errors are considered object errors by ajv, so they don't have instancePaths. We want to\n // show them under the relevant field\n return `${ajvError.instancePath}/${ajvError.params.missingProperty}`\n }\n case 'errorMessage': {\n // errorMessage structures (from ajv-errors) wrap the original error. Find instance path from original\n // to avoid issues like required-errors pointing at parent object.\n if (ajvError.params.errors[0]) {\n return getInstancePath(ajvError.params.errors[0])\n }\n }\n }\n return ajvError.instancePath\n}\n\n/**\n * Retrieves the validation rule from an AJV error object.\n * If the error object has an 'errorMessage' keyword, it unwraps the original error\n * to avoid issues like required-errors pointing at the parent object.\n * @param ajvError - The AJV error object.\n * @returns The validation rule.\n */\nexport function getValidationRule(ajvError: ErrorObject): string {\n if (ajvError.keyword === 'errorMessage' && ajvError.params.errors[0]) {\n // errorMessage structures (from ajv-errors) wrap the original error. Find keyword from original\n // to avoid issues like required-errors pointing at parent object.\n return getValidationRule(ajvError.params.errors[0])\n }\n return ajvError.keyword\n}\n\n/**\n * Retrieves the message values from an AJV error object.\n * @param ajvError The AJV error object.\n * @returns The message values extracted from the error object.\n */\nexport function getMessageValues(\n ajvError: ErrorObject\n): FormError['messageValues'] {\n const validationRule = getValidationRule(ajvError)\n // console.log('validationRule', validationRule)\n\n switch (validationRule) {\n case 'minLength':\n case 'maxLength':\n case 'minimum':\n case 'maximum':\n case 'exclusiveMinimum':\n case 'exclusiveMaximum':\n return {\n [validationRule]: ajvError.params?.limit,\n }\n case 'multipleOf':\n return {\n [validationRule]: ajvError.params?.multipleOf,\n }\n case 'pattern':\n return {\n [validationRule]: ajvError.params?.pattern,\n }\n }\n}\n\n/**\n * Converts an AJV error object to a FormError object.\n *\n * @param ajvError - The AJV error object to convert.\n * @returns The converted FormError object.\n */\nexport function ajvErrorToFormError(ajvError: ErrorObject): FormError {\n const error = new FormError(ajvError.message ?? 'Unknown error', {\n validationRule: getValidationRule(ajvError),\n // Keep the message values in the error object instead of injecting them into the message\n // at once, since an error might be validated one place, and then get a new message before it is displayed.\n messageValues: getMessageValues(ajvError),\n })\n return error\n}\n\n/**\n * Converts an array of Ajv errors to a single FormError.\n * @param errors - An array of Ajv errors.\n * @returns A single FormError or undefined if there are no errors.\n */\nexport function ajvErrorsToOneFormError(\n errors?: ErrorObject[] | null\n): FormError | undefined {\n if (!errors || errors.length === 0) {\n return\n }\n if (errors.length === 1) {\n return ajvErrorToFormError(errors[0])\n }\n\n const errorMessages = errors?.map((error) => error.message)\n return new FormError(errorMessages.join(' | '), {\n validationRule: errors.map(getValidationRule),\n })\n}\n\n/**\n * Transform errors from ajv-validation into a record of errors (path as key, error as value)\n * @param errors\n * @returns\n */\nexport const ajvErrorsToFormErrors = (\n errors?: ErrorObject[] | null\n): Record<string, FormError> => {\n return (errors ?? []).reduce((errors, ajvError) => {\n return {\n ...errors,\n [getInstancePath(ajvError)]: ajvErrorToFormError(ajvError),\n }\n }, {})\n}\n"],"mappings":";;;AAAA,OAAOA,WAAW,MAAuB,eAAe;AACxD,OAAOC,SAAS,MAAM,YAAY;AAClC,SAASC,SAAS,QAAQ,UAAU;AAIpC,SAASF,WAAW;AAUpB,OAAO,SAASG,eAAeA,CAACC,QAAc,EAAE;EAC9C,MAAMC,GAAG,GACPD,QAAQ,IACR,IAAIJ,WAAW,CAAC;IAEdM,SAAS,EAAE;EACb,CAAC,CAAC;EAEJ,IAAI,CAACD,GAAG,CAAC,eAAe,CAAC,EAAE;IACzBJ,SAAS,CAACI,GAAG,CAAC;IACdA,GAAG,CAAC,eAAe,CAAC,GAAG,IAAI;EAC7B;EAEA,OAAOA,GAAG;AACZ;AASA,OAAO,SAASE,eAAeA,CAACC,QAAqB,EAAU;EAC7D,QAAQA,QAAQ,CAACC,OAAO;IACtB,KAAK,UAAU;MAAE;QAGf,OAAQ,GAAED,QAAQ,CAACE,YAAa,IAAGF,QAAQ,CAACG,MAAM,CAACC,eAAgB,EAAC;MACtE;IACA,KAAK,cAAc;MAAE;QAGnB,IAAIJ,QAAQ,CAACG,MAAM,CAACE,MAAM,CAAC,CAAC,CAAC,EAAE;UAC7B,OAAON,eAAe,CAACC,QAAQ,CAACG,MAAM,CAACE,MAAM,CAAC,CAAC,CAAC,CAAC;QACnD;MACF;EACF;EACA,OAAOL,QAAQ,CAACE,YAAY;AAC9B;AASA,OAAO,SAASI,iBAAiBA,CAACN,QAAqB,EAAU;EAC/D,IAAIA,QAAQ,CAACC,OAAO,KAAK,cAAc,IAAID,QAAQ,CAACG,MAAM,CAACE,MAAM,CAAC,CAAC,CAAC,EAAE;IAGpE,OAAOC,iBAAiB,CAACN,QAAQ,CAACG,MAAM,CAACE,MAAM,CAAC,CAAC,CAAC,CAAC;EACrD;EACA,OAAOL,QAAQ,CAACC,OAAO;AACzB;AAOA,OAAO,SAASM,gBAAgBA,CAC9BP,QAAqB,EACO;EAAA,IAAAQ,gBAAA,EAAAC,iBAAA,EAAAC,iBAAA;EAC5B,MAAMC,cAAc,GAAGL,iBAAiB,CAACN,QAAQ,CAAC;EAGlD,QAAQW,cAAc;IACpB,KAAK,WAAW;IAChB,KAAK,WAAW;IAChB,KAAK,SAAS;IACd,KAAK,SAAS;IACd,KAAK,kBAAkB;IACvB,KAAK,kBAAkB;MACrB,OAAO;QACL,CAACA,cAAc,IAAAH,gBAAA,GAAGR,QAAQ,CAACG,MAAM,cAAAK,gBAAA,uBAAfA,gBAAA,CAAiBI;MACrC,CAAC;IACH,KAAK,YAAY;MACf,OAAO;QACL,CAACD,cAAc,IAAAF,iBAAA,GAAGT,QAAQ,CAACG,MAAM,cAAAM,iBAAA,uBAAfA,iBAAA,CAAiBI;MACrC,CAAC;IACH,KAAK,SAAS;MACZ,OAAO;QACL,CAACF,cAAc,IAAAD,iBAAA,GAAGV,QAAQ,CAACG,MAAM,cAAAO,iBAAA,uBAAfA,iBAAA,CAAiBI;MACrC,CAAC;EACL;AACF;AAQA,OAAO,SAASC,mBAAmBA,CAACf,QAAqB,EAAa;EAAA,IAAAgB,iBAAA;EACpE,MAAMC,KAAK,GAAG,IAAIvB,SAAS,EAAAsB,iBAAA,GAAChB,QAAQ,CAACkB,OAAO,cAAAF,iBAAA,cAAAA,iBAAA,GAAI,eAAe,EAAE;IAC/DL,cAAc,EAAEL,iBAAiB,CAACN,QAAQ,CAAC;IAG3CmB,aAAa,EAAEZ,gBAAgB,CAACP,QAAQ;EAC1C,CAAC,CAAC;EACF,OAAOiB,KAAK;AACd;AAOA,OAAO,SAASG,uBAAuBA,CACrCf,MAA6B,EACN;EACvB,IAAI,CAACA,MAAM,IAAIA,MAAM,CAACgB,MAAM,KAAK,CAAC,EAAE;IAClC;EACF;EACA,IAAIhB,MAAM,CAACgB,MAAM,KAAK,CAAC,EAAE;IACvB,OAAON,mBAAmB,CAACV,MAAM,CAAC,CAAC,CAAC,CAAC;EACvC;EAEA,MAAMiB,aAAa,GAAGjB,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEkB,GAAG,CAAEN,KAAK,IAAKA,KAAK,CAACC,OAAO,CAAC;EAC3D,OAAO,IAAIxB,SAAS,CAAC4B,aAAa,CAACE,IAAI,CAAC,KAAK,CAAC,EAAE;IAC9Cb,cAAc,EAAEN,MAAM,CAACkB,GAAG,CAACjB,iBAAiB;EAC9C,CAAC,CAAC;AACJ;AAOA,OAAO,MAAMmB,qBAAqB,GAChCpB,MAA6B,IACC;EAC9B,OAAO,CAACA,MAAM,aAANA,MAAM,cAANA,MAAM,GAAI,EAAE,EAAEqB,MAAM,CAAC,CAACrB,MAAM,EAAEL,QAAQ,KAAK;IACjD,OAAA2B,aAAA,CAAAA,aAAA,KACKtB,MAAM;MACT,CAACN,eAAe,CAACC,QAAQ,CAAC,GAAGe,mBAAmB,CAACf,QAAQ;IAAC;EAE9D,CAAC,EAAE,CAAC,CAAC,CAAC;AACR,CAAC"}
@@ -1,3 +1,2 @@
1
1
  export * from './errors';
2
- export * from './numbers';
3
2
  export { default as TestElement } from './TestElement/TestElement';
@@ -1,4 +1,3 @@
1
1
  export * from './errors';
2
- export * from './numbers';
3
2
  export { default as TestElement } from './TestElement/TestElement';
4
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["default","TestElement"],"sources":["../../../../../src/extensions/forms/utils/index.ts"],"sourcesContent":["export * from './errors'\nexport * from './numbers'\nexport { default as TestElement } from './TestElement/TestElement'\n"],"mappings":"AAAA,cAAc,UAAU;AACxB,cAAc,WAAW;AACzB,SAASA,OAAO,IAAIC,WAAW,QAAQ,2BAA2B"}
1
+ {"version":3,"file":"index.js","names":["default","TestElement"],"sources":["../../../../../src/extensions/forms/utils/index.ts"],"sourcesContent":["export * from './errors'\nexport { default as TestElement } from './TestElement/TestElement'\n"],"mappings":"AAAA,cAAc,UAAU;AACxB,SAASA,OAAO,IAAIC,WAAW,QAAQ,2BAA2B"}
@@ -1,2 +1,2 @@
1
1
  export function init(): void;
2
- export const version: "10.19.0";
2
+ export const version: "10.20.0";
@@ -1,9 +1,9 @@
1
- export const version = '10.19.0';
1
+ export const version = '10.20.0';
2
2
  export function init() {
3
3
  if (typeof window !== 'undefined') {
4
4
  class Eufemia {
5
5
  get version() {
6
- return '10.19.0';
6
+ return '10.20.0';
7
7
  }
8
8
  }
9
9
  window.Eufemia = new Eufemia();
@@ -1 +1 @@
1
- {"version":3,"file":"Eufemia.js","names":["version","init","window","Eufemia"],"sources":["../../../src/shared/Eufemia.js"],"sourcesContent":["export const version = '10.19.0'\n\nexport function init() {\n if (typeof window !== 'undefined') {\n class Eufemia {\n get version() {\n return '10.19.0'\n }\n }\n\n window.Eufemia = new Eufemia()\n }\n}\n"],"mappings":"AAAA,OAAO,MAAMA,OAAO,GAAG,SAAS;AAEhC,OAAO,SAASC,IAAIA,CAAA,EAAG;EACrB,IAAI,OAAOC,MAAM,KAAK,WAAW,EAAE;IACjC,MAAMC,OAAO,CAAC;MACZ,IAAIH,OAAOA,CAAA,EAAG;QACZ,OAAO,SAAS;MAClB;IACF;IAEAE,MAAM,CAACC,OAAO,GAAG,IAAIA,OAAO,CAAC,CAAC;EAChC;AACF"}
1
+ {"version":3,"file":"Eufemia.js","names":["version","init","window","Eufemia"],"sources":["../../../src/shared/Eufemia.js"],"sourcesContent":["export const version = '10.20.0'\n\nexport function init() {\n if (typeof window !== 'undefined') {\n class Eufemia {\n get version() {\n return '10.20.0'\n }\n }\n\n window.Eufemia = new Eufemia()\n }\n}\n"],"mappings":"AAAA,OAAO,MAAMA,OAAO,GAAG,SAAS;AAEhC,OAAO,SAASC,IAAIA,CAAA,EAAG;EACrB,IAAI,OAAOC,MAAM,KAAK,WAAW,EAAE;IACjC,MAAMC,OAAO,CAAC;MACZ,IAAIH,OAAOA,CAAA,EAAG;QACZ,OAAO,SAAS;MAClB;IACF;IAEAE,MAAM,CAACC,OAAO,GAAG,IAAIA,OAAO,CAAC,CAAC;EAChC;AACF"}
@@ -13,9 +13,6 @@ export { useEventEmitter } from './helpers/useEventEmitter';
13
13
  export { filterProps } from './helpers/filterProps';
14
14
  export { getPreviousSibling, warn };
15
15
  init();
16
- if (typeof process !== 'undefined' && process.env.NODE_ENV === 'test' && typeof window !== 'undefined') {
17
- window.IS_TEST = true;
18
- }
19
16
  whatInput.specificKeys([9]);
20
17
  defineNavigator();
21
18
  export function isTouchDevice() {