@dnb/eufemia 10.28.0 → 10.30.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 (828) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/cjs/components/aria-live/useAriaLive.d.ts +1 -1
  3. package/cjs/components/autocomplete/Autocomplete.d.ts +19 -5
  4. package/cjs/components/dropdown/Dropdown.d.ts +22 -5
  5. package/cjs/components/height-animation/HeightAnimationInstance.js +5 -0
  6. package/cjs/components/height-animation/HeightAnimationInstance.js.map +1 -1
  7. package/cjs/components/icon/style/dnb-icon.css +1 -0
  8. package/cjs/components/icon/style/dnb-icon.min.css +1 -1
  9. package/cjs/components/icon/style/dnb-icon.scss +1 -0
  10. package/cjs/components/progress-indicator/ProgressIndicator.d.ts +2 -52
  11. package/cjs/components/progress-indicator/ProgressIndicator.js +27 -14
  12. package/cjs/components/progress-indicator/ProgressIndicator.js.map +1 -1
  13. package/cjs/components/progress-indicator/ProgressIndicatorCircular.d.ts +2 -23
  14. package/cjs/components/progress-indicator/ProgressIndicatorCircular.js +63 -27
  15. package/cjs/components/progress-indicator/ProgressIndicatorCircular.js.map +1 -1
  16. package/cjs/components/progress-indicator/ProgressIndicatorDocs.d.ts +1 -0
  17. package/cjs/components/progress-indicator/ProgressIndicatorDocs.js +45 -11
  18. package/cjs/components/progress-indicator/ProgressIndicatorDocs.js.map +1 -1
  19. package/cjs/components/progress-indicator/ProgressIndicatorLinear.d.ts +2 -22
  20. package/cjs/components/progress-indicator/ProgressIndicatorLinear.js +18 -10
  21. package/cjs/components/progress-indicator/ProgressIndicatorLinear.js.map +1 -1
  22. package/cjs/components/progress-indicator/style/dnb-progress-indicator.css +52 -55
  23. package/cjs/components/progress-indicator/style/dnb-progress-indicator.min.css +1 -1
  24. package/cjs/components/progress-indicator/style/dnb-progress-indicator.scss +65 -69
  25. package/cjs/components/progress-indicator/types.d.ts +95 -0
  26. package/cjs/components/progress-indicator/types.js +11 -0
  27. package/cjs/components/progress-indicator/types.js.map +1 -0
  28. package/cjs/extensions/forms/DataContext/Context.d.ts +7 -2
  29. package/cjs/extensions/forms/DataContext/Context.js +0 -2
  30. package/cjs/extensions/forms/DataContext/Context.js.map +1 -1
  31. package/cjs/extensions/forms/DataContext/Provider/Provider.d.ts +30 -5
  32. package/cjs/extensions/forms/DataContext/Provider/Provider.js +69 -35
  33. package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  34. package/cjs/extensions/forms/DataContext/Provider/ProviderDocs.js +27 -2
  35. package/cjs/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
  36. package/cjs/extensions/forms/Field/ArraySelection/ArraySelection.js +1 -1
  37. package/cjs/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
  38. package/cjs/extensions/forms/Field/ArraySelection/style/dnb-array-selection.css +5 -2
  39. package/cjs/extensions/forms/Field/ArraySelection/style/dnb-array-selection.min.css +1 -1
  40. package/cjs/extensions/forms/Field/ArraySelection/style/dnb-array-selection.scss +5 -2
  41. package/cjs/extensions/forms/Field/Name/Name.d.ts +10 -0
  42. package/cjs/extensions/forms/Field/Name/Name.js +73 -0
  43. package/cjs/extensions/forms/Field/Name/Name.js.map +1 -0
  44. package/cjs/extensions/forms/Field/Name/NameDocs.d.ts +2 -0
  45. package/cjs/extensions/forms/Field/Name/NameDocs.js +15 -0
  46. package/cjs/extensions/forms/Field/Name/NameDocs.js.map +1 -0
  47. package/cjs/extensions/forms/Field/Name/index.d.ts +2 -0
  48. package/cjs/extensions/forms/Field/Name/index.js +27 -0
  49. package/cjs/extensions/forms/Field/Name/index.js.map +1 -0
  50. package/cjs/extensions/forms/Field/Number/Number.d.ts +2 -2
  51. package/cjs/extensions/forms/Field/Number/Number.js.map +1 -1
  52. package/cjs/extensions/forms/Field/Option/Option.d.ts +2 -0
  53. package/cjs/extensions/forms/Field/Option/Option.js +21 -0
  54. package/cjs/extensions/forms/Field/Option/Option.js.map +1 -1
  55. package/cjs/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCityDocs.d.ts +2 -0
  56. package/cjs/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCityDocs.js +25 -0
  57. package/cjs/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCityDocs.js.map +1 -0
  58. package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.d.ts +2 -2
  59. package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
  60. package/cjs/extensions/forms/Field/Selection/Selection.d.ts +11 -4
  61. package/cjs/extensions/forms/Field/Selection/Selection.js +20 -32
  62. package/cjs/extensions/forms/Field/Selection/Selection.js.map +1 -1
  63. package/cjs/extensions/forms/Field/Selection/SelectionDocs.d.ts +2 -0
  64. package/cjs/extensions/forms/Field/Selection/SelectionDocs.js +45 -0
  65. package/cjs/extensions/forms/Field/Selection/SelectionDocs.js.map +1 -0
  66. package/cjs/extensions/forms/Field/String/String.d.ts +2 -2
  67. package/cjs/extensions/forms/Field/String/String.js.map +1 -1
  68. package/cjs/extensions/forms/Field/index.d.ts +1 -0
  69. package/cjs/extensions/forms/Field/index.js +7 -0
  70. package/cjs/extensions/forms/Field/index.js.map +1 -1
  71. package/cjs/extensions/forms/FieldBlock/FieldBlock.d.ts +3 -3
  72. package/cjs/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  73. package/cjs/extensions/forms/Form/FieldProps/FieldProps.d.ts +13 -0
  74. package/cjs/extensions/forms/Form/FieldProps/FieldProps.js +80 -0
  75. package/cjs/extensions/forms/Form/FieldProps/FieldProps.js.map +1 -0
  76. package/cjs/extensions/forms/Form/FieldProps/FieldPropsContext.d.ts +8 -0
  77. package/cjs/extensions/forms/Form/FieldProps/FieldPropsContext.js +15 -0
  78. package/cjs/extensions/forms/Form/FieldProps/FieldPropsContext.js.map +1 -0
  79. package/cjs/extensions/forms/Form/FieldProps/FieldPropsDocs.d.ts +2 -0
  80. package/cjs/extensions/forms/Form/FieldProps/FieldPropsDocs.js +18 -0
  81. package/cjs/extensions/forms/Form/FieldProps/FieldPropsDocs.js.map +1 -0
  82. package/cjs/extensions/forms/Form/FieldProps/index.d.ts +2 -0
  83. package/cjs/extensions/forms/Form/FieldProps/index.js +27 -0
  84. package/cjs/extensions/forms/Form/FieldProps/index.js.map +1 -0
  85. package/cjs/extensions/forms/Form/Handler/Handler.d.ts +1 -1
  86. package/cjs/extensions/forms/Form/Handler/Handler.js +18 -4
  87. package/cjs/extensions/forms/Form/Handler/Handler.js.map +1 -1
  88. package/cjs/extensions/forms/Form/MainHeading/MainHeading.js +1 -1
  89. package/cjs/extensions/forms/Form/MainHeading/MainHeading.js.map +1 -1
  90. package/cjs/extensions/forms/Form/MainHeading/style/dnb-form-main-heading.css +3 -3
  91. package/cjs/extensions/forms/Form/MainHeading/style/dnb-form-main-heading.min.css +1 -1
  92. package/cjs/extensions/forms/Form/MainHeading/style/dnb-form-main-heading.scss +1 -1
  93. package/cjs/extensions/forms/Form/SubHeading/SubHeading.js +1 -1
  94. package/cjs/extensions/forms/Form/SubHeading/SubHeading.js.map +1 -1
  95. package/cjs/extensions/forms/Form/SubHeading/style/dnb-form-sub-heading.css +2 -2
  96. package/cjs/extensions/forms/Form/SubHeading/style/dnb-form-sub-heading.min.css +1 -1
  97. package/cjs/extensions/forms/Form/SubHeading/style/dnb-form-sub-heading.scss +1 -1
  98. package/cjs/extensions/forms/Form/SubmitIndicator/SubmitIndicator.js +2 -2
  99. package/cjs/extensions/forms/Form/SubmitIndicator/SubmitIndicator.js.map +1 -1
  100. package/cjs/extensions/forms/Form/SubmitIndicator/style/dnb-form-submit-indicator.css +13 -13
  101. package/cjs/extensions/forms/Form/SubmitIndicator/style/dnb-form-submit-indicator.min.css +1 -1
  102. package/cjs/extensions/forms/Form/SubmitIndicator/style/dnb-form-submit-indicator.scss +1 -1
  103. package/cjs/extensions/forms/Form/Visibility/Visibility.d.ts +4 -1
  104. package/cjs/extensions/forms/Form/Visibility/Visibility.js +7 -4
  105. package/cjs/extensions/forms/Form/Visibility/Visibility.js.map +1 -1
  106. package/cjs/extensions/forms/Form/Visibility/VisibilityDocs.js +5 -0
  107. package/cjs/extensions/forms/Form/Visibility/VisibilityDocs.js.map +1 -1
  108. package/cjs/extensions/forms/Form/index.d.ts +1 -0
  109. package/cjs/extensions/forms/Form/index.js +7 -0
  110. package/cjs/extensions/forms/Form/index.js.map +1 -1
  111. package/cjs/extensions/forms/Iterate/AnimatedContainer/ElementBlock.js +4 -4
  112. package/cjs/extensions/forms/Iterate/AnimatedContainer/ElementBlock.js.map +1 -1
  113. package/cjs/extensions/forms/Iterate/Array/Array.js +2 -2
  114. package/cjs/extensions/forms/Iterate/Array/Array.js.map +1 -1
  115. package/cjs/extensions/forms/Iterate/EditContainer/EditContainer.js +1 -1
  116. package/cjs/extensions/forms/Iterate/EditContainer/EditContainer.js.map +1 -1
  117. package/cjs/extensions/forms/Iterate/PushButton/PushButton.js +1 -1
  118. package/cjs/extensions/forms/Iterate/PushButton/PushButton.js.map +1 -1
  119. package/cjs/extensions/forms/Iterate/RemoveButton/RemoveButton.js +1 -1
  120. package/cjs/extensions/forms/Iterate/RemoveButton/RemoveButton.js.map +1 -1
  121. package/cjs/extensions/forms/Iterate/Toolbar/Toolbar.js +1 -1
  122. package/cjs/extensions/forms/Iterate/Toolbar/Toolbar.js.map +1 -1
  123. package/cjs/extensions/forms/Iterate/ViewContainer/ViewContainer.js +1 -1
  124. package/cjs/extensions/forms/Iterate/ViewContainer/ViewContainer.js.map +1 -1
  125. package/cjs/extensions/forms/Iterate/style/dnb-form-iterate.css +14 -14
  126. package/cjs/extensions/forms/Iterate/style/dnb-form-iterate.min.css +1 -1
  127. package/cjs/extensions/forms/Iterate/style/dnb-form-iterate.scss +1 -1
  128. package/cjs/extensions/forms/Value/Boolean/Boolean.js +8 -3
  129. package/cjs/extensions/forms/Value/Boolean/Boolean.js.map +1 -1
  130. package/cjs/extensions/forms/Value/Name/Name.d.ts +10 -0
  131. package/cjs/extensions/forms/Value/Name/Name.js +50 -0
  132. package/cjs/extensions/forms/Value/Name/Name.js.map +1 -0
  133. package/cjs/extensions/forms/Value/Name/index.d.ts +2 -0
  134. package/cjs/extensions/forms/Value/Name/index.js +27 -0
  135. package/cjs/extensions/forms/Value/Name/index.js.map +1 -0
  136. package/cjs/extensions/forms/Value/OrganizationNumber/OrganizationNumber.d.ts +7 -0
  137. package/cjs/extensions/forms/Value/OrganizationNumber/OrganizationNumber.js +36 -0
  138. package/cjs/extensions/forms/Value/OrganizationNumber/OrganizationNumber.js.map +1 -0
  139. package/cjs/extensions/forms/Value/OrganizationNumber/index.d.ts +2 -0
  140. package/cjs/extensions/forms/Value/OrganizationNumber/index.js +27 -0
  141. package/cjs/extensions/forms/Value/OrganizationNumber/index.js.map +1 -0
  142. package/cjs/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCity.d.ts +7 -0
  143. package/cjs/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCity.js +41 -0
  144. package/cjs/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCity.js.map +1 -0
  145. package/cjs/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCityDocs.d.ts +2 -0
  146. package/cjs/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCityDocs.js +20 -0
  147. package/cjs/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCityDocs.js.map +1 -0
  148. package/cjs/extensions/forms/Value/PostalCodeAndCity/index.d.ts +2 -0
  149. package/cjs/extensions/forms/Value/PostalCodeAndCity/index.js +27 -0
  150. package/cjs/extensions/forms/Value/PostalCodeAndCity/index.js.map +1 -0
  151. package/cjs/extensions/forms/Value/String/String.js +8 -3
  152. package/cjs/extensions/forms/Value/String/String.js.map +1 -1
  153. package/cjs/extensions/forms/Value/SummaryList/SummaryList.js +1 -1
  154. package/cjs/extensions/forms/Value/SummaryList/SummaryList.js.map +1 -1
  155. package/cjs/extensions/forms/Value/ValueDocs.js +6 -1
  156. package/cjs/extensions/forms/Value/ValueDocs.js.map +1 -1
  157. package/cjs/extensions/forms/Value/index.d.ts +3 -0
  158. package/cjs/extensions/forms/Value/index.js +21 -0
  159. package/cjs/extensions/forms/Value/index.js.map +1 -1
  160. package/cjs/extensions/forms/ValueBlock/ValueBlock.js +2 -1
  161. package/cjs/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
  162. package/cjs/extensions/forms/ValueBlock/style/dnb-value-block.css +11 -6
  163. package/cjs/extensions/forms/ValueBlock/style/dnb-value-block.min.css +1 -1
  164. package/cjs/extensions/forms/ValueBlock/style/dnb-value-block.scss +11 -3
  165. package/cjs/extensions/forms/Wizard/Container/WizardContainer.js +17 -52
  166. package/cjs/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  167. package/cjs/extensions/forms/Wizard/Container/useHandleLayoutEffect.d.ts +9 -0
  168. package/cjs/extensions/forms/Wizard/Container/useHandleLayoutEffect.js +53 -0
  169. package/cjs/extensions/forms/Wizard/Container/useHandleLayoutEffect.js.map +1 -0
  170. package/cjs/extensions/forms/Wizard/Container/useStepAnimation.d.ts +4 -0
  171. package/cjs/extensions/forms/Wizard/Container/useStepAnimation.js +37 -0
  172. package/cjs/extensions/forms/Wizard/Container/useStepAnimation.js.map +1 -0
  173. package/cjs/extensions/forms/Wizard/Step/Step.js +13 -1
  174. package/cjs/extensions/forms/Wizard/Step/Step.js.map +1 -1
  175. package/cjs/extensions/forms/Wizard/hooks/useStep.js +5 -2
  176. package/cjs/extensions/forms/Wizard/hooks/useStep.js.map +1 -1
  177. package/cjs/extensions/forms/Wizard/style/dnb-wizard-layout.css +29 -2
  178. package/cjs/extensions/forms/Wizard/style/dnb-wizard-layout.min.css +1 -1
  179. package/cjs/extensions/forms/Wizard/style/dnb-wizard-layout.scss +35 -2
  180. package/cjs/extensions/forms/constants/locales/en-GB.d.ts +9 -0
  181. package/cjs/extensions/forms/constants/locales/en-GB.js +12 -3
  182. package/cjs/extensions/forms/constants/locales/en-GB.js.map +1 -1
  183. package/cjs/extensions/forms/constants/locales/en-US.d.ts +9 -0
  184. package/cjs/extensions/forms/constants/locales/index.d.ts +18 -0
  185. package/cjs/extensions/forms/constants/locales/nb-NO.d.ts +9 -0
  186. package/cjs/extensions/forms/constants/locales/nb-NO.js +11 -2
  187. package/cjs/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  188. package/cjs/extensions/forms/hooks/useFieldProps.js +8 -4
  189. package/cjs/extensions/forms/hooks/useFieldProps.js.map +1 -1
  190. package/cjs/extensions/forms/hooks/useTranslation.js +3 -1
  191. package/cjs/extensions/forms/hooks/useTranslation.js.map +1 -1
  192. package/cjs/extensions/forms/style/dnb-forms.css +77 -43
  193. package/cjs/extensions/forms/style/dnb-forms.min.css +1 -1
  194. package/cjs/extensions/forms/types.d.ts +3 -2
  195. package/cjs/extensions/forms/types.js.map +1 -1
  196. package/cjs/fragments/drawer-list/DrawerList.d.ts +8 -4
  197. package/cjs/shared/Context.d.ts +4 -4
  198. package/cjs/shared/Context.js.map +1 -1
  199. package/cjs/shared/Eufemia.d.ts +1 -1
  200. package/cjs/shared/Eufemia.js +2 -2
  201. package/cjs/shared/Eufemia.js.map +1 -1
  202. package/cjs/shared/component-helper.d.ts +1 -0
  203. package/cjs/shared/component-helper.js +8 -1
  204. package/cjs/shared/component-helper.js.map +1 -1
  205. package/cjs/shared/helpers/assignPropsWithContext.d.ts +1 -0
  206. package/cjs/shared/helpers/assignPropsWithContext.js +22 -0
  207. package/cjs/shared/helpers/assignPropsWithContext.js.map +1 -0
  208. package/cjs/shared/helpers/extendPropsWithContext.d.ts +1 -0
  209. package/cjs/shared/helpers/extendPropsWithContext.js +1 -0
  210. package/cjs/shared/helpers/extendPropsWithContext.js.map +1 -1
  211. package/cjs/shared/helpers/filterValidProps.d.ts +1 -0
  212. package/cjs/shared/helpers/filterValidProps.js.map +1 -1
  213. package/cjs/shared/helpers/runCssVersionMismatchWarning.js +14 -3
  214. package/cjs/shared/helpers/runCssVersionMismatchWarning.js.map +1 -1
  215. package/cjs/style/core/scopes.scss +1 -1
  216. package/cjs/style/dnb-ui-basis.css +1 -1
  217. package/cjs/style/dnb-ui-basis.min.css +1 -1
  218. package/cjs/style/dnb-ui-body.css +1 -1
  219. package/cjs/style/dnb-ui-body.min.css +1 -1
  220. package/cjs/style/dnb-ui-components.css +129 -98
  221. package/cjs/style/dnb-ui-components.min.css +2 -2
  222. package/cjs/style/dnb-ui-core.css +1 -1
  223. package/cjs/style/dnb-ui-core.min.css +1 -1
  224. package/cjs/style/dnb-ui-extensions.css +77 -43
  225. package/cjs/style/dnb-ui-extensions.min.css +1 -1
  226. package/cjs/style/dnb-ui-forms.css +77 -43
  227. package/cjs/style/dnb-ui-forms.min.css +1 -1
  228. package/cjs/style/dnb-ui-forms.scss +1 -1
  229. package/cjs/style/themes/eiendom/basis.js +4 -0
  230. package/cjs/style/themes/eiendom/basis.js.map +1 -0
  231. package/cjs/style/themes/eiendom/index.js +5 -0
  232. package/cjs/style/themes/eiendom/index.js.map +1 -0
  233. package/cjs/style/themes/sbanken/basis.js +4 -0
  234. package/cjs/style/themes/sbanken/basis.js.map +1 -0
  235. package/cjs/style/themes/sbanken/index.js +5 -0
  236. package/cjs/style/themes/sbanken/index.js.map +1 -0
  237. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +205 -141
  238. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  239. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.css +77 -43
  240. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  241. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.css +77 -43
  242. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  243. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +205 -141
  244. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  245. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.css +77 -43
  246. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  247. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.css +77 -43
  248. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  249. package/cjs/style/themes/theme-ui/ui-theme-components.css +205 -141
  250. package/cjs/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  251. package/cjs/style/themes/theme-ui/ui-theme-extensions.css +77 -43
  252. package/cjs/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  253. package/cjs/style/themes/theme-ui/ui-theme-forms.css +77 -43
  254. package/cjs/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  255. package/cjs/style/themes/ui/basis.js +4 -0
  256. package/cjs/style/themes/ui/basis.js.map +1 -0
  257. package/cjs/style/themes/ui/index.js +5 -0
  258. package/cjs/style/themes/ui/index.js.map +1 -0
  259. package/components/aria-live/useAriaLive.d.ts +1 -1
  260. package/components/autocomplete/Autocomplete.d.ts +19 -5
  261. package/components/dropdown/Dropdown.d.ts +22 -5
  262. package/components/height-animation/HeightAnimationInstance.js +5 -0
  263. package/components/height-animation/HeightAnimationInstance.js.map +1 -1
  264. package/components/icon/style/dnb-icon.css +1 -0
  265. package/components/icon/style/dnb-icon.min.css +1 -1
  266. package/components/icon/style/dnb-icon.scss +1 -0
  267. package/components/progress-indicator/ProgressIndicator.d.ts +2 -52
  268. package/components/progress-indicator/ProgressIndicator.js +27 -14
  269. package/components/progress-indicator/ProgressIndicator.js.map +1 -1
  270. package/components/progress-indicator/ProgressIndicatorCircular.d.ts +2 -23
  271. package/components/progress-indicator/ProgressIndicatorCircular.js +63 -27
  272. package/components/progress-indicator/ProgressIndicatorCircular.js.map +1 -1
  273. package/components/progress-indicator/ProgressIndicatorDocs.d.ts +1 -0
  274. package/components/progress-indicator/ProgressIndicatorDocs.js +43 -10
  275. package/components/progress-indicator/ProgressIndicatorDocs.js.map +1 -1
  276. package/components/progress-indicator/ProgressIndicatorLinear.d.ts +2 -22
  277. package/components/progress-indicator/ProgressIndicatorLinear.js +18 -10
  278. package/components/progress-indicator/ProgressIndicatorLinear.js.map +1 -1
  279. package/components/progress-indicator/style/dnb-progress-indicator.css +52 -55
  280. package/components/progress-indicator/style/dnb-progress-indicator.min.css +1 -1
  281. package/components/progress-indicator/style/dnb-progress-indicator.scss +65 -69
  282. package/components/progress-indicator/types.d.ts +95 -0
  283. package/components/progress-indicator/types.js +5 -0
  284. package/components/progress-indicator/types.js.map +1 -0
  285. package/es/components/aria-live/useAriaLive.d.ts +1 -1
  286. package/es/components/autocomplete/Autocomplete.d.ts +19 -5
  287. package/es/components/dropdown/Dropdown.d.ts +22 -5
  288. package/es/components/height-animation/HeightAnimationInstance.js +5 -0
  289. package/es/components/height-animation/HeightAnimationInstance.js.map +1 -1
  290. package/es/components/icon/style/dnb-icon.css +1 -0
  291. package/es/components/icon/style/dnb-icon.min.css +1 -1
  292. package/es/components/icon/style/dnb-icon.scss +1 -0
  293. package/es/components/progress-indicator/ProgressIndicator.d.ts +2 -52
  294. package/es/components/progress-indicator/ProgressIndicator.js +27 -14
  295. package/es/components/progress-indicator/ProgressIndicator.js.map +1 -1
  296. package/es/components/progress-indicator/ProgressIndicatorCircular.d.ts +2 -23
  297. package/es/components/progress-indicator/ProgressIndicatorCircular.js +62 -27
  298. package/es/components/progress-indicator/ProgressIndicatorCircular.js.map +1 -1
  299. package/es/components/progress-indicator/ProgressIndicatorDocs.d.ts +1 -0
  300. package/es/components/progress-indicator/ProgressIndicatorDocs.js +43 -10
  301. package/es/components/progress-indicator/ProgressIndicatorDocs.js.map +1 -1
  302. package/es/components/progress-indicator/ProgressIndicatorLinear.d.ts +2 -22
  303. package/es/components/progress-indicator/ProgressIndicatorLinear.js +18 -10
  304. package/es/components/progress-indicator/ProgressIndicatorLinear.js.map +1 -1
  305. package/es/components/progress-indicator/style/dnb-progress-indicator.css +52 -55
  306. package/es/components/progress-indicator/style/dnb-progress-indicator.min.css +1 -1
  307. package/es/components/progress-indicator/style/dnb-progress-indicator.scss +65 -69
  308. package/es/components/progress-indicator/types.d.ts +95 -0
  309. package/es/components/progress-indicator/types.js +5 -0
  310. package/es/components/progress-indicator/types.js.map +1 -0
  311. package/es/extensions/forms/DataContext/Context.d.ts +7 -2
  312. package/es/extensions/forms/DataContext/Context.js +0 -2
  313. package/es/extensions/forms/DataContext/Context.js.map +1 -1
  314. package/es/extensions/forms/DataContext/Provider/Provider.d.ts +30 -5
  315. package/es/extensions/forms/DataContext/Provider/Provider.js +67 -34
  316. package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  317. package/es/extensions/forms/DataContext/Provider/ProviderDocs.js +27 -2
  318. package/es/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
  319. package/es/extensions/forms/Field/ArraySelection/ArraySelection.js +1 -1
  320. package/es/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
  321. package/es/extensions/forms/Field/ArraySelection/style/dnb-array-selection.css +5 -2
  322. package/es/extensions/forms/Field/ArraySelection/style/dnb-array-selection.min.css +1 -1
  323. package/es/extensions/forms/Field/ArraySelection/style/dnb-array-selection.scss +5 -2
  324. package/es/extensions/forms/Field/Name/Name.d.ts +10 -0
  325. package/es/extensions/forms/Field/Name/Name.js +63 -0
  326. package/es/extensions/forms/Field/Name/Name.js.map +1 -0
  327. package/es/extensions/forms/Field/Name/NameDocs.d.ts +2 -0
  328. package/es/extensions/forms/Field/Name/NameDocs.js +8 -0
  329. package/es/extensions/forms/Field/Name/NameDocs.js.map +1 -0
  330. package/es/extensions/forms/Field/Name/index.d.ts +2 -0
  331. package/es/extensions/forms/Field/Name/index.js +3 -0
  332. package/es/extensions/forms/Field/Name/index.js.map +1 -0
  333. package/es/extensions/forms/Field/Number/Number.d.ts +2 -2
  334. package/es/extensions/forms/Field/Number/Number.js.map +1 -1
  335. package/es/extensions/forms/Field/Option/Option.d.ts +2 -0
  336. package/es/extensions/forms/Field/Option/Option.js +20 -0
  337. package/es/extensions/forms/Field/Option/Option.js.map +1 -1
  338. package/es/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCityDocs.d.ts +2 -0
  339. package/es/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCityDocs.js +18 -0
  340. package/es/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCityDocs.js.map +1 -0
  341. package/es/extensions/forms/Field/SelectCountry/SelectCountry.d.ts +2 -2
  342. package/es/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
  343. package/es/extensions/forms/Field/Selection/Selection.d.ts +11 -4
  344. package/es/extensions/forms/Field/Selection/Selection.js +20 -32
  345. package/es/extensions/forms/Field/Selection/Selection.js.map +1 -1
  346. package/es/extensions/forms/Field/Selection/SelectionDocs.d.ts +2 -0
  347. package/es/extensions/forms/Field/Selection/SelectionDocs.js +38 -0
  348. package/es/extensions/forms/Field/Selection/SelectionDocs.js.map +1 -0
  349. package/es/extensions/forms/Field/String/String.d.ts +2 -2
  350. package/es/extensions/forms/Field/String/String.js.map +1 -1
  351. package/es/extensions/forms/Field/index.d.ts +1 -0
  352. package/es/extensions/forms/Field/index.js +1 -0
  353. package/es/extensions/forms/Field/index.js.map +1 -1
  354. package/es/extensions/forms/FieldBlock/FieldBlock.d.ts +3 -3
  355. package/es/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  356. package/es/extensions/forms/Form/FieldProps/FieldProps.d.ts +13 -0
  357. package/es/extensions/forms/Form/FieldProps/FieldProps.js +71 -0
  358. package/es/extensions/forms/Form/FieldProps/FieldProps.js.map +1 -0
  359. package/es/extensions/forms/Form/FieldProps/FieldPropsContext.d.ts +8 -0
  360. package/es/extensions/forms/Form/FieldProps/FieldPropsContext.js +7 -0
  361. package/es/extensions/forms/Form/FieldProps/FieldPropsContext.js.map +1 -0
  362. package/es/extensions/forms/Form/FieldProps/FieldPropsDocs.d.ts +2 -0
  363. package/es/extensions/forms/Form/FieldProps/FieldPropsDocs.js +11 -0
  364. package/es/extensions/forms/Form/FieldProps/FieldPropsDocs.js.map +1 -0
  365. package/es/extensions/forms/Form/FieldProps/index.d.ts +2 -0
  366. package/es/extensions/forms/Form/FieldProps/index.js +3 -0
  367. package/es/extensions/forms/Form/FieldProps/index.js.map +1 -0
  368. package/es/extensions/forms/Form/Handler/Handler.d.ts +1 -1
  369. package/es/extensions/forms/Form/Handler/Handler.js +18 -4
  370. package/es/extensions/forms/Form/Handler/Handler.js.map +1 -1
  371. package/es/extensions/forms/Form/MainHeading/MainHeading.js +1 -1
  372. package/es/extensions/forms/Form/MainHeading/MainHeading.js.map +1 -1
  373. package/es/extensions/forms/Form/MainHeading/style/dnb-form-main-heading.css +3 -3
  374. package/es/extensions/forms/Form/MainHeading/style/dnb-form-main-heading.min.css +1 -1
  375. package/es/extensions/forms/Form/MainHeading/style/dnb-form-main-heading.scss +1 -1
  376. package/es/extensions/forms/Form/SubHeading/SubHeading.js +1 -1
  377. package/es/extensions/forms/Form/SubHeading/SubHeading.js.map +1 -1
  378. package/es/extensions/forms/Form/SubHeading/style/dnb-form-sub-heading.css +2 -2
  379. package/es/extensions/forms/Form/SubHeading/style/dnb-form-sub-heading.min.css +1 -1
  380. package/es/extensions/forms/Form/SubHeading/style/dnb-form-sub-heading.scss +1 -1
  381. package/es/extensions/forms/Form/SubmitIndicator/SubmitIndicator.js +2 -2
  382. package/es/extensions/forms/Form/SubmitIndicator/SubmitIndicator.js.map +1 -1
  383. package/es/extensions/forms/Form/SubmitIndicator/style/dnb-form-submit-indicator.css +13 -13
  384. package/es/extensions/forms/Form/SubmitIndicator/style/dnb-form-submit-indicator.min.css +1 -1
  385. package/es/extensions/forms/Form/SubmitIndicator/style/dnb-form-submit-indicator.scss +1 -1
  386. package/es/extensions/forms/Form/Visibility/Visibility.d.ts +4 -1
  387. package/es/extensions/forms/Form/Visibility/Visibility.js +7 -4
  388. package/es/extensions/forms/Form/Visibility/Visibility.js.map +1 -1
  389. package/es/extensions/forms/Form/Visibility/VisibilityDocs.js +5 -0
  390. package/es/extensions/forms/Form/Visibility/VisibilityDocs.js.map +1 -1
  391. package/es/extensions/forms/Form/index.d.ts +1 -0
  392. package/es/extensions/forms/Form/index.js +1 -0
  393. package/es/extensions/forms/Form/index.js.map +1 -1
  394. package/es/extensions/forms/Iterate/AnimatedContainer/ElementBlock.js +4 -4
  395. package/es/extensions/forms/Iterate/AnimatedContainer/ElementBlock.js.map +1 -1
  396. package/es/extensions/forms/Iterate/Array/Array.js +2 -2
  397. package/es/extensions/forms/Iterate/Array/Array.js.map +1 -1
  398. package/es/extensions/forms/Iterate/EditContainer/EditContainer.js +1 -1
  399. package/es/extensions/forms/Iterate/EditContainer/EditContainer.js.map +1 -1
  400. package/es/extensions/forms/Iterate/PushButton/PushButton.js +1 -1
  401. package/es/extensions/forms/Iterate/PushButton/PushButton.js.map +1 -1
  402. package/es/extensions/forms/Iterate/RemoveButton/RemoveButton.js +1 -1
  403. package/es/extensions/forms/Iterate/RemoveButton/RemoveButton.js.map +1 -1
  404. package/es/extensions/forms/Iterate/Toolbar/Toolbar.js +1 -1
  405. package/es/extensions/forms/Iterate/Toolbar/Toolbar.js.map +1 -1
  406. package/es/extensions/forms/Iterate/ViewContainer/ViewContainer.js +1 -1
  407. package/es/extensions/forms/Iterate/ViewContainer/ViewContainer.js.map +1 -1
  408. package/es/extensions/forms/Iterate/style/dnb-form-iterate.css +14 -14
  409. package/es/extensions/forms/Iterate/style/dnb-form-iterate.min.css +1 -1
  410. package/es/extensions/forms/Iterate/style/dnb-form-iterate.scss +1 -1
  411. package/es/extensions/forms/Value/Boolean/Boolean.js +8 -3
  412. package/es/extensions/forms/Value/Boolean/Boolean.js.map +1 -1
  413. package/es/extensions/forms/Value/Name/Name.d.ts +10 -0
  414. package/es/extensions/forms/Value/Name/Name.js +40 -0
  415. package/es/extensions/forms/Value/Name/Name.js.map +1 -0
  416. package/es/extensions/forms/Value/Name/index.d.ts +2 -0
  417. package/es/extensions/forms/Value/Name/index.js +3 -0
  418. package/es/extensions/forms/Value/Name/index.js.map +1 -0
  419. package/es/extensions/forms/Value/OrganizationNumber/OrganizationNumber.d.ts +7 -0
  420. package/es/extensions/forms/Value/OrganizationNumber/OrganizationNumber.js +24 -0
  421. package/es/extensions/forms/Value/OrganizationNumber/OrganizationNumber.js.map +1 -0
  422. package/es/extensions/forms/Value/OrganizationNumber/index.d.ts +2 -0
  423. package/es/extensions/forms/Value/OrganizationNumber/index.js +3 -0
  424. package/es/extensions/forms/Value/OrganizationNumber/index.js.map +1 -0
  425. package/es/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCity.d.ts +7 -0
  426. package/es/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCity.js +31 -0
  427. package/es/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCity.js.map +1 -0
  428. package/es/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCityDocs.d.ts +2 -0
  429. package/es/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCityDocs.js +13 -0
  430. package/es/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCityDocs.js.map +1 -0
  431. package/es/extensions/forms/Value/PostalCodeAndCity/index.d.ts +2 -0
  432. package/es/extensions/forms/Value/PostalCodeAndCity/index.js +3 -0
  433. package/es/extensions/forms/Value/PostalCodeAndCity/index.js.map +1 -0
  434. package/es/extensions/forms/Value/String/String.js +8 -3
  435. package/es/extensions/forms/Value/String/String.js.map +1 -1
  436. package/es/extensions/forms/Value/SummaryList/SummaryList.js +1 -1
  437. package/es/extensions/forms/Value/SummaryList/SummaryList.js.map +1 -1
  438. package/es/extensions/forms/Value/ValueDocs.js +6 -1
  439. package/es/extensions/forms/Value/ValueDocs.js.map +1 -1
  440. package/es/extensions/forms/Value/index.d.ts +3 -0
  441. package/es/extensions/forms/Value/index.js +3 -0
  442. package/es/extensions/forms/Value/index.js.map +1 -1
  443. package/es/extensions/forms/ValueBlock/ValueBlock.js +2 -1
  444. package/es/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
  445. package/es/extensions/forms/ValueBlock/style/dnb-value-block.css +11 -6
  446. package/es/extensions/forms/ValueBlock/style/dnb-value-block.min.css +1 -1
  447. package/es/extensions/forms/ValueBlock/style/dnb-value-block.scss +11 -3
  448. package/es/extensions/forms/Wizard/Container/WizardContainer.js +17 -51
  449. package/es/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  450. package/es/extensions/forms/Wizard/Container/useHandleLayoutEffect.d.ts +9 -0
  451. package/es/extensions/forms/Wizard/Container/useHandleLayoutEffect.js +46 -0
  452. package/es/extensions/forms/Wizard/Container/useHandleLayoutEffect.js.map +1 -0
  453. package/es/extensions/forms/Wizard/Container/useStepAnimation.d.ts +4 -0
  454. package/es/extensions/forms/Wizard/Container/useStepAnimation.js +29 -0
  455. package/es/extensions/forms/Wizard/Container/useStepAnimation.js.map +1 -0
  456. package/es/extensions/forms/Wizard/Step/Step.js +14 -2
  457. package/es/extensions/forms/Wizard/Step/Step.js.map +1 -1
  458. package/es/extensions/forms/Wizard/hooks/useStep.js +3 -2
  459. package/es/extensions/forms/Wizard/hooks/useStep.js.map +1 -1
  460. package/es/extensions/forms/Wizard/style/dnb-wizard-layout.css +29 -2
  461. package/es/extensions/forms/Wizard/style/dnb-wizard-layout.min.css +1 -1
  462. package/es/extensions/forms/Wizard/style/dnb-wizard-layout.scss +35 -2
  463. package/es/extensions/forms/constants/locales/en-GB.d.ts +9 -0
  464. package/es/extensions/forms/constants/locales/en-GB.js +12 -3
  465. package/es/extensions/forms/constants/locales/en-GB.js.map +1 -1
  466. package/es/extensions/forms/constants/locales/en-US.d.ts +9 -0
  467. package/es/extensions/forms/constants/locales/index.d.ts +18 -0
  468. package/es/extensions/forms/constants/locales/nb-NO.d.ts +9 -0
  469. package/es/extensions/forms/constants/locales/nb-NO.js +11 -2
  470. package/es/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  471. package/es/extensions/forms/hooks/useFieldProps.js +8 -3
  472. package/es/extensions/forms/hooks/useFieldProps.js.map +1 -1
  473. package/es/extensions/forms/hooks/useTranslation.js +3 -1
  474. package/es/extensions/forms/hooks/useTranslation.js.map +1 -1
  475. package/es/extensions/forms/style/dnb-forms.css +77 -43
  476. package/es/extensions/forms/style/dnb-forms.min.css +1 -1
  477. package/es/extensions/forms/types.d.ts +3 -2
  478. package/es/extensions/forms/types.js.map +1 -1
  479. package/es/fragments/drawer-list/DrawerList.d.ts +8 -4
  480. package/es/shared/Context.d.ts +4 -4
  481. package/es/shared/Context.js.map +1 -1
  482. package/es/shared/Eufemia.d.ts +1 -1
  483. package/es/shared/Eufemia.js +2 -2
  484. package/es/shared/Eufemia.js.map +1 -1
  485. package/es/shared/component-helper.d.ts +1 -0
  486. package/es/shared/component-helper.js +2 -1
  487. package/es/shared/component-helper.js.map +1 -1
  488. package/es/shared/helpers/assignPropsWithContext.d.ts +1 -0
  489. package/es/shared/helpers/assignPropsWithContext.js +12 -0
  490. package/es/shared/helpers/assignPropsWithContext.js.map +1 -0
  491. package/es/shared/helpers/extendPropsWithContext.d.ts +1 -0
  492. package/es/shared/helpers/extendPropsWithContext.js +1 -1
  493. package/es/shared/helpers/extendPropsWithContext.js.map +1 -1
  494. package/es/shared/helpers/filterValidProps.d.ts +1 -0
  495. package/es/shared/helpers/filterValidProps.js.map +1 -1
  496. package/es/shared/helpers/runCssVersionMismatchWarning.js +14 -3
  497. package/es/shared/helpers/runCssVersionMismatchWarning.js.map +1 -1
  498. package/es/style/core/scopes.scss +1 -1
  499. package/es/style/dnb-ui-basis.css +1 -1
  500. package/es/style/dnb-ui-basis.min.css +1 -1
  501. package/es/style/dnb-ui-body.css +1 -1
  502. package/es/style/dnb-ui-body.min.css +1 -1
  503. package/es/style/dnb-ui-components.css +129 -98
  504. package/es/style/dnb-ui-components.min.css +2 -2
  505. package/es/style/dnb-ui-core.css +1 -1
  506. package/es/style/dnb-ui-core.min.css +1 -1
  507. package/es/style/dnb-ui-extensions.css +77 -43
  508. package/es/style/dnb-ui-extensions.min.css +1 -1
  509. package/es/style/dnb-ui-forms.css +77 -43
  510. package/es/style/dnb-ui-forms.min.css +1 -1
  511. package/es/style/dnb-ui-forms.scss +1 -1
  512. package/es/style/themes/eiendom/basis.js +1 -0
  513. package/es/style/themes/eiendom/basis.js.map +1 -0
  514. package/es/style/themes/eiendom/index.js +3 -0
  515. package/es/style/themes/eiendom/index.js.map +1 -0
  516. package/es/style/themes/sbanken/basis.js +1 -0
  517. package/es/style/themes/sbanken/basis.js.map +1 -0
  518. package/es/style/themes/sbanken/index.d.ts +1 -0
  519. package/es/style/themes/sbanken/index.js +3 -0
  520. package/es/style/themes/sbanken/index.js.map +1 -0
  521. package/es/style/themes/theme-eiendom/eiendom-theme-components.css +205 -141
  522. package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  523. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.css +77 -43
  524. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  525. package/es/style/themes/theme-eiendom/eiendom-theme-forms.css +77 -43
  526. package/es/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  527. package/es/style/themes/theme-sbanken/sbanken-theme-components.css +205 -141
  528. package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  529. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.css +77 -43
  530. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  531. package/es/style/themes/theme-sbanken/sbanken-theme-forms.css +77 -43
  532. package/es/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  533. package/es/style/themes/theme-ui/ui-theme-components.css +205 -141
  534. package/es/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  535. package/es/style/themes/theme-ui/ui-theme-extensions.css +77 -43
  536. package/es/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  537. package/es/style/themes/theme-ui/ui-theme-forms.css +77 -43
  538. package/es/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  539. package/es/style/themes/ui/basis.d.ts +1 -0
  540. package/es/style/themes/ui/basis.js +1 -0
  541. package/es/style/themes/ui/basis.js.map +1 -0
  542. package/es/style/themes/ui/index.d.ts +1 -0
  543. package/es/style/themes/ui/index.js +3 -0
  544. package/es/style/themes/ui/index.js.map +1 -0
  545. package/esm/dnb-ui-basis.min.mjs +1 -1
  546. package/esm/dnb-ui-components.min.mjs +1 -1
  547. package/esm/dnb-ui-elements.min.mjs +1 -1
  548. package/esm/dnb-ui-extensions.min.mjs +3 -3
  549. package/esm/dnb-ui-lib.min.mjs +1 -1
  550. package/extensions/forms/DataContext/Context.d.ts +7 -2
  551. package/extensions/forms/DataContext/Context.js +0 -2
  552. package/extensions/forms/DataContext/Context.js.map +1 -1
  553. package/extensions/forms/DataContext/Provider/Provider.d.ts +30 -5
  554. package/extensions/forms/DataContext/Provider/Provider.js +69 -35
  555. package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  556. package/extensions/forms/DataContext/Provider/ProviderDocs.js +27 -2
  557. package/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
  558. package/extensions/forms/Field/ArraySelection/ArraySelection.js +1 -1
  559. package/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
  560. package/extensions/forms/Field/ArraySelection/style/dnb-array-selection.css +5 -2
  561. package/extensions/forms/Field/ArraySelection/style/dnb-array-selection.min.css +1 -1
  562. package/extensions/forms/Field/ArraySelection/style/dnb-array-selection.scss +5 -2
  563. package/extensions/forms/Field/Name/Name.d.ts +10 -0
  564. package/extensions/forms/Field/Name/Name.js +63 -0
  565. package/extensions/forms/Field/Name/Name.js.map +1 -0
  566. package/extensions/forms/Field/Name/NameDocs.d.ts +2 -0
  567. package/extensions/forms/Field/Name/NameDocs.js +8 -0
  568. package/extensions/forms/Field/Name/NameDocs.js.map +1 -0
  569. package/extensions/forms/Field/Name/index.d.ts +2 -0
  570. package/extensions/forms/Field/Name/index.js +3 -0
  571. package/extensions/forms/Field/Name/index.js.map +1 -0
  572. package/extensions/forms/Field/Number/Number.d.ts +2 -2
  573. package/extensions/forms/Field/Number/Number.js.map +1 -1
  574. package/extensions/forms/Field/Option/Option.d.ts +2 -0
  575. package/extensions/forms/Field/Option/Option.js +20 -0
  576. package/extensions/forms/Field/Option/Option.js.map +1 -1
  577. package/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCityDocs.d.ts +2 -0
  578. package/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCityDocs.js +18 -0
  579. package/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCityDocs.js.map +1 -0
  580. package/extensions/forms/Field/SelectCountry/SelectCountry.d.ts +2 -2
  581. package/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
  582. package/extensions/forms/Field/Selection/Selection.d.ts +11 -4
  583. package/extensions/forms/Field/Selection/Selection.js +20 -32
  584. package/extensions/forms/Field/Selection/Selection.js.map +1 -1
  585. package/extensions/forms/Field/Selection/SelectionDocs.d.ts +2 -0
  586. package/extensions/forms/Field/Selection/SelectionDocs.js +38 -0
  587. package/extensions/forms/Field/Selection/SelectionDocs.js.map +1 -0
  588. package/extensions/forms/Field/String/String.d.ts +2 -2
  589. package/extensions/forms/Field/String/String.js.map +1 -1
  590. package/extensions/forms/Field/index.d.ts +1 -0
  591. package/extensions/forms/Field/index.js +1 -0
  592. package/extensions/forms/Field/index.js.map +1 -1
  593. package/extensions/forms/FieldBlock/FieldBlock.d.ts +3 -3
  594. package/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  595. package/extensions/forms/Form/FieldProps/FieldProps.d.ts +13 -0
  596. package/extensions/forms/Form/FieldProps/FieldProps.js +71 -0
  597. package/extensions/forms/Form/FieldProps/FieldProps.js.map +1 -0
  598. package/extensions/forms/Form/FieldProps/FieldPropsContext.d.ts +8 -0
  599. package/extensions/forms/Form/FieldProps/FieldPropsContext.js +7 -0
  600. package/extensions/forms/Form/FieldProps/FieldPropsContext.js.map +1 -0
  601. package/extensions/forms/Form/FieldProps/FieldPropsDocs.d.ts +2 -0
  602. package/extensions/forms/Form/FieldProps/FieldPropsDocs.js +11 -0
  603. package/extensions/forms/Form/FieldProps/FieldPropsDocs.js.map +1 -0
  604. package/extensions/forms/Form/FieldProps/index.d.ts +2 -0
  605. package/extensions/forms/Form/FieldProps/index.js +3 -0
  606. package/extensions/forms/Form/FieldProps/index.js.map +1 -0
  607. package/extensions/forms/Form/Handler/Handler.d.ts +1 -1
  608. package/extensions/forms/Form/Handler/Handler.js +18 -4
  609. package/extensions/forms/Form/Handler/Handler.js.map +1 -1
  610. package/extensions/forms/Form/MainHeading/MainHeading.js +1 -1
  611. package/extensions/forms/Form/MainHeading/MainHeading.js.map +1 -1
  612. package/extensions/forms/Form/MainHeading/style/dnb-form-main-heading.css +3 -3
  613. package/extensions/forms/Form/MainHeading/style/dnb-form-main-heading.min.css +1 -1
  614. package/extensions/forms/Form/MainHeading/style/dnb-form-main-heading.scss +1 -1
  615. package/extensions/forms/Form/SubHeading/SubHeading.js +1 -1
  616. package/extensions/forms/Form/SubHeading/SubHeading.js.map +1 -1
  617. package/extensions/forms/Form/SubHeading/style/dnb-form-sub-heading.css +2 -2
  618. package/extensions/forms/Form/SubHeading/style/dnb-form-sub-heading.min.css +1 -1
  619. package/extensions/forms/Form/SubHeading/style/dnb-form-sub-heading.scss +1 -1
  620. package/extensions/forms/Form/SubmitIndicator/SubmitIndicator.js +2 -2
  621. package/extensions/forms/Form/SubmitIndicator/SubmitIndicator.js.map +1 -1
  622. package/extensions/forms/Form/SubmitIndicator/style/dnb-form-submit-indicator.css +13 -13
  623. package/extensions/forms/Form/SubmitIndicator/style/dnb-form-submit-indicator.min.css +1 -1
  624. package/extensions/forms/Form/SubmitIndicator/style/dnb-form-submit-indicator.scss +1 -1
  625. package/extensions/forms/Form/Visibility/Visibility.d.ts +4 -1
  626. package/extensions/forms/Form/Visibility/Visibility.js +7 -4
  627. package/extensions/forms/Form/Visibility/Visibility.js.map +1 -1
  628. package/extensions/forms/Form/Visibility/VisibilityDocs.js +5 -0
  629. package/extensions/forms/Form/Visibility/VisibilityDocs.js.map +1 -1
  630. package/extensions/forms/Form/index.d.ts +1 -0
  631. package/extensions/forms/Form/index.js +1 -0
  632. package/extensions/forms/Form/index.js.map +1 -1
  633. package/extensions/forms/Iterate/AnimatedContainer/ElementBlock.js +4 -4
  634. package/extensions/forms/Iterate/AnimatedContainer/ElementBlock.js.map +1 -1
  635. package/extensions/forms/Iterate/Array/Array.js +2 -2
  636. package/extensions/forms/Iterate/Array/Array.js.map +1 -1
  637. package/extensions/forms/Iterate/EditContainer/EditContainer.js +1 -1
  638. package/extensions/forms/Iterate/EditContainer/EditContainer.js.map +1 -1
  639. package/extensions/forms/Iterate/PushButton/PushButton.js +1 -1
  640. package/extensions/forms/Iterate/PushButton/PushButton.js.map +1 -1
  641. package/extensions/forms/Iterate/RemoveButton/RemoveButton.js +1 -1
  642. package/extensions/forms/Iterate/RemoveButton/RemoveButton.js.map +1 -1
  643. package/extensions/forms/Iterate/Toolbar/Toolbar.js +1 -1
  644. package/extensions/forms/Iterate/Toolbar/Toolbar.js.map +1 -1
  645. package/extensions/forms/Iterate/ViewContainer/ViewContainer.js +1 -1
  646. package/extensions/forms/Iterate/ViewContainer/ViewContainer.js.map +1 -1
  647. package/extensions/forms/Iterate/style/dnb-form-iterate.css +14 -14
  648. package/extensions/forms/Iterate/style/dnb-form-iterate.min.css +1 -1
  649. package/extensions/forms/Iterate/style/dnb-form-iterate.scss +1 -1
  650. package/extensions/forms/Value/Boolean/Boolean.js +8 -3
  651. package/extensions/forms/Value/Boolean/Boolean.js.map +1 -1
  652. package/extensions/forms/Value/Name/Name.d.ts +10 -0
  653. package/extensions/forms/Value/Name/Name.js +40 -0
  654. package/extensions/forms/Value/Name/Name.js.map +1 -0
  655. package/extensions/forms/Value/Name/index.d.ts +2 -0
  656. package/extensions/forms/Value/Name/index.js +3 -0
  657. package/extensions/forms/Value/Name/index.js.map +1 -0
  658. package/extensions/forms/Value/OrganizationNumber/OrganizationNumber.d.ts +7 -0
  659. package/extensions/forms/Value/OrganizationNumber/OrganizationNumber.js +24 -0
  660. package/extensions/forms/Value/OrganizationNumber/OrganizationNumber.js.map +1 -0
  661. package/extensions/forms/Value/OrganizationNumber/index.d.ts +2 -0
  662. package/extensions/forms/Value/OrganizationNumber/index.js +3 -0
  663. package/extensions/forms/Value/OrganizationNumber/index.js.map +1 -0
  664. package/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCity.d.ts +7 -0
  665. package/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCity.js +31 -0
  666. package/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCity.js.map +1 -0
  667. package/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCityDocs.d.ts +2 -0
  668. package/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCityDocs.js +13 -0
  669. package/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCityDocs.js.map +1 -0
  670. package/extensions/forms/Value/PostalCodeAndCity/index.d.ts +2 -0
  671. package/extensions/forms/Value/PostalCodeAndCity/index.js +3 -0
  672. package/extensions/forms/Value/PostalCodeAndCity/index.js.map +1 -0
  673. package/extensions/forms/Value/String/String.js +8 -3
  674. package/extensions/forms/Value/String/String.js.map +1 -1
  675. package/extensions/forms/Value/SummaryList/SummaryList.js +1 -1
  676. package/extensions/forms/Value/SummaryList/SummaryList.js.map +1 -1
  677. package/extensions/forms/Value/ValueDocs.js +6 -1
  678. package/extensions/forms/Value/ValueDocs.js.map +1 -1
  679. package/extensions/forms/Value/index.d.ts +3 -0
  680. package/extensions/forms/Value/index.js +3 -0
  681. package/extensions/forms/Value/index.js.map +1 -1
  682. package/extensions/forms/ValueBlock/ValueBlock.js +2 -1
  683. package/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
  684. package/extensions/forms/ValueBlock/style/dnb-value-block.css +11 -6
  685. package/extensions/forms/ValueBlock/style/dnb-value-block.min.css +1 -1
  686. package/extensions/forms/ValueBlock/style/dnb-value-block.scss +11 -3
  687. package/extensions/forms/Wizard/Container/WizardContainer.js +17 -52
  688. package/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  689. package/extensions/forms/Wizard/Container/useHandleLayoutEffect.d.ts +9 -0
  690. package/extensions/forms/Wizard/Container/useHandleLayoutEffect.js +47 -0
  691. package/extensions/forms/Wizard/Container/useHandleLayoutEffect.js.map +1 -0
  692. package/extensions/forms/Wizard/Container/useStepAnimation.d.ts +4 -0
  693. package/extensions/forms/Wizard/Container/useStepAnimation.js +30 -0
  694. package/extensions/forms/Wizard/Container/useStepAnimation.js.map +1 -0
  695. package/extensions/forms/Wizard/Step/Step.js +14 -2
  696. package/extensions/forms/Wizard/Step/Step.js.map +1 -1
  697. package/extensions/forms/Wizard/hooks/useStep.js +3 -2
  698. package/extensions/forms/Wizard/hooks/useStep.js.map +1 -1
  699. package/extensions/forms/Wizard/style/dnb-wizard-layout.css +29 -2
  700. package/extensions/forms/Wizard/style/dnb-wizard-layout.min.css +1 -1
  701. package/extensions/forms/Wizard/style/dnb-wizard-layout.scss +35 -2
  702. package/extensions/forms/constants/locales/en-GB.d.ts +9 -0
  703. package/extensions/forms/constants/locales/en-GB.js +12 -3
  704. package/extensions/forms/constants/locales/en-GB.js.map +1 -1
  705. package/extensions/forms/constants/locales/en-US.d.ts +9 -0
  706. package/extensions/forms/constants/locales/index.d.ts +18 -0
  707. package/extensions/forms/constants/locales/nb-NO.d.ts +9 -0
  708. package/extensions/forms/constants/locales/nb-NO.js +11 -2
  709. package/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  710. package/extensions/forms/hooks/useFieldProps.js +8 -4
  711. package/extensions/forms/hooks/useFieldProps.js.map +1 -1
  712. package/extensions/forms/hooks/useTranslation.js +3 -1
  713. package/extensions/forms/hooks/useTranslation.js.map +1 -1
  714. package/extensions/forms/style/dnb-forms.css +77 -43
  715. package/extensions/forms/style/dnb-forms.min.css +1 -1
  716. package/extensions/forms/types.d.ts +3 -2
  717. package/extensions/forms/types.js.map +1 -1
  718. package/fragments/drawer-list/DrawerList.d.ts +8 -4
  719. package/package.json +1 -1
  720. package/shared/Context.d.ts +4 -4
  721. package/shared/Context.js.map +1 -1
  722. package/shared/Eufemia.d.ts +1 -1
  723. package/shared/Eufemia.js +2 -2
  724. package/shared/Eufemia.js.map +1 -1
  725. package/shared/component-helper.d.ts +1 -0
  726. package/shared/component-helper.js +2 -1
  727. package/shared/component-helper.js.map +1 -1
  728. package/shared/helpers/assignPropsWithContext.d.ts +1 -0
  729. package/shared/helpers/assignPropsWithContext.js +16 -0
  730. package/shared/helpers/assignPropsWithContext.js.map +1 -0
  731. package/shared/helpers/extendPropsWithContext.d.ts +1 -0
  732. package/shared/helpers/extendPropsWithContext.js +1 -1
  733. package/shared/helpers/extendPropsWithContext.js.map +1 -1
  734. package/shared/helpers/filterValidProps.d.ts +1 -0
  735. package/shared/helpers/filterValidProps.js.map +1 -1
  736. package/shared/helpers/runCssVersionMismatchWarning.js +14 -3
  737. package/shared/helpers/runCssVersionMismatchWarning.js.map +1 -1
  738. package/style/core/scopes.scss +1 -1
  739. package/style/dnb-ui-basis.css +1 -1
  740. package/style/dnb-ui-basis.min.css +1 -1
  741. package/style/dnb-ui-body.css +1 -1
  742. package/style/dnb-ui-body.min.css +1 -1
  743. package/style/dnb-ui-components.css +129 -98
  744. package/style/dnb-ui-components.min.css +2 -2
  745. package/style/dnb-ui-core.css +1 -1
  746. package/style/dnb-ui-core.min.css +1 -1
  747. package/style/dnb-ui-extensions.css +77 -43
  748. package/style/dnb-ui-extensions.min.css +1 -1
  749. package/style/dnb-ui-forms.css +77 -43
  750. package/style/dnb-ui-forms.min.css +1 -1
  751. package/style/dnb-ui-forms.scss +1 -1
  752. package/style/themes/eiendom/basis.d.ts +1 -0
  753. package/style/themes/eiendom/basis.js +1 -0
  754. package/style/themes/eiendom/basis.js.map +1 -0
  755. package/style/themes/eiendom/index.d.ts +1 -0
  756. package/style/themes/eiendom/index.js +3 -0
  757. package/style/themes/eiendom/index.js.map +1 -0
  758. package/style/themes/sbanken/basis.d.ts +1 -0
  759. package/style/themes/sbanken/basis.js +1 -0
  760. package/style/themes/sbanken/basis.js.map +1 -0
  761. package/style/themes/sbanken/index.d.ts +1 -0
  762. package/style/themes/sbanken/index.js +3 -0
  763. package/style/themes/sbanken/index.js.map +1 -0
  764. package/style/themes/theme-eiendom/eiendom-theme-components.css +205 -141
  765. package/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  766. package/style/themes/theme-eiendom/eiendom-theme-extensions.css +77 -43
  767. package/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  768. package/style/themes/theme-eiendom/eiendom-theme-forms.css +77 -43
  769. package/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  770. package/style/themes/theme-sbanken/sbanken-theme-components.css +205 -141
  771. package/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  772. package/style/themes/theme-sbanken/sbanken-theme-extensions.css +77 -43
  773. package/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  774. package/style/themes/theme-sbanken/sbanken-theme-forms.css +77 -43
  775. package/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  776. package/style/themes/theme-ui/ui-theme-components.css +205 -141
  777. package/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  778. package/style/themes/theme-ui/ui-theme-extensions.css +77 -43
  779. package/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  780. package/style/themes/theme-ui/ui-theme-forms.css +77 -43
  781. package/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  782. package/style/themes/ui/basis.d.ts +1 -0
  783. package/style/themes/ui/basis.js +1 -0
  784. package/style/themes/ui/basis.js.map +1 -0
  785. package/style/themes/ui/index.d.ts +1 -0
  786. package/style/themes/ui/index.js +3 -0
  787. package/style/themes/ui/index.js.map +1 -0
  788. package/umd/dnb-ui-basis.min.js +1 -1
  789. package/umd/dnb-ui-components.min.js +1 -1
  790. package/umd/dnb-ui-elements.min.js +1 -1
  791. package/umd/dnb-ui-extensions.min.js +3 -3
  792. package/umd/dnb-ui-lib.min.js +1 -1
  793. package/cjs/style/themes/eiendom.js +0 -5
  794. package/cjs/style/themes/eiendom.js.map +0 -1
  795. package/cjs/style/themes/sbanken.js +0 -5
  796. package/cjs/style/themes/sbanken.js.map +0 -1
  797. package/cjs/style/themes/ui.js +0 -5
  798. package/cjs/style/themes/ui.js.map +0 -1
  799. package/es/style/themes/eiendom.js +0 -3
  800. package/es/style/themes/eiendom.js.map +0 -1
  801. package/es/style/themes/sbanken.js +0 -3
  802. package/es/style/themes/sbanken.js.map +0 -1
  803. package/es/style/themes/ui.js +0 -3
  804. package/es/style/themes/ui.js.map +0 -1
  805. package/style/themes/eiendom.js +0 -3
  806. package/style/themes/eiendom.js.map +0 -1
  807. package/style/themes/sbanken.js +0 -3
  808. package/style/themes/sbanken.js.map +0 -1
  809. package/style/themes/ui.js +0 -3
  810. package/style/themes/ui.js.map +0 -1
  811. /package/cjs/extensions/forms/Form/Element/style/{dnb-forms-element.css → dnb-form-element.css} +0 -0
  812. /package/cjs/extensions/forms/Form/Element/style/{dnb-forms-element.min.css → dnb-form-element.min.css} +0 -0
  813. /package/cjs/extensions/forms/Form/Element/style/{dnb-forms-element.scss → dnb-form-element.scss} +0 -0
  814. /package/cjs/style/themes/{eiendom.d.ts → eiendom/basis.d.ts} +0 -0
  815. /package/cjs/style/themes/{sbanken.d.ts → eiendom/index.d.ts} +0 -0
  816. /package/cjs/style/themes/{ui.d.ts → sbanken/basis.d.ts} +0 -0
  817. /package/{es/style/themes/eiendom.d.ts → cjs/style/themes/sbanken/index.d.ts} +0 -0
  818. /package/{es/style/themes/sbanken.d.ts → cjs/style/themes/ui/basis.d.ts} +0 -0
  819. /package/{es/style/themes/ui.d.ts → cjs/style/themes/ui/index.d.ts} +0 -0
  820. /package/es/extensions/forms/Form/Element/style/{dnb-forms-element.css → dnb-form-element.css} +0 -0
  821. /package/es/extensions/forms/Form/Element/style/{dnb-forms-element.min.css → dnb-form-element.min.css} +0 -0
  822. /package/es/extensions/forms/Form/Element/style/{dnb-forms-element.scss → dnb-form-element.scss} +0 -0
  823. /package/{style/themes/eiendom.d.ts → es/style/themes/eiendom/basis.d.ts} +0 -0
  824. /package/{style/themes/sbanken.d.ts → es/style/themes/eiendom/index.d.ts} +0 -0
  825. /package/{style/themes/ui.d.ts → es/style/themes/sbanken/basis.d.ts} +0 -0
  826. /package/extensions/forms/Form/Element/style/{dnb-forms-element.css → dnb-form-element.css} +0 -0
  827. /package/extensions/forms/Form/Element/style/{dnb-forms-element.min.css → dnb-form-element.min.css} +0 -0
  828. /package/extensions/forms/Form/Element/style/{dnb-forms-element.scss → dnb-form-element.scss} +0 -0
@@ -1,20 +1,20 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
3
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
4
- var _em;
5
4
  const _excluded = ["error", "title", "children"],
6
5
  _excluded2 = ["value", "title", "status"];
7
6
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
8
7
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
9
8
  import React, { useMemo, useCallback } from 'react';
10
- import { ToggleButton, Dropdown, Radio, HelpButton } from '../../../../components';
11
9
  import classnames from 'classnames';
12
10
  import { makeUniqueId } from '../../../../shared/component-helper';
13
- import OptionField from '../Option';
11
+ import { ToggleButton, Dropdown, Radio, HelpButton, Autocomplete } from '../../../../components';
12
+ import OptionField, { makeOptions } from '../Option';
14
13
  import { useFieldProps } from '../../hooks';
15
- import { FormError } from '../../types';
16
14
  import { pickSpacingProps } from '../../../../components/flex/utils';
17
15
  import FieldBlock from '../../FieldBlock';
16
+ import { FormError } from '../../types';
17
+ import { convertCamelCaseProps } from '../../../../shared/helpers/withCamelCaseProps';
18
18
  function Selection(props) {
19
19
  const clearValue = useMemo(() => `clear-option-${makeUniqueId()}`, []);
20
20
  const {
@@ -38,7 +38,10 @@ function Selection(props) {
38
38
  htmlAttributes,
39
39
  setHasFocus,
40
40
  handleChange,
41
- children
41
+ children,
42
+ data,
43
+ autocompleteProps,
44
+ dropdownProps
42
45
  } = useFieldProps(props);
43
46
  const handleDropdownChange = useCallback(({
44
47
  data: {
@@ -121,37 +124,19 @@ function Selection(props) {
121
124
  }, htmlAttributes, rest));
122
125
  })));
123
126
  }
127
+ case 'autocomplete':
124
128
  case 'dropdown':
125
129
  {
126
- const optionsData = React.Children.map(children, child => {
127
- if (React.isValidElement(child) && child.type === OptionField) {
128
- var _child$props$value, _ref, _child$props$children, _child$props$children2;
129
- return child.props.text ? {
130
- selectedKey: String((_child$props$value = child.props.value) !== null && _child$props$value !== void 0 ? _child$props$value : ''),
131
- content: [(_ref = (_child$props$children = child.props.children) !== null && _child$props$children !== void 0 ? _child$props$children : child.props.title) !== null && _ref !== void 0 ? _ref : _em || (_em = React.createElement("em", null, "Untitled")), child.props.text]
132
- } : {
133
- selectedKey: child.props.value,
134
- content: (_child$props$children2 = child.props.children) !== null && _child$props$children2 !== void 0 ? _child$props$children2 : child.props.title
135
- };
136
- }
137
- if (child) {
138
- return {
139
- content: child
140
- };
141
- }
142
- }).filter(Boolean);
143
- return React.createElement(FieldBlock, _extends({}, fieldBlockProps, {
144
- width: width
145
- }), React.createElement(Dropdown, _extends({
146
- id: id,
147
- list_class: "dnb-forms-field-selection__list",
148
- portal_class: "dnb-forms-field-selection__portal",
130
+ const sharedProps = _objectSpread(_objectSpread({
131
+ id,
132
+ list_class: 'dnb-forms-field-selection__list',
133
+ portal_class: 'dnb-forms-field-selection__portal',
149
134
  title: placeholder,
150
135
  value: String(value !== null && value !== void 0 ? value : ''),
151
136
  status: (hasError || status) && 'error',
152
- disabled: disabled
153
- }, htmlAttributes, {
154
- data: optionsData,
137
+ disabled
138
+ }, htmlAttributes), {}, {
139
+ data: data !== null && data !== void 0 ? data : makeOptions(children),
155
140
  suffix: help ? React.createElement(HelpButton, {
156
141
  title: help.title
157
142
  }, help.content) : undefined,
@@ -159,7 +144,10 @@ function Selection(props) {
159
144
  on_show: handleShow,
160
145
  on_hide: handleHide,
161
146
  stretch: true
162
- })));
147
+ });
148
+ return React.createElement(FieldBlock, _extends({}, fieldBlockProps, {
149
+ width: width
150
+ }), variant === 'autocomplete' ? React.createElement(Autocomplete, _extends({}, sharedProps, autocompleteProps ? convertCamelCaseProps(autocompleteProps) : null)) : React.createElement(Dropdown, _extends({}, sharedProps, dropdownProps ? convertCamelCaseProps(dropdownProps) : null)));
163
151
  }
164
152
  }
165
153
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Selection.js","names":["React","useMemo","useCallback","ToggleButton","Dropdown","Radio","HelpButton","classnames","makeUniqueId","OptionField","useFieldProps","FormError","pickSpacingProps","FieldBlock","Selection","props","clearValue","id","className","variant","label","labelDescription","layout","optionsLayout","placeholder","value","info","warning","error","hasError","disabled","help","emptyValue","width","htmlAttributes","setHasFocus","handleChange","children","handleDropdownChange","data","selectedKey","onChangeHandler","undefined","handleShow","handleHide","cn","fieldBlockProps","_objectSpread","forId","getStatus","_error$message","message","Error","toString","status","options","Children","toArray","filter","child","isValidElement","type","map","option","_option$props","title","rest","_objectWithoutProperties","_excluded","Component","createElement","Group","layout_direction","on_change","String","i","_excluded2","_extends","length","key","text","optionsData","_child$props$value","_ref","_child$props$children","_child$props$children2","content","_em","Boolean","list_class","portal_class","suffix","on_show","on_hide","stretch","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Selection/Selection.tsx"],"sourcesContent":["import React, { useMemo, useCallback } from 'react'\nimport {\n ToggleButton,\n Dropdown,\n Radio,\n HelpButton,\n} from '../../../../components'\nimport classnames from 'classnames'\nimport { makeUniqueId } from '../../../../shared/component-helper'\nimport OptionField from '../Option'\nimport { useFieldProps } from '../../hooks'\nimport { FormError, FieldProps, FieldHelpProps } from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport type { FormStatusText } from '../../../../components/FormStatus'\nimport FieldBlock from '../../FieldBlock'\n\ninterface IOption {\n title: string | React.ReactNode\n value: number | string\n status: FormStatusText\n}\n\nexport type Props = FieldHelpProps &\n FieldProps<IOption['value']> & {\n children?: React.ReactNode\n variant?: 'dropdown' | 'radio' | 'button'\n optionsLayout?: 'horizontal' | 'vertical'\n width?: 'small' | 'medium' | 'large' | 'stretch'\n }\n\nfunction Selection(props: Props) {\n const clearValue = useMemo(() => `clear-option-${makeUniqueId()}`, [])\n\n const {\n id,\n className,\n variant = 'dropdown',\n label,\n labelDescription,\n layout = 'vertical',\n optionsLayout = 'vertical',\n placeholder,\n value,\n info,\n warning,\n error,\n hasError,\n disabled,\n help,\n emptyValue,\n width = 'large',\n htmlAttributes,\n setHasFocus,\n handleChange,\n children,\n } = useFieldProps(props)\n\n const handleDropdownChange = useCallback(\n ({ data: { selectedKey } }) => {\n handleChange?.(\n !selectedKey || selectedKey === clearValue\n ? emptyValue\n : selectedKey\n )\n },\n [handleChange, emptyValue, clearValue]\n )\n\n const onChangeHandler = useCallback(\n ({ value }) => {\n handleChange?.(value === undefined ? emptyValue : value)\n },\n [handleChange, emptyValue]\n )\n\n // Specific handleShow and handleHide because Dropdown preserve the initially received callbacks, so changes\n // due to `useCallback` usage will have no effect, leading to useFieldPropss handleFocus and handleBlur sending out old\n // copies of value as arguments.\n const handleShow = useCallback(\n ({ data }) => {\n setHasFocus(true, data?.selectedKey)\n },\n [setHasFocus]\n )\n\n const handleHide = useCallback(\n ({ data }) => {\n setHasFocus(false, data?.selectedKey)\n },\n [setHasFocus]\n )\n\n const cn = classnames(\n 'dnb-forms-field-selection',\n `dnb-forms-field-selection__variant--${variant}`,\n `dnb-forms-field-selection__options-layout--${optionsLayout}`,\n className\n )\n\n const fieldBlockProps = {\n forId: id,\n className: cn,\n ...pickSpacingProps(props),\n info,\n warning,\n error,\n layout,\n label,\n labelDescription,\n }\n\n const getStatus = useCallback(\n (error: Error | FormError | undefined) => {\n return (\n error?.message ??\n ((warning instanceof Error && warning.message) ||\n (warning instanceof FormError && warning.message) ||\n warning?.toString() ||\n (info instanceof Error && info.message) ||\n (info instanceof FormError && info.message) ||\n info?.toString())\n )\n },\n [info, warning]\n )\n\n const status = getStatus(error)\n\n switch (variant) {\n case 'radio':\n case 'button': {\n const options: IOption[] = React.Children.toArray(children)\n .filter(\n (child) =>\n React.isValidElement(child) && child.type === OptionField\n )\n .map((option: React.ReactElement) => {\n const { error, title, children, ...rest } = option.props\n const status = getStatus(error)\n\n return {\n title: title ?? children,\n status,\n ...rest,\n }\n })\n\n const Component = (\n variant === 'radio' ? Radio : ToggleButton\n ) as typeof Radio & typeof ToggleButton\n\n return (\n <FieldBlock {...fieldBlockProps}>\n <Component.Group\n className={cn}\n layout_direction={\n optionsLayout === 'horizontal' ? 'row' : 'column'\n }\n disabled={disabled}\n on_change={onChangeHandler}\n value={String(value ?? '')}\n >\n {options.map((option, i) => {\n const { value, title, status, ...rest } = option\n return (\n <Component\n id={options.length === 1 ? id : undefined}\n key={`option-${i}-${value}`}\n label={variant === 'radio' ? title : undefined}\n text={variant === 'button' ? title : undefined}\n value={String(value ?? '')}\n status={(hasError || status) && 'error'}\n {...htmlAttributes}\n {...rest}\n />\n )\n })}\n </Component.Group>\n </FieldBlock>\n )\n }\n\n case 'dropdown': {\n const optionsData = React.Children.map(children, (child) => {\n if (React.isValidElement(child) && child.type === OptionField) {\n // Option components\n return child.props.text\n ? {\n selectedKey: String(child.props.value ?? ''),\n content: [\n child.props.children ?? child.props.title ?? (\n <em>Untitled</em>\n ),\n child.props.text,\n ],\n }\n : {\n selectedKey: child.props.value,\n content: child.props.children ?? child.props.title,\n }\n }\n\n if (child) {\n // For other children, just show them as content\n return {\n content: child,\n }\n }\n }).filter(Boolean)\n\n return (\n <FieldBlock {...fieldBlockProps} width={width}>\n <Dropdown\n id={id}\n list_class=\"dnb-forms-field-selection__list\"\n portal_class=\"dnb-forms-field-selection__portal\"\n title={placeholder}\n value={String(value ?? '')}\n status={(hasError || status) && 'error'}\n disabled={disabled}\n {...htmlAttributes}\n data={optionsData}\n suffix={\n help ? (\n <HelpButton title={help.title}>{help.content}</HelpButton>\n ) : undefined\n }\n on_change={handleDropdownChange}\n on_show={handleShow}\n on_hide={handleHide}\n stretch\n />\n </FieldBlock>\n )\n }\n }\n}\n\nSelection._supportsSpacingProps = true\nexport default Selection\n"],"mappings":"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"}
1
+ {"version":3,"file":"Selection.js","names":["React","useMemo","useCallback","classnames","makeUniqueId","ToggleButton","Dropdown","Radio","HelpButton","Autocomplete","OptionField","makeOptions","useFieldProps","pickSpacingProps","FieldBlock","FormError","convertCamelCaseProps","Selection","props","clearValue","id","className","variant","label","labelDescription","layout","optionsLayout","placeholder","value","info","warning","error","hasError","disabled","help","emptyValue","width","htmlAttributes","setHasFocus","handleChange","children","data","autocompleteProps","dropdownProps","handleDropdownChange","selectedKey","onChangeHandler","undefined","handleShow","handleHide","cn","fieldBlockProps","_objectSpread","forId","getStatus","_error$message","message","Error","toString","status","options","Children","toArray","filter","child","isValidElement","type","map","option","_option$props","title","rest","_objectWithoutProperties","_excluded","Component","createElement","Group","layout_direction","on_change","String","i","_excluded2","_extends","length","key","text","sharedProps","list_class","portal_class","suffix","content","on_show","on_hide","stretch","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Selection/Selection.tsx"],"sourcesContent":["import React, { useMemo, useCallback } from 'react'\nimport classnames from 'classnames'\nimport { makeUniqueId } from '../../../../shared/component-helper'\nimport {\n ToggleButton,\n Dropdown,\n Radio,\n HelpButton,\n Autocomplete,\n} from '../../../../components'\nimport OptionField, { makeOptions } from '../Option'\nimport { useFieldProps } from '../../hooks'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport FieldBlock from '../../FieldBlock'\nimport {\n FormError,\n FieldProps,\n FieldHelpProps,\n FieldBlockWidth,\n} from '../../types'\nimport type { FormStatusText } from '../../../../components/FormStatus'\nimport type {\n AutocompleteAllProps,\n AutocompleteProps,\n} from '../../../../components/Autocomplete'\nimport type {\n DropdownAllProps,\n DropdownProps,\n} from '../../../../components/Dropdown'\nimport {\n convertCamelCaseProps,\n ToCamelCase,\n} from '../../../../shared/helpers/withCamelCaseProps'\n\ninterface IOption {\n title: string | React.ReactNode\n value: number | string\n status: FormStatusText\n}\n\nexport type Data = AutocompleteAllProps['data'] | DropdownAllProps['data']\n\nexport type Props = FieldHelpProps &\n FieldProps<IOption['value']> & {\n variant?: 'dropdown' | 'autocomplete' | 'radio' | 'button'\n optionsLayout?: 'horizontal' | 'vertical'\n children?: React.ReactNode\n\n // - Autocomplete and Dropdown specific props\n autocompleteProps?: ToCamelCase<AutocompleteProps>\n dropdownProps?: ToCamelCase<DropdownProps>\n data?: Data\n width?: FieldBlockWidth\n }\n\nfunction Selection(props: Props) {\n const clearValue = useMemo(() => `clear-option-${makeUniqueId()}`, [])\n\n const {\n id,\n className,\n variant = 'dropdown',\n label,\n labelDescription,\n layout = 'vertical',\n optionsLayout = 'vertical',\n placeholder,\n value,\n info,\n warning,\n error,\n hasError,\n disabled,\n help,\n emptyValue,\n width = 'large',\n htmlAttributes,\n setHasFocus,\n handleChange,\n children,\n\n // - Autocomplete and Dropdown specific props\n data,\n autocompleteProps,\n dropdownProps,\n } = useFieldProps(props)\n\n const handleDropdownChange = useCallback(\n ({ data: { selectedKey } }) => {\n handleChange?.(\n !selectedKey || selectedKey === clearValue\n ? emptyValue\n : selectedKey\n )\n },\n [handleChange, emptyValue, clearValue]\n )\n\n const onChangeHandler = useCallback(\n ({ value }) => {\n handleChange?.(value === undefined ? emptyValue : value)\n },\n [handleChange, emptyValue]\n )\n\n // Specific handleShow and handleHide because Dropdown preserve the initially received callbacks, so changes\n // due to `useCallback` usage will have no effect, leading to useFieldPropss handleFocus and handleBlur sending out old\n // copies of value as arguments.\n const handleShow = useCallback(\n ({ data }) => {\n setHasFocus(true, data?.selectedKey)\n },\n [setHasFocus]\n )\n\n const handleHide = useCallback(\n ({ data }) => {\n setHasFocus(false, data?.selectedKey)\n },\n [setHasFocus]\n )\n\n const cn = classnames(\n 'dnb-forms-field-selection',\n `dnb-forms-field-selection__variant--${variant}`,\n `dnb-forms-field-selection__options-layout--${optionsLayout}`,\n className\n )\n\n const fieldBlockProps = {\n forId: id,\n className: cn,\n ...pickSpacingProps(props),\n info,\n warning,\n error,\n layout,\n label,\n labelDescription,\n }\n\n const getStatus = useCallback(\n (error: Error | FormError | undefined) => {\n return (\n error?.message ??\n ((warning instanceof Error && warning.message) ||\n (warning instanceof FormError && warning.message) ||\n warning?.toString() ||\n (info instanceof Error && info.message) ||\n (info instanceof FormError && info.message) ||\n info?.toString())\n )\n },\n [info, warning]\n )\n\n const status = getStatus(error)\n\n switch (variant) {\n case 'radio':\n case 'button': {\n const options: IOption[] = React.Children.toArray(children)\n .filter(\n (child) =>\n React.isValidElement(child) && child.type === OptionField\n )\n .map((option: React.ReactElement) => {\n const { error, title, children, ...rest } = option.props\n const status = getStatus(error)\n\n return {\n title: title ?? children,\n status,\n ...rest,\n }\n })\n\n const Component = (\n variant === 'radio' ? Radio : ToggleButton\n ) as typeof Radio & typeof ToggleButton\n\n return (\n <FieldBlock {...fieldBlockProps}>\n <Component.Group\n className={cn}\n layout_direction={\n optionsLayout === 'horizontal' ? 'row' : 'column'\n }\n disabled={disabled}\n on_change={onChangeHandler}\n value={String(value ?? '')}\n >\n {options.map((option, i) => {\n const { value, title, status, ...rest } = option\n return (\n <Component\n id={options.length === 1 ? id : undefined}\n key={`option-${i}-${value}`}\n label={variant === 'radio' ? title : undefined}\n text={variant === 'button' ? title : undefined}\n value={String(value ?? '')}\n status={(hasError || status) && 'error'}\n {...htmlAttributes}\n {...rest}\n />\n )\n })}\n </Component.Group>\n </FieldBlock>\n )\n }\n\n case 'autocomplete':\n case 'dropdown': {\n const sharedProps: AutocompleteAllProps & DropdownAllProps = {\n id,\n list_class: 'dnb-forms-field-selection__list',\n portal_class: 'dnb-forms-field-selection__portal',\n title: placeholder,\n value: String(value ?? ''),\n status: (hasError || status) && 'error',\n disabled,\n ...htmlAttributes,\n data: data ?? makeOptions<Data>(children),\n suffix: help ? (\n <HelpButton title={help.title}>{help.content}</HelpButton>\n ) : undefined,\n on_change: handleDropdownChange,\n on_show: handleShow,\n on_hide: handleHide,\n stretch: true,\n }\n\n return (\n <FieldBlock {...fieldBlockProps} width={width}>\n {variant === 'autocomplete' ? (\n <Autocomplete\n {...sharedProps}\n {...(autocompleteProps\n ? (convertCamelCaseProps(\n autocompleteProps\n ) as AutocompleteAllProps)\n : null)}\n />\n ) : (\n <Dropdown\n {...sharedProps}\n {...(dropdownProps\n ? (convertCamelCaseProps(\n dropdownProps\n ) as DropdownAllProps)\n : null)}\n />\n )}\n </FieldBlock>\n )\n }\n }\n}\n\nSelection._supportsSpacingProps = true\nexport default Selection\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { PropertiesTableProps } from '../../../../shared/types';
2
+ export declare const SelectionProperties: PropertiesTableProps;
@@ -0,0 +1,38 @@
1
+ export const SelectionProperties = {
2
+ variant: {
3
+ doc: 'Choice of UI feature. Can be: `dropdown`, `autocomplete`, `radio` or `button`.',
4
+ type: 'string',
5
+ status: 'optional'
6
+ },
7
+ optionsLayout: {
8
+ doc: 'Layout for the list of options. Can be `horizontal` or `vertical`.',
9
+ type: 'string',
10
+ status: 'optional'
11
+ },
12
+ width: {
13
+ doc: '`small`, `medium` or `large` for predefined standard widths, `stretch` for fill available width.',
14
+ type: ['string', 'false'],
15
+ status: 'optional'
16
+ },
17
+ help: {
18
+ doc: 'Provide a help button. Object consisting of `title` and `content`.',
19
+ type: 'object',
20
+ status: 'optional'
21
+ },
22
+ autocompleteProps: {
23
+ doc: 'Forward any additional props (camelCase) to the [Autocomplete](/uilib/components/autocomplete/) component.',
24
+ type: 'object',
25
+ status: 'optional'
26
+ },
27
+ dropdownProps: {
28
+ doc: 'Forward any additional props (camelCase) to the [Dropdown](/uilib/components/dropdown/) component.',
29
+ type: 'object',
30
+ status: 'optional'
31
+ },
32
+ children: {
33
+ doc: 'For providing Option components.',
34
+ type: 'React.Node',
35
+ status: 'optional'
36
+ }
37
+ };
38
+ //# sourceMappingURL=SelectionDocs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectionDocs.js","names":["SelectionProperties","variant","doc","type","status","optionsLayout","width","help","autocompleteProps","dropdownProps","children"],"sources":["../../../../../../src/extensions/forms/Field/Selection/SelectionDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../../../shared/types'\n\nexport const SelectionProperties: PropertiesTableProps = {\n variant: {\n doc: 'Choice of UI feature. Can be: `dropdown`, `autocomplete`, `radio` or `button`.',\n type: 'string',\n status: 'optional',\n },\n optionsLayout: {\n doc: 'Layout for the list of options. Can be `horizontal` or `vertical`.',\n type: 'string',\n status: 'optional',\n },\n width: {\n doc: '`small`, `medium` or `large` for predefined standard widths, `stretch` for fill available width.',\n type: ['string', 'false'],\n status: 'optional',\n },\n help: {\n doc: 'Provide a help button. Object consisting of `title` and `content`.',\n type: 'object',\n status: 'optional',\n },\n autocompleteProps: {\n doc: 'Forward any additional props (camelCase) to the [Autocomplete](/uilib/components/autocomplete/) component.',\n type: 'object',\n status: 'optional',\n },\n dropdownProps: {\n doc: 'Forward any additional props (camelCase) to the [Dropdown](/uilib/components/dropdown/) component.',\n type: 'object',\n status: 'optional',\n },\n children: {\n doc: 'For providing Option components.',\n type: 'React.Node',\n status: 'optional',\n },\n}\n"],"mappings":"AAEA,OAAO,MAAMA,mBAAyC,GAAG;EACvDC,OAAO,EAAE;IACPC,GAAG,EAAE,gFAAgF;IACrFC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDC,aAAa,EAAE;IACbH,GAAG,EAAE,oEAAoE;IACzEC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDE,KAAK,EAAE;IACLJ,GAAG,EAAE,kGAAkG;IACvGC,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;IACzBC,MAAM,EAAE;EACV,CAAC;EACDG,IAAI,EAAE;IACJL,GAAG,EAAE,oEAAoE;IACzEC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDI,iBAAiB,EAAE;IACjBN,GAAG,EAAE,4GAA4G;IACjHC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDK,aAAa,EAAE;IACbP,GAAG,EAAE,oGAAoG;IACzGC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDM,QAAQ,EAAE;IACRR,GAAG,EAAE,kCAAkC;IACvCC,IAAI,EAAE,YAAY;IAClBC,MAAM,EAAE;EACV;AACF,CAAC"}
@@ -3,7 +3,7 @@ import { InputProps } from '../../../../components/input/Input';
3
3
  import { InputMaskedProps } from '../../../../components/InputMasked';
4
4
  import { TextareaProps } from '../../../../components/Textarea';
5
5
  import type { TextCounterProps } from '../../../../fragments/TextCounter';
6
- import type { FieldProps, FieldHelpProps, CustomErrorMessages } from '../../types';
6
+ import type { FieldProps, FieldHelpProps, CustomErrorMessages, FieldBlockWidth } from '../../types';
7
7
  interface ErrorMessages extends CustomErrorMessages {
8
8
  required?: string;
9
9
  schema?: string;
@@ -15,7 +15,7 @@ export type Props = FieldHelpProps & FieldProps<string, undefined | string, Erro
15
15
  multiline?: boolean;
16
16
  inputClassName?: string;
17
17
  innerRef?: React.RefObject<HTMLInputElement | HTMLTextAreaElement>;
18
- width?: false | 'small' | 'medium' | 'large' | 'stretch';
18
+ width?: FieldBlockWidth;
19
19
  size?: InputProps['size'] | TextareaProps['size'];
20
20
  keepPlaceholder?: InputProps['keep_placeholder'];
21
21
  minLength?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"String.js","names":["React","useContext","useMemo","useCallback","classnames","HelpButton","Input","Textarea","InputMasked","FieldBlockContext","FieldBlock","useFieldProps","pickSpacingProps","toCapitalized","useErrorMessage","useTranslation","StringComponent","props","_props$width","_value$toString","fieldBlockContext","translations","errorMessages","path","required","Field","errorRequired","minLength","StringField","errorMinLength","maxLength","errorMaxLength","pattern","errorPattern","schema","_props$schema","type","fromInput","event","_event","_event$cleanedValue","_event2","_event3","value","emptyValue","cleanedValue","toEvent","trim","spaces","RegExp","test","replace","handleChange","transform","transformValue","capitalize","String","preparedProps","_objectSpread","width","composition","id","name","className","innerRef","inputClassName","layout","placeholder","label","labelDescription","info","warning","error","hasError","disabled","help","multiline","mask","leftIcon","rightIcon","htmlAttributes","submitElement","clear","align","size","selectall","keepPlaceholder","rows","autoresizeMaxRows","autoresize","characterCounter","autoComplete","inputMode","autoCorrect","spellCheck","autoFocus","autoCapitalize","handleFocus","handleBlur","transformInstantly","cn","sharedProps","suffix","createElement","title","content","undefined","on_focus","on_blur","on_change","stretch","Boolean","inner_ref","status","toString","textareaProps","autoresize_max_rows","inputProps","icon","icon_position","submit_element","keep_placeholder","fieldBlockProps","forId","contentWidth","_extends","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/String/String.tsx"],"sourcesContent":["import React, { useContext, useMemo, useCallback } from 'react'\nimport classnames from 'classnames'\nimport { HelpButton, Input, Textarea } from '../../../../components'\nimport { InputProps } from '../../../../components/input/Input'\nimport InputMasked, {\n InputMaskedProps,\n} from '../../../../components/InputMasked'\nimport { TextareaProps } from '../../../../components/Textarea'\nimport FieldBlockContext from '../../FieldBlock/FieldBlockContext'\nimport FieldBlock from '../../FieldBlock'\nimport { useFieldProps } from '../../hooks'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport { toCapitalized } from '../../../../shared/component-helper'\nimport type { TextCounterProps } from '../../../../fragments/TextCounter'\nimport type {\n FieldProps,\n FieldHelpProps,\n CustomErrorMessages,\n AllJSONSchemaVersions,\n} from '../../types'\nimport useErrorMessage from '../../hooks/useErrorMessage'\nimport useTranslation from '../../hooks/useTranslation'\n\ninterface ErrorMessages extends CustomErrorMessages {\n required?: string\n schema?: string\n minLength?: string\n maxLength?: string\n pattern?: string\n}\nexport type Props = FieldHelpProps &\n FieldProps<string, undefined | string, ErrorMessages> & {\n // - Shared props\n multiline?: boolean\n inputClassName?: string\n innerRef?: React.RefObject<HTMLInputElement | HTMLTextAreaElement>\n width?: false | 'small' | 'medium' | 'large' | 'stretch'\n size?: InputProps['size'] | TextareaProps['size']\n keepPlaceholder?: InputProps['keep_placeholder']\n\n // - Validation\n minLength?: number\n maxLength?: number\n pattern?: string\n\n // - Input props\n type?: InputProps['type']\n align?: InputProps['align']\n selectall?: InputProps['selectall']\n clear?: boolean\n mask?: InputMaskedProps['mask']\n leftIcon?: string\n rightIcon?: string\n submitElement?: InputProps['submit_element']\n capitalize?: boolean\n trim?: boolean\n\n // - Textarea props\n rows?: TextareaProps['rows']\n autoresizeMaxRows?: TextareaProps['autoresize_max_rows']\n autoresize?: TextareaProps['autoresize']\n characterCounter?: Omit<TextCounterProps, 'text'> | number\n\n // - Html props\n autoComplete?: HTMLInputElement['autocomplete']\n inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode']\n autoCorrect?: React.HTMLAttributes<HTMLInputElement>['autoCorrect']\n spellCheck?: React.HTMLAttributes<HTMLInputElement>['spellCheck']\n autoFocus?: React.HTMLAttributes<HTMLInputElement>['autoFocus']\n autoCapitalize?: React.HTMLAttributes<HTMLInputElement>['autoCapitalize']\n }\n\nfunction StringComponent(props: Props) {\n const fieldBlockContext = useContext(FieldBlockContext)\n const translations = useTranslation()\n\n const errorMessages = useErrorMessage(props.path, props.errorMessages, {\n required: translations.Field.errorRequired,\n minLength: translations.StringField.errorMinLength,\n maxLength: translations.StringField.errorMaxLength,\n pattern: translations.Field.errorPattern,\n })\n\n const schema = useMemo<AllJSONSchemaVersions>(\n () =>\n props.schema ?? {\n type: 'string',\n minLength: props.minLength,\n maxLength: props.maxLength,\n pattern: props.pattern,\n },\n [props.schema, props.minLength, props.maxLength, props.pattern]\n )\n const fromInput = useCallback(\n (event: { value: string; cleanedValue?: string }) => {\n if (typeof event === 'string') {\n event = { value: event }\n }\n if (event?.value === '') {\n return props.emptyValue\n }\n // Cleaned value for masked\n return event?.cleanedValue ?? event?.value\n },\n [props.emptyValue]\n )\n const toEvent = useCallback(\n (value: string, type: string) => {\n if (props.trim && type === 'onBlur') {\n const spaces = '[\\\\s ]'\n if (new RegExp(`^${spaces}|${spaces}$`).test(value)) {\n value = value.replace(\n new RegExp(`^${spaces}+|${spaces}+$`, 'g'),\n ''\n )\n handleChange(value)\n }\n }\n return value\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [props.trim]\n )\n const transform = props.transformValue\n const transformValue = useCallback(\n (value: string) => {\n if (props.capitalize) {\n value = toCapitalized(String(value || ''))\n }\n return transform?.(value) || value\n },\n [props.capitalize, transform]\n )\n\n const preparedProps: Props = {\n ...props,\n errorMessages,\n schema,\n fromInput,\n toEvent,\n transformValue,\n width:\n props.width ??\n (fieldBlockContext?.composition ? 'stretch' : 'large'),\n }\n\n const {\n id,\n name,\n className,\n\n innerRef,\n inputClassName,\n layout,\n placeholder,\n label,\n labelDescription,\n value,\n info,\n warning,\n error,\n hasError,\n disabled,\n help,\n multiline,\n mask,\n leftIcon,\n rightIcon,\n width,\n htmlAttributes,\n submitElement,\n\n // - Input props\n type,\n clear,\n align,\n size,\n selectall,\n keepPlaceholder,\n\n // - Textarea props\n rows,\n // formId,\n autoresizeMaxRows = 6,\n autoresize = true,\n characterCounter,\n\n // - Html props\n\n autoComplete,\n inputMode,\n autoCorrect,\n spellCheck,\n autoFocus,\n autoCapitalize,\n\n // - Events\n handleFocus,\n handleBlur,\n handleChange,\n } = useFieldProps(preparedProps)\n\n const transformInstantly = useCallback(\n (value: string) => (props.capitalize ? toCapitalized(value) : value),\n [props.capitalize]\n )\n\n const cn = classnames('dnb-forms-field-string__input', inputClassName)\n\n const sharedProps: InputProps & TextareaProps = {\n id,\n name,\n autoComplete,\n autoCorrect,\n spellCheck,\n autoFocus,\n autoCapitalize,\n inputMode,\n className: cn,\n placeholder,\n suffix: help ? (\n <HelpButton title={help.title}>{help.content}</HelpButton>\n ) : undefined,\n on_focus: handleFocus,\n on_blur: handleBlur,\n on_change: handleChange,\n disabled,\n ...htmlAttributes,\n stretch: Boolean(\n width !== undefined || fieldBlockContext?.composition\n ),\n inner_ref: innerRef,\n status: hasError ? 'error' : undefined,\n value: transformInstantly(value?.toString() ?? ''),\n }\n\n const textareaProps: TextareaProps = {\n keepPlaceholder,\n rows,\n autoresize_max_rows: autoresizeMaxRows,\n autoresize,\n characterCounter,\n }\n\n const inputProps: InputProps = {\n type: type,\n clear: clear,\n size: size,\n align: align,\n selectall: selectall,\n icon: leftIcon ?? rightIcon,\n icon_position: rightIcon && !leftIcon ? 'right' : undefined,\n submit_element: submitElement,\n keep_placeholder: keepPlaceholder,\n }\n\n const fieldBlockProps = {\n className: classnames('dnb-forms-field-string', className),\n forId: id,\n layout,\n label,\n labelDescription,\n info,\n warning,\n error,\n disabled,\n width:\n width === 'stretch' || fieldBlockContext?.composition\n ? width\n : undefined,\n contentWidth: width !== false ? width : undefined,\n ...pickSpacingProps(props),\n }\n\n return (\n <FieldBlock {...fieldBlockProps}>\n {multiline ? (\n <Textarea {...sharedProps} {...textareaProps} />\n ) : mask ? (\n <InputMasked {...sharedProps} {...inputProps} mask={mask} />\n ) : (\n <Input {...sharedProps} {...inputProps} />\n )}\n </FieldBlock>\n )\n}\n\nStringComponent._supportsSpacingProps = true\nexport default StringComponent\n"],"mappings":"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"}
1
+ {"version":3,"file":"String.js","names":["React","useContext","useMemo","useCallback","classnames","HelpButton","Input","Textarea","InputMasked","FieldBlockContext","FieldBlock","useFieldProps","pickSpacingProps","toCapitalized","useErrorMessage","useTranslation","StringComponent","props","_props$width","_value$toString","fieldBlockContext","translations","errorMessages","path","required","Field","errorRequired","minLength","StringField","errorMinLength","maxLength","errorMaxLength","pattern","errorPattern","schema","_props$schema","type","fromInput","event","_event","_event$cleanedValue","_event2","_event3","value","emptyValue","cleanedValue","toEvent","trim","spaces","RegExp","test","replace","handleChange","transform","transformValue","capitalize","String","preparedProps","_objectSpread","width","composition","id","name","className","innerRef","inputClassName","layout","placeholder","label","labelDescription","info","warning","error","hasError","disabled","help","multiline","mask","leftIcon","rightIcon","htmlAttributes","submitElement","clear","align","size","selectall","keepPlaceholder","rows","autoresizeMaxRows","autoresize","characterCounter","autoComplete","inputMode","autoCorrect","spellCheck","autoFocus","autoCapitalize","handleFocus","handleBlur","transformInstantly","cn","sharedProps","suffix","createElement","title","content","undefined","on_focus","on_blur","on_change","stretch","Boolean","inner_ref","status","toString","textareaProps","autoresize_max_rows","inputProps","icon","icon_position","submit_element","keep_placeholder","fieldBlockProps","forId","contentWidth","_extends","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/String/String.tsx"],"sourcesContent":["import React, { useContext, useMemo, useCallback } from 'react'\nimport classnames from 'classnames'\nimport { HelpButton, Input, Textarea } from '../../../../components'\nimport { InputProps } from '../../../../components/input/Input'\nimport InputMasked, {\n InputMaskedProps,\n} from '../../../../components/InputMasked'\nimport { TextareaProps } from '../../../../components/Textarea'\nimport FieldBlockContext from '../../FieldBlock/FieldBlockContext'\nimport FieldBlock from '../../FieldBlock'\nimport { useFieldProps } from '../../hooks'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport { toCapitalized } from '../../../../shared/component-helper'\nimport type { TextCounterProps } from '../../../../fragments/TextCounter'\nimport type {\n FieldProps,\n FieldHelpProps,\n CustomErrorMessages,\n AllJSONSchemaVersions,\n FieldBlockWidth,\n} from '../../types'\nimport useErrorMessage from '../../hooks/useErrorMessage'\nimport useTranslation from '../../hooks/useTranslation'\n\ninterface ErrorMessages extends CustomErrorMessages {\n required?: string\n schema?: string\n minLength?: string\n maxLength?: string\n pattern?: string\n}\nexport type Props = FieldHelpProps &\n FieldProps<string, undefined | string, ErrorMessages> & {\n // - Shared props\n multiline?: boolean\n inputClassName?: string\n innerRef?: React.RefObject<HTMLInputElement | HTMLTextAreaElement>\n width?: FieldBlockWidth\n size?: InputProps['size'] | TextareaProps['size']\n keepPlaceholder?: InputProps['keep_placeholder']\n\n // - Validation\n minLength?: number\n maxLength?: number\n pattern?: string\n\n // - Input props\n type?: InputProps['type']\n align?: InputProps['align']\n selectall?: InputProps['selectall']\n clear?: boolean\n mask?: InputMaskedProps['mask']\n leftIcon?: string\n rightIcon?: string\n submitElement?: InputProps['submit_element']\n capitalize?: boolean\n trim?: boolean\n\n // - Textarea props\n rows?: TextareaProps['rows']\n autoresizeMaxRows?: TextareaProps['autoresize_max_rows']\n autoresize?: TextareaProps['autoresize']\n characterCounter?: Omit<TextCounterProps, 'text'> | number\n\n // - Html props\n autoComplete?: HTMLInputElement['autocomplete']\n inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode']\n autoCorrect?: React.HTMLAttributes<HTMLInputElement>['autoCorrect']\n spellCheck?: React.HTMLAttributes<HTMLInputElement>['spellCheck']\n autoFocus?: React.HTMLAttributes<HTMLInputElement>['autoFocus']\n autoCapitalize?: React.HTMLAttributes<HTMLInputElement>['autoCapitalize']\n }\n\nfunction StringComponent(props: Props) {\n const fieldBlockContext = useContext(FieldBlockContext)\n const translations = useTranslation()\n\n const errorMessages = useErrorMessage(props.path, props.errorMessages, {\n required: translations.Field.errorRequired,\n minLength: translations.StringField.errorMinLength,\n maxLength: translations.StringField.errorMaxLength,\n pattern: translations.Field.errorPattern,\n })\n\n const schema = useMemo<AllJSONSchemaVersions>(\n () =>\n props.schema ?? {\n type: 'string',\n minLength: props.minLength,\n maxLength: props.maxLength,\n pattern: props.pattern,\n },\n [props.schema, props.minLength, props.maxLength, props.pattern]\n )\n const fromInput = useCallback(\n (event: { value: string; cleanedValue?: string }) => {\n if (typeof event === 'string') {\n event = { value: event }\n }\n if (event?.value === '') {\n return props.emptyValue\n }\n // Cleaned value for masked\n return event?.cleanedValue ?? event?.value\n },\n [props.emptyValue]\n )\n const toEvent = useCallback(\n (value: string, type: string) => {\n if (props.trim && type === 'onBlur') {\n const spaces = '[\\\\s ]'\n if (new RegExp(`^${spaces}|${spaces}$`).test(value)) {\n value = value.replace(\n new RegExp(`^${spaces}+|${spaces}+$`, 'g'),\n ''\n )\n handleChange(value)\n }\n }\n return value\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [props.trim]\n )\n const transform = props.transformValue\n const transformValue = useCallback(\n (value: string) => {\n if (props.capitalize) {\n value = toCapitalized(String(value || ''))\n }\n return transform?.(value) || value\n },\n [props.capitalize, transform]\n )\n\n const preparedProps: Props = {\n ...props,\n errorMessages,\n schema,\n fromInput,\n toEvent,\n transformValue,\n width:\n props.width ??\n (fieldBlockContext?.composition ? 'stretch' : 'large'),\n }\n\n const {\n id,\n name,\n className,\n\n innerRef,\n inputClassName,\n layout,\n placeholder,\n label,\n labelDescription,\n value,\n info,\n warning,\n error,\n hasError,\n disabled,\n help,\n multiline,\n mask,\n leftIcon,\n rightIcon,\n width,\n htmlAttributes,\n submitElement,\n\n // - Input props\n type,\n clear,\n align,\n size,\n selectall,\n keepPlaceholder,\n\n // - Textarea props\n rows,\n // formId,\n autoresizeMaxRows = 6,\n autoresize = true,\n characterCounter,\n\n // - Html props\n\n autoComplete,\n inputMode,\n autoCorrect,\n spellCheck,\n autoFocus,\n autoCapitalize,\n\n // - Events\n handleFocus,\n handleBlur,\n handleChange,\n } = useFieldProps(preparedProps)\n\n const transformInstantly = useCallback(\n (value: string) => (props.capitalize ? toCapitalized(value) : value),\n [props.capitalize]\n )\n\n const cn = classnames('dnb-forms-field-string__input', inputClassName)\n\n const sharedProps: InputProps & TextareaProps = {\n id,\n name,\n autoComplete,\n autoCorrect,\n spellCheck,\n autoFocus,\n autoCapitalize,\n inputMode,\n className: cn,\n placeholder,\n suffix: help ? (\n <HelpButton title={help.title}>{help.content}</HelpButton>\n ) : undefined,\n on_focus: handleFocus,\n on_blur: handleBlur,\n on_change: handleChange,\n disabled,\n ...htmlAttributes,\n stretch: Boolean(\n width !== undefined || fieldBlockContext?.composition\n ),\n inner_ref: innerRef,\n status: hasError ? 'error' : undefined,\n value: transformInstantly(value?.toString() ?? ''),\n }\n\n const textareaProps: TextareaProps = {\n keepPlaceholder,\n rows,\n autoresize_max_rows: autoresizeMaxRows,\n autoresize,\n characterCounter,\n }\n\n const inputProps: InputProps = {\n type: type,\n clear: clear,\n size: size,\n align: align,\n selectall: selectall,\n icon: leftIcon ?? rightIcon,\n icon_position: rightIcon && !leftIcon ? 'right' : undefined,\n submit_element: submitElement,\n keep_placeholder: keepPlaceholder,\n }\n\n const fieldBlockProps = {\n className: classnames('dnb-forms-field-string', className),\n forId: id,\n layout,\n label,\n labelDescription,\n info,\n warning,\n error,\n disabled,\n width:\n width === 'stretch' || fieldBlockContext?.composition\n ? width\n : undefined,\n contentWidth: width !== false ? width : undefined,\n ...pickSpacingProps(props),\n }\n\n return (\n <FieldBlock {...fieldBlockProps}>\n {multiline ? (\n <Textarea {...sharedProps} {...textareaProps} />\n ) : mask ? (\n <InputMasked {...sharedProps} {...inputProps} mask={mask} />\n ) : (\n <Input {...sharedProps} {...inputProps} />\n )}\n </FieldBlock>\n )\n}\n\nStringComponent._supportsSpacingProps = true\nexport default StringComponent\n"],"mappings":";;;;;;AAAA,OAAOA,KAAK,IAAIC,UAAU,EAAEC,OAAO,EAAEC,WAAW,QAAQ,OAAO;AAC/D,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,UAAU,EAAEC,KAAK,EAAEC,QAAQ,QAAQ,wBAAwB;AAEpE,OAAOC,WAAW,MAEX,oCAAoC;AAE3C,OAAOC,iBAAiB,MAAM,oCAAoC;AAClE,OAAOC,UAAU,MAAM,kBAAkB;AACzC,SAASC,aAAa,QAAQ,aAAa;AAC3C,SAASC,gBAAgB,QAAQ,mCAAmC;AACpE,SAASC,aAAa,QAAQ,qCAAqC;AASnE,OAAOC,eAAe,MAAM,6BAA6B;AACzD,OAAOC,cAAc,MAAM,4BAA4B;AAmDvD,SAASC,eAAeA,CAACC,KAAY,EAAE;EAAA,IAAAC,YAAA,EAAAC,eAAA;EACrC,MAAMC,iBAAiB,GAAGnB,UAAU,CAACQ,iBAAiB,CAAC;EACvD,MAAMY,YAAY,GAAGN,cAAc,CAAC,CAAC;EAErC,MAAMO,aAAa,GAAGR,eAAe,CAACG,KAAK,CAACM,IAAI,EAAEN,KAAK,CAACK,aAAa,EAAE;IACrEE,QAAQ,EAAEH,YAAY,CAACI,KAAK,CAACC,aAAa;IAC1CC,SAAS,EAAEN,YAAY,CAACO,WAAW,CAACC,cAAc;IAClDC,SAAS,EAAET,YAAY,CAACO,WAAW,CAACG,cAAc;IAClDC,OAAO,EAAEX,YAAY,CAACI,KAAK,CAACQ;EAC9B,CAAC,CAAC;EAEF,MAAMC,MAAM,GAAGhC,OAAO,CACpB;IAAA,IAAAiC,aAAA;IAAA,QAAAA,aAAA,GACElB,KAAK,CAACiB,MAAM,cAAAC,aAAA,cAAAA,aAAA,GAAI;MACdC,IAAI,EAAE,QAAQ;MACdT,SAAS,EAAEV,KAAK,CAACU,SAAS;MAC1BG,SAAS,EAAEb,KAAK,CAACa,SAAS;MAC1BE,OAAO,EAAEf,KAAK,CAACe;IACjB,CAAC;EAAA,GACH,CAACf,KAAK,CAACiB,MAAM,EAAEjB,KAAK,CAACU,SAAS,EAAEV,KAAK,CAACa,SAAS,EAAEb,KAAK,CAACe,OAAO,CAChE,CAAC;EACD,MAAMK,SAAS,GAAGlC,WAAW,CAC1BmC,KAA+C,IAAK;IAAA,IAAAC,MAAA,EAAAC,mBAAA,EAAAC,OAAA,EAAAC,OAAA;IACnD,IAAI,OAAOJ,KAAK,KAAK,QAAQ,EAAE;MAC7BA,KAAK,GAAG;QAAEK,KAAK,EAAEL;MAAM,CAAC;IAC1B;IACA,IAAI,EAAAC,MAAA,GAAAD,KAAK,cAAAC,MAAA,uBAALA,MAAA,CAAOI,KAAK,MAAK,EAAE,EAAE;MACvB,OAAO1B,KAAK,CAAC2B,UAAU;IACzB;IAEA,QAAAJ,mBAAA,IAAAC,OAAA,GAAOH,KAAK,cAAAG,OAAA,uBAALA,OAAA,CAAOI,YAAY,cAAAL,mBAAA,cAAAA,mBAAA,IAAAE,OAAA,GAAIJ,KAAK,cAAAI,OAAA,uBAALA,OAAA,CAAOC,KAAK;EAC5C,CAAC,EACD,CAAC1B,KAAK,CAAC2B,UAAU,CACnB,CAAC;EACD,MAAME,OAAO,GAAG3C,WAAW,CACzB,CAACwC,KAAa,EAAEP,IAAY,KAAK;IAC/B,IAAInB,KAAK,CAAC8B,IAAI,IAAIX,IAAI,KAAK,QAAQ,EAAE;MACnC,MAAMY,MAAM,GAAG,QAAQ;MACvB,IAAI,IAAIC,MAAM,CAAE,IAAGD,MAAO,IAAGA,MAAO,GAAE,CAAC,CAACE,IAAI,CAACP,KAAK,CAAC,EAAE;QACnDA,KAAK,GAAGA,KAAK,CAACQ,OAAO,CACnB,IAAIF,MAAM,CAAE,IAAGD,MAAO,KAAIA,MAAO,IAAG,EAAE,GAAG,CAAC,EAC1C,EACF,CAAC;QACDI,YAAY,CAACT,KAAK,CAAC;MACrB;IACF;IACA,OAAOA,KAAK;EACd,CAAC,EAED,CAAC1B,KAAK,CAAC8B,IAAI,CACb,CAAC;EACD,MAAMM,SAAS,GAAGpC,KAAK,CAACqC,cAAc;EACtC,MAAMA,cAAc,GAAGnD,WAAW,CAC/BwC,KAAa,IAAK;IACjB,IAAI1B,KAAK,CAACsC,UAAU,EAAE;MACpBZ,KAAK,GAAG9B,aAAa,CAAC2C,MAAM,CAACb,KAAK,IAAI,EAAE,CAAC,CAAC;IAC5C;IACA,OAAO,CAAAU,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAGV,KAAK,CAAC,KAAIA,KAAK;EACpC,CAAC,EACD,CAAC1B,KAAK,CAACsC,UAAU,EAAEF,SAAS,CAC9B,CAAC;EAED,MAAMI,aAAoB,GAAAC,aAAA,CAAAA,aAAA,KACrBzC,KAAK;IACRK,aAAa;IACbY,MAAM;IACNG,SAAS;IACTS,OAAO;IACPQ,cAAc;IACdK,KAAK,GAAAzC,YAAA,GACHD,KAAK,CAAC0C,KAAK,cAAAzC,YAAA,cAAAA,YAAA,GACVE,iBAAiB,aAAjBA,iBAAiB,eAAjBA,iBAAiB,CAAEwC,WAAW,GAAG,SAAS,GAAG;EAAQ,EACzD;EAED,MAAM;IACJC,EAAE;IACFC,IAAI;IACJC,SAAS;IAETC,QAAQ;IACRC,cAAc;IACdC,MAAM;IACNC,WAAW;IACXC,KAAK;IACLC,gBAAgB;IAChB1B,KAAK;IACL2B,IAAI;IACJC,OAAO;IACPC,KAAK;IACLC,QAAQ;IACRC,QAAQ;IACRC,IAAI;IACJC,SAAS;IACTC,IAAI;IACJC,QAAQ;IACRC,SAAS;IACTpB,KAAK;IACLqB,cAAc;IACdC,aAAa;IAGb7C,IAAI;IACJ8C,KAAK;IACLC,KAAK;IACLC,IAAI;IACJC,SAAS;IACTC,eAAe;IAGfC,IAAI;IAEJC,iBAAiB,GAAG,CAAC;IACrBC,UAAU,GAAG,IAAI;IACjBC,gBAAgB;IAIhBC,YAAY;IACZC,SAAS;IACTC,WAAW;IACXC,UAAU;IACVC,SAAS;IACTC,cAAc;IAGdC,WAAW;IACXC,UAAU;IACV9C;EACF,CAAC,GAAGzC,aAAa,CAAC8C,aAAa,CAAC;EAEhC,MAAM0C,kBAAkB,GAAGhG,WAAW,CACnCwC,KAAa,IAAM1B,KAAK,CAACsC,UAAU,GAAG1C,aAAa,CAAC8B,KAAK,CAAC,GAAGA,KAAM,EACpE,CAAC1B,KAAK,CAACsC,UAAU,CACnB,CAAC;EAED,MAAM6C,EAAE,GAAGhG,UAAU,CAAC,+BAA+B,EAAE6D,cAAc,CAAC;EAEtE,MAAMoC,WAAuC,GAAA3C,aAAA,CAAAA,aAAA;IAC3CG,EAAE;IACFC,IAAI;IACJ6B,YAAY;IACZE,WAAW;IACXC,UAAU;IACVC,SAAS;IACTC,cAAc;IACdJ,SAAS;IACT7B,SAAS,EAAEqC,EAAE;IACbjC,WAAW;IACXmC,MAAM,EAAE3B,IAAI,GACV3E,KAAA,CAAAuG,aAAA,CAAClG,UAAU;MAACmG,KAAK,EAAE7B,IAAI,CAAC6B;IAAM,GAAE7B,IAAI,CAAC8B,OAAoB,CAAC,GACxDC,SAAS;IACbC,QAAQ,EAAEV,WAAW;IACrBW,OAAO,EAAEV,UAAU;IACnBW,SAAS,EAAEzD,YAAY;IACvBsB;EAAQ,GACLM,cAAc;IACjB8B,OAAO,EAAEC,OAAO,CACdpD,KAAK,KAAK+C,SAAS,KAAItF,iBAAiB,aAAjBA,iBAAiB,uBAAjBA,iBAAiB,CAAEwC,WAAW,CACvD,CAAC;IACDoD,SAAS,EAAEhD,QAAQ;IACnBiD,MAAM,EAAExC,QAAQ,GAAG,OAAO,GAAGiC,SAAS;IACtC/D,KAAK,EAAEwD,kBAAkB,EAAAhF,eAAA,GAACwB,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEuE,QAAQ,CAAC,CAAC,cAAA/F,eAAA,cAAAA,eAAA,GAAI,EAAE;EAAC,EACnD;EAED,MAAMgG,aAA4B,GAAG;IACnC7B,eAAe;IACfC,IAAI;IACJ6B,mBAAmB,EAAE5B,iBAAiB;IACtCC,UAAU;IACVC;EACF,CAAC;EAED,MAAM2B,UAAsB,GAAG;IAC7BjF,IAAI,EAAEA,IAAI;IACV8C,KAAK,EAAEA,KAAK;IACZE,IAAI,EAAEA,IAAI;IACVD,KAAK,EAAEA,KAAK;IACZE,SAAS,EAAEA,SAAS;IACpBiC,IAAI,EAAExC,QAAQ,aAARA,QAAQ,cAARA,QAAQ,GAAIC,SAAS;IAC3BwC,aAAa,EAAExC,SAAS,IAAI,CAACD,QAAQ,GAAG,OAAO,GAAG4B,SAAS;IAC3Dc,cAAc,EAAEvC,aAAa;IAC7BwC,gBAAgB,EAAEnC;EACpB,CAAC;EAED,MAAMoC,eAAe,GAAAhE,aAAA;IACnBK,SAAS,EAAE3D,UAAU,CAAC,wBAAwB,EAAE2D,SAAS,CAAC;IAC1D4D,KAAK,EAAE9D,EAAE;IACTK,MAAM;IACNE,KAAK;IACLC,gBAAgB;IAChBC,IAAI;IACJC,OAAO;IACPC,KAAK;IACLE,QAAQ;IACRf,KAAK,EACHA,KAAK,KAAK,SAAS,IAAIvC,iBAAiB,aAAjBA,iBAAiB,eAAjBA,iBAAiB,CAAEwC,WAAW,GACjDD,KAAK,GACL+C,SAAS;IACfkB,YAAY,EAAEjE,KAAK,KAAK,KAAK,GAAGA,KAAK,GAAG+C;EAAS,GAC9C9F,gBAAgB,CAACK,KAAK,CAAC,CAC3B;EAED,OACEjB,KAAA,CAAAuG,aAAA,CAAC7F,UAAU,EAAKgH,eAAe,EAC5B9C,SAAS,GACR5E,KAAA,CAAAuG,aAAA,CAAChG,QAAQ,EAAAsH,QAAA,KAAKxB,WAAW,EAAMc,aAAa,CAAG,CAAC,GAC9CtC,IAAI,GACN7E,KAAA,CAAAuG,aAAA,CAAC/F,WAAW,EAAAqH,QAAA,KAAKxB,WAAW,EAAMgB,UAAU;IAAExC,IAAI,EAAEA;EAAK,EAAE,CAAC,GAE5D7E,KAAA,CAAAuG,aAAA,CAACjG,KAAK,EAAAuH,QAAA,KAAKxB,WAAW,EAAMgB,UAAU,CAAG,CAEjC,CAAC;AAEjB;AAEArG,eAAe,CAAC8G,qBAAqB,GAAG,IAAI;AAC5C,eAAe9G,eAAe"}
@@ -6,6 +6,7 @@ export { default as Boolean } from './Boolean';
6
6
  export { default as Currency } from './Currency';
7
7
  export { default as Date } from './Date';
8
8
  export { default as Email } from './Email';
9
+ export { default as Name } from './Name';
9
10
  export { default as NationalIdentityNumber } from './NationalIdentityNumber';
10
11
  export { default as PhoneNumber } from './PhoneNumber';
11
12
  export { default as OrganizationNumber } from './OrganizationNumber';
@@ -6,6 +6,7 @@ export { default as Boolean } from './Boolean';
6
6
  export { default as Currency } from './Currency';
7
7
  export { default as Date } from './Date';
8
8
  export { default as Email } from './Email';
9
+ export { default as Name } from './Name';
9
10
  export { default as NationalIdentityNumber } from './NationalIdentityNumber';
10
11
  export { default as PhoneNumber } from './PhoneNumber';
11
12
  export { default as OrganizationNumber } from './OrganizationNumber';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["default","Composition","String","Number","Toggle","Boolean","Currency","Date","Email","NationalIdentityNumber","PhoneNumber","OrganizationNumber","PostalCodeAndCity","Selection","ArraySelection","Option","SelectCountry","BankAccountNumber","Expiry","Password"],"sources":["../../../../../src/extensions/forms/Field/index.ts"],"sourcesContent":["export { default as Composition } from './Composition'\nexport { default as String } from './String'\nexport { default as Number } from './Number'\nexport { default as Toggle } from './Toggle'\nexport { default as Boolean } from './Boolean'\nexport { default as Currency } from './Currency'\nexport { default as Date } from './Date'\nexport { default as Email } from './Email'\nexport { default as NationalIdentityNumber } from './NationalIdentityNumber'\nexport { default as PhoneNumber } from './PhoneNumber'\nexport { default as OrganizationNumber } from './OrganizationNumber'\nexport { default as PostalCodeAndCity } from './PostalCodeAndCity'\nexport { default as Selection } from './Selection'\nexport { default as ArraySelection } from './ArraySelection'\nexport { default as Option } from './Option'\nexport { default as SelectCountry } from './SelectCountry'\nexport { default as BankAccountNumber } from './BankAccountNumber'\nexport { default as Expiry } from './Expiry'\nexport { default as Password } from './Password'\n"],"mappings":"AAAA,SAASA,OAAO,IAAIC,WAAW,QAAQ,eAAe;AACtD,SAASD,OAAO,IAAIE,MAAM,QAAQ,UAAU;AAC5C,SAASF,OAAO,IAAIG,MAAM,QAAQ,UAAU;AAC5C,SAASH,OAAO,IAAII,MAAM,QAAQ,UAAU;AAC5C,SAASJ,OAAO,IAAIK,OAAO,QAAQ,WAAW;AAC9C,SAASL,OAAO,IAAIM,QAAQ,QAAQ,YAAY;AAChD,SAASN,OAAO,IAAIO,IAAI,QAAQ,QAAQ;AACxC,SAASP,OAAO,IAAIQ,KAAK,QAAQ,SAAS;AAC1C,SAASR,OAAO,IAAIS,sBAAsB,QAAQ,0BAA0B;AAC5E,SAAST,OAAO,IAAIU,WAAW,QAAQ,eAAe;AACtD,SAASV,OAAO,IAAIW,kBAAkB,QAAQ,sBAAsB;AACpE,SAASX,OAAO,IAAIY,iBAAiB,QAAQ,qBAAqB;AAClE,SAASZ,OAAO,IAAIa,SAAS,QAAQ,aAAa;AAClD,SAASb,OAAO,IAAIc,cAAc,QAAQ,kBAAkB;AAC5D,SAASd,OAAO,IAAIe,MAAM,QAAQ,UAAU;AAC5C,SAASf,OAAO,IAAIgB,aAAa,QAAQ,iBAAiB;AAC1D,SAAShB,OAAO,IAAIiB,iBAAiB,QAAQ,qBAAqB;AAClE,SAASjB,OAAO,IAAIkB,MAAM,QAAQ,UAAU;AAC5C,SAASlB,OAAO,IAAImB,QAAQ,QAAQ,YAAY"}
1
+ {"version":3,"file":"index.js","names":["default","Composition","String","Number","Toggle","Boolean","Currency","Date","Email","Name","NationalIdentityNumber","PhoneNumber","OrganizationNumber","PostalCodeAndCity","Selection","ArraySelection","Option","SelectCountry","BankAccountNumber","Expiry","Password"],"sources":["../../../../../src/extensions/forms/Field/index.ts"],"sourcesContent":["export { default as Composition } from './Composition'\nexport { default as String } from './String'\nexport { default as Number } from './Number'\nexport { default as Toggle } from './Toggle'\nexport { default as Boolean } from './Boolean'\nexport { default as Currency } from './Currency'\nexport { default as Date } from './Date'\nexport { default as Email } from './Email'\nexport { default as Name } from './Name'\nexport { default as NationalIdentityNumber } from './NationalIdentityNumber'\nexport { default as PhoneNumber } from './PhoneNumber'\nexport { default as OrganizationNumber } from './OrganizationNumber'\nexport { default as PostalCodeAndCity } from './PostalCodeAndCity'\nexport { default as Selection } from './Selection'\nexport { default as ArraySelection } from './ArraySelection'\nexport { default as Option } from './Option'\nexport { default as SelectCountry } from './SelectCountry'\nexport { default as BankAccountNumber } from './BankAccountNumber'\nexport { default as Expiry } from './Expiry'\nexport { default as Password } from './Password'\n"],"mappings":"AAAA,SAASA,OAAO,IAAIC,WAAW,QAAQ,eAAe;AACtD,SAASD,OAAO,IAAIE,MAAM,QAAQ,UAAU;AAC5C,SAASF,OAAO,IAAIG,MAAM,QAAQ,UAAU;AAC5C,SAASH,OAAO,IAAII,MAAM,QAAQ,UAAU;AAC5C,SAASJ,OAAO,IAAIK,OAAO,QAAQ,WAAW;AAC9C,SAASL,OAAO,IAAIM,QAAQ,QAAQ,YAAY;AAChD,SAASN,OAAO,IAAIO,IAAI,QAAQ,QAAQ;AACxC,SAASP,OAAO,IAAIQ,KAAK,QAAQ,SAAS;AAC1C,SAASR,OAAO,IAAIS,IAAI,QAAQ,QAAQ;AACxC,SAAST,OAAO,IAAIU,sBAAsB,QAAQ,0BAA0B;AAC5E,SAASV,OAAO,IAAIW,WAAW,QAAQ,eAAe;AACtD,SAASX,OAAO,IAAIY,kBAAkB,QAAQ,sBAAsB;AACpE,SAASZ,OAAO,IAAIa,iBAAiB,QAAQ,qBAAqB;AAClE,SAASb,OAAO,IAAIc,SAAS,QAAQ,aAAa;AAClD,SAASd,OAAO,IAAIe,cAAc,QAAQ,kBAAkB;AAC5D,SAASf,OAAO,IAAIgB,MAAM,QAAQ,UAAU;AAC5C,SAAShB,OAAO,IAAIiB,aAAa,QAAQ,iBAAiB;AAC1D,SAASjB,OAAO,IAAIkB,iBAAiB,QAAQ,qBAAqB;AAClE,SAASlB,OAAO,IAAImB,MAAM,QAAQ,UAAU;AAC5C,SAASnB,OAAO,IAAIoB,QAAQ,QAAQ,YAAY"}
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { StateTypes, FieldBlockContextProps } from './FieldBlockContext';
3
- import { ComponentProps, FieldProps, SubmitState } from '../types';
3
+ import { ComponentProps, FieldProps, SubmitState, FieldBlockWidth } from '../types';
4
4
  export declare const states: Array<StateTypes>;
5
5
  export type Props = Pick<FieldProps, keyof ComponentProps | 'layout' | 'label' | 'labelDescription' | 'info' | 'warning' | 'error' | 'disabled'> & {
6
6
  /** The id to link a element with */
@@ -10,9 +10,9 @@ export type Props = Pick<FieldProps, keyof ComponentProps | 'layout' | 'label' |
10
10
  /** Defines the layout of nested fields */
11
11
  composition?: FieldBlockContextProps['composition'];
12
12
  /** Width of outer block element */
13
- width?: false | 'small' | 'medium' | 'large' | 'stretch';
13
+ width?: FieldBlockWidth;
14
14
  /** Width of contents block, while label etc can be wider if space is available */
15
- contentWidth?: 'small' | 'medium' | 'large' | 'stretch';
15
+ contentWidth?: FieldBlockWidth;
16
16
  contentClassName?: string;
17
17
  /** To show the SubmitIndicator during async validation */
18
18
  fieldState?: SubmitState;
@@ -1 +1 @@
1
- {"version":3,"file":"FieldBlock.js","names":["React","useMemo","useContext","useCallback","useRef","useReducer","useEffect","classnames","FieldBlockContext","Space","FormLabel","FormStatus","Ul","Li","convertJsxToString","findElementInChildren","warn","useId","useUnmountEffect","FormError","SubmitIndicator","createSharedState","useTranslation","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","translations","Field","Fragment","errorSummary","stateSummary","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'\n\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'\nimport useTranslation from '../hooks/useTranslation'\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 translations = useTranslation().Field\n\n if (messages.length === 1) {\n return <>{messages[0].message}</>\n }\n\n return (\n <>\n {type === 'error'\n ? translations.errorSummary\n : translations.stateSummary}\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":";;;;;;;;AAAA,OAAOA,KAAK,IACVC,OAAO,EACPC,UAAU,EACVC,WAAW,EACXC,MAAM,EACNC,UAAU,EACVC,SAAS,QACJ,OAAO;AACd,OAAOC,UAAU,MAAM,YAAY;AAEnC,OAAOC,iBAAiB,MAWjB,qBAAqB;AAC5B,SAASC,KAAK,EAAEC,SAAS,EAAEC,UAAU,QAAQ,qBAAqB;AAClE,SAASC,EAAE,EAAEC,EAAE,QAAQ,mBAAmB;AAC1C,SACEC,kBAAkB,EAClBC,qBAAqB,EACrBC,IAAI,QACC,kCAAkC;AACzC,OAAOC,KAAK,MAAM,+BAA+B;AACjD,OAAOC,gBAAgB,MAAM,0CAA0C;AACvE,SAGEC,SAAS,QAGJ,UAAU;AAEjB,OAAOC,eAAe,MAAM,yCAAyC;AACrE,SAASC,iBAAiB,QAAQ,wCAAwC;AAC1E,OAAOC,cAAc,MAAM,yBAAyB;AAEpD,OAAO,MAAMC,MAAyB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC;AA+BrE,SAASC,UAAUA,CAACC,KAAY,EAAE;EAChC,MAAMC,uBAAuB,GAAGxB,UAAU,CAACM,iBAAiB,CAAC;EAE7D,MAAMmB,UAAU,GAAGN,iBAAiB,CAAQI,KAAK,CAACG,KAAK,IAAIH,KAAK,CAACI,EAAE,CAAC;EACpE,MAAAC,cAAA,GAmBIC,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,EAAEL,UAAU,CAACM,IAAI,EAAER,KAAK,CAAC;IAnBvC;MACJS,SAAS;MACTN,KAAK;MACLO,MAAM,GAAG,UAAU;MACnBC,WAAW;MACXC,KAAK;MACLC,gBAAgB;MAChBC,UAAU;MACVC,IAAI;MACJC,OAAO;MACPC,KAAK,EAAEC,SAAS;MAChBC,UAAU;MACVC,QAAQ;MACRC,KAAK;MACLC,YAAY;MACZC,SAAS;MACTC,gBAAgB;MAChBC;IAEF,CAAC,GAAApB,cAAA;IADIqB,IAAI,GAAAC,wBAAA,CAAAtB,cAAA,EAAAuB,SAAA;EAGT,MAAMC,OAAO,GAAGrC,KAAK,CAACQ,KAAK,CAACI,EAAE,CAAC;EAC/B,MAAM,CAAC0B,UAAU,EAAEC,WAAW,CAAC,GAAGnD,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAC5D,MAAMoD,gBAAgB,GAAGrD,MAAM,CAAmB,CAAC,CAAC,CAAC;EACrD,MAAMsD,cAAc,GAAGtD,MAAM,CAAc,CAAC,CAAC,CAAC;EAC9C,MAAMuD,gBAAgB,GAAGvD,MAAM,CAAmB,IAAI,CAAC;EACvD,MAAMwD,WAAW,GAAGxD,MAAM,CAAiB,IAAI,CAAC;EAChD,MAAMyD,qBAAqB,GAAG5D,OAAO,CAAC,MAAM;IAC1C,OAAO6D,OAAO,CAACnB,SAAS,CAAC;EAC3B,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMoB,iBAAiB,GAAG5D,WAAW,CAAEsB,KAAiB,IAAK;IAC3D,MAAM;MAAEuC,OAAO;MAAEC,UAAU;MAAEC;IAAK,CAAC,GAAGzC,KAAK;IAE3C,IAAI,CAACiC,cAAc,CAACS,OAAO,CAACF,UAAU,CAAC,EAAE;MACvCP,cAAc,CAACS,OAAO,CAACF,UAAU,CAAC,GAAG,EAAE;IACzC;IAEAN,gBAAgB,CAACQ,OAAO,GAAG;MAAEzB,KAAK,EAAE,IAAI;MAAED,OAAO,EAAE,IAAI;MAAED,IAAI,EAAE;IAAK,CAAC;IAErE,MAAM4B,aAAa,GAAGV,cAAc,CAACS,OAAO,CAACF,UAAU,CAAC,CAACI,SAAS,CAC/DC,IAAI,IAAK;MACR,OAAOA,IAAI,CAACN,OAAO,KAAKA,OAAO,IAAIM,IAAI,CAACJ,IAAI,KAAKA,IAAI;IACvD,CACF,CAAC;IAED,IAAIE,aAAa,GAAG,CAAC,CAAC,EAAE;MACtBV,cAAc,CAACS,OAAO,CAACF,UAAU,CAAC,CAACG,aAAa,CAAC,GAAAG,aAAA,CAAAA,aAAA,KAC5Cb,cAAc,CAACS,OAAO,CAACF,UAAU,CAAC,CAACG,aAAa,CAAC,GACjD3C,KAAK,CACT;IACH,CAAC,MAAM;MACLiC,cAAc,CAACS,OAAO,CAACF,UAAU,CAAC,CAACO,IAAI,CAAC/C,KAAK,CAAC;IAChD;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMgD,aAAa,GAAGtE,WAAW,CAC9BsB,KAAiB,IAAK;IACrB,IAAIC,uBAAuB,EAAE;MAE3BA,uBAAuB,CAAC+C,aAAa,CAAChD,KAAK,CAAC;MAC5C;IACF;IAEAsC,iBAAiB,CAACtC,KAAK,CAAC;IAExB+B,WAAW,CAAC,CAAC;EACf,CAAC,EACD,CAAC9B,uBAAuB,EAAEqC,iBAAiB,CAC7C,CAAC;EAED,MAAMW,cAAc,GAAGvE,WAAW,CAChC,CAAC8D,UAAsB,EAAEU,IAAa,KAAK;IACzC,IAAIjD,uBAAuB,EAAE;MAE3BA,uBAAuB,CAACgD,cAAc,CAACT,UAAU,EAAEU,IAAI,CAAC;MACxD;IACF;IAEA,IAAIjB,cAAc,CAACS,OAAO,CAACF,UAAU,CAAC,EAAE;MACtCP,cAAc,CAACS,OAAO,CAACF,UAAU,CAAC,GAAGP,cAAc,CAACS,OAAO,CACzDF,UAAU,CACX,CAACW,GAAG,CAAEN,IAAI,IAAK;QACd,IAAIA,IAAI,CAACO,aAAa,EAAE;UACtB,OAAOP,IAAI;QACb;QAEA,OAAAC,aAAA,CAAAA,aAAA,KACKD,IAAI;UACPK;QAAI;MAER,CAAC,CAAC;MAEFnB,WAAW,CAAC,CAAC;IACf;EACF,CAAC,EACD,CAAC9B,uBAAuB,CAC1B,CAAC;EAED,MAAMoD,aAAa,GAAG7E,OAAO,CAAC,MAAM;IAClC,IAAI,OAAO0C,SAAS,KAAK,WAAW,EAAE;MACpCoB,iBAAiB,CAAC;QAChBE,UAAU,EAAEX,OAAO;QACnBuB,aAAa,EAAEhB,qBAAqB;QACpCK,IAAI,EAAE,OAAO;QACba,OAAO,EAAEpC;MACX,CAAC,CAAC;IACJ;IAEA,IAAI,OAAOF,OAAO,KAAK,WAAW,EAAE;MAClCsB,iBAAiB,CAAC;QAChBE,UAAU,EAAEX,OAAO;QACnBuB,aAAa,EAAE,IAAI;QACnBX,IAAI,EAAE,SAAS;QACfa,OAAO,EAAEtC;MACX,CAAC,CAAC;IACJ;IAEA,IAAI,OAAOD,IAAI,KAAK,WAAW,EAAE;MAC/BuB,iBAAiB,CAAC;QAChBE,UAAU,EAAEX,OAAO;QACnBuB,aAAa,EAAE,IAAI;QACnBX,IAAI,EAAE,MAAM;QACZa,OAAO,EAAEvC;MACX,CAAC,CAAC;IACJ;IAEA,MAAMwC,kBAA6C,GAEjDjD,MAAM,CAACkD,OAAO,CAACvB,cAAc,CAACS,OAAO,CAAC,CACnCe,OAAO,CAAC,CAAC,CAACjB,UAAU,EAAE1C,MAAM,CAAC,KAC5BA,MAAM,CAACqD,GAAG,CAAEnD,KAAK,IAAK;MACpB,OAAA8C,aAAA;QACEN;MAAU,GACPxC,KAAK;IAEZ,CAAC,CACH,CAAC,CAGA0D,MAAM,CAAC,CAACC,GAAG,EAAEC,GAAG,KAAK;MACpB,MAAMC,QAAQ,GAAGF,GAAG,CAACG,IAAI,CAAEjB,IAAI,IAAK;QAClC,OAAOA,IAAI,CAACJ,IAAI,KAAKmB,GAAG,CAACnB,IAAI;MAC/B,CAAC,CAAC;MAEF,MAAMsB,OAAO,GAAGC,UAAU,CAACJ,GAAG,CAAC;MAE/B,IAAIC,QAAQ,EAAE;QACZA,QAAQ,CAACI,QAAQ,CAAClB,IAAI,CAAAD,aAAA,CAAAA,aAAA,KACjBc,GAAG;UACNG;QAAO,EACR,CAAC;MACJ,CAAC,MAAM;QACLJ,GAAG,CAACZ,IAAI,CAAAD,aAAA,CAAAA,aAAA,KACHc,GAAG;UACNN,OAAO,EAAEY,SAAS;UAClBD,QAAQ,EAAE,CAAAnB,aAAA,CAAAA,aAAA,KAEHc,GAAG;YACNG;UAAO;QAEV,EACF,CAAC;MACJ;MAEA,OAAOJ,GAAG;IACZ,CAAC,EAAE,EAA+B,CAAC;IAGvC,OAAO7D,MAAM,CAAC4D,MAAM,CAAC,CAACC,GAAG,EAAElB,IAAI,KAAK;MAClC,MAAMrC,EAAE,GAAI,GAAEJ,KAAK,CAACI,EAAE,IAAID,KAAK,IAAI0B,OAAQ,iBAAgBY,IAAK,EAAC;MACjEkB,GAAG,CAAClB,IAAI,CAAC,GAAG;QACVrC,EAAE;QACFQ,KAAK;QACLuD,KAAK,EAAE1B,IAAI,KAAK,SAAS,GAAG,MAAM,GAAGA,IAAI;QACzC2B,aAAa,EAAEjC,WAAW;QAG1BkC,YAAY,EACVC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,MAAM,GAC3B,IAAI,GACJ,OAAOC,UAAU,KAAK,WAAW,GACjCA,UAAU,CAACC,OAAO,KAAK,IAAI,GAC3B;MACR,CAAC;MAED,MAAMC,KAAK,GAAGpB,kBAAkB,CAACO,IAAI,CAAEjB,IAAI,IAAK;QAC9C,OAAOA,IAAI,CAACJ,IAAI,KAAKA,IAAI;MAC3B,CAAC,CAAC;MAEF,IAAIkC,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEV,QAAQ,EAAE;QAEnB,MAAMA,QAAQ,GAAGU,KAAK,CAACV,QAAQ,CAC5Bd,GAAG,CAAEyB,GAAG,IAAK;UACZ,IAAIA,GAAG,CAACnC,IAAI,KAAK,OAAO,EAAE;YACxB,IAAI,CAACmC,GAAG,CAACxB,aAAa,IAAI,CAACwB,GAAG,CAAC1B,IAAI,EAAE;cACnC0B,GAAG,CAACb,OAAO,GAAG,IAAI;YACpB;UACF;UAEA,OAAOa,GAAG;QACZ,CAAC,CAAC,CACDC,MAAM,CAAC,CAAC;UAAEd;QAAQ,CAAC,KAAKA,OAAO,CAAC,CAChCL,MAAM,CAAC,CAACC,GAAG,EAAEiB,GAAG,EAAEE,CAAC,EAAEC,GAAG,KAAK;UAC5B,MAAMpC,aAAa,GAAGoC,GAAG,CAACnC,SAAS,CAAEC,IAAI,IAAK;YAC5C,OACExD,kBAAkB,CAACwD,IAAI,CAACkB,OAAO,CAAC,KAChC1E,kBAAkB,CAACuF,GAAG,CAACb,OAAO,CAAC;UAEnC,CAAC,CAAC;UAGF,IAAIpB,aAAa,KAAKmC,CAAC,EAAE;YACvBnB,GAAG,CAACZ,IAAI,CAAC6B,GAAG,CAAC;UACf;UAEA,OAAOjB,GAAG;QACZ,CAAC,EAAE,EAAE,CAAC;QAGR,IAAIM,QAAQ,CAACe,MAAM,GAAG,CAAC,EAAE;UACvBrB,GAAG,CAAClB,IAAI,CAAC,GAAAK,aAAA,CAAAA,aAAA,KACJa,GAAG,CAAClB,IAAI,CAAC;YACZwC,IAAI,EAAE1G,KAAA,CAAA2G,aAAA,CAACC,eAAe;cAAC1C,IAAI,EAAEA,IAAK;cAACwB,QAAQ,EAAEA;YAAS,CAAE;UAAC,EAC1D;UAED/B,gBAAgB,CAACQ,OAAO,CAACD,IAAI,CAAC,GAAGrC,EAAE;QACrC,CAAC,MAAM;UACL8B,gBAAgB,CAACQ,OAAO,CAACD,IAAI,CAAC,GAAGyB,SAAS;QAC5C;MACF;MAEA,OAAOP,GAAG;IACZ,CAAC,EAAE,CAAC,CAAC,CAAC;EAGR,CAAC,EAAE,CACD5C,IAAI,EACJC,OAAO,EACPE,SAAS,EACTjB,uBAAuB,EACvBqC,iBAAiB,EACjBT,OAAO,EACPC,UAAU,CACX,CAAC;EAGFjD,SAAS,CAAC,MAAM;IACd,IAAI,CAACoB,uBAAuB,EAAE;MAC5BgD,cAAc,CAACpB,OAAO,EAAEQ,OAAO,CAACnB,SAAS,CAAC,CAAC;IAC7C;EACF,CAAC,EAAE,CAACA,SAAS,EAAEW,OAAO,EAAEoB,cAAc,EAAEhD,uBAAuB,CAAC,CAAC;EAEjER,gBAAgB,CAAC,MAAM,MAAM;IAC3BuC,gBAAgB,CAACU,OAAO,GAAG,CAAC,CAAC;IAC7BT,cAAc,CAACS,OAAO,GAAG,CAAC,CAAC;EAC7B,CAAC,CAAC;EAEF,MAAM0C,WAAW,GAAGtG,UAAU,CAC5B,uBAAuB,EAEvB2B,SAAS,EADTY,KAAK,KAAK6C,SAAS,IAAK,gCAA+B7C,KAAM,EAE/D,CAAC;EACD,MAAMgE,WAAW,gEAEkB3E,MAAO,EACzC;EAGD,MAAM4E,cAAc,GAAGC,iBAAiB,CAAC;IACvC3E,KAAK;IACLE,UAAU;IACVW,QAAQ;IACRxB;EACF,CAAC,CAAC;EAEF,MAAMuF,UAA6B,GAAG;IACpCC,OAAO,EAAEH,cAAc,GAAG,QAAQ,GAAG,OAAO;IAC5CnF,KAAK,EAAEmF,cAAc,GAAGpB,SAAS,GAAG/D,KAAK;IACzCuF,KAAK,EAAE;MAAEC,GAAG,EAAE,CAAC;MAAEC,MAAM,EAAE;IAAU,CAAC;IACpCC,IAAI,EAAEtE,SAAS;IACfH;EACF,CAAC;EAED,IAAID,UAAU,IAAI,CAACP,KAAK,EAAE;IACxBrB,IAAI,CAAC,uDAAuD,CAAC;EAC/D;EAEA,OACEhB,KAAA,CAAA2G,aAAA,CAACnG,iBAAiB,CAAC+G,QAAQ;IACzBC,KAAK,EAAE;MACL/C,aAAa;MACbC,cAAc;MACd+C,YAAY,EAAE3D,OAAO,CAACnB,SAAS,CAAC;MAChCgB,gBAAgB;MAChBF,gBAAgB;MAChBrB;IACF;EAAE,GAEFpC,KAAA,CAAA2G,aAAA,CAAClG,KAAK,EAAAiH,QAAA;IACJR,OAAO,EAAEH,cAAc,GAAG,UAAU,GAAG,KAAM;IAC7C7E,SAAS,EAAE2E;EAAY,GACnB1D,IAAI,GAERnD,KAAA,CAAA2G,aAAA;IAAKzE,SAAS,EAAE4E;EAAY,GAC1B9G,KAAA,CAAA2G,aAAA,CAACgB,gBAAgB;IAACrF,gBAAgB,EAAEA;EAAiB,GAClD,CAACD,KAAK,IAAIC,gBAAgB,KACzBtC,KAAA,CAAA2G,aAAA,CAACjG,SAAS,EAAKuG,UAAU,EACvBjH,KAAA,CAAA2G,aAAA,CAACvF,eAAe;IAACwE,KAAK,EAAEhD;EAAW,GAChCP,KAAK,EACLC,gBAAgB,IACftC,KAAA,CAAA2G,aAAA;IAAMzE,SAAS,EAAC;EAA0C,GACvDI,gBACG,CAEO,CACR,CAEG,CAAC,EAEnBtC,KAAA,CAAA2G,aAAA;IAAKzE,SAAS,EAAC;EAA+B,GAC5ClC,KAAA,CAAA2G,aAAA,CAAChG,UAAU,EAAKmE,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEpC,KAAQ,CAAC,EACxC1C,KAAA,CAAA2G,aAAA,CAAChG,UAAU,EAAKmE,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAErC,OAAU,CAAC,EAC1CzC,KAAA,CAAA2G,aAAA,CAAChG,UAAU,EAAKmE,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEtC,IAAO,CACnC,CAAC,EAENxC,KAAA,CAAA2G,aAAA;IACEzE,SAAS,EAAE3B,UAAU,CACnB,iCAAiC,EAOjC0C,gBAAgB,EANhBF,YAAY,KAAK4C,SAAS,IACvB,0CAAyC5C,YAAa,EAAC,EAC1DX,WAAW,KAAKuD,SAAS,IACtB,iDACCvD,WAAW,KAAK,IAAI,GAAG,YAAY,GAAGA,WACvC,EAEL,CAAE;IACFwF,GAAG,EAAEhE;EAAY,GAEhBV,QACE,CACF,CACA,CACmB,CAAC;AAEjC;AAEA,SAAS8D,iBAAiBA,CAAC;EACzB3E,KAAK;EACLE,UAAU;EACVW,QAAQ;EACRxB;AACF,CAAC,EAAE;EACD,OAAOzB,OAAO,CAAC,MAAM;IACnB,IAAIsC,UAAU,KAAK,KAAK,EAAE;MACxB,OAAO,KAAK;IACd;IAEA,IAAIsF,MAAM,GAAGtF,UAAU;IAEvB,IAAIF,KAAK,IAAI,CAACwF,MAAM,IAAI,CAACnG,uBAAuB,EAAE;MAChD,IAAIoG,KAAK,GAAG,CAAC;MAEb/G,qBAAqB,CAACmC,QAAQ,EAAG6E,KAAyB,IAAK;QAAA,IAAAC,YAAA,EAAAC,WAAA;QAC7D,IACEF,KAAK,aAALA,KAAK,gBAAAC,YAAA,GAALD,KAAK,CAAEtG,KAAK,cAAAuG,YAAA,eAAZA,YAAA,CAAc3F,KAAK,IACnB,CAAA0F,KAAK,aAALA,KAAK,wBAAAE,WAAA,GAALF,KAAK,CAAE7D,IAAI,cAAA+D,WAAA,uBAAXA,WAAA,CAAc,cAAc,CAAC,MAAK,IAAI,EACtC;UACAH,KAAK,EAAE;QACT;QACA,IAAIA,KAAK,GAAG,CAAC,EAAE;UACb,OAAQD,MAAM,GAAG,IAAI;QACvB;MACF,CAAC,CAAC;IACJ;IAEA,OAAO/D,OAAO,CAAC+D,MAAM,CAAC;EACxB,CAAC,EAAE,CAACtF,UAAU,EAAEW,QAAQ,EAAEb,KAAK,EAAEX,uBAAuB,CAAC,CAAC;AAC5D;AAEA,SAASkF,eAAeA,CAAC;EACvB1C,IAAI;EACJwB;AAIF,CAAC,EAAE;EACD,MAAMwC,YAAY,GAAG5G,cAAc,CAAC,CAAC,CAAC6G,KAAK;EAE3C,IAAIzC,QAAQ,CAACe,MAAM,KAAK,CAAC,EAAE;IACzB,OAAOzG,KAAA,CAAA2G,aAAA,CAAA3G,KAAA,CAAAoI,QAAA,QAAG1C,QAAQ,CAAC,CAAC,CAAC,CAACF,OAAU,CAAC;EACnC;EAEA,OACExF,KAAA,CAAA2G,aAAA,CAAA3G,KAAA,CAAAoI,QAAA,QACGlE,IAAI,KAAK,OAAO,GACbgE,YAAY,CAACG,YAAY,GACzBH,YAAY,CAACI,YAAY,EAC7BtI,KAAA,CAAA2G,aAAA,CAAC/F,EAAE,QACA8E,QAAQ,CAACd,GAAG,CAAC,CAAC;IAAEY;EAAQ,CAAC,EAAEe,CAAC,KAAK;IAChC,OAAOvG,KAAA,CAAA2G,aAAA,CAAC9F,EAAE;MAAC0H,GAAG,EAAEhC;IAAE,GAAEf,OAAY,CAAC;EACnC,CAAC,CACC,CACJ,CAAC;AAEP;AAEA,SAASmC,gBAAgBA,CAAC;EAAErF,gBAAgB;EAAEY;AAAS,CAAC,EAAE;EACxD,IAAI,CAACZ,gBAAgB,EAAE;IACrB,OAAOY,QAAQ;EACjB;EACA,OAAOlD,KAAA,CAAA2G,aAAA;IAAKzE,SAAS,EAAC;EAA8B,GAAEgB,QAAc,CAAC;AACvE;AAEA,SAASuC,UAAUA,CAACnB,IAA+B,EAAgB;EACjE,MAAM;IAAES;EAAQ,CAAC,GAAGT,IAAI;EAExB,OAASS,OAAO,YAAYyD,KAAK,IAAIzD,OAAO,CAACS,OAAO,IACjDT,OAAO,YAAY5D,SAAS,IAAI4D,OAAO,CAACS,OAAQ,KACjDT,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAE0D,QAAQ,CAAC,CAAC,KACnB1D,OAAO;AACX;AAEAvD,UAAU,CAACkH,qBAAqB,GAAG,IAAI;AAEvC,eAAelH,UAAU"}
1
+ {"version":3,"file":"FieldBlock.js","names":["React","useMemo","useContext","useCallback","useRef","useReducer","useEffect","classnames","FieldBlockContext","Space","FormLabel","FormStatus","Ul","Li","convertJsxToString","findElementInChildren","warn","useId","useUnmountEffect","FormError","SubmitIndicator","createSharedState","useTranslation","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","translations","Field","Fragment","errorSummary","stateSummary","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'\n\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 FieldBlockWidth,\n} from '../types'\nimport type { FormLabelAllProps } from '../../../components/FormLabel'\nimport SubmitIndicator from '../Form/SubmitIndicator/SubmitIndicator'\nimport { createSharedState } from '../../../shared/helpers/useSharedState'\nimport useTranslation from '../hooks/useTranslation'\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?: FieldBlockWidth\n /** Width of contents block, while label etc can be wider if space is available */\n contentWidth?: FieldBlockWidth\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 translations = useTranslation().Field\n\n if (messages.length === 1) {\n return <>{messages[0].message}</>\n }\n\n return (\n <>\n {type === 'error'\n ? translations.errorSummary\n : translations.stateSummary}\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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"}
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import { Props as DataContextProps } from '../../DataContext/Provider';
3
+ import { UseFieldProps } from '../../types';
4
+ import { FormStatusProps } from '../../../../components/FormStatus';
5
+ export type FieldPropsProps = UseFieldProps & {
6
+ children: React.ReactNode;
7
+ FormStatus?: {
8
+ globalStatus: FormStatusProps;
9
+ };
10
+ locale?: DataContextProps<unknown>['locale'];
11
+ translations?: DataContextProps<unknown>['translations'];
12
+ };
13
+ export default function FieldProps(props: FieldPropsProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,71 @@
1
+ "use client";
2
+
3
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
4
+ const _excluded = ["children", "FormStatus"],
5
+ _excluded2 = ["disabled", "locale", "translations"];
6
+ import React, { useContext, useRef } from 'react';
7
+ import DataContext from '../../DataContext/Context';
8
+ import { assignPropsWithContext } from '../../../../shared/component-helper';
9
+ import FieldPropsContext from './FieldPropsContext';
10
+ import SharedProvider from '../../../../shared/Provider';
11
+ export default function FieldProps(props) {
12
+ const {
13
+ children,
14
+ FormStatus
15
+ } = props,
16
+ rest = _objectWithoutProperties(props, _excluded);
17
+ const nestedContext = useContext(FieldPropsContext);
18
+ const dataContextRef = useRef();
19
+ dataContextRef.current = useContext(DataContext);
20
+ const sharedProviderProps = {};
21
+ const _ref = Object.assign((nestedContext === null || nestedContext === void 0 ? void 0 : nestedContext.inheritedContext) || {}, rest),
22
+ {
23
+ disabled,
24
+ locale,
25
+ translations
26
+ } = _ref,
27
+ restOfRest = _objectWithoutProperties(_ref, _excluded2);
28
+ if (typeof disabled === 'boolean') {
29
+ sharedProviderProps.formElement = {
30
+ disabled
31
+ };
32
+ }
33
+ if (FormStatus) {
34
+ sharedProviderProps.FormStatus = FormStatus;
35
+ }
36
+ if (locale) {
37
+ sharedProviderProps.locale = locale;
38
+ }
39
+ if (translations) {
40
+ sharedProviderProps.translations = {};
41
+ const trObj = translations;
42
+ for (const locale in trObj) {
43
+ const newObj = {
44
+ Forms: {}
45
+ };
46
+ for (const key in trObj[locale]) {
47
+ const newKeyObj = {};
48
+ for (const subKey in trObj[locale][key]) {
49
+ newKeyObj[subKey] = trObj[locale][key][subKey];
50
+ }
51
+ newObj.Forms[key] = newKeyObj;
52
+ }
53
+ sharedProviderProps.translations[locale] = newObj;
54
+ }
55
+ }
56
+ function extend(fieldProps) {
57
+ const {
58
+ required
59
+ } = dataContextRef.current;
60
+ return nestedContext.extend(assignPropsWithContext(fieldProps, {
61
+ required
62
+ }, restOfRest));
63
+ }
64
+ return React.createElement(FieldPropsContext.Provider, {
65
+ value: {
66
+ extend,
67
+ inheritedContext: rest
68
+ }
69
+ }, React.createElement(SharedProvider, sharedProviderProps, children));
70
+ }
71
+ //# sourceMappingURL=FieldProps.js.map