@dnb/eufemia 10.22.0 → 10.23.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 (1077) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/cjs/components/accordion/Accordion.js +1 -1
  3. package/cjs/components/accordion/Accordion.js.map +1 -1
  4. package/cjs/components/accordion/AccordionContext.d.ts +1 -1
  5. package/cjs/components/accordion/AccordionGroup.js +1 -1
  6. package/cjs/components/accordion/AccordionGroup.js.map +1 -1
  7. package/cjs/components/anchor/Anchor.d.ts +2 -3
  8. package/cjs/components/anchor/Anchor.js +14 -23
  9. package/cjs/components/anchor/Anchor.js.map +1 -1
  10. package/cjs/components/anchor/style/anchor-mixins.scss +16 -10
  11. package/cjs/components/anchor/style/dnb-anchor.css +6 -12
  12. package/cjs/components/anchor/style/dnb-anchor.min.css +1 -1
  13. package/cjs/components/anchor/style/themes/dnb-anchor-theme-eiendom.css +8 -16
  14. package/cjs/components/anchor/style/themes/dnb-anchor-theme-eiendom.min.css +1 -1
  15. package/cjs/components/anchor/style/themes/dnb-anchor-theme-sbanken.css +126 -78
  16. package/cjs/components/anchor/style/themes/dnb-anchor-theme-sbanken.min.css +1 -1
  17. package/cjs/components/anchor/style/themes/dnb-anchor-theme-sbanken.scss +55 -52
  18. package/cjs/components/anchor/style/themes/dnb-anchor-theme-ui.css +8 -16
  19. package/cjs/components/anchor/style/themes/dnb-anchor-theme-ui.min.css +1 -1
  20. package/cjs/components/aria-live/useAriaLive.d.ts +1 -1
  21. package/cjs/components/breadcrumb/Breadcrumb.js +26 -17
  22. package/cjs/components/breadcrumb/Breadcrumb.js.map +1 -1
  23. package/cjs/components/breadcrumb/BreadcrumbItem.d.ts +6 -4
  24. package/cjs/components/breadcrumb/BreadcrumbItem.js +17 -9
  25. package/cjs/components/breadcrumb/BreadcrumbItem.js.map +1 -1
  26. package/cjs/components/breadcrumb/style/dnb-breadcrumb.css +29 -4
  27. package/cjs/components/breadcrumb/style/dnb-breadcrumb.min.css +1 -1
  28. package/cjs/components/breadcrumb/style/dnb-breadcrumb.scss +32 -4
  29. package/cjs/components/breadcrumb/style/themes/dnb-breadcrumb-theme-sbanken.css +9 -0
  30. package/cjs/components/breadcrumb/style/themes/dnb-breadcrumb-theme-sbanken.min.css +1 -1
  31. package/cjs/components/breadcrumb/style/themes/dnb-breadcrumb-theme-sbanken.scss +7 -0
  32. package/cjs/components/button/style/button--tertiary.scss +30 -75
  33. package/cjs/components/button/style/dnb-button.css +43 -49
  34. package/cjs/components/button/style/dnb-button.min.css +1 -1
  35. package/cjs/components/button/style/dnb-button.scss +46 -59
  36. package/cjs/components/button/style/themes/button-mixins.scss +26 -5
  37. package/cjs/components/button/style/themes/dnb-button-theme-eiendom.css +29 -60
  38. package/cjs/components/button/style/themes/dnb-button-theme-eiendom.min.css +12 -2
  39. package/cjs/components/button/style/themes/dnb-button-theme-sbanken.css +44 -72
  40. package/cjs/components/button/style/themes/dnb-button-theme-sbanken.min.css +16 -4
  41. package/cjs/components/button/style/themes/dnb-button-theme-sbanken.scss +14 -16
  42. package/cjs/components/button/style/themes/dnb-button-theme-ui.css +29 -60
  43. package/cjs/components/button/style/themes/dnb-button-theme-ui.min.css +12 -2
  44. package/cjs/components/button/style/themes/dnb-button-theme-ui.scss +1 -1
  45. package/cjs/components/card/Card.d.ts +15 -2
  46. package/cjs/components/card/Card.js +19 -7
  47. package/cjs/components/card/Card.js.map +1 -1
  48. package/cjs/components/card/CardDocs.d.ts +2 -0
  49. package/cjs/components/card/CardDocs.js +65 -0
  50. package/cjs/components/card/CardDocs.js.map +1 -0
  51. package/cjs/components/card/style/dnb-card.css +24 -5
  52. package/cjs/components/card/style/dnb-card.min.css +1 -1
  53. package/cjs/components/card/style/dnb-card.scss +47 -16
  54. package/cjs/components/checkbox/style/dnb-checkbox.css +3 -0
  55. package/cjs/components/checkbox/style/dnb-checkbox.min.css +1 -1
  56. package/cjs/components/checkbox/style/dnb-checkbox.scss +7 -0
  57. package/cjs/components/date-picker/DatePicker.d.ts +2 -0
  58. package/cjs/components/date-picker/DatePicker.js +2 -1
  59. package/cjs/components/date-picker/DatePicker.js.map +1 -1
  60. package/cjs/components/date-picker/DatePickerInput.js +19 -3
  61. package/cjs/components/date-picker/DatePickerInput.js.map +1 -1
  62. package/cjs/components/date-picker/DatePickerProvider.js +8 -3
  63. package/cjs/components/date-picker/DatePickerProvider.js.map +1 -1
  64. package/cjs/components/dropdown/style/dnb-dropdown.css +3 -0
  65. package/cjs/components/dropdown/style/dnb-dropdown.min.css +1 -1
  66. package/cjs/components/dropdown/style/dnb-dropdown.scss +4 -0
  67. package/cjs/components/form-label/FormLabel.js +1 -1
  68. package/cjs/components/form-label/FormLabel.js.map +1 -1
  69. package/cjs/components/form-label/style/dnb-form-label.css +3 -0
  70. package/cjs/components/form-label/style/dnb-form-label.min.css +1 -1
  71. package/cjs/components/form-label/style/dnb-form-label.scss +4 -0
  72. package/cjs/components/form-label/style/themes/dnb-form-label-theme-sbanken.css +0 -3
  73. package/cjs/components/form-label/style/themes/dnb-form-label-theme-sbanken.min.css +1 -1
  74. package/cjs/components/form-label/style/themes/dnb-form-label-theme-sbanken.scss +0 -8
  75. package/cjs/components/form-label/style/themes/dnb-form-label-theme-ui.css +0 -6
  76. package/cjs/components/form-label/style/themes/dnb-form-label-theme-ui.min.css +1 -1
  77. package/cjs/components/form-label/style/themes/dnb-form-label-theme-ui.scss +0 -8
  78. package/cjs/components/heading/HeadingContext.d.ts +1 -1
  79. package/cjs/components/height-animation/style/dnb-height-animation.css +2 -2
  80. package/cjs/components/height-animation/style/dnb-height-animation.min.css +1 -1
  81. package/cjs/components/height-animation/style/dnb-height-animation.scss +3 -2
  82. package/cjs/components/number-format/NumberUtils.d.ts +1 -1
  83. package/cjs/components/radio/style/dnb-radio.css +4 -0
  84. package/cjs/components/radio/style/dnb-radio.min.css +1 -1
  85. package/cjs/components/radio/style/dnb-radio.scss +9 -0
  86. package/cjs/components/section/style/themes/dnb-section-theme-ui.css +3 -6
  87. package/cjs/components/section/style/themes/dnb-section-theme-ui.min.css +1 -1
  88. package/cjs/components/skeleton/SkeletonHelper.d.ts +6 -6
  89. package/cjs/components/skeleton/style/dnb-skeleton.css +1 -0
  90. package/cjs/components/skeleton/style/dnb-skeleton.min.css +1 -1
  91. package/cjs/components/skeleton/style/dnb-skeleton.scss +1 -0
  92. package/cjs/components/slider/SliderInstance.js +1 -0
  93. package/cjs/components/slider/SliderInstance.js.map +1 -1
  94. package/cjs/components/slider/SliderThumb.js +4 -2
  95. package/cjs/components/slider/SliderThumb.js.map +1 -1
  96. package/cjs/components/step-indicator/StepIndicator.js +11 -5
  97. package/cjs/components/step-indicator/StepIndicator.js.map +1 -1
  98. package/cjs/components/step-indicator/style/themes/dnb-step-indicator-theme-ui.css +1 -1
  99. package/cjs/components/step-indicator/style/themes/dnb-step-indicator-theme-ui.min.css +1 -1
  100. package/cjs/components/step-indicator/style/themes/dnb-step-indicator-theme-ui.scss +1 -1
  101. package/cjs/components/table/TableScrollView.d.ts +5 -1
  102. package/cjs/components/table/TableScrollView.js +1 -0
  103. package/cjs/components/table/TableScrollView.js.map +1 -1
  104. package/cjs/components/table/TableTr.d.ts +1 -2
  105. package/cjs/components/table/TableTr.js.map +1 -1
  106. package/cjs/components/table/style/dnb-table.css +8 -1
  107. package/cjs/components/table/style/dnb-table.min.css +1 -1
  108. package/cjs/components/table/style/dnb-table.scss +7 -1
  109. package/cjs/components/table/style/table-header-buttons.scss +4 -1
  110. package/cjs/components/table/useTableAnimationHandler.d.ts +1 -1
  111. package/cjs/components/table/useTableAnimationHandler.js +3 -3
  112. package/cjs/components/table/useTableAnimationHandler.js.map +1 -1
  113. package/cjs/components/tag/Tag.d.ts +11 -0
  114. package/cjs/components/tag/Tag.js +55 -40
  115. package/cjs/components/tag/Tag.js.map +1 -1
  116. package/cjs/components/tag/style/dnb-tag.css +50 -86
  117. package/cjs/components/tag/style/dnb-tag.min.css +1 -1
  118. package/cjs/components/tag/style/dnb-tag.scss +37 -45
  119. package/cjs/components/tag/style/themes/tag-mixins.scss +24 -6
  120. package/cjs/components/tooltip/Tooltip.js +1 -1
  121. package/cjs/components/tooltip/Tooltip.js.map +1 -1
  122. package/cjs/elements/Element.d.ts +3 -4
  123. package/cjs/elements/Element.js.map +1 -1
  124. package/cjs/elements/code/style/themes/dnb-code-theme-sbanken.scss +5 -3
  125. package/cjs/extensions/forms/DataContext/At/At.js.map +1 -1
  126. package/cjs/extensions/forms/DataContext/Context.d.ts +31 -8
  127. package/cjs/extensions/forms/DataContext/Context.js +14 -3
  128. package/cjs/extensions/forms/DataContext/Context.js.map +1 -1
  129. package/cjs/extensions/forms/DataContext/Provider/Provider.d.ts +29 -16
  130. package/cjs/extensions/forms/DataContext/Provider/Provider.js +324 -77
  131. package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  132. package/cjs/extensions/forms/DataContext/Provider/ProviderDocs.d.ts +3 -0
  133. package/cjs/extensions/forms/DataContext/Provider/ProviderDocs.js +93 -0
  134. package/cjs/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -0
  135. package/cjs/extensions/forms/Field/ArraySelection/ArraySelection.js +1 -1
  136. package/cjs/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
  137. package/cjs/extensions/forms/Field/Date/Date.js +3 -3
  138. package/cjs/extensions/forms/Field/Date/Date.js.map +1 -1
  139. package/cjs/extensions/forms/Field/Expiry/Expiry.js +4 -4
  140. package/cjs/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
  141. package/cjs/extensions/forms/Field/Number/Number.js +3 -3
  142. package/cjs/extensions/forms/Field/Number/Number.js.map +1 -1
  143. package/cjs/extensions/forms/Field/Password/Password.d.ts +1 -1
  144. package/cjs/extensions/forms/Field/Password/Password.js.map +1 -1
  145. package/cjs/extensions/forms/Field/Password/style/dnb-password.scss +1 -1
  146. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.js +4 -4
  147. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  148. package/cjs/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js +3 -1
  149. package/cjs/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js.map +1 -1
  150. package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.js +3 -3
  151. package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
  152. package/cjs/extensions/forms/Field/Selection/Selection.js +5 -5
  153. package/cjs/extensions/forms/Field/Selection/Selection.js.map +1 -1
  154. package/cjs/extensions/forms/Field/String/String.js +3 -3
  155. package/cjs/extensions/forms/Field/String/String.js.map +1 -1
  156. package/cjs/extensions/forms/Field/String/StringDocs.js +9 -4
  157. package/cjs/extensions/forms/Field/String/StringDocs.js.map +1 -1
  158. package/cjs/extensions/forms/Field/Toggle/Toggle.js +7 -7
  159. package/cjs/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  160. package/cjs/extensions/forms/FieldBlock/FieldBlock.d.ts +3 -1
  161. package/cjs/extensions/forms/FieldBlock/FieldBlock.js +41 -19
  162. package/cjs/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  163. package/cjs/extensions/forms/FieldBlock/FieldBlockContext.d.ts +2 -2
  164. package/cjs/extensions/forms/FieldBlock/FieldBlockContext.js.map +1 -1
  165. package/cjs/extensions/forms/Form/Handler/Handler.d.ts +1 -1
  166. package/cjs/extensions/forms/Form/Handler/Handler.js +50 -8
  167. package/cjs/extensions/forms/Form/Handler/Handler.js.map +1 -1
  168. package/cjs/extensions/forms/Form/Handler/HandlerDocs.d.ts +3 -0
  169. package/cjs/extensions/forms/Form/Handler/HandlerDocs.js +49 -0
  170. package/cjs/extensions/forms/Form/Handler/HandlerDocs.js.map +1 -0
  171. package/cjs/extensions/forms/Form/SubmitButton/SubmitButton.d.ts +6 -1
  172. package/cjs/extensions/forms/Form/SubmitButton/SubmitButton.js +19 -10
  173. package/cjs/extensions/forms/Form/SubmitButton/SubmitButton.js.map +1 -1
  174. package/cjs/extensions/forms/Form/SubmitButton/SubmitButtonDocs.d.ts +2 -0
  175. package/cjs/extensions/forms/Form/SubmitButton/SubmitButtonDocs.js +30 -0
  176. package/cjs/extensions/forms/Form/SubmitButton/SubmitButtonDocs.js.map +1 -0
  177. package/cjs/extensions/forms/Form/SubmitIndicator/SubmitIndicator.d.ts +14 -0
  178. package/cjs/extensions/forms/Form/SubmitIndicator/SubmitIndicator.js +81 -0
  179. package/cjs/extensions/forms/Form/SubmitIndicator/SubmitIndicator.js.map +1 -0
  180. package/cjs/extensions/forms/Form/SubmitIndicator/SubmitIndicatorDocs.d.ts +2 -0
  181. package/cjs/extensions/forms/Form/SubmitIndicator/SubmitIndicatorDocs.js +25 -0
  182. package/cjs/extensions/forms/Form/SubmitIndicator/SubmitIndicatorDocs.js.map +1 -0
  183. package/cjs/extensions/forms/Form/SubmitIndicator/index.d.ts +2 -0
  184. package/cjs/extensions/forms/Form/SubmitIndicator/index.js +27 -0
  185. package/cjs/extensions/forms/Form/SubmitIndicator/index.js.map +1 -0
  186. package/cjs/extensions/forms/Form/SubmitIndicator/style/dnb-form-submit-indicator.css +99 -0
  187. package/cjs/extensions/forms/Form/SubmitIndicator/style/dnb-form-submit-indicator.min.css +1 -0
  188. package/cjs/extensions/forms/Form/SubmitIndicator/style/dnb-form-submit-indicator.scss +117 -0
  189. package/cjs/extensions/forms/Form/SubmitIndicator/style/index.d.ts +5 -0
  190. package/cjs/extensions/forms/Form/SubmitIndicator/style/index.js +4 -0
  191. package/cjs/extensions/forms/Form/SubmitIndicator/style/index.js.map +1 -0
  192. package/cjs/extensions/forms/Form/data-context/getData.d.ts +1 -1
  193. package/cjs/extensions/forms/Form/data-context/getData.js.map +1 -1
  194. package/cjs/extensions/forms/Form/data-context/useData.d.ts +3 -3
  195. package/cjs/extensions/forms/Form/data-context/useData.js +32 -12
  196. package/cjs/extensions/forms/Form/data-context/useData.js.map +1 -1
  197. package/cjs/extensions/forms/Form/data-context/useError.d.ts +3 -2
  198. package/cjs/extensions/forms/Form/data-context/useError.js +8 -5
  199. package/cjs/extensions/forms/Form/data-context/useError.js.map +1 -1
  200. package/cjs/extensions/forms/Form/index.d.ts +1 -0
  201. package/cjs/extensions/forms/Form/index.js +7 -0
  202. package/cjs/extensions/forms/Form/index.js.map +1 -1
  203. package/cjs/extensions/forms/Iterate/Array/Array.js +1 -1
  204. package/cjs/extensions/forms/Iterate/Array/Array.js.map +1 -1
  205. package/cjs/extensions/forms/Iterate/ArrayPushButton/ArrayPushButton.js +1 -1
  206. package/cjs/extensions/forms/Iterate/ArrayPushButton/ArrayPushButton.js.map +1 -1
  207. package/cjs/extensions/forms/Iterate/ArrayRemoveElementButton/ArrayRemoveElementButton.js +1 -1
  208. package/cjs/extensions/forms/Iterate/ArrayRemoveElementButton/ArrayRemoveElementButton.js.map +1 -1
  209. package/cjs/extensions/forms/StepsLayout/NextButton/NextButton.d.ts +1 -3
  210. package/cjs/extensions/forms/StepsLayout/NextButton/NextButton.js +4 -3
  211. package/cjs/extensions/forms/StepsLayout/NextButton/NextButton.js.map +1 -1
  212. package/cjs/extensions/forms/StepsLayout/PreviousButton/PreviousButton.d.ts +1 -3
  213. package/cjs/extensions/forms/StepsLayout/PreviousButton/PreviousButton.js +6 -2
  214. package/cjs/extensions/forms/StepsLayout/PreviousButton/PreviousButton.js.map +1 -1
  215. package/cjs/extensions/forms/StepsLayout/StepsLayout.d.ts +2 -2
  216. package/cjs/extensions/forms/StepsLayout/StepsLayout.js +54 -25
  217. package/cjs/extensions/forms/StepsLayout/StepsLayout.js.map +1 -1
  218. package/cjs/extensions/forms/StepsLayout/StepsLayoutDocs.d.ts +3 -0
  219. package/cjs/extensions/forms/StepsLayout/StepsLayoutDocs.js +58 -0
  220. package/cjs/extensions/forms/StepsLayout/StepsLayoutDocs.js.map +1 -0
  221. package/cjs/extensions/forms/StepsLayout/style/dnb-steps-layout.css +6 -1
  222. package/cjs/extensions/forms/StepsLayout/style/dnb-steps-layout.min.css +1 -1
  223. package/cjs/extensions/forms/StepsLayout/style/dnb-steps-layout.scss +11 -1
  224. package/cjs/extensions/forms/Value/Boolean/Boolean.js +1 -1
  225. package/cjs/extensions/forms/Value/Boolean/Boolean.js.map +1 -1
  226. package/cjs/extensions/forms/Value/Number/Number.js +5 -5
  227. package/cjs/extensions/forms/Value/Number/Number.js.map +1 -1
  228. package/cjs/extensions/forms/Value/String/String.js +1 -1
  229. package/cjs/extensions/forms/Value/String/String.js.map +1 -1
  230. package/cjs/extensions/forms/hooks/DataValueDocs.js +3 -3
  231. package/cjs/extensions/forms/hooks/DataValueDocs.js.map +1 -1
  232. package/cjs/extensions/forms/hooks/index.d.ts +6 -3
  233. package/cjs/extensions/forms/hooks/index.js +4 -12
  234. package/cjs/extensions/forms/hooks/index.js.map +1 -1
  235. package/cjs/extensions/forms/hooks/useFieldProps.d.ts +23 -0
  236. package/cjs/extensions/forms/hooks/useFieldProps.js +774 -0
  237. package/cjs/extensions/forms/hooks/useFieldProps.js.map +1 -0
  238. package/cjs/extensions/forms/style/dnb-forms.css +105 -1
  239. package/cjs/extensions/forms/style/dnb-forms.min.css +1 -1
  240. package/cjs/extensions/forms/types.d.ts +67 -4
  241. package/cjs/extensions/forms/types.js +3 -2
  242. package/cjs/extensions/forms/types.js.map +1 -1
  243. package/cjs/extensions/forms/utils/ajv.d.ts +9 -7
  244. package/cjs/extensions/forms/utils/ajv.js +29 -16
  245. package/cjs/extensions/forms/utils/ajv.js.map +1 -1
  246. package/cjs/fragments/scroll-view/ScrollView.d.ts +2 -2
  247. package/cjs/fragments/scroll-view/ScrollView.js +4 -1
  248. package/cjs/fragments/scroll-view/ScrollView.js.map +1 -1
  249. package/cjs/shared/Context.d.ts +20 -11
  250. package/cjs/shared/Context.js.map +1 -1
  251. package/cjs/shared/Eufemia.d.ts +2 -2
  252. package/cjs/shared/Eufemia.js +2 -2
  253. package/cjs/shared/Eufemia.js.map +1 -1
  254. package/cjs/shared/Provider.js.map +1 -1
  255. package/cjs/shared/defaults.d.ts +3 -3
  256. package/cjs/shared/defaults.js.map +1 -1
  257. package/cjs/shared/helpers/debounce.d.ts +21 -30
  258. package/cjs/shared/helpers/debounce.js +23 -11
  259. package/cjs/shared/helpers/debounce.js.map +1 -1
  260. package/cjs/shared/helpers/isAsync.d.ts +7 -0
  261. package/cjs/shared/helpers/isAsync.js +20 -0
  262. package/cjs/shared/helpers/isAsync.js.map +1 -0
  263. package/cjs/shared/helpers/runCssVersionMismatchWarning.d.ts +8 -0
  264. package/cjs/shared/helpers/runCssVersionMismatchWarning.js +31 -0
  265. package/cjs/shared/helpers/runCssVersionMismatchWarning.js.map +1 -0
  266. package/cjs/{extensions/forms/hooks → shared/helpers}/useId.js +1 -1
  267. package/cjs/shared/helpers/useId.js.map +1 -0
  268. package/cjs/shared/helpers/useMountEffect.js.map +1 -0
  269. package/cjs/shared/helpers/useMounted.js.map +1 -0
  270. package/cjs/shared/helpers/useSharedState.js +15 -9
  271. package/cjs/shared/helpers/useSharedState.js.map +1 -1
  272. package/cjs/shared/helpers/useUnmountEffect.js.map +1 -0
  273. package/cjs/shared/helpers/useUpdateEffect.js.map +1 -0
  274. package/cjs/shared/helpers.js +2 -0
  275. package/cjs/shared/helpers.js.map +1 -1
  276. package/cjs/shared/index.d.ts +10 -10
  277. package/cjs/shared/index.js +7 -1
  278. package/cjs/shared/index.js.map +1 -1
  279. package/cjs/shared/locales/en-GB.d.ts +1 -0
  280. package/cjs/shared/locales/en-GB.js +2 -1
  281. package/cjs/shared/locales/en-GB.js.map +1 -1
  282. package/cjs/shared/locales/en-US.d.ts +1 -0
  283. package/cjs/shared/locales/index.d.ts +4 -2
  284. package/cjs/shared/locales/index.js +2 -1
  285. package/cjs/shared/locales/index.js.map +1 -1
  286. package/cjs/shared/locales/nb-NO.d.ts +1 -0
  287. package/cjs/shared/locales/nb-NO.js +2 -1
  288. package/cjs/shared/locales/nb-NO.js.map +1 -1
  289. package/cjs/shared/types.d.ts +4 -1
  290. package/cjs/shared/types.js.map +1 -1
  291. package/cjs/shared/useLocale.d.ts +2 -0
  292. package/cjs/shared/useLocale.js +37 -0
  293. package/cjs/shared/useLocale.js.map +1 -0
  294. package/cjs/style/core/scopes.scss +3 -0
  295. package/cjs/style/dnb-ui-basis.css +1 -0
  296. package/cjs/style/dnb-ui-basis.min.css +1 -1
  297. package/cjs/style/dnb-ui-body.css +1 -0
  298. package/cjs/style/dnb-ui-body.min.css +1 -1
  299. package/cjs/style/dnb-ui-components.css +281 -160
  300. package/cjs/style/dnb-ui-components.min.css +3 -3
  301. package/cjs/style/dnb-ui-core.css +1 -0
  302. package/cjs/style/dnb-ui-core.min.css +1 -1
  303. package/cjs/style/dnb-ui-extensions.css +105 -1
  304. package/cjs/style/dnb-ui-extensions.min.css +1 -1
  305. package/cjs/style/dnb-ui-forms.css +105 -1
  306. package/cjs/style/dnb-ui-forms.min.css +1 -1
  307. package/cjs/style/dnb-ui-forms.scss +1 -0
  308. package/cjs/style/themes/theme-eiendom/eiendom-theme-basis.css +3 -6
  309. package/cjs/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  310. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +427 -250
  311. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +16 -6
  312. package/cjs/style/themes/theme-eiendom/eiendom-theme-elements.css +3 -6
  313. package/cjs/style/themes/theme-eiendom/eiendom-theme-elements.min.css +1 -1
  314. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.css +105 -1
  315. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  316. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.css +105 -1
  317. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  318. package/cjs/style/themes/theme-sbanken/sbanken-theme-basis.css +5 -2
  319. package/cjs/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
  320. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +566 -315
  321. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +20 -8
  322. package/cjs/style/themes/theme-sbanken/sbanken-theme-elements.css +5 -2
  323. package/cjs/style/themes/theme-sbanken/sbanken-theme-elements.min.css +1 -1
  324. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.css +105 -1
  325. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  326. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.css +105 -1
  327. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  328. package/cjs/style/themes/theme-ui/ui-theme-basis.css +3 -6
  329. package/cjs/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  330. package/cjs/style/themes/theme-ui/ui-theme-components.css +427 -250
  331. package/cjs/style/themes/theme-ui/ui-theme-components.min.css +16 -6
  332. package/cjs/style/themes/theme-ui/ui-theme-elements.css +3 -6
  333. package/cjs/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
  334. package/cjs/style/themes/theme-ui/ui-theme-extensions.css +105 -1
  335. package/cjs/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  336. package/cjs/style/themes/theme-ui/ui-theme-forms.css +105 -1
  337. package/cjs/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  338. package/cjs/style/themes/theme-ui/ui-theme-tags.css +3 -6
  339. package/cjs/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  340. package/components/accordion/Accordion.js +1 -1
  341. package/components/accordion/Accordion.js.map +1 -1
  342. package/components/accordion/AccordionContext.d.ts +1 -1
  343. package/components/accordion/AccordionGroup.js +1 -1
  344. package/components/accordion/AccordionGroup.js.map +1 -1
  345. package/components/anchor/Anchor.d.ts +2 -3
  346. package/components/anchor/Anchor.js +14 -23
  347. package/components/anchor/Anchor.js.map +1 -1
  348. package/components/anchor/style/anchor-mixins.scss +16 -10
  349. package/components/anchor/style/dnb-anchor.css +6 -12
  350. package/components/anchor/style/dnb-anchor.min.css +1 -1
  351. package/components/anchor/style/themes/dnb-anchor-theme-eiendom.css +8 -16
  352. package/components/anchor/style/themes/dnb-anchor-theme-eiendom.min.css +1 -1
  353. package/components/anchor/style/themes/dnb-anchor-theme-sbanken.css +126 -78
  354. package/components/anchor/style/themes/dnb-anchor-theme-sbanken.min.css +1 -1
  355. package/components/anchor/style/themes/dnb-anchor-theme-sbanken.scss +55 -52
  356. package/components/anchor/style/themes/dnb-anchor-theme-ui.css +8 -16
  357. package/components/anchor/style/themes/dnb-anchor-theme-ui.min.css +1 -1
  358. package/components/aria-live/useAriaLive.d.ts +1 -1
  359. package/components/breadcrumb/Breadcrumb.js +27 -18
  360. package/components/breadcrumb/Breadcrumb.js.map +1 -1
  361. package/components/breadcrumb/BreadcrumbItem.d.ts +6 -4
  362. package/components/breadcrumb/BreadcrumbItem.js +18 -10
  363. package/components/breadcrumb/BreadcrumbItem.js.map +1 -1
  364. package/components/breadcrumb/style/dnb-breadcrumb.css +29 -4
  365. package/components/breadcrumb/style/dnb-breadcrumb.min.css +1 -1
  366. package/components/breadcrumb/style/dnb-breadcrumb.scss +32 -4
  367. package/components/breadcrumb/style/themes/dnb-breadcrumb-theme-sbanken.css +9 -0
  368. package/components/breadcrumb/style/themes/dnb-breadcrumb-theme-sbanken.min.css +1 -1
  369. package/components/breadcrumb/style/themes/dnb-breadcrumb-theme-sbanken.scss +7 -0
  370. package/components/button/style/button--tertiary.scss +30 -75
  371. package/components/button/style/dnb-button.css +43 -49
  372. package/components/button/style/dnb-button.min.css +1 -1
  373. package/components/button/style/dnb-button.scss +46 -59
  374. package/components/button/style/themes/button-mixins.scss +26 -5
  375. package/components/button/style/themes/dnb-button-theme-eiendom.css +29 -60
  376. package/components/button/style/themes/dnb-button-theme-eiendom.min.css +12 -2
  377. package/components/button/style/themes/dnb-button-theme-sbanken.css +44 -72
  378. package/components/button/style/themes/dnb-button-theme-sbanken.min.css +16 -4
  379. package/components/button/style/themes/dnb-button-theme-sbanken.scss +14 -16
  380. package/components/button/style/themes/dnb-button-theme-ui.css +29 -60
  381. package/components/button/style/themes/dnb-button-theme-ui.min.css +12 -2
  382. package/components/button/style/themes/dnb-button-theme-ui.scss +1 -1
  383. package/components/card/Card.d.ts +15 -2
  384. package/components/card/Card.js +19 -7
  385. package/components/card/Card.js.map +1 -1
  386. package/components/card/CardDocs.d.ts +2 -0
  387. package/components/card/CardDocs.js +58 -0
  388. package/components/card/CardDocs.js.map +1 -0
  389. package/components/card/style/dnb-card.css +24 -5
  390. package/components/card/style/dnb-card.min.css +1 -1
  391. package/components/card/style/dnb-card.scss +47 -16
  392. package/components/checkbox/style/dnb-checkbox.css +3 -0
  393. package/components/checkbox/style/dnb-checkbox.min.css +1 -1
  394. package/components/checkbox/style/dnb-checkbox.scss +7 -0
  395. package/components/date-picker/DatePicker.d.ts +2 -0
  396. package/components/date-picker/DatePicker.js +2 -1
  397. package/components/date-picker/DatePicker.js.map +1 -1
  398. package/components/date-picker/DatePickerInput.js +19 -3
  399. package/components/date-picker/DatePickerInput.js.map +1 -1
  400. package/components/date-picker/DatePickerProvider.js +8 -3
  401. package/components/date-picker/DatePickerProvider.js.map +1 -1
  402. package/components/dropdown/style/dnb-dropdown.css +3 -0
  403. package/components/dropdown/style/dnb-dropdown.min.css +1 -1
  404. package/components/dropdown/style/dnb-dropdown.scss +4 -0
  405. package/components/form-label/FormLabel.js +1 -1
  406. package/components/form-label/FormLabel.js.map +1 -1
  407. package/components/form-label/style/dnb-form-label.css +3 -0
  408. package/components/form-label/style/dnb-form-label.min.css +1 -1
  409. package/components/form-label/style/dnb-form-label.scss +4 -0
  410. package/components/form-label/style/themes/dnb-form-label-theme-sbanken.css +0 -3
  411. package/components/form-label/style/themes/dnb-form-label-theme-sbanken.min.css +1 -1
  412. package/components/form-label/style/themes/dnb-form-label-theme-sbanken.scss +0 -8
  413. package/components/form-label/style/themes/dnb-form-label-theme-ui.css +0 -6
  414. package/components/form-label/style/themes/dnb-form-label-theme-ui.min.css +1 -1
  415. package/components/form-label/style/themes/dnb-form-label-theme-ui.scss +0 -8
  416. package/components/heading/HeadingContext.d.ts +1 -1
  417. package/components/height-animation/style/dnb-height-animation.css +2 -2
  418. package/components/height-animation/style/dnb-height-animation.min.css +1 -1
  419. package/components/height-animation/style/dnb-height-animation.scss +3 -2
  420. package/components/number-format/NumberUtils.d.ts +1 -1
  421. package/components/radio/style/dnb-radio.css +4 -0
  422. package/components/radio/style/dnb-radio.min.css +1 -1
  423. package/components/radio/style/dnb-radio.scss +9 -0
  424. package/components/section/style/themes/dnb-section-theme-ui.css +3 -6
  425. package/components/section/style/themes/dnb-section-theme-ui.min.css +1 -1
  426. package/components/skeleton/SkeletonHelper.d.ts +6 -6
  427. package/components/skeleton/style/dnb-skeleton.css +1 -0
  428. package/components/skeleton/style/dnb-skeleton.min.css +1 -1
  429. package/components/skeleton/style/dnb-skeleton.scss +1 -0
  430. package/components/slider/SliderInstance.js +1 -0
  431. package/components/slider/SliderInstance.js.map +1 -1
  432. package/components/slider/SliderThumb.js +4 -2
  433. package/components/slider/SliderThumb.js.map +1 -1
  434. package/components/step-indicator/StepIndicator.js +11 -6
  435. package/components/step-indicator/StepIndicator.js.map +1 -1
  436. package/components/step-indicator/style/themes/dnb-step-indicator-theme-ui.css +1 -1
  437. package/components/step-indicator/style/themes/dnb-step-indicator-theme-ui.min.css +1 -1
  438. package/components/step-indicator/style/themes/dnb-step-indicator-theme-ui.scss +1 -1
  439. package/components/table/TableScrollView.d.ts +5 -1
  440. package/components/table/TableScrollView.js +1 -0
  441. package/components/table/TableScrollView.js.map +1 -1
  442. package/components/table/TableTr.d.ts +1 -2
  443. package/components/table/TableTr.js.map +1 -1
  444. package/components/table/style/dnb-table.css +8 -1
  445. package/components/table/style/dnb-table.min.css +1 -1
  446. package/components/table/style/dnb-table.scss +7 -1
  447. package/components/table/style/table-header-buttons.scss +4 -1
  448. package/components/table/useTableAnimationHandler.d.ts +1 -1
  449. package/components/table/useTableAnimationHandler.js +3 -3
  450. package/components/table/useTableAnimationHandler.js.map +1 -1
  451. package/components/tag/Tag.d.ts +11 -0
  452. package/components/tag/Tag.js +54 -39
  453. package/components/tag/Tag.js.map +1 -1
  454. package/components/tag/style/dnb-tag.css +50 -86
  455. package/components/tag/style/dnb-tag.min.css +1 -1
  456. package/components/tag/style/dnb-tag.scss +37 -45
  457. package/components/tag/style/themes/tag-mixins.scss +24 -6
  458. package/components/tooltip/Tooltip.js +1 -1
  459. package/components/tooltip/Tooltip.js.map +1 -1
  460. package/elements/Element.d.ts +3 -4
  461. package/elements/Element.js.map +1 -1
  462. package/elements/code/style/themes/dnb-code-theme-sbanken.scss +5 -3
  463. package/es/components/accordion/Accordion.js +1 -1
  464. package/es/components/accordion/Accordion.js.map +1 -1
  465. package/es/components/accordion/AccordionContext.d.ts +1 -1
  466. package/es/components/accordion/AccordionGroup.js +1 -1
  467. package/es/components/accordion/AccordionGroup.js.map +1 -1
  468. package/es/components/anchor/Anchor.d.ts +2 -3
  469. package/es/components/anchor/Anchor.js +14 -23
  470. package/es/components/anchor/Anchor.js.map +1 -1
  471. package/es/components/anchor/style/anchor-mixins.scss +16 -10
  472. package/es/components/anchor/style/dnb-anchor.css +6 -12
  473. package/es/components/anchor/style/dnb-anchor.min.css +1 -1
  474. package/es/components/anchor/style/themes/dnb-anchor-theme-eiendom.css +8 -16
  475. package/es/components/anchor/style/themes/dnb-anchor-theme-eiendom.min.css +1 -1
  476. package/es/components/anchor/style/themes/dnb-anchor-theme-sbanken.css +126 -78
  477. package/es/components/anchor/style/themes/dnb-anchor-theme-sbanken.min.css +1 -1
  478. package/es/components/anchor/style/themes/dnb-anchor-theme-sbanken.scss +55 -52
  479. package/es/components/anchor/style/themes/dnb-anchor-theme-ui.css +8 -16
  480. package/es/components/anchor/style/themes/dnb-anchor-theme-ui.min.css +1 -1
  481. package/es/components/aria-live/useAriaLive.d.ts +1 -1
  482. package/es/components/breadcrumb/Breadcrumb.js +27 -18
  483. package/es/components/breadcrumb/Breadcrumb.js.map +1 -1
  484. package/es/components/breadcrumb/BreadcrumbItem.d.ts +6 -4
  485. package/es/components/breadcrumb/BreadcrumbItem.js +18 -10
  486. package/es/components/breadcrumb/BreadcrumbItem.js.map +1 -1
  487. package/es/components/breadcrumb/style/dnb-breadcrumb.css +29 -4
  488. package/es/components/breadcrumb/style/dnb-breadcrumb.min.css +1 -1
  489. package/es/components/breadcrumb/style/dnb-breadcrumb.scss +32 -4
  490. package/es/components/breadcrumb/style/themes/dnb-breadcrumb-theme-sbanken.css +9 -0
  491. package/es/components/breadcrumb/style/themes/dnb-breadcrumb-theme-sbanken.min.css +1 -1
  492. package/es/components/breadcrumb/style/themes/dnb-breadcrumb-theme-sbanken.scss +7 -0
  493. package/es/components/button/style/button--tertiary.scss +30 -75
  494. package/es/components/button/style/dnb-button.css +43 -49
  495. package/es/components/button/style/dnb-button.min.css +1 -1
  496. package/es/components/button/style/dnb-button.scss +46 -59
  497. package/es/components/button/style/themes/button-mixins.scss +26 -5
  498. package/es/components/button/style/themes/dnb-button-theme-eiendom.css +29 -60
  499. package/es/components/button/style/themes/dnb-button-theme-eiendom.min.css +12 -2
  500. package/es/components/button/style/themes/dnb-button-theme-sbanken.css +44 -72
  501. package/es/components/button/style/themes/dnb-button-theme-sbanken.min.css +16 -4
  502. package/es/components/button/style/themes/dnb-button-theme-sbanken.scss +14 -16
  503. package/es/components/button/style/themes/dnb-button-theme-ui.css +29 -60
  504. package/es/components/button/style/themes/dnb-button-theme-ui.min.css +12 -2
  505. package/es/components/button/style/themes/dnb-button-theme-ui.scss +1 -1
  506. package/es/components/card/Card.d.ts +15 -2
  507. package/es/components/card/Card.js +19 -7
  508. package/es/components/card/Card.js.map +1 -1
  509. package/es/components/card/CardDocs.d.ts +2 -0
  510. package/es/components/card/CardDocs.js +58 -0
  511. package/es/components/card/CardDocs.js.map +1 -0
  512. package/es/components/card/style/dnb-card.css +24 -5
  513. package/es/components/card/style/dnb-card.min.css +1 -1
  514. package/es/components/card/style/dnb-card.scss +47 -16
  515. package/es/components/checkbox/style/dnb-checkbox.css +3 -0
  516. package/es/components/checkbox/style/dnb-checkbox.min.css +1 -1
  517. package/es/components/checkbox/style/dnb-checkbox.scss +7 -0
  518. package/es/components/date-picker/DatePicker.d.ts +2 -0
  519. package/es/components/date-picker/DatePicker.js +2 -1
  520. package/es/components/date-picker/DatePicker.js.map +1 -1
  521. package/es/components/date-picker/DatePickerInput.js +19 -3
  522. package/es/components/date-picker/DatePickerInput.js.map +1 -1
  523. package/es/components/date-picker/DatePickerProvider.js +8 -3
  524. package/es/components/date-picker/DatePickerProvider.js.map +1 -1
  525. package/es/components/dropdown/style/dnb-dropdown.css +3 -0
  526. package/es/components/dropdown/style/dnb-dropdown.min.css +1 -1
  527. package/es/components/dropdown/style/dnb-dropdown.scss +4 -0
  528. package/es/components/form-label/FormLabel.js +1 -1
  529. package/es/components/form-label/FormLabel.js.map +1 -1
  530. package/es/components/form-label/style/dnb-form-label.css +3 -0
  531. package/es/components/form-label/style/dnb-form-label.min.css +1 -1
  532. package/es/components/form-label/style/dnb-form-label.scss +4 -0
  533. package/es/components/form-label/style/themes/dnb-form-label-theme-sbanken.css +0 -3
  534. package/es/components/form-label/style/themes/dnb-form-label-theme-sbanken.min.css +1 -1
  535. package/es/components/form-label/style/themes/dnb-form-label-theme-sbanken.scss +0 -8
  536. package/es/components/form-label/style/themes/dnb-form-label-theme-ui.css +0 -6
  537. package/es/components/form-label/style/themes/dnb-form-label-theme-ui.min.css +1 -1
  538. package/es/components/form-label/style/themes/dnb-form-label-theme-ui.scss +0 -8
  539. package/es/components/heading/HeadingContext.d.ts +1 -1
  540. package/es/components/height-animation/style/dnb-height-animation.css +2 -2
  541. package/es/components/height-animation/style/dnb-height-animation.min.css +1 -1
  542. package/es/components/height-animation/style/dnb-height-animation.scss +3 -2
  543. package/es/components/number-format/NumberUtils.d.ts +1 -1
  544. package/es/components/radio/style/dnb-radio.css +4 -0
  545. package/es/components/radio/style/dnb-radio.min.css +1 -1
  546. package/es/components/radio/style/dnb-radio.scss +9 -0
  547. package/es/components/section/style/themes/dnb-section-theme-ui.css +3 -6
  548. package/es/components/section/style/themes/dnb-section-theme-ui.min.css +1 -1
  549. package/es/components/skeleton/SkeletonHelper.d.ts +6 -6
  550. package/es/components/skeleton/style/dnb-skeleton.css +1 -0
  551. package/es/components/skeleton/style/dnb-skeleton.min.css +1 -1
  552. package/es/components/skeleton/style/dnb-skeleton.scss +1 -0
  553. package/es/components/slider/SliderInstance.js +1 -0
  554. package/es/components/slider/SliderInstance.js.map +1 -1
  555. package/es/components/slider/SliderThumb.js +4 -2
  556. package/es/components/slider/SliderThumb.js.map +1 -1
  557. package/es/components/step-indicator/StepIndicator.js +11 -6
  558. package/es/components/step-indicator/StepIndicator.js.map +1 -1
  559. package/es/components/step-indicator/style/themes/dnb-step-indicator-theme-ui.css +1 -1
  560. package/es/components/step-indicator/style/themes/dnb-step-indicator-theme-ui.min.css +1 -1
  561. package/es/components/step-indicator/style/themes/dnb-step-indicator-theme-ui.scss +1 -1
  562. package/es/components/table/TableScrollView.d.ts +5 -1
  563. package/es/components/table/TableScrollView.js +1 -0
  564. package/es/components/table/TableScrollView.js.map +1 -1
  565. package/es/components/table/TableTr.d.ts +1 -2
  566. package/es/components/table/TableTr.js.map +1 -1
  567. package/es/components/table/style/dnb-table.css +8 -1
  568. package/es/components/table/style/dnb-table.min.css +1 -1
  569. package/es/components/table/style/dnb-table.scss +7 -1
  570. package/es/components/table/style/table-header-buttons.scss +4 -1
  571. package/es/components/table/useTableAnimationHandler.d.ts +1 -1
  572. package/es/components/table/useTableAnimationHandler.js +3 -3
  573. package/es/components/table/useTableAnimationHandler.js.map +1 -1
  574. package/es/components/tag/Tag.d.ts +11 -0
  575. package/es/components/tag/Tag.js +54 -39
  576. package/es/components/tag/Tag.js.map +1 -1
  577. package/es/components/tag/style/dnb-tag.css +50 -86
  578. package/es/components/tag/style/dnb-tag.min.css +1 -1
  579. package/es/components/tag/style/dnb-tag.scss +37 -45
  580. package/es/components/tag/style/themes/tag-mixins.scss +24 -6
  581. package/es/components/tooltip/Tooltip.js +1 -1
  582. package/es/components/tooltip/Tooltip.js.map +1 -1
  583. package/es/elements/Element.d.ts +3 -4
  584. package/es/elements/Element.js.map +1 -1
  585. package/es/elements/code/style/themes/dnb-code-theme-sbanken.scss +5 -3
  586. package/es/extensions/forms/DataContext/At/At.js.map +1 -1
  587. package/es/extensions/forms/DataContext/Context.d.ts +31 -8
  588. package/es/extensions/forms/DataContext/Context.js +14 -3
  589. package/es/extensions/forms/DataContext/Context.js.map +1 -1
  590. package/es/extensions/forms/DataContext/Provider/Provider.d.ts +29 -16
  591. package/es/extensions/forms/DataContext/Provider/Provider.js +321 -75
  592. package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  593. package/es/extensions/forms/DataContext/Provider/ProviderDocs.d.ts +3 -0
  594. package/es/extensions/forms/DataContext/Provider/ProviderDocs.js +85 -0
  595. package/es/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -0
  596. package/es/extensions/forms/Field/ArraySelection/ArraySelection.js +2 -2
  597. package/es/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
  598. package/es/extensions/forms/Field/Date/Date.js +4 -4
  599. package/es/extensions/forms/Field/Date/Date.js.map +1 -1
  600. package/es/extensions/forms/Field/Expiry/Expiry.js +5 -5
  601. package/es/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
  602. package/es/extensions/forms/Field/Number/Number.js +4 -4
  603. package/es/extensions/forms/Field/Number/Number.js.map +1 -1
  604. package/es/extensions/forms/Field/Password/Password.d.ts +1 -1
  605. package/es/extensions/forms/Field/Password/Password.js.map +1 -1
  606. package/es/extensions/forms/Field/Password/style/dnb-password.scss +1 -1
  607. package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.js +5 -5
  608. package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  609. package/es/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js +3 -1
  610. package/es/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js.map +1 -1
  611. package/es/extensions/forms/Field/SelectCountry/SelectCountry.js +4 -4
  612. package/es/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
  613. package/es/extensions/forms/Field/Selection/Selection.js +6 -6
  614. package/es/extensions/forms/Field/Selection/Selection.js.map +1 -1
  615. package/es/extensions/forms/Field/String/String.js +4 -4
  616. package/es/extensions/forms/Field/String/String.js.map +1 -1
  617. package/es/extensions/forms/Field/String/StringDocs.js +9 -4
  618. package/es/extensions/forms/Field/String/StringDocs.js.map +1 -1
  619. package/es/extensions/forms/Field/Toggle/Toggle.js +8 -8
  620. package/es/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  621. package/es/extensions/forms/FieldBlock/FieldBlock.d.ts +3 -1
  622. package/es/extensions/forms/FieldBlock/FieldBlock.js +41 -20
  623. package/es/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  624. package/es/extensions/forms/FieldBlock/FieldBlockContext.d.ts +2 -2
  625. package/es/extensions/forms/FieldBlock/FieldBlockContext.js.map +1 -1
  626. package/es/extensions/forms/Form/Handler/Handler.d.ts +1 -1
  627. package/es/extensions/forms/Form/Handler/Handler.js +45 -9
  628. package/es/extensions/forms/Form/Handler/Handler.js.map +1 -1
  629. package/es/extensions/forms/Form/Handler/HandlerDocs.d.ts +3 -0
  630. package/es/extensions/forms/Form/Handler/HandlerDocs.js +39 -0
  631. package/es/extensions/forms/Form/Handler/HandlerDocs.js.map +1 -0
  632. package/es/extensions/forms/Form/SubmitButton/SubmitButton.d.ts +6 -1
  633. package/es/extensions/forms/Form/SubmitButton/SubmitButton.js +21 -12
  634. package/es/extensions/forms/Form/SubmitButton/SubmitButton.js.map +1 -1
  635. package/es/extensions/forms/Form/SubmitButton/SubmitButtonDocs.d.ts +2 -0
  636. package/es/extensions/forms/Form/SubmitButton/SubmitButtonDocs.js +23 -0
  637. package/es/extensions/forms/Form/SubmitButton/SubmitButtonDocs.js.map +1 -0
  638. package/es/extensions/forms/Form/SubmitIndicator/SubmitIndicator.d.ts +14 -0
  639. package/es/extensions/forms/Form/SubmitIndicator/SubmitIndicator.js +69 -0
  640. package/es/extensions/forms/Form/SubmitIndicator/SubmitIndicator.js.map +1 -0
  641. package/es/extensions/forms/Form/SubmitIndicator/SubmitIndicatorDocs.d.ts +2 -0
  642. package/es/extensions/forms/Form/SubmitIndicator/SubmitIndicatorDocs.js +18 -0
  643. package/es/extensions/forms/Form/SubmitIndicator/SubmitIndicatorDocs.js.map +1 -0
  644. package/es/extensions/forms/Form/SubmitIndicator/index.d.ts +2 -0
  645. package/es/extensions/forms/Form/SubmitIndicator/index.js +3 -0
  646. package/es/extensions/forms/Form/SubmitIndicator/index.js.map +1 -0
  647. package/es/extensions/forms/Form/SubmitIndicator/style/dnb-form-submit-indicator.css +99 -0
  648. package/es/extensions/forms/Form/SubmitIndicator/style/dnb-form-submit-indicator.min.css +1 -0
  649. package/es/extensions/forms/Form/SubmitIndicator/style/dnb-form-submit-indicator.scss +117 -0
  650. package/es/extensions/forms/Form/SubmitIndicator/style/index.d.ts +5 -0
  651. package/es/extensions/forms/Form/SubmitIndicator/style/index.js +1 -0
  652. package/es/extensions/forms/Form/SubmitIndicator/style/index.js.map +1 -0
  653. package/es/extensions/forms/Form/data-context/getData.d.ts +1 -1
  654. package/es/extensions/forms/Form/data-context/getData.js.map +1 -1
  655. package/es/extensions/forms/Form/data-context/useData.d.ts +3 -3
  656. package/es/extensions/forms/Form/data-context/useData.js +30 -12
  657. package/es/extensions/forms/Form/data-context/useData.js.map +1 -1
  658. package/es/extensions/forms/Form/data-context/useError.d.ts +3 -2
  659. package/es/extensions/forms/Form/data-context/useError.js +7 -6
  660. package/es/extensions/forms/Form/data-context/useError.js.map +1 -1
  661. package/es/extensions/forms/Form/index.d.ts +1 -0
  662. package/es/extensions/forms/Form/index.js +1 -0
  663. package/es/extensions/forms/Form/index.js.map +1 -1
  664. package/es/extensions/forms/Iterate/Array/Array.js +2 -2
  665. package/es/extensions/forms/Iterate/Array/Array.js.map +1 -1
  666. package/es/extensions/forms/Iterate/ArrayPushButton/ArrayPushButton.js +2 -2
  667. package/es/extensions/forms/Iterate/ArrayPushButton/ArrayPushButton.js.map +1 -1
  668. package/es/extensions/forms/Iterate/ArrayRemoveElementButton/ArrayRemoveElementButton.js +2 -2
  669. package/es/extensions/forms/Iterate/ArrayRemoveElementButton/ArrayRemoveElementButton.js.map +1 -1
  670. package/es/extensions/forms/StepsLayout/NextButton/NextButton.d.ts +1 -3
  671. package/es/extensions/forms/StepsLayout/NextButton/NextButton.js +4 -3
  672. package/es/extensions/forms/StepsLayout/NextButton/NextButton.js.map +1 -1
  673. package/es/extensions/forms/StepsLayout/PreviousButton/PreviousButton.d.ts +1 -3
  674. package/es/extensions/forms/StepsLayout/PreviousButton/PreviousButton.js +6 -2
  675. package/es/extensions/forms/StepsLayout/PreviousButton/PreviousButton.js.map +1 -1
  676. package/es/extensions/forms/StepsLayout/StepsLayout.d.ts +2 -2
  677. package/es/extensions/forms/StepsLayout/StepsLayout.js +55 -26
  678. package/es/extensions/forms/StepsLayout/StepsLayout.js.map +1 -1
  679. package/es/extensions/forms/StepsLayout/StepsLayoutDocs.d.ts +3 -0
  680. package/es/extensions/forms/StepsLayout/StepsLayoutDocs.js +50 -0
  681. package/es/extensions/forms/StepsLayout/StepsLayoutDocs.js.map +1 -0
  682. package/es/extensions/forms/StepsLayout/style/dnb-steps-layout.css +6 -1
  683. package/es/extensions/forms/StepsLayout/style/dnb-steps-layout.min.css +1 -1
  684. package/es/extensions/forms/StepsLayout/style/dnb-steps-layout.scss +11 -1
  685. package/es/extensions/forms/Value/Boolean/Boolean.js +2 -2
  686. package/es/extensions/forms/Value/Boolean/Boolean.js.map +1 -1
  687. package/es/extensions/forms/Value/Number/Number.js +5 -5
  688. package/es/extensions/forms/Value/Number/Number.js.map +1 -1
  689. package/es/extensions/forms/Value/String/String.js +2 -2
  690. package/es/extensions/forms/Value/String/String.js.map +1 -1
  691. package/es/extensions/forms/hooks/DataValueDocs.js +3 -3
  692. package/es/extensions/forms/hooks/DataValueDocs.js.map +1 -1
  693. package/es/extensions/forms/hooks/index.d.ts +6 -3
  694. package/es/extensions/forms/hooks/index.js +2 -3
  695. package/es/extensions/forms/hooks/index.js.map +1 -1
  696. package/es/extensions/forms/hooks/useFieldProps.d.ts +23 -0
  697. package/es/extensions/forms/hooks/useFieldProps.js +749 -0
  698. package/es/extensions/forms/hooks/useFieldProps.js.map +1 -0
  699. package/es/extensions/forms/style/dnb-forms.css +105 -1
  700. package/es/extensions/forms/style/dnb-forms.min.css +1 -1
  701. package/es/extensions/forms/types.d.ts +67 -4
  702. package/es/extensions/forms/types.js +3 -2
  703. package/es/extensions/forms/types.js.map +1 -1
  704. package/es/extensions/forms/utils/ajv.d.ts +9 -7
  705. package/es/extensions/forms/utils/ajv.js +29 -14
  706. package/es/extensions/forms/utils/ajv.js.map +1 -1
  707. package/es/fragments/scroll-view/ScrollView.d.ts +2 -2
  708. package/es/fragments/scroll-view/ScrollView.js +4 -1
  709. package/es/fragments/scroll-view/ScrollView.js.map +1 -1
  710. package/es/shared/Context.d.ts +20 -11
  711. package/es/shared/Context.js.map +1 -1
  712. package/es/shared/Eufemia.d.ts +2 -2
  713. package/es/shared/Eufemia.js +2 -2
  714. package/es/shared/Eufemia.js.map +1 -1
  715. package/es/shared/Provider.js.map +1 -1
  716. package/es/shared/defaults.d.ts +3 -3
  717. package/es/shared/defaults.js.map +1 -1
  718. package/es/shared/helpers/debounce.d.ts +21 -30
  719. package/es/shared/helpers/debounce.js +21 -9
  720. package/es/shared/helpers/debounce.js.map +1 -1
  721. package/es/shared/helpers/isAsync.d.ts +7 -0
  722. package/es/shared/helpers/isAsync.js +14 -0
  723. package/es/shared/helpers/isAsync.js.map +1 -0
  724. package/es/shared/helpers/runCssVersionMismatchWarning.d.ts +8 -0
  725. package/es/shared/helpers/runCssVersionMismatchWarning.js +25 -0
  726. package/es/shared/helpers/runCssVersionMismatchWarning.js.map +1 -0
  727. package/es/{extensions/forms/hooks → shared/helpers}/useId.js +1 -1
  728. package/es/shared/helpers/useId.js.map +1 -0
  729. package/es/shared/helpers/useMountEffect.js.map +1 -0
  730. package/es/shared/helpers/useMounted.js.map +1 -0
  731. package/es/shared/helpers/useSharedState.js +15 -9
  732. package/es/shared/helpers/useSharedState.js.map +1 -1
  733. package/es/shared/helpers/useUnmountEffect.js.map +1 -0
  734. package/es/shared/helpers/useUpdateEffect.js.map +1 -0
  735. package/es/shared/helpers.js +2 -0
  736. package/es/shared/helpers.js.map +1 -1
  737. package/es/shared/index.d.ts +10 -10
  738. package/es/shared/index.js +9 -11
  739. package/es/shared/index.js.map +1 -1
  740. package/es/shared/locales/en-GB.d.ts +1 -0
  741. package/es/shared/locales/en-GB.js +2 -1
  742. package/es/shared/locales/en-GB.js.map +1 -1
  743. package/es/shared/locales/en-US.d.ts +1 -0
  744. package/es/shared/locales/index.d.ts +4 -2
  745. package/es/shared/locales/index.js +2 -1
  746. package/es/shared/locales/index.js.map +1 -1
  747. package/es/shared/locales/nb-NO.d.ts +1 -0
  748. package/es/shared/locales/nb-NO.js +2 -1
  749. package/es/shared/locales/nb-NO.js.map +1 -1
  750. package/es/shared/types.d.ts +4 -1
  751. package/es/shared/types.js.map +1 -1
  752. package/es/shared/useLocale.d.ts +2 -0
  753. package/es/shared/useLocale.js +29 -0
  754. package/es/shared/useLocale.js.map +1 -0
  755. package/es/style/core/scopes.scss +3 -0
  756. package/es/style/dnb-ui-basis.css +1 -0
  757. package/es/style/dnb-ui-basis.min.css +1 -1
  758. package/es/style/dnb-ui-body.css +1 -0
  759. package/es/style/dnb-ui-body.min.css +1 -1
  760. package/es/style/dnb-ui-components.css +281 -160
  761. package/es/style/dnb-ui-components.min.css +3 -3
  762. package/es/style/dnb-ui-core.css +1 -0
  763. package/es/style/dnb-ui-core.min.css +1 -1
  764. package/es/style/dnb-ui-extensions.css +105 -1
  765. package/es/style/dnb-ui-extensions.min.css +1 -1
  766. package/es/style/dnb-ui-forms.css +105 -1
  767. package/es/style/dnb-ui-forms.min.css +1 -1
  768. package/es/style/dnb-ui-forms.scss +1 -0
  769. package/es/style/themes/theme-eiendom/eiendom-theme-basis.css +3 -6
  770. package/es/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  771. package/es/style/themes/theme-eiendom/eiendom-theme-components.css +427 -250
  772. package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +16 -6
  773. package/es/style/themes/theme-eiendom/eiendom-theme-elements.css +3 -6
  774. package/es/style/themes/theme-eiendom/eiendom-theme-elements.min.css +1 -1
  775. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.css +105 -1
  776. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  777. package/es/style/themes/theme-eiendom/eiendom-theme-forms.css +105 -1
  778. package/es/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  779. package/es/style/themes/theme-sbanken/sbanken-theme-basis.css +5 -2
  780. package/es/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
  781. package/es/style/themes/theme-sbanken/sbanken-theme-components.css +566 -315
  782. package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +20 -8
  783. package/es/style/themes/theme-sbanken/sbanken-theme-elements.css +5 -2
  784. package/es/style/themes/theme-sbanken/sbanken-theme-elements.min.css +1 -1
  785. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.css +105 -1
  786. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  787. package/es/style/themes/theme-sbanken/sbanken-theme-forms.css +105 -1
  788. package/es/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  789. package/es/style/themes/theme-ui/ui-theme-basis.css +3 -6
  790. package/es/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  791. package/es/style/themes/theme-ui/ui-theme-components.css +427 -250
  792. package/es/style/themes/theme-ui/ui-theme-components.min.css +16 -6
  793. package/es/style/themes/theme-ui/ui-theme-elements.css +3 -6
  794. package/es/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
  795. package/es/style/themes/theme-ui/ui-theme-extensions.css +105 -1
  796. package/es/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  797. package/es/style/themes/theme-ui/ui-theme-forms.css +105 -1
  798. package/es/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  799. package/es/style/themes/theme-ui/ui-theme-tags.css +3 -6
  800. package/es/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  801. package/esm/dnb-ui-basis.min.mjs +1 -1
  802. package/esm/dnb-ui-components.min.mjs +1 -1
  803. package/esm/dnb-ui-elements.min.mjs +1 -1
  804. package/esm/dnb-ui-extensions.min.mjs +3 -3
  805. package/esm/dnb-ui-lib.min.mjs +1 -1
  806. package/extensions/forms/DataContext/At/At.js.map +1 -1
  807. package/extensions/forms/DataContext/Context.d.ts +31 -8
  808. package/extensions/forms/DataContext/Context.js +14 -3
  809. package/extensions/forms/DataContext/Context.js.map +1 -1
  810. package/extensions/forms/DataContext/Provider/Provider.d.ts +29 -16
  811. package/extensions/forms/DataContext/Provider/Provider.js +325 -78
  812. package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  813. package/extensions/forms/DataContext/Provider/ProviderDocs.d.ts +3 -0
  814. package/extensions/forms/DataContext/Provider/ProviderDocs.js +85 -0
  815. package/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -0
  816. package/extensions/forms/Field/ArraySelection/ArraySelection.js +2 -2
  817. package/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
  818. package/extensions/forms/Field/Date/Date.js +4 -4
  819. package/extensions/forms/Field/Date/Date.js.map +1 -1
  820. package/extensions/forms/Field/Expiry/Expiry.js +5 -5
  821. package/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
  822. package/extensions/forms/Field/Number/Number.js +4 -4
  823. package/extensions/forms/Field/Number/Number.js.map +1 -1
  824. package/extensions/forms/Field/Password/Password.d.ts +1 -1
  825. package/extensions/forms/Field/Password/Password.js.map +1 -1
  826. package/extensions/forms/Field/Password/style/dnb-password.scss +1 -1
  827. package/extensions/forms/Field/PhoneNumber/PhoneNumber.js +5 -5
  828. package/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  829. package/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js +3 -1
  830. package/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js.map +1 -1
  831. package/extensions/forms/Field/SelectCountry/SelectCountry.js +4 -4
  832. package/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
  833. package/extensions/forms/Field/Selection/Selection.js +6 -6
  834. package/extensions/forms/Field/Selection/Selection.js.map +1 -1
  835. package/extensions/forms/Field/String/String.js +4 -4
  836. package/extensions/forms/Field/String/String.js.map +1 -1
  837. package/extensions/forms/Field/String/StringDocs.js +9 -4
  838. package/extensions/forms/Field/String/StringDocs.js.map +1 -1
  839. package/extensions/forms/Field/Toggle/Toggle.js +8 -8
  840. package/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  841. package/extensions/forms/FieldBlock/FieldBlock.d.ts +3 -1
  842. package/extensions/forms/FieldBlock/FieldBlock.js +42 -20
  843. package/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  844. package/extensions/forms/FieldBlock/FieldBlockContext.d.ts +2 -2
  845. package/extensions/forms/FieldBlock/FieldBlockContext.js.map +1 -1
  846. package/extensions/forms/Form/Handler/Handler.d.ts +1 -1
  847. package/extensions/forms/Form/Handler/Handler.js +49 -9
  848. package/extensions/forms/Form/Handler/Handler.js.map +1 -1
  849. package/extensions/forms/Form/Handler/HandlerDocs.d.ts +3 -0
  850. package/extensions/forms/Form/Handler/HandlerDocs.js +39 -0
  851. package/extensions/forms/Form/Handler/HandlerDocs.js.map +1 -0
  852. package/extensions/forms/Form/SubmitButton/SubmitButton.d.ts +6 -1
  853. package/extensions/forms/Form/SubmitButton/SubmitButton.js +21 -12
  854. package/extensions/forms/Form/SubmitButton/SubmitButton.js.map +1 -1
  855. package/extensions/forms/Form/SubmitButton/SubmitButtonDocs.d.ts +2 -0
  856. package/extensions/forms/Form/SubmitButton/SubmitButtonDocs.js +23 -0
  857. package/extensions/forms/Form/SubmitButton/SubmitButtonDocs.js.map +1 -0
  858. package/extensions/forms/Form/SubmitIndicator/SubmitIndicator.d.ts +14 -0
  859. package/extensions/forms/Form/SubmitIndicator/SubmitIndicator.js +69 -0
  860. package/extensions/forms/Form/SubmitIndicator/SubmitIndicator.js.map +1 -0
  861. package/extensions/forms/Form/SubmitIndicator/SubmitIndicatorDocs.d.ts +2 -0
  862. package/extensions/forms/Form/SubmitIndicator/SubmitIndicatorDocs.js +18 -0
  863. package/extensions/forms/Form/SubmitIndicator/SubmitIndicatorDocs.js.map +1 -0
  864. package/extensions/forms/Form/SubmitIndicator/index.d.ts +2 -0
  865. package/extensions/forms/Form/SubmitIndicator/index.js +3 -0
  866. package/extensions/forms/Form/SubmitIndicator/index.js.map +1 -0
  867. package/extensions/forms/Form/SubmitIndicator/style/dnb-form-submit-indicator.css +99 -0
  868. package/extensions/forms/Form/SubmitIndicator/style/dnb-form-submit-indicator.min.css +1 -0
  869. package/extensions/forms/Form/SubmitIndicator/style/dnb-form-submit-indicator.scss +117 -0
  870. package/extensions/forms/Form/SubmitIndicator/style/index.d.ts +5 -0
  871. package/extensions/forms/Form/SubmitIndicator/style/index.js +1 -0
  872. package/extensions/forms/Form/SubmitIndicator/style/index.js.map +1 -0
  873. package/extensions/forms/Form/data-context/getData.d.ts +1 -1
  874. package/extensions/forms/Form/data-context/getData.js.map +1 -1
  875. package/extensions/forms/Form/data-context/useData.d.ts +3 -3
  876. package/extensions/forms/Form/data-context/useData.js +32 -12
  877. package/extensions/forms/Form/data-context/useData.js.map +1 -1
  878. package/extensions/forms/Form/data-context/useError.d.ts +3 -2
  879. package/extensions/forms/Form/data-context/useError.js +8 -6
  880. package/extensions/forms/Form/data-context/useError.js.map +1 -1
  881. package/extensions/forms/Form/index.d.ts +1 -0
  882. package/extensions/forms/Form/index.js +1 -0
  883. package/extensions/forms/Form/index.js.map +1 -1
  884. package/extensions/forms/Iterate/Array/Array.js +2 -2
  885. package/extensions/forms/Iterate/Array/Array.js.map +1 -1
  886. package/extensions/forms/Iterate/ArrayPushButton/ArrayPushButton.js +2 -2
  887. package/extensions/forms/Iterate/ArrayPushButton/ArrayPushButton.js.map +1 -1
  888. package/extensions/forms/Iterate/ArrayRemoveElementButton/ArrayRemoveElementButton.js +2 -2
  889. package/extensions/forms/Iterate/ArrayRemoveElementButton/ArrayRemoveElementButton.js.map +1 -1
  890. package/extensions/forms/StepsLayout/NextButton/NextButton.d.ts +1 -3
  891. package/extensions/forms/StepsLayout/NextButton/NextButton.js +4 -3
  892. package/extensions/forms/StepsLayout/NextButton/NextButton.js.map +1 -1
  893. package/extensions/forms/StepsLayout/PreviousButton/PreviousButton.d.ts +1 -3
  894. package/extensions/forms/StepsLayout/PreviousButton/PreviousButton.js +6 -2
  895. package/extensions/forms/StepsLayout/PreviousButton/PreviousButton.js.map +1 -1
  896. package/extensions/forms/StepsLayout/StepsLayout.d.ts +2 -2
  897. package/extensions/forms/StepsLayout/StepsLayout.js +55 -26
  898. package/extensions/forms/StepsLayout/StepsLayout.js.map +1 -1
  899. package/extensions/forms/StepsLayout/StepsLayoutDocs.d.ts +3 -0
  900. package/extensions/forms/StepsLayout/StepsLayoutDocs.js +50 -0
  901. package/extensions/forms/StepsLayout/StepsLayoutDocs.js.map +1 -0
  902. package/extensions/forms/StepsLayout/style/dnb-steps-layout.css +6 -1
  903. package/extensions/forms/StepsLayout/style/dnb-steps-layout.min.css +1 -1
  904. package/extensions/forms/StepsLayout/style/dnb-steps-layout.scss +11 -1
  905. package/extensions/forms/Value/Boolean/Boolean.js +2 -2
  906. package/extensions/forms/Value/Boolean/Boolean.js.map +1 -1
  907. package/extensions/forms/Value/Number/Number.js +5 -5
  908. package/extensions/forms/Value/Number/Number.js.map +1 -1
  909. package/extensions/forms/Value/String/String.js +2 -2
  910. package/extensions/forms/Value/String/String.js.map +1 -1
  911. package/extensions/forms/hooks/DataValueDocs.js +3 -3
  912. package/extensions/forms/hooks/DataValueDocs.js.map +1 -1
  913. package/extensions/forms/hooks/index.d.ts +6 -3
  914. package/extensions/forms/hooks/index.js +2 -3
  915. package/extensions/forms/hooks/index.js.map +1 -1
  916. package/extensions/forms/hooks/useFieldProps.d.ts +23 -0
  917. package/extensions/forms/hooks/useFieldProps.js +764 -0
  918. package/extensions/forms/hooks/useFieldProps.js.map +1 -0
  919. package/extensions/forms/style/dnb-forms.css +105 -1
  920. package/extensions/forms/style/dnb-forms.min.css +1 -1
  921. package/extensions/forms/types.d.ts +67 -4
  922. package/extensions/forms/types.js +3 -2
  923. package/extensions/forms/types.js.map +1 -1
  924. package/extensions/forms/utils/ajv.d.ts +9 -7
  925. package/extensions/forms/utils/ajv.js +29 -14
  926. package/extensions/forms/utils/ajv.js.map +1 -1
  927. package/fragments/scroll-view/ScrollView.d.ts +2 -2
  928. package/fragments/scroll-view/ScrollView.js +4 -1
  929. package/fragments/scroll-view/ScrollView.js.map +1 -1
  930. package/package.json +1 -1
  931. package/shared/Context.d.ts +20 -11
  932. package/shared/Context.js.map +1 -1
  933. package/shared/Eufemia.d.ts +2 -2
  934. package/shared/Eufemia.js +2 -2
  935. package/shared/Eufemia.js.map +1 -1
  936. package/shared/Provider.js.map +1 -1
  937. package/shared/defaults.d.ts +3 -3
  938. package/shared/defaults.js.map +1 -1
  939. package/shared/helpers/debounce.d.ts +21 -30
  940. package/shared/helpers/debounce.js +23 -11
  941. package/shared/helpers/debounce.js.map +1 -1
  942. package/shared/helpers/isAsync.d.ts +7 -0
  943. package/shared/helpers/isAsync.js +14 -0
  944. package/shared/helpers/isAsync.js.map +1 -0
  945. package/shared/helpers/runCssVersionMismatchWarning.d.ts +8 -0
  946. package/shared/helpers/runCssVersionMismatchWarning.js +25 -0
  947. package/shared/helpers/runCssVersionMismatchWarning.js.map +1 -0
  948. package/{extensions/forms/hooks → shared/helpers}/useId.js +1 -1
  949. package/shared/helpers/useId.js.map +1 -0
  950. package/shared/helpers/useMountEffect.js.map +1 -0
  951. package/shared/helpers/useMounted.js.map +1 -0
  952. package/shared/helpers/useSharedState.js +15 -9
  953. package/shared/helpers/useSharedState.js.map +1 -1
  954. package/shared/helpers/useUnmountEffect.js.map +1 -0
  955. package/shared/helpers/useUpdateEffect.js.map +1 -0
  956. package/shared/helpers.js +2 -0
  957. package/shared/helpers.js.map +1 -1
  958. package/shared/index.d.ts +10 -10
  959. package/shared/index.js +9 -11
  960. package/shared/index.js.map +1 -1
  961. package/shared/locales/en-GB.d.ts +1 -0
  962. package/shared/locales/en-GB.js +2 -1
  963. package/shared/locales/en-GB.js.map +1 -1
  964. package/shared/locales/en-US.d.ts +1 -0
  965. package/shared/locales/index.d.ts +4 -2
  966. package/shared/locales/index.js +2 -1
  967. package/shared/locales/index.js.map +1 -1
  968. package/shared/locales/nb-NO.d.ts +1 -0
  969. package/shared/locales/nb-NO.js +2 -1
  970. package/shared/locales/nb-NO.js.map +1 -1
  971. package/shared/types.d.ts +4 -1
  972. package/shared/types.js.map +1 -1
  973. package/shared/useLocale.d.ts +2 -0
  974. package/shared/useLocale.js +29 -0
  975. package/shared/useLocale.js.map +1 -0
  976. package/style/core/scopes.scss +3 -0
  977. package/style/dnb-ui-basis.css +1 -0
  978. package/style/dnb-ui-basis.min.css +1 -1
  979. package/style/dnb-ui-body.css +1 -0
  980. package/style/dnb-ui-body.min.css +1 -1
  981. package/style/dnb-ui-components.css +281 -160
  982. package/style/dnb-ui-components.min.css +3 -3
  983. package/style/dnb-ui-core.css +1 -0
  984. package/style/dnb-ui-core.min.css +1 -1
  985. package/style/dnb-ui-extensions.css +105 -1
  986. package/style/dnb-ui-extensions.min.css +1 -1
  987. package/style/dnb-ui-forms.css +105 -1
  988. package/style/dnb-ui-forms.min.css +1 -1
  989. package/style/dnb-ui-forms.scss +1 -0
  990. package/style/themes/theme-eiendom/eiendom-theme-basis.css +3 -6
  991. package/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  992. package/style/themes/theme-eiendom/eiendom-theme-components.css +427 -250
  993. package/style/themes/theme-eiendom/eiendom-theme-components.min.css +16 -6
  994. package/style/themes/theme-eiendom/eiendom-theme-elements.css +3 -6
  995. package/style/themes/theme-eiendom/eiendom-theme-elements.min.css +1 -1
  996. package/style/themes/theme-eiendom/eiendom-theme-extensions.css +105 -1
  997. package/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  998. package/style/themes/theme-eiendom/eiendom-theme-forms.css +105 -1
  999. package/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  1000. package/style/themes/theme-sbanken/sbanken-theme-basis.css +5 -2
  1001. package/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
  1002. package/style/themes/theme-sbanken/sbanken-theme-components.css +566 -315
  1003. package/style/themes/theme-sbanken/sbanken-theme-components.min.css +20 -8
  1004. package/style/themes/theme-sbanken/sbanken-theme-elements.css +5 -2
  1005. package/style/themes/theme-sbanken/sbanken-theme-elements.min.css +1 -1
  1006. package/style/themes/theme-sbanken/sbanken-theme-extensions.css +105 -1
  1007. package/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  1008. package/style/themes/theme-sbanken/sbanken-theme-forms.css +105 -1
  1009. package/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  1010. package/style/themes/theme-ui/ui-theme-basis.css +3 -6
  1011. package/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  1012. package/style/themes/theme-ui/ui-theme-components.css +427 -250
  1013. package/style/themes/theme-ui/ui-theme-components.min.css +16 -6
  1014. package/style/themes/theme-ui/ui-theme-elements.css +3 -6
  1015. package/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
  1016. package/style/themes/theme-ui/ui-theme-extensions.css +105 -1
  1017. package/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  1018. package/style/themes/theme-ui/ui-theme-forms.css +105 -1
  1019. package/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  1020. package/style/themes/theme-ui/ui-theme-tags.css +3 -6
  1021. package/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  1022. package/umd/dnb-ui-basis.min.js +1 -1
  1023. package/umd/dnb-ui-components.min.js +1 -1
  1024. package/umd/dnb-ui-elements.min.js +1 -1
  1025. package/umd/dnb-ui-extensions.min.js +3 -3
  1026. package/umd/dnb-ui-lib.min.js +1 -1
  1027. package/cjs/extensions/forms/hooks/useDataValue.d.ts +0 -18
  1028. package/cjs/extensions/forms/hooks/useDataValue.js +0 -461
  1029. package/cjs/extensions/forms/hooks/useDataValue.js.map +0 -1
  1030. package/cjs/extensions/forms/hooks/useId.js.map +0 -1
  1031. package/cjs/extensions/forms/hooks/useMountEffect.js.map +0 -1
  1032. package/cjs/extensions/forms/hooks/useMounted.js.map +0 -1
  1033. package/cjs/extensions/forms/hooks/useUnmountEffect.js.map +0 -1
  1034. package/cjs/extensions/forms/hooks/useUpdateEffect.js.map +0 -1
  1035. package/es/extensions/forms/hooks/useDataValue.d.ts +0 -18
  1036. package/es/extensions/forms/hooks/useDataValue.js +0 -443
  1037. package/es/extensions/forms/hooks/useDataValue.js.map +0 -1
  1038. package/es/extensions/forms/hooks/useId.js.map +0 -1
  1039. package/es/extensions/forms/hooks/useMountEffect.js.map +0 -1
  1040. package/es/extensions/forms/hooks/useMounted.js.map +0 -1
  1041. package/es/extensions/forms/hooks/useUnmountEffect.js.map +0 -1
  1042. package/es/extensions/forms/hooks/useUpdateEffect.js.map +0 -1
  1043. package/extensions/forms/hooks/useDataValue.d.ts +0 -18
  1044. package/extensions/forms/hooks/useDataValue.js +0 -451
  1045. package/extensions/forms/hooks/useDataValue.js.map +0 -1
  1046. package/extensions/forms/hooks/useId.js.map +0 -1
  1047. package/extensions/forms/hooks/useMountEffect.js.map +0 -1
  1048. package/extensions/forms/hooks/useMounted.js.map +0 -1
  1049. package/extensions/forms/hooks/useUnmountEffect.js.map +0 -1
  1050. package/extensions/forms/hooks/useUpdateEffect.js.map +0 -1
  1051. /package/cjs/{extensions/forms/hooks → shared/helpers}/useId.d.ts +0 -0
  1052. /package/cjs/{extensions/forms/hooks → shared/helpers}/useMountEffect.d.ts +0 -0
  1053. /package/cjs/{extensions/forms/hooks → shared/helpers}/useMountEffect.js +0 -0
  1054. /package/cjs/{extensions/forms/hooks → shared/helpers}/useMounted.d.ts +0 -0
  1055. /package/cjs/{extensions/forms/hooks → shared/helpers}/useMounted.js +0 -0
  1056. /package/cjs/{extensions/forms/hooks → shared/helpers}/useUnmountEffect.d.ts +0 -0
  1057. /package/cjs/{extensions/forms/hooks → shared/helpers}/useUnmountEffect.js +0 -0
  1058. /package/cjs/{extensions/forms/hooks → shared/helpers}/useUpdateEffect.d.ts +0 -0
  1059. /package/cjs/{extensions/forms/hooks → shared/helpers}/useUpdateEffect.js +0 -0
  1060. /package/es/{extensions/forms/hooks → shared/helpers}/useId.d.ts +0 -0
  1061. /package/es/{extensions/forms/hooks → shared/helpers}/useMountEffect.d.ts +0 -0
  1062. /package/es/{extensions/forms/hooks → shared/helpers}/useMountEffect.js +0 -0
  1063. /package/es/{extensions/forms/hooks → shared/helpers}/useMounted.d.ts +0 -0
  1064. /package/es/{extensions/forms/hooks → shared/helpers}/useMounted.js +0 -0
  1065. /package/es/{extensions/forms/hooks → shared/helpers}/useUnmountEffect.d.ts +0 -0
  1066. /package/es/{extensions/forms/hooks → shared/helpers}/useUnmountEffect.js +0 -0
  1067. /package/es/{extensions/forms/hooks → shared/helpers}/useUpdateEffect.d.ts +0 -0
  1068. /package/es/{extensions/forms/hooks → shared/helpers}/useUpdateEffect.js +0 -0
  1069. /package/{extensions/forms/hooks → shared/helpers}/useId.d.ts +0 -0
  1070. /package/{extensions/forms/hooks → shared/helpers}/useMountEffect.d.ts +0 -0
  1071. /package/{extensions/forms/hooks → shared/helpers}/useMountEffect.js +0 -0
  1072. /package/{extensions/forms/hooks → shared/helpers}/useMounted.d.ts +0 -0
  1073. /package/{extensions/forms/hooks → shared/helpers}/useMounted.js +0 -0
  1074. /package/{extensions/forms/hooks → shared/helpers}/useUnmountEffect.d.ts +0 -0
  1075. /package/{extensions/forms/hooks → shared/helpers}/useUnmountEffect.js +0 -0
  1076. /package/{extensions/forms/hooks → shared/helpers}/useUpdateEffect.d.ts +0 -0
  1077. /package/{extensions/forms/hooks → shared/helpers}/useUpdateEffect.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"FieldBlock.js","names":["React","useMemo","useContext","useCallback","useRef","useReducer","useEffect","classnames","SharedContext","FieldBlockContext","Space","FormLabel","FormStatus","Ul","Li","convertJsxToString","findElementInChildren","useId","FormError","useUnmountEffect","states","FieldBlock","props","nestedFieldBlockContext","className","forId","layout","composition","label","labelDescription","asFieldset","info","warning","error","errorProp","disabled","width","contentWidth","labelSize","contentClassName","children","rest","_objectWithoutProperties","_excluded","blockId","id","wasUpdated","forceUpdate","mountedFieldsRef","stateRecordRef","fieldStateIdsRef","contentsRef","hasInitiallyErrorProp","Boolean","setInternalRecord","stateId","identifier","type","current","existingIndex","findIndex","item","_objectSpread","push","setFieldState","showFieldError","show","map","showInitially","statusContent","state","statesWithMessages","Object","entries","flatMap","reduce","acc","cur","existing","find","message","getMessage","messages","undefined","width_element","no_animation","process","env","NODE_ENV","globalThis","IS_TEST","found","msg","filter","i","arr","length","text","createElement","CombineMessages","mainClasses","gridClasses","enableFieldset","useEnableFieldset","labelProps","element","space","top","bottom","size","Provider","value","hasErrorProp","_extends","Fragment","ref","result","count","child","_child$props","_child$type","sharedContext","tr","translation","Forms","fieldErrorSummary","fieldStateSummary","key","Error","toString","_supportsSpacingProps"],"sources":["../../../../../src/extensions/forms/FieldBlock/FieldBlock.tsx"],"sourcesContent":["import React, {\n useMemo,\n useContext,\n useCallback,\n useRef,\n useReducer,\n useEffect,\n} from 'react'\nimport classnames from 'classnames'\nimport SharedContext from '../../../shared/Context'\nimport FieldBlockContext, {\n StateWithMessage,\n StatesWithMessages,\n FieldErrorIdsRef,\n MountedFieldsRef,\n StateRecord,\n StateMessage,\n StateTypes,\n StatusContent,\n FieldBlockContextProps,\n} from './FieldBlockContext'\nimport { Space, FormLabel, FormStatus } from '../../../components'\nimport { Ul, Li } from '../../../elements'\nimport {\n convertJsxToString,\n findElementInChildren,\n} from '../../../shared/component-helper'\nimport useId from '../hooks/useId'\nimport {\n ComponentProps,\n FieldProps,\n FormError,\n Identifier,\n} from '../types'\nimport type { FormLabelAllProps } from '../../../components/FormLabel'\nimport useUnmountEffect from '../hooks/useUnmountEffect'\n\nexport const states: Array<StateTypes> = ['error', 'info', 'warning']\n\nexport type Props = Pick<\n FieldProps,\n | keyof ComponentProps\n | 'layout'\n | 'label'\n | 'labelDescription'\n | 'info'\n | 'warning'\n | 'error'\n | 'disabled'\n> & {\n /** The id to link a element with */\n forId?: string\n /** Use true if you have more than one form element */\n asFieldset?: boolean\n /** Defines the layout of nested fields */\n composition?: FieldBlockContextProps['composition']\n /** Width of outer block element */\n width?: false | 'small' | 'medium' | 'large' | 'stretch'\n /** Width of contents block, while label etc can be wider if space is available */\n contentWidth?: 'small' | 'medium' | 'large' | 'stretch'\n contentClassName?: string\n /** Typography size */\n labelSize?: 'medium' | 'large'\n children: React.ReactNode\n} & React.HTMLAttributes<HTMLDivElement>\n\nfunction FieldBlock(props: Props) {\n const nestedFieldBlockContext = useContext(FieldBlockContext)\n\n const {\n className,\n forId,\n layout = 'vertical',\n composition,\n label,\n labelDescription,\n asFieldset,\n info,\n warning,\n error: errorProp,\n disabled,\n width,\n contentWidth,\n labelSize,\n contentClassName,\n children,\n ...rest\n } = props\n\n const blockId = useId(props.id)\n const [wasUpdated, forceUpdate] = useReducer(() => ({}), {})\n const mountedFieldsRef = useRef<MountedFieldsRef>({})\n const stateRecordRef = useRef<StateRecord>({})\n const fieldStateIdsRef = useRef<FieldErrorIdsRef>(null)\n const contentsRef = useRef<HTMLDivElement>(null)\n const hasInitiallyErrorProp = useMemo(() => {\n return Boolean(errorProp)\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n const setInternalRecord = useCallback((props) => {\n const { stateId, identifier, type } = props\n\n if (!stateRecordRef.current[identifier]) {\n stateRecordRef.current[identifier] = []\n }\n\n fieldStateIdsRef.current = { error: null, warning: null, info: null }\n\n const existingIndex = stateRecordRef.current[identifier].findIndex(\n (item) => {\n return item.stateId === stateId && item.type === type\n }\n )\n\n if (existingIndex > -1) {\n stateRecordRef.current[identifier][existingIndex] = {\n ...stateRecordRef.current[identifier][existingIndex],\n ...props,\n }\n } else {\n stateRecordRef.current[identifier].push(props)\n }\n }, [])\n\n const setFieldState = useCallback(\n (props) => {\n if (nestedFieldBlockContext) {\n // If this FieldBlock is inside another one, forward the call to the outer one\n nestedFieldBlockContext.setFieldState(props)\n return\n }\n\n setInternalRecord(props)\n\n forceUpdate()\n },\n [nestedFieldBlockContext, setInternalRecord]\n )\n\n const showFieldError = useCallback(\n (identifier: Identifier, show: boolean) => {\n if (nestedFieldBlockContext) {\n // If this FieldBlock is inside another one, forward the call to the outer one\n nestedFieldBlockContext.showFieldError(identifier, show)\n return\n }\n\n if (stateRecordRef.current[identifier]) {\n stateRecordRef.current[identifier] = stateRecordRef.current[\n identifier\n ].map((item) => {\n if (item.showInitially) {\n return item\n }\n\n return {\n ...item,\n show,\n }\n })\n\n forceUpdate()\n }\n },\n [nestedFieldBlockContext]\n )\n\n const statusContent = useMemo(() => {\n if (errorProp) {\n setInternalRecord({\n identifier: blockId,\n showInitially: hasInitiallyErrorProp,\n type: 'error',\n state: errorProp,\n })\n }\n\n if (warning) {\n setInternalRecord({\n identifier: blockId,\n showInitially: true,\n type: 'warning',\n state: warning,\n })\n }\n\n if (info) {\n setInternalRecord({\n identifier: blockId,\n showInitially: true,\n type: 'info',\n state: info,\n })\n }\n\n const statesWithMessages: Array<StatesWithMessages> =\n // 1. Prepare the states for later use\n Object.entries(stateRecordRef.current)\n .flatMap(([identifier, states]) =>\n states.map((props) => {\n return {\n identifier,\n ...props,\n }\n })\n )\n\n // 2. Take states and group the same type together\n .reduce((acc, cur) => {\n const existing = acc.find((item) => {\n return item.type === cur.type\n })\n\n const message = getMessage(cur)\n\n if (existing) {\n existing.messages.push({\n ...cur,\n message,\n })\n } else {\n acc.push({\n ...cur,\n state: undefined,\n messages: [\n {\n ...cur,\n message,\n },\n ],\n })\n }\n\n return acc\n }, [] as Array<StatesWithMessages>)\n\n // 3. Return the grouped states/messages\n return states.reduce((acc, type) => {\n const id = `${props.id || forId || blockId}-form-status--${type}`\n acc[type] = {\n id,\n label,\n state: type === 'warning' ? 'warn' : type,\n width_element: contentsRef,\n\n // Enable animation only in the browser and not in tests\n no_animation:\n process.env.NODE_ENV === 'test'\n ? true\n : typeof globalThis !== 'undefined'\n ? globalThis.IS_TEST === true\n : false,\n }\n\n const found = statesWithMessages.find((item) => {\n return item.type === type\n })\n\n if (found?.messages) {\n // Hide/remove messages that should be hidden and are not marked as to be shown initially\n const messages = found.messages\n .map((msg) => {\n if (msg.type === 'error') {\n if (!msg.showInitially && !msg.show) {\n msg.message = null\n }\n }\n\n return msg\n })\n .filter(({ message }) => message)\n .reduce((acc, msg, i, arr) => {\n const existingIndex = arr.findIndex((item) => {\n return (\n convertJsxToString(item.message) ===\n convertJsxToString(msg.message)\n )\n })\n\n // Remove duplicates, use the first found message\n if (existingIndex === i) {\n acc.push(msg)\n }\n\n return acc\n }, [])\n\n // Combine the messages and put them in an ul/li list\n if (messages.length > 0) {\n acc[type] = {\n ...acc[type],\n text: <CombineMessages type={type} messages={messages} />,\n }\n\n fieldStateIdsRef.current[type] = id\n } else {\n fieldStateIdsRef.current[type] = undefined\n }\n }\n\n return acc\n }, {}) as StatusContent\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n info,\n warning,\n errorProp,\n nestedFieldBlockContext,\n setInternalRecord,\n blockId,\n wasUpdated, // wasUpdated is needed to get the current errors\n ])\n\n // Handle the error prop from outside\n useEffect(() => {\n if (!nestedFieldBlockContext) {\n showFieldError(blockId, Boolean(errorProp))\n }\n }, [errorProp, blockId, showFieldError, nestedFieldBlockContext])\n\n useUnmountEffect(() => () => {\n mountedFieldsRef.current = {}\n stateRecordRef.current = {}\n })\n\n const mainClasses = classnames(\n 'dnb-forms-field-block',\n width !== undefined && `dnb-forms-field-block--width-${width}`,\n className\n )\n const gridClasses = classnames(\n 'dnb-forms-field-block__grid',\n `dnb-forms-field-block--layout-${layout}`\n )\n\n // A child component with a label was found, use fieldset/legend instead of div/label\n const enableFieldset = useEnableFieldset({\n label,\n asFieldset,\n children,\n nestedFieldBlockContext,\n })\n\n const labelProps: FormLabelAllProps = {\n element: enableFieldset ? 'legend' : 'label',\n forId: enableFieldset ? undefined : forId,\n space: { top: 0, bottom: 'x-small' },\n size: labelSize,\n disabled,\n }\n\n return (\n <FieldBlockContext.Provider\n value={{\n setFieldState,\n showFieldError,\n hasErrorProp: Boolean(errorProp),\n fieldStateIdsRef,\n mountedFieldsRef,\n composition,\n }}\n >\n <Space\n element={enableFieldset ? 'fieldset' : 'div'} // use fieldset and legend to enhance a11y\n className={mainClasses}\n {...rest}\n >\n <div className={gridClasses}>\n {labelDescription ? (\n <div className=\"dnb-forms-field-block__label\">\n {label || labelDescription ? (\n <FormLabel {...labelProps}>\n {label}\n {labelDescription && (\n <span className=\"dnb-forms-field-block__label-description\">\n {labelDescription}\n </span>\n )}\n </FormLabel>\n ) : (\n <>&nbsp;</>\n )}\n </div>\n ) : (\n label && <FormLabel {...labelProps}>{label}</FormLabel>\n )}\n\n <div className=\"dnb-forms-field-block__status\">\n <FormStatus {...statusContent?.error} />\n <FormStatus {...statusContent?.warning} />\n <FormStatus {...statusContent?.info} />\n </div>\n\n <div\n className={classnames(\n 'dnb-forms-field-block__contents',\n contentWidth !== undefined &&\n `dnb-forms-field-block__contents--width-${contentWidth}`,\n composition !== undefined &&\n `dnb-forms-field-block__contents__composition--${\n composition === true ? 'horizontal' : composition\n }`,\n contentClassName\n )}\n ref={contentsRef}\n >\n {children}\n </div>\n </div>\n </Space>\n </FieldBlockContext.Provider>\n )\n}\n\nfunction useEnableFieldset({\n label,\n asFieldset,\n children,\n nestedFieldBlockContext,\n}) {\n return useMemo(() => {\n if (asFieldset === false) {\n return false\n }\n\n let result = asFieldset\n\n if (label && !result && !nestedFieldBlockContext) {\n let count = 0\n\n findElementInChildren(children, (child: React.ReactElement) => {\n if (\n child?.props?.label ||\n child?.type?.['_formElement'] === true\n ) {\n count++\n }\n if (count > 1) {\n return (result = true)\n }\n })\n }\n\n return Boolean(result)\n }, [asFieldset, children, label, nestedFieldBlockContext])\n}\n\nfunction CombineMessages({\n type,\n messages,\n}: {\n type: StateTypes\n messages: Array<StateWithMessage>\n}) {\n const sharedContext = useContext(SharedContext)\n const tr = sharedContext?.translation.Forms\n\n if (messages.length === 1) {\n return <>{messages[0].message}</>\n }\n\n return (\n <>\n {type === 'error' ? tr.fieldErrorSummary : tr.fieldStateSummary}\n <Ul>\n {messages.map(({ message }, i) => {\n return <Li key={i}>{message}</Li>\n })}\n </Ul>\n </>\n )\n}\n\nfunction getMessage(item: Partial<StateWithMessage>): StateMessage {\n const { state } = item\n\n return ((state instanceof Error && state.message) ||\n (state instanceof FormError && state.message) ||\n state?.toString() ||\n state) as StateMessage\n}\n\nFieldBlock._supportsSpacingProps = true\n\nexport default FieldBlock\n"],"mappings":"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"}
1
+ {"version":3,"file":"FieldBlock.js","names":["React","useMemo","useContext","useCallback","useRef","useReducer","useEffect","classnames","SharedContext","FieldBlockContext","Space","FormLabel","FormStatus","Ul","Li","convertJsxToString","findElementInChildren","warn","useId","useUnmountEffect","FormError","SubmitIndicator","createSharedState","states","FieldBlock","props","nestedFieldBlockContext","sharedData","forId","id","_Object$assign","Object","assign","data","className","layout","composition","label","labelDescription","asFieldset","info","warning","error","errorProp","fieldState","disabled","width","contentWidth","labelSize","contentClassName","children","rest","_objectWithoutProperties","_excluded","blockId","wasUpdated","forceUpdate","mountedFieldsRef","stateRecordRef","fieldStateIdsRef","contentsRef","hasInitiallyErrorProp","Boolean","setInternalRecord","stateId","identifier","type","current","existingIndex","findIndex","item","_objectSpread","push","setFieldState","showFieldError","show","map","showInitially","statusContent","content","statesWithMessages","entries","flatMap","reduce","acc","cur","existing","find","message","getMessage","messages","undefined","state","width_element","no_animation","process","env","NODE_ENV","globalThis","IS_TEST","found","msg","filter","i","arr","length","text","createElement","CombineMessages","mainClasses","gridClasses","enableFieldset","useEnableFieldset","labelProps","element","space","top","bottom","size","Provider","value","hasErrorProp","_extends","LabelDescription","ref","result","count","child","_child$props","_child$type","sharedContext","tr","translation","Forms","Fragment","fieldErrorSummary","fieldStateSummary","key","Error","toString","_supportsSpacingProps"],"sources":["../../../../../src/extensions/forms/FieldBlock/FieldBlock.tsx"],"sourcesContent":["import React, {\n useMemo,\n useContext,\n useCallback,\n useRef,\n useReducer,\n useEffect,\n} from 'react'\nimport classnames from 'classnames'\nimport SharedContext from '../../../shared/Context'\nimport FieldBlockContext, {\n StateWithMessage,\n StatesWithMessages,\n FieldErrorIdsRef,\n MountedFieldsRef,\n StateRecord,\n StateMessage,\n StateTypes,\n StatusContent,\n FieldBlockContextProps,\n StateBasis,\n} from './FieldBlockContext'\nimport { Space, FormLabel, FormStatus } from '../../../components'\nimport { Ul, Li } from '../../../elements'\nimport {\n convertJsxToString,\n findElementInChildren,\n warn,\n} from '../../../shared/component-helper'\nimport useId from '../../../shared/helpers/useId'\nimport useUnmountEffect from '../../../shared/helpers/useUnmountEffect'\nimport {\n ComponentProps,\n FieldProps,\n FormError,\n SubmitState,\n Identifier,\n} from '../types'\nimport type { FormLabelAllProps } from '../../../components/FormLabel'\nimport SubmitIndicator from '../Form/SubmitIndicator/SubmitIndicator'\nimport { createSharedState } from '../../../shared/helpers/useSharedState'\n\nexport const states: Array<StateTypes> = ['error', 'info', 'warning']\n\nexport type Props = Pick<\n FieldProps,\n | keyof ComponentProps\n | 'layout'\n | 'label'\n | 'labelDescription'\n | 'info'\n | 'warning'\n | 'error'\n | 'disabled'\n> & {\n /** The id to link a element with */\n forId?: string\n /** Use true if you have more than one form element */\n asFieldset?: boolean\n /** Defines the layout of nested fields */\n composition?: FieldBlockContextProps['composition']\n /** Width of outer block element */\n width?: false | 'small' | 'medium' | 'large' | 'stretch'\n /** Width of contents block, while label etc can be wider if space is available */\n contentWidth?: 'small' | 'medium' | 'large' | 'stretch'\n contentClassName?: string\n /** To show the SubmitIndicator during async validation */\n fieldState?: SubmitState\n /** Typography size */\n labelSize?: 'medium' | 'large'\n children: React.ReactNode\n} & React.HTMLAttributes<HTMLDivElement>\n\nfunction FieldBlock(props: Props) {\n const nestedFieldBlockContext = useContext(FieldBlockContext)\n\n const sharedData = createSharedState<Props>(props.forId || props.id)\n const {\n className,\n forId,\n layout = 'vertical',\n composition,\n label,\n labelDescription,\n asFieldset,\n info,\n warning,\n error: errorProp,\n fieldState,\n disabled,\n width,\n contentWidth,\n labelSize,\n contentClassName,\n children,\n ...rest\n } = Object.assign({}, sharedData.data, props)\n\n const blockId = useId(props.id)\n const [wasUpdated, forceUpdate] = useReducer(() => ({}), {})\n const mountedFieldsRef = useRef<MountedFieldsRef>({})\n const stateRecordRef = useRef<StateRecord>({})\n const fieldStateIdsRef = useRef<FieldErrorIdsRef>(null)\n const contentsRef = useRef<HTMLDivElement>(null)\n const hasInitiallyErrorProp = useMemo(() => {\n return Boolean(errorProp)\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n const setInternalRecord = useCallback((props: StateBasis) => {\n const { stateId, identifier, type } = props\n\n if (!stateRecordRef.current[identifier]) {\n stateRecordRef.current[identifier] = []\n }\n\n fieldStateIdsRef.current = { error: null, warning: null, info: null }\n\n const existingIndex = stateRecordRef.current[identifier].findIndex(\n (item) => {\n return item.stateId === stateId && item.type === type\n }\n )\n\n if (existingIndex > -1) {\n stateRecordRef.current[identifier][existingIndex] = {\n ...stateRecordRef.current[identifier][existingIndex],\n ...props,\n }\n } else {\n stateRecordRef.current[identifier].push(props)\n }\n }, [])\n\n const setFieldState = useCallback(\n (props: StateBasis) => {\n if (nestedFieldBlockContext) {\n // If this FieldBlock is inside another one, forward the call to the outer one\n nestedFieldBlockContext.setFieldState(props)\n return\n }\n\n setInternalRecord(props)\n\n forceUpdate()\n },\n [nestedFieldBlockContext, setInternalRecord]\n )\n\n const showFieldError = useCallback(\n (identifier: Identifier, show: boolean) => {\n if (nestedFieldBlockContext) {\n // If this FieldBlock is inside another one, forward the call to the outer one\n nestedFieldBlockContext.showFieldError(identifier, show)\n return\n }\n\n if (stateRecordRef.current[identifier]) {\n stateRecordRef.current[identifier] = stateRecordRef.current[\n identifier\n ].map((item) => {\n if (item.showInitially) {\n return item\n }\n\n return {\n ...item,\n show,\n }\n })\n\n forceUpdate()\n }\n },\n [nestedFieldBlockContext]\n )\n\n const statusContent = useMemo(() => {\n if (typeof errorProp !== 'undefined') {\n setInternalRecord({\n identifier: blockId,\n showInitially: hasInitiallyErrorProp,\n type: 'error',\n content: errorProp,\n })\n }\n\n if (typeof warning !== 'undefined') {\n setInternalRecord({\n identifier: blockId,\n showInitially: true,\n type: 'warning',\n content: warning,\n })\n }\n\n if (typeof info !== 'undefined') {\n setInternalRecord({\n identifier: blockId,\n showInitially: true,\n type: 'info',\n content: info,\n })\n }\n\n const statesWithMessages: Array<StatesWithMessages> =\n // 1. Prepare the states for later use\n Object.entries(stateRecordRef.current)\n .flatMap(([identifier, states]) =>\n states.map((props) => {\n return {\n identifier,\n ...props,\n }\n })\n )\n\n // 2. Take states and group the same type together\n .reduce((acc, cur) => {\n const existing = acc.find((item) => {\n return item.type === cur.type\n })\n\n const message = getMessage(cur)\n\n if (existing) {\n existing.messages.push({\n ...cur,\n message,\n })\n } else {\n acc.push({\n ...cur,\n content: undefined,\n messages: [\n {\n ...cur,\n message,\n },\n ],\n })\n }\n\n return acc\n }, [] as Array<StatesWithMessages>)\n\n // 3. Return the grouped states/messages\n return states.reduce((acc, type) => {\n const id = `${props.id || forId || blockId}-form-status--${type}`\n acc[type] = {\n id,\n label,\n state: type === 'warning' ? 'warn' : type,\n width_element: contentsRef,\n\n // Enable animation only in the browser and not in tests\n no_animation:\n process.env.NODE_ENV === 'test'\n ? true\n : typeof globalThis !== 'undefined'\n ? globalThis.IS_TEST === true\n : false,\n }\n\n const found = statesWithMessages.find((item) => {\n return item.type === type\n })\n\n if (found?.messages) {\n // Hide/remove messages that should be hidden and are not marked as to be shown initially\n const messages = found.messages\n .map((msg) => {\n if (msg.type === 'error') {\n if (!msg.showInitially && !msg.show) {\n msg.message = null\n }\n }\n\n return msg\n })\n .filter(({ message }) => message)\n .reduce((acc, msg, i, arr) => {\n const existingIndex = arr.findIndex((item) => {\n return (\n convertJsxToString(item.message) ===\n convertJsxToString(msg.message)\n )\n })\n\n // Remove duplicates, use the first found message\n if (existingIndex === i) {\n acc.push(msg)\n }\n\n return acc\n }, [])\n\n // Combine the messages and put them in an ul/li list\n if (messages.length > 0) {\n acc[type] = {\n ...acc[type],\n text: <CombineMessages type={type} messages={messages} />,\n }\n\n fieldStateIdsRef.current[type] = id\n } else {\n fieldStateIdsRef.current[type] = undefined\n }\n }\n\n return acc\n }, {}) as StatusContent\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n info,\n warning,\n errorProp,\n nestedFieldBlockContext,\n setInternalRecord,\n blockId,\n wasUpdated, // wasUpdated is needed to get the current errors\n ])\n\n // Handle the error prop from outside\n useEffect(() => {\n if (!nestedFieldBlockContext) {\n showFieldError(blockId, Boolean(errorProp))\n }\n }, [errorProp, blockId, showFieldError, nestedFieldBlockContext])\n\n useUnmountEffect(() => () => {\n mountedFieldsRef.current = {}\n stateRecordRef.current = {}\n })\n\n const mainClasses = classnames(\n 'dnb-forms-field-block',\n width !== undefined && `dnb-forms-field-block--width-${width}`,\n className\n )\n const gridClasses = classnames(\n 'dnb-forms-field-block__grid',\n `dnb-forms-field-block--layout-${layout}`\n )\n\n // A child component with a label was found, use fieldset/legend instead of div/label\n const enableFieldset = useEnableFieldset({\n label,\n asFieldset,\n children,\n nestedFieldBlockContext,\n })\n\n const labelProps: FormLabelAllProps = {\n element: enableFieldset ? 'legend' : 'label',\n forId: enableFieldset ? undefined : forId,\n space: { top: 0, bottom: 'x-small' },\n size: labelSize,\n disabled,\n }\n\n if (fieldState && !label) {\n warn('You have to provide a label to use show an indicator.')\n }\n\n return (\n <FieldBlockContext.Provider\n value={{\n setFieldState,\n showFieldError,\n hasErrorProp: Boolean(errorProp),\n fieldStateIdsRef,\n mountedFieldsRef,\n composition,\n }}\n >\n <Space\n element={enableFieldset ? 'fieldset' : 'div'} // use fieldset and legend to enhance a11y\n className={mainClasses}\n {...rest}\n >\n <div className={gridClasses}>\n <LabelDescription labelDescription={labelDescription}>\n {(label || labelDescription) && (\n <FormLabel {...labelProps}>\n <SubmitIndicator state={fieldState}>\n {label}\n {labelDescription && (\n <span className=\"dnb-forms-field-block__label-description\">\n {labelDescription}\n </span>\n )}\n </SubmitIndicator>\n </FormLabel>\n )}\n </LabelDescription>\n\n <div className=\"dnb-forms-field-block__status\">\n <FormStatus {...statusContent?.error} />\n <FormStatus {...statusContent?.warning} />\n <FormStatus {...statusContent?.info} />\n </div>\n\n <div\n className={classnames(\n 'dnb-forms-field-block__contents',\n contentWidth !== undefined &&\n `dnb-forms-field-block__contents--width-${contentWidth}`,\n composition !== undefined &&\n `dnb-forms-field-block__contents__composition--${\n composition === true ? 'horizontal' : composition\n }`,\n contentClassName\n )}\n ref={contentsRef}\n >\n {children}\n </div>\n </div>\n </Space>\n </FieldBlockContext.Provider>\n )\n}\n\nfunction useEnableFieldset({\n label,\n asFieldset,\n children,\n nestedFieldBlockContext,\n}) {\n return useMemo(() => {\n if (asFieldset === false) {\n return false\n }\n\n let result = asFieldset\n\n if (label && !result && !nestedFieldBlockContext) {\n let count = 0\n\n findElementInChildren(children, (child: React.ReactElement) => {\n if (\n child?.props?.label ||\n child?.type?.['_formElement'] === true\n ) {\n count++\n }\n if (count > 1) {\n return (result = true)\n }\n })\n }\n\n return Boolean(result)\n }, [asFieldset, children, label, nestedFieldBlockContext])\n}\n\nfunction CombineMessages({\n type,\n messages,\n}: {\n type: StateTypes\n messages: Array<StateWithMessage>\n}) {\n const sharedContext = useContext(SharedContext)\n const tr = sharedContext?.translation.Forms\n\n if (messages.length === 1) {\n return <>{messages[0].message}</>\n }\n\n return (\n <>\n {type === 'error' ? tr.fieldErrorSummary : tr.fieldStateSummary}\n <Ul>\n {messages.map(({ message }, i) => {\n return <Li key={i}>{message}</Li>\n })}\n </Ul>\n </>\n )\n}\n\nfunction LabelDescription({ labelDescription, children }) {\n if (!labelDescription) {\n return children\n }\n return <div className=\"dnb-forms-field-block__label\">{children}</div>\n}\n\nfunction getMessage(item: Partial<StateWithMessage>): StateMessage {\n const { content } = item\n\n return ((content instanceof Error && content.message) ||\n (content instanceof FormError && content.message) ||\n content?.toString() ||\n content) as StateMessage\n}\n\nFieldBlock._supportsSpacingProps = true\n\nexport default FieldBlock\n"],"mappings":"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"}
@@ -7,7 +7,7 @@ export type StateContent = FieldProps<unknown>['error'] | FieldProps<unknown>['w
7
7
  export type StateBasis = {
8
8
  identifier: Identifier;
9
9
  type: StateTypes;
10
- state: StateContent;
10
+ content: StateContent;
11
11
  stateId?: string;
12
12
  showInitially?: boolean;
13
13
  show?: boolean;
@@ -30,7 +30,7 @@ export type StatusContent = {
30
30
  info: StatusContentState;
31
31
  };
32
32
  export type FieldBlockContextProps = {
33
- setFieldState?: ({ identifier, type, stateId, state, showInitially, show, }: StateBasis) => void;
33
+ setFieldState?: ({ identifier, type, stateId, content, showInitially, show, }: StateBasis) => void;
34
34
  showFieldError?: (identifier: Identifier, showError: boolean) => void;
35
35
  hasErrorProp?: boolean;
36
36
  composition?: true;
@@ -1 +1 @@
1
- {"version":3,"file":"FieldBlockContext.js","names":["React","FieldBlockContext","createContext","undefined"],"sources":["../../../../../src/extensions/forms/FieldBlock/FieldBlockContext.ts"],"sourcesContent":["import React from 'react'\nimport type { FieldProps, Identifier } from '../types'\n\nexport type FieldErrorIdsRef = Record<StateTypes, string>\nexport type MountedFieldsRef = Record<Identifier, boolean>\nexport type StateTypes = 'error' | 'warning' | 'info'\nexport type StateContent =\n | FieldProps<unknown>['error']\n | FieldProps<unknown>['warning']\n | FieldProps<unknown>['info']\nexport type StateBasis = {\n identifier: Identifier\n type: StateTypes\n state: StateContent\n stateId?: string\n showInitially?: boolean\n show?: boolean\n}\nexport type StateRecord = Record<\n Identifier,\n Array<Omit<StateBasis, 'identifier'>>\n>\nexport type StateMessage = React.ReactNode\nexport type StateWithMessage = StateBasis & {\n message: StateMessage\n}\nexport type StatesWithMessages = StateBasis & {\n messages: Array<StateWithMessage>\n}\nexport type StatusContentState = { id: string; text: React.ReactNode }\nexport type StatusContent = {\n error: StatusContentState\n warning: StatusContentState\n info: StatusContentState\n}\n\nexport type FieldBlockContextProps = {\n setFieldState?: ({\n identifier,\n type,\n stateId,\n state,\n showInitially,\n show,\n }: StateBasis) => void\n showFieldError?: (identifier: Identifier, showError: boolean) => void\n hasErrorProp?: boolean\n composition?: true\n fieldStateIdsRef?: React.MutableRefObject<FieldErrorIdsRef>\n mountedFieldsRef?: React.MutableRefObject<MountedFieldsRef>\n}\n\nconst FieldBlockContext = React.createContext<\n FieldBlockContextProps | undefined\n>(undefined)\n\nexport default FieldBlockContext\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAoDzB,MAAMC,iBAAiB,GAAGD,KAAK,CAACE,aAAa,CAE3CC,SAAS,CAAC;AAEZ,eAAeF,iBAAiB"}
1
+ {"version":3,"file":"FieldBlockContext.js","names":["React","FieldBlockContext","createContext","undefined"],"sources":["../../../../../src/extensions/forms/FieldBlock/FieldBlockContext.ts"],"sourcesContent":["import React from 'react'\nimport type { FieldProps, Identifier } from '../types'\n\nexport type FieldErrorIdsRef = Record<StateTypes, string>\nexport type MountedFieldsRef = Record<Identifier, boolean>\nexport type StateTypes = 'error' | 'warning' | 'info'\nexport type StateContent =\n | FieldProps<unknown>['error']\n | FieldProps<unknown>['warning']\n | FieldProps<unknown>['info']\nexport type StateBasis = {\n identifier: Identifier\n type: StateTypes\n content: StateContent\n stateId?: string\n showInitially?: boolean\n show?: boolean\n}\nexport type StateRecord = Record<\n Identifier,\n Array<Omit<StateBasis, 'identifier'>>\n>\nexport type StateMessage = React.ReactNode\nexport type StateWithMessage = StateBasis & {\n message: StateMessage\n}\nexport type StatesWithMessages = StateBasis & {\n messages: Array<StateWithMessage>\n}\nexport type StatusContentState = { id: string; text: React.ReactNode }\nexport type StatusContent = {\n error: StatusContentState\n warning: StatusContentState\n info: StatusContentState\n}\n\nexport type FieldBlockContextProps = {\n setFieldState?: ({\n identifier,\n type,\n stateId,\n content,\n showInitially,\n show,\n }: StateBasis) => void\n showFieldError?: (identifier: Identifier, showError: boolean) => void\n hasErrorProp?: boolean\n composition?: true\n fieldStateIdsRef?: React.MutableRefObject<FieldErrorIdsRef>\n mountedFieldsRef?: React.MutableRefObject<MountedFieldsRef>\n}\n\nconst FieldBlockContext = React.createContext<\n FieldBlockContextProps | undefined\n>(undefined)\n\nexport default FieldBlockContext\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAoDzB,MAAMC,iBAAiB,GAAGD,KAAK,CAACE,aAAa,CAE3CC,SAAS,CAAC;AAEZ,eAAeF,iBAAiB"}
@@ -7,4 +7,4 @@ export type Props = Omit<ElementAllProps, 'data' | 'as' | 'autoComplete'> & {
7
7
  */
8
8
  autoComplete?: boolean;
9
9
  };
10
- export default function FormHandler<Data extends JsonObject>({ children, defaultData, data, schema, ajvInstance, errorMessages, filterData, onChange, onPathChange, onSubmit, onSubmitRequest, scrollTopOnSubmit, sessionStorageId, autoComplete, ...rest }: ProviderProps<Data> & Omit<Props, keyof ProviderProps<Data>>): import("react/jsx-runtime").JSX.Element;
10
+ export default function FormHandler<Data extends JsonObject>({ children, defaultData, data, schema, ajvInstance, errorMessages, filterData, onChange, onPathChange, onSubmit, onSubmitRequest, onSubmitComplete, minimumAsyncBehaviorTime, asyncBehaviorTimeout, scrollTopOnSubmit, sessionStorageId, autoComplete, ...rest }: ProviderProps<Data> & Omit<Props, keyof ProviderProps<Data>>): import("react/jsx-runtime").JSX.Element;
@@ -1,10 +1,16 @@
1
1
  "use client";
2
2
 
3
+ import _extends from "@babel/runtime/helpers/esm/extends";
3
4
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
4
- const _excluded = ["children", "defaultData", "data", "schema", "ajvInstance", "errorMessages", "filterData", "onChange", "onPathChange", "onSubmit", "onSubmitRequest", "scrollTopOnSubmit", "sessionStorageId", "autoComplete"];
5
- import React from 'react';
6
- import Provider from '../../DataContext/Provider';
5
+ const _excluded = ["children", "defaultData", "data", "schema", "ajvInstance", "errorMessages", "filterData", "onChange", "onPathChange", "onSubmit", "onSubmitRequest", "onSubmitComplete", "minimumAsyncBehaviorTime", "asyncBehaviorTimeout", "scrollTopOnSubmit", "sessionStorageId", "autoComplete"],
6
+ _excluded2 = ["children"];
7
+ import React, { useContext } from 'react';
8
+ import DataContextProvider from '../../DataContext/Provider';
9
+ import DataContext from '../../DataContext/Context';
7
10
  import FormElement from '../Element';
11
+ import FormStatus from '../../../../components/FormStatus';
12
+ import useId from '../../../../shared/helpers/useId';
13
+ import { combineLabelledBy } from '../../../../shared/component-helper';
8
14
  export default function FormHandler(_ref) {
9
15
  let {
10
16
  children,
@@ -18,6 +24,9 @@ export default function FormHandler(_ref) {
18
24
  onPathChange,
19
25
  onSubmit,
20
26
  onSubmitRequest,
27
+ onSubmitComplete,
28
+ minimumAsyncBehaviorTime,
29
+ asyncBehaviorTimeout,
21
30
  scrollTopOnSubmit,
22
31
  sessionStorageId,
23
32
  autoComplete
@@ -33,16 +42,43 @@ export default function FormHandler(_ref) {
33
42
  filterData,
34
43
  onChange,
35
44
  onPathChange,
36
- onSubmit: (...args) => {
37
- if (typeof onSubmit === 'function') {
38
- onSubmit(...args);
39
- }
40
- },
45
+ onSubmit,
41
46
  onSubmitRequest,
47
+ onSubmitComplete,
48
+ minimumAsyncBehaviorTime,
49
+ asyncBehaviorTimeout,
42
50
  scrollTopOnSubmit,
43
51
  sessionStorageId,
44
52
  autoComplete
45
53
  };
46
- return React.createElement(Provider, providerProps, React.createElement(FormElement, rest, children));
54
+ return React.createElement(DataContextProvider, providerProps, React.createElement(FormElementWithState, rest, children));
55
+ }
56
+ function FormElementWithState(_ref2) {
57
+ let {
58
+ children
59
+ } = _ref2,
60
+ rest = _objectWithoutProperties(_ref2, _excluded2);
61
+ const id = useId();
62
+ const {
63
+ submitState
64
+ } = useContext(DataContext) || {};
65
+ const states = Object.entries(submitState).filter(([, value]) => value);
66
+ return React.createElement(FormElement, _extends({}, rest, {
67
+ "aria-labelledby": combineLabelledBy(rest, states.map(([key]) => {
68
+ return `${id}-form-status-${key}`;
69
+ })) || undefined
70
+ }), children, ['error', 'warning', 'info'].map(key => {
71
+ const value = submitState[key];
72
+ return React.createElement(FormStatus, {
73
+ key: key,
74
+ state: key,
75
+ id: `${id}-form-status-${key}`,
76
+ show: Boolean(value),
77
+ no_animation: false,
78
+ shellSpace: {
79
+ top: 'x-small'
80
+ }
81
+ }, String((value === null || value === void 0 ? void 0 : value['message']) || value || ''));
82
+ }));
47
83
  }
48
84
  //# sourceMappingURL=Handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Handler.js","names":["React","Provider","FormElement","FormHandler","_ref","children","defaultData","data","schema","ajvInstance","errorMessages","filterData","onChange","onPathChange","onSubmit","onSubmitRequest","scrollTopOnSubmit","sessionStorageId","autoComplete","rest","_objectWithoutProperties","_excluded","providerProps","id","args","createElement"],"sources":["../../../../../../src/extensions/forms/Form/Handler/Handler.tsx"],"sourcesContent":["import React from 'react'\nimport { JsonObject } from 'json-pointer'\nimport Provider, {\n Props as ProviderProps,\n} from '../../DataContext/Provider'\nimport FormElement from '../Element'\nimport type { ElementAllProps } from '../../../../elements/Element'\n\nexport type Props = Omit<\n ElementAllProps,\n 'data' | 'as' | 'autoComplete'\n> & {\n /**\n * Will enable autoComplete for all nested Field.String fields\n */\n autoComplete?: boolean\n}\n\nexport default function FormHandler<Data extends JsonObject>({\n children,\n defaultData,\n data,\n schema,\n ajvInstance,\n errorMessages,\n filterData,\n onChange,\n onPathChange,\n onSubmit,\n onSubmitRequest,\n scrollTopOnSubmit,\n sessionStorageId,\n autoComplete,\n ...rest\n}: ProviderProps<Data> & Omit<Props, keyof ProviderProps<Data>>) {\n const providerProps = {\n id: rest.id,\n defaultData,\n data,\n schema,\n ajvInstance,\n errorMessages,\n filterData,\n onChange,\n onPathChange,\n onSubmit: (...args) => {\n if (typeof onSubmit === 'function') {\n onSubmit(...args)\n }\n },\n onSubmitRequest,\n scrollTopOnSubmit,\n sessionStorageId,\n autoComplete,\n } as Omit<ProviderProps<Data>, 'children'>\n\n return (\n <Provider {...providerProps}>\n <FormElement {...rest}>{children}</FormElement>\n </Provider>\n )\n}\n"],"mappings":";;;;AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,OAAOC,QAAQ,MAER,4BAA4B;AACnC,OAAOC,WAAW,MAAM,YAAY;AAapC,eAAe,SAASC,WAAWA,CAAAC,IAAA,EAgB8B;EAAA,IAhBJ;MAC3DC,QAAQ;MACRC,WAAW;MACXC,IAAI;MACJC,MAAM;MACNC,WAAW;MACXC,aAAa;MACbC,UAAU;MACVC,QAAQ;MACRC,YAAY;MACZC,QAAQ;MACRC,eAAe;MACfC,iBAAiB;MACjBC,gBAAgB;MAChBC;IAE4D,CAAC,GAAAd,IAAA;IAD1De,IAAI,GAAAC,wBAAA,CAAAhB,IAAA,EAAAiB,SAAA;EAEP,MAAMC,aAAa,GAAG;IACpBC,EAAE,EAAEJ,IAAI,CAACI,EAAE;IACXjB,WAAW;IACXC,IAAI;IACJC,MAAM;IACNC,WAAW;IACXC,aAAa;IACbC,UAAU;IACVC,QAAQ;IACRC,YAAY;IACZC,QAAQ,EAAEA,CAAC,GAAGU,IAAI,KAAK;MACrB,IAAI,OAAOV,QAAQ,KAAK,UAAU,EAAE;QAClCA,QAAQ,CAAC,GAAGU,IAAI,CAAC;MACnB;IACF,CAAC;IACDT,eAAe;IACfC,iBAAiB;IACjBC,gBAAgB;IAChBC;EACF,CAA0C;EAE1C,OACElB,KAAA,CAAAyB,aAAA,CAACxB,QAAQ,EAAKqB,aAAa,EACzBtB,KAAA,CAAAyB,aAAA,CAACvB,WAAW,EAAKiB,IAAI,EAAGd,QAAsB,CACtC,CAAC;AAEf"}
1
+ {"version":3,"file":"Handler.js","names":["React","useContext","DataContextProvider","DataContext","FormElement","FormStatus","useId","combineLabelledBy","FormHandler","_ref","children","defaultData","data","schema","ajvInstance","errorMessages","filterData","onChange","onPathChange","onSubmit","onSubmitRequest","onSubmitComplete","minimumAsyncBehaviorTime","asyncBehaviorTimeout","scrollTopOnSubmit","sessionStorageId","autoComplete","rest","_objectWithoutProperties","_excluded","providerProps","id","createElement","FormElementWithState","_ref2","_excluded2","submitState","states","Object","entries","filter","value","_extends","map","key","undefined","state","show","Boolean","no_animation","shellSpace","top","String"],"sources":["../../../../../../src/extensions/forms/Form/Handler/Handler.tsx"],"sourcesContent":["import React, { useContext } from 'react'\nimport { JsonObject } from 'json-pointer'\nimport DataContextProvider, {\n Props as ProviderProps,\n} from '../../DataContext/Provider'\nimport DataContext from '../../DataContext/Context'\nimport FormElement from '../Element'\nimport type { ElementAllProps } from '../../../../elements/Element'\nimport FormStatus from '../../../../components/FormStatus'\nimport useId from '../../../../shared/helpers/useId'\nimport { combineLabelledBy } from '../../../../shared/component-helper'\n\nexport type Props = Omit<\n ElementAllProps,\n 'data' | 'as' | 'autoComplete'\n> & {\n /**\n * Will enable autoComplete for all nested Field.String fields\n */\n autoComplete?: boolean\n}\n\nexport default function FormHandler<Data extends JsonObject>({\n children,\n defaultData,\n data,\n schema,\n ajvInstance,\n errorMessages,\n filterData,\n onChange,\n onPathChange,\n onSubmit,\n onSubmitRequest,\n onSubmitComplete,\n minimumAsyncBehaviorTime,\n asyncBehaviorTimeout,\n scrollTopOnSubmit,\n sessionStorageId,\n autoComplete,\n ...rest\n}: ProviderProps<Data> & Omit<Props, keyof ProviderProps<Data>>) {\n const providerProps = {\n id: rest.id,\n defaultData,\n data,\n schema,\n ajvInstance,\n errorMessages,\n filterData,\n onChange,\n onPathChange,\n onSubmit,\n onSubmitRequest,\n onSubmitComplete,\n minimumAsyncBehaviorTime,\n asyncBehaviorTimeout,\n scrollTopOnSubmit,\n sessionStorageId,\n autoComplete,\n } as Omit<ProviderProps<Data>, 'children'>\n\n return (\n <DataContextProvider {...providerProps}>\n <FormElementWithState {...rest}>{children}</FormElementWithState>\n </DataContextProvider>\n )\n}\n\nfunction FormElementWithState({ children, ...rest }) {\n const id = useId()\n const { submitState } = useContext(DataContext) || {}\n const states = Object.entries(submitState).filter(([, value]) => value)\n\n return (\n <FormElement\n {...rest}\n aria-labelledby={\n combineLabelledBy(\n rest,\n states.map(([key]) => {\n return `${id}-form-status-${key}`\n })\n ) || undefined\n }\n >\n {children}\n\n {['error', 'warning', 'info'].map((key) => {\n const value = submitState[key]\n return (\n <FormStatus\n key={key}\n state={key}\n id={`${id}-form-status-${key}`}\n show={Boolean(value)}\n no_animation={false}\n shellSpace={{ top: 'x-small' }}\n >\n {String(value?.['message'] || value || '')}\n </FormStatus>\n )\n })}\n </FormElement>\n )\n}\n"],"mappings":";;;;;;AAAA,OAAOA,KAAK,IAAIC,UAAU,QAAQ,OAAO;AAEzC,OAAOC,mBAAmB,MAEnB,4BAA4B;AACnC,OAAOC,WAAW,MAAM,2BAA2B;AACnD,OAAOC,WAAW,MAAM,YAAY;AAEpC,OAAOC,UAAU,MAAM,mCAAmC;AAC1D,OAAOC,KAAK,MAAM,kCAAkC;AACpD,SAASC,iBAAiB,QAAQ,qCAAqC;AAYvE,eAAe,SAASC,WAAWA,CAAAC,IAAA,EAmB8B;EAAA,IAnBJ;MAC3DC,QAAQ;MACRC,WAAW;MACXC,IAAI;MACJC,MAAM;MACNC,WAAW;MACXC,aAAa;MACbC,UAAU;MACVC,QAAQ;MACRC,YAAY;MACZC,QAAQ;MACRC,eAAe;MACfC,gBAAgB;MAChBC,wBAAwB;MACxBC,oBAAoB;MACpBC,iBAAiB;MACjBC,gBAAgB;MAChBC;IAE4D,CAAC,GAAAjB,IAAA;IAD1DkB,IAAI,GAAAC,wBAAA,CAAAnB,IAAA,EAAAoB,SAAA;EAEP,MAAMC,aAAa,GAAG;IACpBC,EAAE,EAAEJ,IAAI,CAACI,EAAE;IACXpB,WAAW;IACXC,IAAI;IACJC,MAAM;IACNC,WAAW;IACXC,aAAa;IACbC,UAAU;IACVC,QAAQ;IACRC,YAAY;IACZC,QAAQ;IACRC,eAAe;IACfC,gBAAgB;IAChBC,wBAAwB;IACxBC,oBAAoB;IACpBC,iBAAiB;IACjBC,gBAAgB;IAChBC;EACF,CAA0C;EAE1C,OACE1B,KAAA,CAAAgC,aAAA,CAAC9B,mBAAmB,EAAK4B,aAAa,EACpC9B,KAAA,CAAAgC,aAAA,CAACC,oBAAoB,EAAKN,IAAI,EAAGjB,QAA+B,CAC7C,CAAC;AAE1B;AAEA,SAASuB,oBAAoBA,CAAAC,KAAA,EAAwB;EAAA,IAAvB;MAAExB;IAAkB,CAAC,GAAAwB,KAAA;IAANP,IAAI,GAAAC,wBAAA,CAAAM,KAAA,EAAAC,UAAA;EAC/C,MAAMJ,EAAE,GAAGzB,KAAK,CAAC,CAAC;EAClB,MAAM;IAAE8B;EAAY,CAAC,GAAGnC,UAAU,CAACE,WAAW,CAAC,IAAI,CAAC,CAAC;EACrD,MAAMkC,MAAM,GAAGC,MAAM,CAACC,OAAO,CAACH,WAAW,CAAC,CAACI,MAAM,CAAC,CAAC,GAAGC,KAAK,CAAC,KAAKA,KAAK,CAAC;EAEvE,OACEzC,KAAA,CAAAgC,aAAA,CAAC5B,WAAW,EAAAsC,QAAA,KACNf,IAAI;IACR,mBACEpB,iBAAiB,CACfoB,IAAI,EACJU,MAAM,CAACM,GAAG,CAAC,CAAC,CAACC,GAAG,CAAC,KAAK;MACpB,OAAQ,GAAEb,EAAG,gBAAea,GAAI,EAAC;IACnC,CAAC,CACH,CAAC,IAAIC;EACN,IAEAnC,QAAQ,EAER,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAACiC,GAAG,CAAEC,GAAG,IAAK;IACzC,MAAMH,KAAK,GAAGL,WAAW,CAACQ,GAAG,CAAC;IAC9B,OACE5C,KAAA,CAAAgC,aAAA,CAAC3B,UAAU;MACTuC,GAAG,EAAEA,GAAI;MACTE,KAAK,EAAEF,GAAI;MACXb,EAAE,EAAG,GAAEA,EAAG,gBAAea,GAAI,EAAE;MAC/BG,IAAI,EAAEC,OAAO,CAACP,KAAK,CAAE;MACrBQ,YAAY,EAAE,KAAM;MACpBC,UAAU,EAAE;QAAEC,GAAG,EAAE;MAAU;IAAE,GAE9BC,MAAM,CAAC,CAAAX,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAG,SAAS,CAAC,KAAIA,KAAK,IAAI,EAAE,CAC/B,CAAC;EAEjB,CAAC,CACU,CAAC;AAElB"}
@@ -0,0 +1,3 @@
1
+ import { PropertiesTableProps } from '../../../../shared/types';
2
+ export declare const HandlerProperties: PropertiesTableProps;
3
+ export declare const HandlerEvents: PropertiesTableProps;
@@ -0,0 +1,39 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
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
+ 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 { ProviderEvents, ProviderProperties } from '../../DataContext/Provider/ProviderDocs';
5
+ export const HandlerProperties = _objectSpread(_objectSpread({}, ProviderProperties), {}, {
6
+ disabled: {
7
+ doc: 'Will disable all nested form fields.',
8
+ type: 'boolean',
9
+ status: 'optional'
10
+ },
11
+ autoComplete: {
12
+ doc: 'Will set `autoComplete="on"` on all nested [Field.String](/uilib/extensions/forms/base-fields/String/)-fields.',
13
+ type: 'boolean',
14
+ status: 'optional'
15
+ },
16
+ '[Space](/uilib/layout/space/properties)': {
17
+ doc: 'Spacing properties like `top` or `bottom` are supported.',
18
+ type: ['string', 'object'],
19
+ status: 'optional'
20
+ },
21
+ '[DataContext.Provider](/uilib/extensions/forms/extended-features/DataContext/Provider/properties)': {
22
+ doc: 'Provider properties such as `data`.',
23
+ type: 'Various',
24
+ status: 'optional'
25
+ },
26
+ '[Form Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form#attributes)': {
27
+ doc: 'All supported form element attributes.',
28
+ type: 'string',
29
+ status: 'optional'
30
+ }
31
+ });
32
+ export const HandlerEvents = _objectSpread(_objectSpread({}, ProviderEvents), {}, {
33
+ '[DataContext.Provider](/uilib/extensions/forms/extended-features/DataContext/Provider/events)': {
34
+ doc: 'events such as `onSubmit`.',
35
+ type: 'function',
36
+ status: 'optional'
37
+ }
38
+ });
39
+ //# sourceMappingURL=HandlerDocs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HandlerDocs.js","names":["ProviderEvents","ProviderProperties","HandlerProperties","_objectSpread","disabled","doc","type","status","autoComplete","HandlerEvents"],"sources":["../../../../../../src/extensions/forms/Form/Handler/HandlerDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../../../shared/types'\nimport {\n ProviderEvents,\n ProviderProperties,\n} from '../../DataContext/Provider/ProviderDocs'\n\nexport const HandlerProperties: PropertiesTableProps = {\n ...ProviderProperties,\n disabled: {\n doc: 'Will disable all nested form fields.',\n type: 'boolean',\n status: 'optional',\n },\n autoComplete: {\n doc: 'Will set `autoComplete=\"on\"` on all nested [Field.String](/uilib/extensions/forms/base-fields/String/)-fields.',\n type: 'boolean',\n status: 'optional',\n },\n '[Space](/uilib/layout/space/properties)': {\n doc: 'Spacing properties like `top` or `bottom` are supported.',\n type: ['string', 'object'],\n status: 'optional',\n },\n '[DataContext.Provider](/uilib/extensions/forms/extended-features/DataContext/Provider/properties)':\n {\n doc: 'Provider properties such as `data`.',\n type: 'Various',\n status: 'optional',\n },\n '[Form Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form#attributes)':\n {\n doc: 'All supported form element attributes.',\n type: 'string',\n status: 'optional',\n },\n}\n\nexport const HandlerEvents: PropertiesTableProps = {\n ...ProviderEvents,\n '[DataContext.Provider](/uilib/extensions/forms/extended-features/DataContext/Provider/events)':\n {\n doc: 'events such as `onSubmit`.',\n type: 'function',\n status: 'optional',\n },\n}\n"],"mappings":";;;AACA,SACEA,cAAc,EACdC,kBAAkB,QACb,yCAAyC;AAEhD,OAAO,MAAMC,iBAAuC,GAAAC,aAAA,CAAAA,aAAA,KAC/CF,kBAAkB;EACrBG,QAAQ,EAAE;IACRC,GAAG,EAAE,sCAAsC;IAC3CC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDC,YAAY,EAAE;IACZH,GAAG,EAAE,gHAAgH;IACrHC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACD,yCAAyC,EAAE;IACzCF,GAAG,EAAE,0DAA0D;IAC/DC,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC1BC,MAAM,EAAE;EACV,CAAC;EACD,mGAAmG,EACjG;IACEF,GAAG,EAAE,qCAAqC;IAC1CC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACH,8FAA8F,EAC5F;IACEF,GAAG,EAAE,wCAAwC;IAC7CC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV;AAAC,EACJ;AAED,OAAO,MAAME,aAAmC,GAAAN,aAAA,CAAAA,aAAA,KAC3CH,cAAc;EACjB,+FAA+F,EAC7F;IACEK,GAAG,EAAE,4BAA4B;IACjCC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV;AAAC,EACJ"}
@@ -1,7 +1,12 @@
1
1
  import React from 'react';
2
2
  import type { ComponentProps } from '../../types';
3
3
  import { ButtonProps } from '../../../../components/button/Button';
4
- export type Props = ComponentProps & ButtonProps & Partial<React.HTMLAttributes<HTMLButtonElement | HTMLAnchorElement>>;
4
+ export type Props = {
5
+ /**
6
+ * Show the submit indicator
7
+ */
8
+ showIndicator?: boolean;
9
+ } & ComponentProps & ButtonProps & Partial<React.HTMLAttributes<HTMLButtonElement | HTMLAnchorElement>>;
5
10
  declare function SubmitButton(props: Props): import("react/jsx-runtime").JSX.Element;
6
11
  declare namespace SubmitButton {
7
12
  var _supportsSpacingProps: boolean;
@@ -2,31 +2,40 @@
2
2
 
3
3
  import _extends from "@babel/runtime/helpers/esm/extends";
4
4
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
5
- const _excluded = ["className", "children"];
6
- import React, { useContext } from 'react';
5
+ const _excluded = ["className", "showIndicator", "children", "text"];
6
+ import React, { useCallback, useContext } from 'react';
7
7
  import classnames from 'classnames';
8
8
  import SharedContext from '../../../../shared/Context';
9
- import Context from '../../DataContext/Context';
9
+ import DataContext from '../../DataContext/Context';
10
10
  import Button from '../../../../components/button/Button';
11
+ import SubmitIndicator from '../SubmitIndicator';
11
12
  function SubmitButton(props) {
12
13
  const sharedContext = useContext(SharedContext);
13
14
  const {
14
15
  className,
15
- children = sharedContext === null || sharedContext === void 0 ? void 0 : sharedContext.translation.Forms.contextSubmit
16
+ showIndicator,
17
+ children,
18
+ text
16
19
  } = props,
17
20
  rest = _objectWithoutProperties(props, _excluded);
18
- const dataContext = useContext(Context);
21
+ const content = text || children || (sharedContext === null || sharedContext === void 0 ? void 0 : sharedContext.translation.Forms.contextSubmit);
22
+ const {
23
+ formState,
24
+ handleSubmit,
25
+ _isInsideFormElement
26
+ } = useContext(DataContext) || {};
27
+ const onClickHandler = useCallback(() => {
28
+ if (!_isInsideFormElement) {
29
+ handleSubmit === null || handleSubmit === void 0 ? void 0 : handleSubmit();
30
+ }
31
+ }, [_isInsideFormElement, handleSubmit]);
19
32
  return React.createElement(Button, _extends({
20
33
  className: classnames('dnb-forms-submit-button', className),
21
34
  onClick: onClickHandler,
22
- icon_position: "left",
23
35
  type: "submit"
24
- }, rest), children);
25
- function onClickHandler() {
26
- if (!dataContext._isInsideFormElement) {
27
- dataContext.handleSubmit();
28
- }
29
- }
36
+ }, rest), content, React.createElement(SubmitIndicator, {
37
+ state: showIndicator ? 'pending' : formState
38
+ }));
30
39
  }
31
40
  SubmitButton._supportsSpacingProps = true;
32
41
  export default SubmitButton;
@@ -1 +1 @@
1
- {"version":3,"file":"SubmitButton.js","names":["React","useContext","classnames","SharedContext","Context","Button","SubmitButton","props","sharedContext","className","children","translation","Forms","contextSubmit","rest","_objectWithoutProperties","_excluded","dataContext","createElement","_extends","onClick","onClickHandler","icon_position","type","_isInsideFormElement","handleSubmit","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Form/SubmitButton/SubmitButton.tsx"],"sourcesContent":["import React, { useContext } from 'react'\nimport classnames from 'classnames'\nimport type { ComponentProps } from '../../types'\nimport SharedContext from '../../../../shared/Context'\nimport Context from '../../DataContext/Context'\nimport Button, { ButtonProps } from '../../../../components/button/Button'\n\nexport type Props = ComponentProps &\n ButtonProps &\n Partial<React.HTMLAttributes<HTMLButtonElement | HTMLAnchorElement>>\n\nfunction SubmitButton(props: Props) {\n const sharedContext = useContext(SharedContext)\n const {\n className,\n children = sharedContext?.translation.Forms.contextSubmit,\n ...rest\n } = props\n const dataContext = useContext(Context)\n\n return (\n <Button\n className={classnames('dnb-forms-submit-button', className)}\n onClick={onClickHandler}\n icon_position=\"left\"\n type=\"submit\"\n {...rest}\n >\n {children}\n </Button>\n )\n\n function onClickHandler() {\n if (!dataContext._isInsideFormElement) {\n dataContext.handleSubmit()\n }\n }\n}\n\nSubmitButton._supportsSpacingProps = true\nexport default SubmitButton\n"],"mappings":";;;;;AAAA,OAAOA,KAAK,IAAIC,UAAU,QAAQ,OAAO;AACzC,OAAOC,UAAU,MAAM,YAAY;AAEnC,OAAOC,aAAa,MAAM,4BAA4B;AACtD,OAAOC,OAAO,MAAM,2BAA2B;AAC/C,OAAOC,MAAM,MAAuB,sCAAsC;AAM1E,SAASC,YAAYA,CAACC,KAAY,EAAE;EAClC,MAAMC,aAAa,GAAGP,UAAU,CAACE,aAAa,CAAC;EAC/C,MAAM;MACJM,SAAS;MACTC,QAAQ,GAAGF,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEG,WAAW,CAACC,KAAK,CAACC;IAE9C,CAAC,GAAGN,KAAK;IADJO,IAAI,GAAAC,wBAAA,CACLR,KAAK,EAAAS,SAAA;EACT,MAAMC,WAAW,GAAGhB,UAAU,CAACG,OAAO,CAAC;EAEvC,OACEJ,KAAA,CAAAkB,aAAA,CAACb,MAAM,EAAAc,QAAA;IACLV,SAAS,EAAEP,UAAU,CAAC,yBAAyB,EAAEO,SAAS,CAAE;IAC5DW,OAAO,EAAEC,cAAe;IACxBC,aAAa,EAAC,MAAM;IACpBC,IAAI,EAAC;EAAQ,GACTT,IAAI,GAEPJ,QACK,CAAC;EAGX,SAASW,cAAcA,CAAA,EAAG;IACxB,IAAI,CAACJ,WAAW,CAACO,oBAAoB,EAAE;MACrCP,WAAW,CAACQ,YAAY,CAAC,CAAC;IAC5B;EACF;AACF;AAEAnB,YAAY,CAACoB,qBAAqB,GAAG,IAAI;AACzC,eAAepB,YAAY"}
1
+ {"version":3,"file":"SubmitButton.js","names":["React","useCallback","useContext","classnames","SharedContext","DataContext","Button","SubmitIndicator","SubmitButton","props","sharedContext","className","showIndicator","children","text","rest","_objectWithoutProperties","_excluded","content","translation","Forms","contextSubmit","formState","handleSubmit","_isInsideFormElement","onClickHandler","createElement","_extends","onClick","type","state","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Form/SubmitButton/SubmitButton.tsx"],"sourcesContent":["import React, { useCallback, useContext } from 'react'\nimport classnames from 'classnames'\nimport type { ComponentProps } from '../../types'\nimport SharedContext from '../../../../shared/Context'\nimport DataContext from '../../DataContext/Context'\nimport Button, { ButtonProps } from '../../../../components/button/Button'\nimport SubmitIndicator from '../SubmitIndicator'\n\nexport type Props = {\n /**\n * Show the submit indicator\n */\n showIndicator?: boolean\n} & ComponentProps &\n ButtonProps &\n Partial<React.HTMLAttributes<HTMLButtonElement | HTMLAnchorElement>>\n\nfunction SubmitButton(props: Props) {\n const sharedContext = useContext(SharedContext)\n\n const { className, showIndicator, children, text, ...rest } = props\n\n const content =\n text || children || sharedContext?.translation.Forms.contextSubmit\n\n const { formState, handleSubmit, _isInsideFormElement } =\n useContext(DataContext) || {}\n\n const onClickHandler = useCallback(() => {\n if (!_isInsideFormElement) {\n handleSubmit?.()\n }\n }, [_isInsideFormElement, handleSubmit])\n\n return (\n <Button\n className={classnames('dnb-forms-submit-button', className)}\n onClick={onClickHandler}\n type=\"submit\"\n {...rest}\n >\n {content}\n\n <SubmitIndicator\n state={\n showIndicator ? 'pending' : formState // will be enabled in a follow-up PR\n }\n />\n </Button>\n )\n}\n\nSubmitButton._supportsSpacingProps = true\nexport default SubmitButton\n"],"mappings":";;;;;AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,UAAU,QAAQ,OAAO;AACtD,OAAOC,UAAU,MAAM,YAAY;AAEnC,OAAOC,aAAa,MAAM,4BAA4B;AACtD,OAAOC,WAAW,MAAM,2BAA2B;AACnD,OAAOC,MAAM,MAAuB,sCAAsC;AAC1E,OAAOC,eAAe,MAAM,oBAAoB;AAWhD,SAASC,YAAYA,CAACC,KAAY,EAAE;EAClC,MAAMC,aAAa,GAAGR,UAAU,CAACE,aAAa,CAAC;EAE/C,MAAM;MAAEO,SAAS;MAAEC,aAAa;MAAEC,QAAQ;MAAEC;IAAc,CAAC,GAAGL,KAAK;IAAdM,IAAI,GAAAC,wBAAA,CAAKP,KAAK,EAAAQ,SAAA;EAEnE,MAAMC,OAAO,GACXJ,IAAI,IAAID,QAAQ,KAAIH,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAES,WAAW,CAACC,KAAK,CAACC,aAAa;EAEpE,MAAM;IAAEC,SAAS;IAAEC,YAAY;IAAEC;EAAqB,CAAC,GACrDtB,UAAU,CAACG,WAAW,CAAC,IAAI,CAAC,CAAC;EAE/B,MAAMoB,cAAc,GAAGxB,WAAW,CAAC,MAAM;IACvC,IAAI,CAACuB,oBAAoB,EAAE;MACzBD,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAG,CAAC;IAClB;EACF,CAAC,EAAE,CAACC,oBAAoB,EAAED,YAAY,CAAC,CAAC;EAExC,OACEvB,KAAA,CAAA0B,aAAA,CAACpB,MAAM,EAAAqB,QAAA;IACLhB,SAAS,EAAER,UAAU,CAAC,yBAAyB,EAAEQ,SAAS,CAAE;IAC5DiB,OAAO,EAAEH,cAAe;IACxBI,IAAI,EAAC;EAAQ,GACTd,IAAI,GAEPG,OAAO,EAERlB,KAAA,CAAA0B,aAAA,CAACnB,eAAe;IACduB,KAAK,EACHlB,aAAa,GAAG,SAAS,GAAGU;EAC7B,CACF,CACK,CAAC;AAEb;AAEAd,YAAY,CAACuB,qBAAqB,GAAG,IAAI;AACzC,eAAevB,YAAY"}
@@ -0,0 +1,2 @@
1
+ import { PropertiesTableProps } from '../../../../shared/types';
2
+ export declare const SubmitButtonProperties: PropertiesTableProps;
@@ -0,0 +1,23 @@
1
+ export const SubmitButtonProperties = {
2
+ showIndicator: {
3
+ doc: 'Show the submit indicator.',
4
+ type: 'boolean',
5
+ status: 'required'
6
+ },
7
+ children: {
8
+ doc: 'Button text.',
9
+ type: 'React.Node',
10
+ status: 'required'
11
+ },
12
+ '[Button](/uilib/components/button/properties)': {
13
+ doc: 'All button properties.',
14
+ type: 'Various',
15
+ status: 'optional'
16
+ },
17
+ '[Space](/uilib/layout/space/properties)': {
18
+ doc: 'Spacing properties like `top` or `bottom` are supported.',
19
+ type: ['string', 'object'],
20
+ status: 'optional'
21
+ }
22
+ };
23
+ //# sourceMappingURL=SubmitButtonDocs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubmitButtonDocs.js","names":["SubmitButtonProperties","showIndicator","doc","type","status","children"],"sources":["../../../../../../src/extensions/forms/Form/SubmitButton/SubmitButtonDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../../../shared/types'\n\nexport const SubmitButtonProperties: PropertiesTableProps = {\n showIndicator: {\n doc: 'Show the submit indicator.',\n type: 'boolean',\n status: 'required',\n },\n children: {\n doc: 'Button text.',\n type: 'React.Node',\n status: 'required',\n },\n '[Button](/uilib/components/button/properties)': {\n doc: 'All button properties.',\n type: 'Various',\n status: 'optional',\n },\n '[Space](/uilib/layout/space/properties)': {\n doc: 'Spacing properties like `top` or `bottom` are supported.',\n type: ['string', 'object'],\n status: 'optional',\n },\n}\n"],"mappings":"AAEA,OAAO,MAAMA,sBAA4C,GAAG;EAC1DC,aAAa,EAAE;IACbC,GAAG,EAAE,4BAA4B;IACjCC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDC,QAAQ,EAAE;IACRH,GAAG,EAAE,cAAc;IACnBC,IAAI,EAAE,YAAY;IAClBC,MAAM,EAAE;EACV,CAAC;EACD,+CAA+C,EAAE;IAC/CF,GAAG,EAAE,wBAAwB;IAC7BC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACD,yCAAyC,EAAE;IACzCF,GAAG,EAAE,0DAA0D;IAC/DC,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC1BC,MAAM,EAAE;EACV;AACF,CAAC"}
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import type { SpaceProps } from '../../../../components/Space';
3
+ import type { SubmitState } from '../../types';
4
+ export type Props = {
5
+ state: SubmitState;
6
+ className?: string;
7
+ successLabel?: string;
8
+ children?: React.ReactNode;
9
+ } & SpaceProps;
10
+ declare function SubmitIndicator(props: Props): import("react/jsx-runtime").JSX.Element;
11
+ declare namespace SubmitIndicator {
12
+ var _supportsSpacingProps: boolean;
13
+ }
14
+ export default SubmitIndicator;
@@ -0,0 +1,69 @@
1
+ "use client";
2
+
3
+ import _extends from "@babel/runtime/helpers/esm/extends";
4
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
5
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
6
+ var _b, _span;
7
+ const _excluded = ["className", "children", "state", "successLabel"];
8
+ 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; }
9
+ 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; }
10
+ import React, { useLayoutEffect, useRef, useState } from 'react';
11
+ import classnames from 'classnames';
12
+ import { Icon, Space, Tooltip } from '../../../../components';
13
+ import { check } from '../../../../icons';
14
+ import { omitSpacingProps, pickSpacingProps } from '../../../../components/flex/utils';
15
+ import { useLocale } from '../../../../shared';
16
+ function SubmitIndicator(props) {
17
+ const {
18
+ className,
19
+ children,
20
+ state,
21
+ successLabel = 'Saved'
22
+ } = props,
23
+ rest = _objectWithoutProperties(props, _excluded);
24
+ const tr = useLocale();
25
+ const childrenRef = useRef(null);
26
+ const [willWrap, setWillWrap] = useState(false);
27
+ useLayoutEffect(() => {
28
+ if (children && state) {
29
+ setWillWrap(willWordWrap(childrenRef.current, '. . . '));
30
+ }
31
+ }, [children, state]);
32
+ const params = _objectSpread({
33
+ className: classnames('dnb-form-submit-indicator', className, state && `dnb-form-submit-indicator--state-${state}`, willWrap && 'dnb-form-submit-indicator--inline-wrap')
34
+ }, pickSpacingProps(rest));
35
+ const ariaAttributes = state === 'pending' ? {
36
+ role: 'status',
37
+ 'aria-busy': true,
38
+ 'aria-label': tr.ProgressIndicator.indicator_label
39
+ } : {};
40
+ const dot = _b || (_b = React.createElement("b", null, "."));
41
+ const indicator = React.createElement("span", _extends({
42
+ className: "dnb-form-submit-indicator__content"
43
+ }, ariaAttributes, omitSpacingProps(rest)), state === 'success' && React.createElement(Tooltip, {
44
+ targetElement: _span || (_span = React.createElement("span", null, React.createElement(Icon, {
45
+ icon: check
46
+ })))
47
+ }, successLabel), state && state !== 'success' && state !== 'abort' && React.createElement(React.Fragment, null, dot, dot, dot));
48
+ return React.createElement(Space, _extends({}, params, {
49
+ element: "span"
50
+ }), children && React.createElement("span", {
51
+ ref: childrenRef
52
+ }, children), indicator);
53
+ }
54
+ function willWordWrap(element, word) {
55
+ if (!element) {
56
+ return;
57
+ }
58
+ const {
59
+ offsetHeight,
60
+ textContent
61
+ } = element;
62
+ element.textContent += word;
63
+ const height = element.offsetHeight;
64
+ element.textContent = textContent;
65
+ return height > offsetHeight;
66
+ }
67
+ SubmitIndicator._supportsSpacingProps = true;
68
+ export default SubmitIndicator;
69
+ //# sourceMappingURL=SubmitIndicator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubmitIndicator.js","names":["React","useLayoutEffect","useRef","useState","classnames","Icon","Space","Tooltip","check","omitSpacingProps","pickSpacingProps","useLocale","SubmitIndicator","props","className","children","state","successLabel","rest","_objectWithoutProperties","_excluded","tr","childrenRef","willWrap","setWillWrap","willWordWrap","current","params","_objectSpread","ariaAttributes","role","ProgressIndicator","indicator_label","dot","_b","createElement","indicator","_extends","targetElement","_span","icon","Fragment","element","ref","word","offsetHeight","textContent","height","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Form/SubmitIndicator/SubmitIndicator.tsx"],"sourcesContent":["import React, { useLayoutEffect, useRef, useState } from 'react'\nimport classnames from 'classnames'\nimport { Icon, Space, Tooltip } from '../../../../components'\nimport type { SpaceProps } from '../../../../components/Space'\nimport { check } from '../../../../icons'\nimport type { SubmitState } from '../../types'\nimport {\n omitSpacingProps,\n pickSpacingProps,\n} from '../../../../components/flex/utils'\nimport { useLocale } from '../../../../shared'\n\nexport type Props = {\n state: SubmitState\n className?: string\n successLabel?: string\n children?: React.ReactNode\n} & SpaceProps\n\nfunction SubmitIndicator(props: Props) {\n const {\n className,\n children,\n state,\n successLabel = 'Saved',\n ...rest\n } = props\n const tr = useLocale()\n const childrenRef = useRef<HTMLSpanElement>(null)\n const [willWrap, setWillWrap] = useState(false)\n\n useLayoutEffect(() => {\n if (children && state) {\n setWillWrap(willWordWrap(childrenRef.current, '. . . '))\n }\n }, [children, state])\n\n const params = {\n className: classnames(\n 'dnb-form-submit-indicator',\n state && `dnb-form-submit-indicator--state-${state}`,\n willWrap && 'dnb-form-submit-indicator--inline-wrap',\n className\n ),\n ...pickSpacingProps(rest),\n } as SpaceProps\n\n const ariaAttributes =\n state === 'pending'\n ? {\n role: 'status',\n 'aria-busy': true,\n 'aria-label': tr.ProgressIndicator.indicator_label,\n }\n : {}\n\n const dot = <b>.</b>\n const indicator = (\n <span\n className=\"dnb-form-submit-indicator__content\"\n {...ariaAttributes}\n {...omitSpacingProps(rest)}\n >\n {state === 'success' && (\n <Tooltip\n targetElement={\n <span>\n <Icon icon={check} />\n </span>\n }\n >\n {successLabel}\n </Tooltip>\n )}\n {state && state !== 'success' && state !== 'abort' && (\n <>\n {dot}\n {dot}\n {dot}\n </>\n )}\n </span>\n )\n\n return (\n <Space {...params} element=\"span\">\n {children && <span ref={childrenRef}>{children}</span>}\n {indicator}\n </Space>\n )\n}\n\nfunction willWordWrap(element: HTMLElement, word: string) {\n if (!element) {\n return\n }\n\n const { offsetHeight, textContent } = element\n\n element.textContent += word\n const height = element.offsetHeight\n element.textContent = textContent\n\n return height > offsetHeight\n}\n\nSubmitIndicator._supportsSpacingProps = true\nexport default SubmitIndicator\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { PropertiesTableProps } from '../../../../shared/types';
2
+ export declare const SubmitIndicatorProperties: PropertiesTableProps;
@@ -0,0 +1,18 @@
1
+ export const SubmitIndicatorProperties = {
2
+ state: {
3
+ doc: 'Provide `pending` to make the dots visible and `success` to show the checkmark icon.',
4
+ type: 'string',
5
+ status: 'required'
6
+ },
7
+ children: {
8
+ doc: 'If content is provided, the component will try to find out if the indicator needs to be put on a new row or not. This way it will animate the height nicely.',
9
+ type: 'React.Node',
10
+ status: 'optional'
11
+ },
12
+ '[Space](/uilib/layout/space/properties)': {
13
+ doc: 'Spacing properties like `top` or `bottom` are supported.',
14
+ type: ['string', 'object'],
15
+ status: 'optional'
16
+ }
17
+ };
18
+ //# sourceMappingURL=SubmitIndicatorDocs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubmitIndicatorDocs.js","names":["SubmitIndicatorProperties","state","doc","type","status","children"],"sources":["../../../../../../src/extensions/forms/Form/SubmitIndicator/SubmitIndicatorDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../../../shared/types'\n\nexport const SubmitIndicatorProperties: PropertiesTableProps = {\n state: {\n doc: 'Provide `pending` to make the dots visible and `success` to show the checkmark icon.',\n type: 'string',\n status: 'required',\n },\n children: {\n doc: 'If content is provided, the component will try to find out if the indicator needs to be put on a new row or not. This way it will animate the height nicely.',\n type: 'React.Node',\n status: 'optional',\n },\n '[Space](/uilib/layout/space/properties)': {\n doc: 'Spacing properties like `top` or `bottom` are supported.',\n type: ['string', 'object'],\n status: 'optional',\n },\n}\n"],"mappings":"AAEA,OAAO,MAAMA,yBAA+C,GAAG;EAC7DC,KAAK,EAAE;IACLC,GAAG,EAAE,sFAAsF;IAC3FC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDC,QAAQ,EAAE;IACRH,GAAG,EAAE,8JAA8J;IACnKC,IAAI,EAAE,YAAY;IAClBC,MAAM,EAAE;EACV,CAAC;EACD,yCAAyC,EAAE;IACzCF,GAAG,EAAE,0DAA0D;IAC/DC,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC1BC,MAAM,EAAE;EACV;AACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { default } from './SubmitIndicator';
2
+ export * from './SubmitIndicator';
@@ -0,0 +1,3 @@
1
+ export { default } from './SubmitIndicator';
2
+ export * from './SubmitIndicator';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["default"],"sources":["../../../../../../src/extensions/forms/Form/SubmitIndicator/index.ts"],"sourcesContent":["export { default } from './SubmitIndicator'\nexport * from './SubmitIndicator'\n"],"mappings":"AAAA,SAASA,OAAO,QAAQ,mBAAmB;AAC3C,cAAc,mBAAmB"}