@dnb/eufemia 10.43.0 → 10.45.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 (803) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/cjs/components/autocomplete/Autocomplete.d.ts +2 -2
  3. package/cjs/components/autocomplete/AutocompleteDocs.js +7 -7
  4. package/cjs/components/autocomplete/AutocompleteDocs.js.map +1 -1
  5. package/cjs/components/button/Button.d.ts +1 -1
  6. package/cjs/components/button/Button.js +6 -5
  7. package/cjs/components/button/Button.js.map +1 -1
  8. package/cjs/components/checkbox/style/dnb-checkbox.scss +1 -1
  9. package/cjs/components/input-masked/InputMaskedHooks.js +4 -0
  10. package/cjs/components/input-masked/InputMaskedHooks.js.map +1 -1
  11. package/cjs/components/radio/style/dnb-radio.scss +1 -1
  12. package/cjs/components/space/Space.d.ts +1 -1
  13. package/cjs/components/space/Space.js.map +1 -1
  14. package/cjs/components/table/TableStickyHeader.js.map +1 -1
  15. package/cjs/components/table/table-accordion/TableAccordionHead.js.map +1 -1
  16. package/cjs/components/table/table-navigation/TableNavigationHead.js +1 -1
  17. package/cjs/components/table/table-navigation/TableNavigationHead.js.map +1 -1
  18. package/cjs/components/upload/Upload.js +2 -1
  19. package/cjs/components/upload/Upload.js.map +1 -1
  20. package/cjs/components/upload/UploadDocs.d.ts +1 -0
  21. package/cjs/components/upload/UploadDocs.js +18 -5
  22. package/cjs/components/upload/UploadDocs.js.map +1 -1
  23. package/cjs/components/upload/UploadInfo.js +57 -5
  24. package/cjs/components/upload/UploadInfo.js.map +1 -1
  25. package/cjs/components/upload/UploadVerify.d.ts +4 -2
  26. package/cjs/components/upload/UploadVerify.js +34 -4
  27. package/cjs/components/upload/UploadVerify.js.map +1 -1
  28. package/cjs/components/upload/style/dnb-upload.css +15 -0
  29. package/cjs/components/upload/style/dnb-upload.min.css +1 -1
  30. package/cjs/components/upload/style/dnb-upload.scss +17 -0
  31. package/cjs/components/upload/types.d.ts +9 -3
  32. package/cjs/components/upload/types.js.map +1 -1
  33. package/cjs/extensions/forms/DataContext/Context.d.ts +9 -3
  34. package/cjs/extensions/forms/DataContext/Context.js.map +1 -1
  35. package/cjs/extensions/forms/DataContext/FieldBoundary/FieldBoundaryContext.d.ts +8 -0
  36. package/cjs/extensions/forms/DataContext/FieldBoundary/FieldBoundaryContext.js.map +1 -1
  37. package/cjs/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js +8 -0
  38. package/cjs/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js.map +1 -1
  39. package/cjs/extensions/forms/DataContext/Provider/Provider.d.ts +5 -12
  40. package/cjs/extensions/forms/DataContext/Provider/Provider.js +58 -18
  41. package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  42. package/cjs/extensions/forms/DataContext/Provider/ProviderDocs.js +6 -1
  43. package/cjs/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
  44. package/cjs/extensions/forms/Field/ArraySelection/ArraySelection.d.ts +2 -1
  45. package/cjs/extensions/forms/Field/ArraySelection/ArraySelection.js +29 -24
  46. package/cjs/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
  47. package/cjs/extensions/forms/Field/Currency/CurrencyDocs.d.ts +2 -0
  48. package/cjs/extensions/forms/Field/Currency/CurrencyDocs.js +31 -0
  49. package/cjs/extensions/forms/Field/Currency/CurrencyDocs.js.map +1 -0
  50. package/cjs/extensions/forms/Field/Expiry/Expiry.d.ts +1 -1
  51. package/cjs/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
  52. package/cjs/extensions/forms/Field/FieldDocs.d.ts +7 -0
  53. package/cjs/extensions/forms/Field/FieldDocs.js +20 -1
  54. package/cjs/extensions/forms/Field/FieldDocs.js.map +1 -1
  55. package/cjs/extensions/forms/Field/Name/Name.js +2 -2
  56. package/cjs/extensions/forms/Field/Name/Name.js.map +1 -1
  57. package/cjs/extensions/forms/Field/Number/Number.js +7 -12
  58. package/cjs/extensions/forms/Field/Number/Number.js.map +1 -1
  59. package/cjs/extensions/forms/Field/Option/Option.d.ts +2 -4
  60. package/cjs/extensions/forms/Field/Option/Option.js +0 -21
  61. package/cjs/extensions/forms/Field/Option/Option.js.map +1 -1
  62. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.d.ts +5 -2
  63. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.js +33 -15
  64. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  65. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumberDocs.d.ts +3 -0
  66. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumberDocs.js +28 -0
  67. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumberDocs.js.map +1 -0
  68. package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.d.ts +2 -2
  69. package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.js +32 -16
  70. package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
  71. package/cjs/extensions/forms/Field/SelectCountry/SelectCountryDocs.d.ts +1 -0
  72. package/cjs/extensions/forms/Field/SelectCountry/SelectCountryDocs.js +16 -0
  73. package/cjs/extensions/forms/Field/SelectCountry/SelectCountryDocs.js.map +1 -0
  74. package/cjs/extensions/forms/Field/Selection/Selection.d.ts +42 -15
  75. package/cjs/extensions/forms/Field/Selection/Selection.js +92 -29
  76. package/cjs/extensions/forms/Field/Selection/Selection.js.map +1 -1
  77. package/cjs/extensions/forms/Field/Selection/SelectionDocs.js +10 -0
  78. package/cjs/extensions/forms/Field/Selection/SelectionDocs.js.map +1 -1
  79. package/cjs/extensions/forms/Field/Toggle/Toggle.js +1 -1
  80. package/cjs/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  81. package/cjs/extensions/forms/FieldBlock/FieldBlock.js +3 -3
  82. package/cjs/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  83. package/cjs/extensions/forms/Form/Element/Element.js +11 -9
  84. package/cjs/extensions/forms/Form/Element/Element.js.map +1 -1
  85. package/cjs/extensions/forms/Form/Handler/Handler.d.ts +1 -1
  86. package/cjs/extensions/forms/Form/Handler/Handler.js +3 -1
  87. package/cjs/extensions/forms/Form/Handler/Handler.js.map +1 -1
  88. package/cjs/extensions/forms/Form/Isolation/Isolation.d.ts +26 -5
  89. package/cjs/extensions/forms/Form/Isolation/Isolation.js +84 -26
  90. package/cjs/extensions/forms/Form/Isolation/Isolation.js.map +1 -1
  91. package/cjs/extensions/forms/Form/Isolation/IsolationCommitButton.js +1 -0
  92. package/cjs/extensions/forms/Form/Isolation/IsolationCommitButton.js.map +1 -1
  93. package/cjs/extensions/forms/Form/Isolation/IsolationDocs.js +11 -1
  94. package/cjs/extensions/forms/Form/Isolation/IsolationDocs.js.map +1 -1
  95. package/cjs/extensions/forms/Form/Section/EditContainer/EditToolbarTools.js +13 -5
  96. package/cjs/extensions/forms/Form/Section/EditContainer/EditToolbarTools.js.map +1 -1
  97. package/cjs/extensions/forms/Form/Section/EditContainer/useContainerDataStore.js +10 -13
  98. package/cjs/extensions/forms/Form/Section/EditContainer/useContainerDataStore.js.map +1 -1
  99. package/cjs/extensions/forms/Form/Section/Section.js +2 -2
  100. package/cjs/extensions/forms/Form/Section/Section.js.map +1 -1
  101. package/cjs/extensions/forms/Form/data-context/clearData.d.ts +1 -0
  102. package/cjs/extensions/forms/Form/data-context/clearData.js +16 -0
  103. package/cjs/extensions/forms/Form/data-context/clearData.js.map +1 -0
  104. package/cjs/extensions/forms/Form/index.d.ts +1 -0
  105. package/cjs/extensions/forms/Form/index.js +7 -0
  106. package/cjs/extensions/forms/Form/index.js.map +1 -1
  107. package/cjs/extensions/forms/Iterate/AnimatedContainer/AnimatedContainer.js +3 -3
  108. package/cjs/extensions/forms/Iterate/AnimatedContainer/AnimatedContainer.js.map +1 -1
  109. package/cjs/extensions/forms/Iterate/AnimatedContainer/ElementBlock.js +2 -2
  110. package/cjs/extensions/forms/Iterate/AnimatedContainer/ElementBlock.js.map +1 -1
  111. package/cjs/extensions/forms/Iterate/Array/Array.js +7 -5
  112. package/cjs/extensions/forms/Iterate/Array/Array.js.map +1 -1
  113. package/cjs/extensions/forms/Iterate/Array/types.d.ts +1 -4
  114. package/cjs/extensions/forms/Iterate/Array/types.js.map +1 -1
  115. package/cjs/extensions/forms/Iterate/EditContainer/EditContainer.d.ts +1 -3
  116. package/cjs/extensions/forms/Iterate/EditContainer/EditContainer.js +25 -19
  117. package/cjs/extensions/forms/Iterate/EditContainer/EditContainer.js.map +1 -1
  118. package/cjs/extensions/forms/Iterate/EditContainer/EditContainerDocs.js +10 -0
  119. package/cjs/extensions/forms/Iterate/EditContainer/EditContainerDocs.js.map +1 -1
  120. package/cjs/extensions/forms/Iterate/EditContainer/EditToolbarTools.js +44 -14
  121. package/cjs/extensions/forms/Iterate/EditContainer/EditToolbarTools.js.map +1 -1
  122. package/cjs/extensions/forms/Iterate/{IterateElementContext.d.ts → IterateItemContext.d.ts} +3 -3
  123. package/cjs/extensions/forms/Iterate/{IterateElementContext.js → IterateItemContext.js} +3 -3
  124. package/cjs/extensions/forms/Iterate/IterateItemContext.js.map +1 -0
  125. package/cjs/extensions/forms/Iterate/PushButton/PushButton.js +3 -3
  126. package/cjs/extensions/forms/Iterate/PushButton/PushButton.js.map +1 -1
  127. package/cjs/extensions/forms/Iterate/PushButton/PushButtonDocs.js +5 -0
  128. package/cjs/extensions/forms/Iterate/PushButton/PushButtonDocs.js.map +1 -1
  129. package/cjs/extensions/forms/Iterate/PushContainer/OpenButton.d.ts +4 -0
  130. package/cjs/extensions/forms/Iterate/PushContainer/OpenButton.js +42 -0
  131. package/cjs/extensions/forms/Iterate/PushContainer/OpenButton.js.map +1 -0
  132. package/cjs/extensions/forms/Iterate/PushContainer/PushContainer.d.ts +37 -0
  133. package/cjs/extensions/forms/Iterate/PushContainer/PushContainer.js +95 -0
  134. package/cjs/extensions/forms/Iterate/PushContainer/PushContainer.js.map +1 -0
  135. package/cjs/extensions/forms/Iterate/PushContainer/PushContainerContext.d.ts +11 -0
  136. package/cjs/extensions/forms/Iterate/PushContainer/PushContainerContext.js +12 -0
  137. package/cjs/extensions/forms/Iterate/PushContainer/PushContainerContext.js.map +1 -0
  138. package/cjs/extensions/forms/Iterate/PushContainer/PushContainerDocs.d.ts +3 -0
  139. package/cjs/extensions/forms/Iterate/PushContainer/PushContainerDocs.js +42 -0
  140. package/cjs/extensions/forms/Iterate/PushContainer/PushContainerDocs.js.map +1 -0
  141. package/cjs/extensions/forms/Iterate/PushContainer/index.d.ts +2 -0
  142. package/cjs/extensions/forms/Iterate/PushContainer/index.js +27 -0
  143. package/cjs/extensions/forms/Iterate/PushContainer/index.js.map +1 -0
  144. package/cjs/extensions/forms/Iterate/RemoveButton/RemoveButton.js +4 -4
  145. package/cjs/extensions/forms/Iterate/RemoveButton/RemoveButton.js.map +1 -1
  146. package/cjs/extensions/forms/Iterate/ViewContainer/ViewContainer.d.ts +4 -0
  147. package/cjs/extensions/forms/Iterate/ViewContainer/ViewContainer.js +13 -5
  148. package/cjs/extensions/forms/Iterate/ViewContainer/ViewContainer.js.map +1 -1
  149. package/cjs/extensions/forms/Iterate/ViewContainer/ViewContainerDocs.js +5 -0
  150. package/cjs/extensions/forms/Iterate/ViewContainer/ViewContainerDocs.js.map +1 -1
  151. package/cjs/extensions/forms/Iterate/ViewContainer/ViewToolbarTools.js +3 -3
  152. package/cjs/extensions/forms/Iterate/ViewContainer/ViewToolbarTools.js.map +1 -1
  153. package/cjs/extensions/forms/Iterate/hooks/useItem.d.ts +1 -0
  154. package/cjs/extensions/forms/Iterate/hooks/useItem.js +15 -0
  155. package/cjs/extensions/forms/Iterate/hooks/useItem.js.map +1 -0
  156. package/cjs/extensions/forms/Iterate/index.d.ts +3 -1
  157. package/cjs/extensions/forms/Iterate/index.js +17 -3
  158. package/cjs/extensions/forms/Iterate/index.js.map +1 -1
  159. package/cjs/extensions/forms/Iterate/style/dnb-iterate.css +1 -1
  160. package/cjs/extensions/forms/Iterate/style/dnb-iterate.min.css +1 -1
  161. package/cjs/extensions/forms/Iterate/style/dnb-iterate.scss +1 -1
  162. package/cjs/extensions/forms/Value/ArraySelection/ArraySelection.d.ts +19 -0
  163. package/cjs/extensions/forms/Value/ArraySelection/ArraySelection.js +81 -0
  164. package/cjs/extensions/forms/Value/ArraySelection/ArraySelection.js.map +1 -0
  165. package/cjs/extensions/forms/Value/ArraySelection/ArraySelectionDocs.d.ts +2 -0
  166. package/cjs/extensions/forms/Value/ArraySelection/ArraySelectionDocs.js +15 -0
  167. package/cjs/extensions/forms/Value/ArraySelection/ArraySelectionDocs.js.map +1 -0
  168. package/cjs/extensions/forms/Value/ArraySelection/index.d.ts +2 -0
  169. package/cjs/extensions/forms/Value/ArraySelection/index.js +27 -0
  170. package/cjs/extensions/forms/Value/ArraySelection/index.js.map +1 -0
  171. package/cjs/extensions/forms/Value/Selection/Selection.d.ts +9 -0
  172. package/cjs/extensions/forms/Value/Selection/Selection.js +58 -0
  173. package/cjs/extensions/forms/Value/Selection/Selection.js.map +1 -0
  174. package/cjs/extensions/forms/Value/Selection/SelectionDocs.d.ts +2 -0
  175. package/cjs/extensions/forms/Value/Selection/SelectionDocs.js +15 -0
  176. package/cjs/extensions/forms/Value/Selection/SelectionDocs.js.map +1 -0
  177. package/cjs/extensions/forms/Value/Selection/index.d.ts +2 -0
  178. package/cjs/extensions/forms/Value/Selection/index.js +27 -0
  179. package/cjs/extensions/forms/Value/Selection/index.js.map +1 -0
  180. package/cjs/extensions/forms/Value/ValueDocs.js +6 -1
  181. package/cjs/extensions/forms/Value/ValueDocs.js.map +1 -1
  182. package/cjs/extensions/forms/Value/index.d.ts +2 -0
  183. package/cjs/extensions/forms/Value/index.js +14 -0
  184. package/cjs/extensions/forms/Value/index.js.map +1 -1
  185. package/cjs/extensions/forms/ValueBlock/ValueBlock.js +3 -3
  186. package/cjs/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
  187. package/cjs/extensions/forms/Wizard/Container/WizardContainer.js +27 -11
  188. package/cjs/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  189. package/cjs/extensions/forms/Wizard/Context/WizardContext.d.ts +1 -0
  190. package/cjs/extensions/forms/Wizard/Context/WizardContext.js.map +1 -1
  191. package/cjs/extensions/forms/constants/locales/en-GB.d.ts +7 -0
  192. package/cjs/extensions/forms/constants/locales/en-GB.js +7 -0
  193. package/cjs/extensions/forms/constants/locales/en-GB.js.map +1 -1
  194. package/cjs/extensions/forms/constants/locales/en-US.d.ts +7 -0
  195. package/cjs/extensions/forms/constants/locales/index.d.ts +14 -0
  196. package/cjs/extensions/forms/constants/locales/nb-NO.d.ts +7 -0
  197. package/cjs/extensions/forms/constants/locales/nb-NO.js +7 -0
  198. package/cjs/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  199. package/cjs/extensions/forms/hooks/DataValueDocs.js +4 -4
  200. package/cjs/extensions/forms/hooks/DataValueDocs.js.map +1 -1
  201. package/cjs/extensions/forms/hooks/useDataValue.d.ts +2 -0
  202. package/cjs/extensions/forms/hooks/useDataValue.js +29 -13
  203. package/cjs/extensions/forms/hooks/useDataValue.js.map +1 -1
  204. package/cjs/extensions/forms/hooks/useExternalValue.js +4 -4
  205. package/cjs/extensions/forms/hooks/useExternalValue.js.map +1 -1
  206. package/cjs/extensions/forms/hooks/useFieldProps.d.ts +5 -5
  207. package/cjs/extensions/forms/hooks/useFieldProps.js +49 -31
  208. package/cjs/extensions/forms/hooks/useFieldProps.js.map +1 -1
  209. package/cjs/extensions/forms/hooks/usePath.js +3 -3
  210. package/cjs/extensions/forms/hooks/usePath.js.map +1 -1
  211. package/cjs/extensions/forms/hooks/useValueProps.js +4 -1
  212. package/cjs/extensions/forms/hooks/useValueProps.js.map +1 -1
  213. package/cjs/extensions/forms/style/dnb-forms.css +1 -1
  214. package/cjs/extensions/forms/style/dnb-forms.min.css +1 -1
  215. package/cjs/extensions/forms/types.d.ts +20 -7
  216. package/cjs/extensions/forms/types.js.map +1 -1
  217. package/cjs/shared/Eufemia.d.ts +1 -1
  218. package/cjs/shared/Eufemia.js +2 -2
  219. package/cjs/shared/Eufemia.js.map +1 -1
  220. package/cjs/shared/helpers/isAsync.js +2 -2
  221. package/cjs/shared/helpers/isAsync.js.map +1 -1
  222. package/cjs/shared/locales/en-GB.d.ts +1 -0
  223. package/cjs/shared/locales/en-GB.js +1 -0
  224. package/cjs/shared/locales/en-GB.js.map +1 -1
  225. package/cjs/shared/locales/en-US.d.ts +1 -0
  226. package/cjs/shared/locales/index.d.ts +2 -0
  227. package/cjs/shared/locales/nb-NO.d.ts +1 -0
  228. package/cjs/shared/locales/nb-NO.js +2 -1
  229. package/cjs/shared/locales/nb-NO.js.map +1 -1
  230. package/cjs/shared/useTheme.d.ts +4 -10
  231. package/cjs/shared/useTheme.js +7 -5
  232. package/cjs/shared/useTheme.js.map +1 -1
  233. package/cjs/style/core/scopes.scss +1 -1
  234. package/cjs/style/dnb-ui-basis.css +1 -1
  235. package/cjs/style/dnb-ui-basis.min.css +1 -1
  236. package/cjs/style/dnb-ui-body.css +1 -1
  237. package/cjs/style/dnb-ui-body.min.css +1 -1
  238. package/cjs/style/dnb-ui-components.css +16 -1
  239. package/cjs/style/dnb-ui-components.min.css +2 -2
  240. package/cjs/style/dnb-ui-core.css +1 -1
  241. package/cjs/style/dnb-ui-core.min.css +1 -1
  242. package/cjs/style/dnb-ui-extensions.css +1 -1
  243. package/cjs/style/dnb-ui-extensions.min.css +1 -1
  244. package/cjs/style/dnb-ui-forms.css +1 -1
  245. package/cjs/style/dnb-ui-forms.min.css +1 -1
  246. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +17 -2
  247. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  248. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.css +1 -1
  249. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  250. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.css +1 -1
  251. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  252. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +17 -2
  253. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  254. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.css +1 -1
  255. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  256. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.css +1 -1
  257. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  258. package/cjs/style/themes/theme-ui/ui-theme-components.css +17 -2
  259. package/cjs/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  260. package/cjs/style/themes/theme-ui/ui-theme-extensions.css +1 -1
  261. package/cjs/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  262. package/cjs/style/themes/theme-ui/ui-theme-forms.css +1 -1
  263. package/cjs/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  264. package/components/autocomplete/Autocomplete.d.ts +2 -2
  265. package/components/autocomplete/AutocompleteDocs.js +7 -7
  266. package/components/autocomplete/AutocompleteDocs.js.map +1 -1
  267. package/components/button/Button.d.ts +1 -1
  268. package/components/button/Button.js +6 -5
  269. package/components/button/Button.js.map +1 -1
  270. package/components/checkbox/style/dnb-checkbox.scss +1 -1
  271. package/components/input-masked/InputMaskedHooks.js +4 -0
  272. package/components/input-masked/InputMaskedHooks.js.map +1 -1
  273. package/components/radio/style/dnb-radio.scss +1 -1
  274. package/components/space/Space.d.ts +1 -1
  275. package/components/space/Space.js.map +1 -1
  276. package/components/table/TableStickyHeader.js.map +1 -1
  277. package/components/table/table-accordion/TableAccordionHead.js.map +1 -1
  278. package/components/table/table-navigation/TableNavigationHead.js +1 -1
  279. package/components/table/table-navigation/TableNavigationHead.js.map +1 -1
  280. package/components/upload/Upload.js +2 -1
  281. package/components/upload/Upload.js.map +1 -1
  282. package/components/upload/UploadDocs.d.ts +1 -0
  283. package/components/upload/UploadDocs.js +16 -4
  284. package/components/upload/UploadDocs.js.map +1 -1
  285. package/components/upload/UploadInfo.js +57 -5
  286. package/components/upload/UploadInfo.js.map +1 -1
  287. package/components/upload/UploadVerify.d.ts +4 -2
  288. package/components/upload/UploadVerify.js +32 -4
  289. package/components/upload/UploadVerify.js.map +1 -1
  290. package/components/upload/style/dnb-upload.css +15 -0
  291. package/components/upload/style/dnb-upload.min.css +1 -1
  292. package/components/upload/style/dnb-upload.scss +17 -0
  293. package/components/upload/types.d.ts +9 -3
  294. package/components/upload/types.js.map +1 -1
  295. package/es/components/autocomplete/Autocomplete.d.ts +2 -2
  296. package/es/components/autocomplete/AutocompleteDocs.js +7 -7
  297. package/es/components/autocomplete/AutocompleteDocs.js.map +1 -1
  298. package/es/components/button/Button.d.ts +1 -1
  299. package/es/components/button/Button.js +6 -5
  300. package/es/components/button/Button.js.map +1 -1
  301. package/es/components/checkbox/style/dnb-checkbox.scss +1 -1
  302. package/es/components/input-masked/InputMaskedHooks.js +4 -0
  303. package/es/components/input-masked/InputMaskedHooks.js.map +1 -1
  304. package/es/components/radio/style/dnb-radio.scss +1 -1
  305. package/es/components/space/Space.d.ts +1 -1
  306. package/es/components/space/Space.js.map +1 -1
  307. package/es/components/table/TableStickyHeader.js.map +1 -1
  308. package/es/components/table/table-accordion/TableAccordionHead.js.map +1 -1
  309. package/es/components/table/table-navigation/TableNavigationHead.js +1 -1
  310. package/es/components/table/table-navigation/TableNavigationHead.js.map +1 -1
  311. package/es/components/upload/Upload.js +2 -1
  312. package/es/components/upload/Upload.js.map +1 -1
  313. package/es/components/upload/UploadDocs.d.ts +1 -0
  314. package/es/components/upload/UploadDocs.js +16 -4
  315. package/es/components/upload/UploadDocs.js.map +1 -1
  316. package/es/components/upload/UploadInfo.js +57 -5
  317. package/es/components/upload/UploadInfo.js.map +1 -1
  318. package/es/components/upload/UploadVerify.d.ts +4 -2
  319. package/es/components/upload/UploadVerify.js +32 -4
  320. package/es/components/upload/UploadVerify.js.map +1 -1
  321. package/es/components/upload/style/dnb-upload.css +15 -0
  322. package/es/components/upload/style/dnb-upload.min.css +1 -1
  323. package/es/components/upload/style/dnb-upload.scss +17 -0
  324. package/es/components/upload/types.d.ts +9 -3
  325. package/es/components/upload/types.js.map +1 -1
  326. package/es/extensions/forms/DataContext/Context.d.ts +9 -3
  327. package/es/extensions/forms/DataContext/Context.js.map +1 -1
  328. package/es/extensions/forms/DataContext/FieldBoundary/FieldBoundaryContext.d.ts +8 -0
  329. package/es/extensions/forms/DataContext/FieldBoundary/FieldBoundaryContext.js.map +1 -1
  330. package/es/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js +9 -1
  331. package/es/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js.map +1 -1
  332. package/es/extensions/forms/DataContext/Provider/Provider.d.ts +5 -12
  333. package/es/extensions/forms/DataContext/Provider/Provider.js +56 -18
  334. package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  335. package/es/extensions/forms/DataContext/Provider/ProviderDocs.js +6 -1
  336. package/es/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
  337. package/es/extensions/forms/Field/ArraySelection/ArraySelection.d.ts +2 -1
  338. package/es/extensions/forms/Field/ArraySelection/ArraySelection.js +28 -24
  339. package/es/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
  340. package/es/extensions/forms/Field/Currency/CurrencyDocs.d.ts +2 -0
  341. package/es/extensions/forms/Field/Currency/CurrencyDocs.js +22 -0
  342. package/es/extensions/forms/Field/Currency/CurrencyDocs.js.map +1 -0
  343. package/es/extensions/forms/Field/Expiry/Expiry.d.ts +1 -1
  344. package/es/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
  345. package/es/extensions/forms/Field/FieldDocs.d.ts +7 -0
  346. package/es/extensions/forms/Field/FieldDocs.js +16 -0
  347. package/es/extensions/forms/Field/FieldDocs.js.map +1 -1
  348. package/es/extensions/forms/Field/Name/Name.js +2 -2
  349. package/es/extensions/forms/Field/Name/Name.js.map +1 -1
  350. package/es/extensions/forms/Field/Number/Number.js +7 -12
  351. package/es/extensions/forms/Field/Number/Number.js.map +1 -1
  352. package/es/extensions/forms/Field/Option/Option.d.ts +2 -4
  353. package/es/extensions/forms/Field/Option/Option.js +0 -20
  354. package/es/extensions/forms/Field/Option/Option.js.map +1 -1
  355. package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.d.ts +5 -2
  356. package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.js +32 -15
  357. package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  358. package/es/extensions/forms/Field/PhoneNumber/PhoneNumberDocs.d.ts +3 -0
  359. package/es/extensions/forms/Field/PhoneNumber/PhoneNumberDocs.js +20 -0
  360. package/es/extensions/forms/Field/PhoneNumber/PhoneNumberDocs.js.map +1 -0
  361. package/es/extensions/forms/Field/SelectCountry/SelectCountry.d.ts +2 -2
  362. package/es/extensions/forms/Field/SelectCountry/SelectCountry.js +16 -3
  363. package/es/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
  364. package/es/extensions/forms/Field/SelectCountry/SelectCountryDocs.d.ts +1 -0
  365. package/es/extensions/forms/Field/SelectCountry/SelectCountryDocs.js +9 -0
  366. package/es/extensions/forms/Field/SelectCountry/SelectCountryDocs.js.map +1 -0
  367. package/es/extensions/forms/Field/Selection/Selection.d.ts +42 -15
  368. package/es/extensions/forms/Field/Selection/Selection.js +86 -28
  369. package/es/extensions/forms/Field/Selection/Selection.js.map +1 -1
  370. package/es/extensions/forms/Field/Selection/SelectionDocs.js +10 -0
  371. package/es/extensions/forms/Field/Selection/SelectionDocs.js.map +1 -1
  372. package/es/extensions/forms/Field/Toggle/Toggle.js +1 -1
  373. package/es/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  374. package/es/extensions/forms/FieldBlock/FieldBlock.js +3 -3
  375. package/es/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  376. package/es/extensions/forms/Form/Element/Element.js +9 -9
  377. package/es/extensions/forms/Form/Element/Element.js.map +1 -1
  378. package/es/extensions/forms/Form/Handler/Handler.d.ts +1 -1
  379. package/es/extensions/forms/Form/Handler/Handler.js +3 -1
  380. package/es/extensions/forms/Form/Handler/Handler.js.map +1 -1
  381. package/es/extensions/forms/Form/Isolation/Isolation.d.ts +26 -5
  382. package/es/extensions/forms/Form/Isolation/Isolation.js +85 -27
  383. package/es/extensions/forms/Form/Isolation/Isolation.js.map +1 -1
  384. package/es/extensions/forms/Form/Isolation/IsolationCommitButton.js +1 -0
  385. package/es/extensions/forms/Form/Isolation/IsolationCommitButton.js.map +1 -1
  386. package/es/extensions/forms/Form/Isolation/IsolationDocs.js +11 -1
  387. package/es/extensions/forms/Form/Isolation/IsolationDocs.js.map +1 -1
  388. package/es/extensions/forms/Form/Section/EditContainer/EditToolbarTools.js +13 -5
  389. package/es/extensions/forms/Form/Section/EditContainer/EditToolbarTools.js.map +1 -1
  390. package/es/extensions/forms/Form/Section/EditContainer/useContainerDataStore.js +10 -11
  391. package/es/extensions/forms/Form/Section/EditContainer/useContainerDataStore.js.map +1 -1
  392. package/es/extensions/forms/Form/Section/Section.js +2 -2
  393. package/es/extensions/forms/Form/Section/Section.js.map +1 -1
  394. package/es/extensions/forms/Form/data-context/clearData.d.ts +1 -0
  395. package/es/extensions/forms/Form/data-context/clearData.js +10 -0
  396. package/es/extensions/forms/Form/data-context/clearData.js.map +1 -0
  397. package/es/extensions/forms/Form/index.d.ts +1 -0
  398. package/es/extensions/forms/Form/index.js +1 -0
  399. package/es/extensions/forms/Form/index.js.map +1 -1
  400. package/es/extensions/forms/Iterate/AnimatedContainer/AnimatedContainer.js +3 -3
  401. package/es/extensions/forms/Iterate/AnimatedContainer/AnimatedContainer.js.map +1 -1
  402. package/es/extensions/forms/Iterate/AnimatedContainer/ElementBlock.js +2 -2
  403. package/es/extensions/forms/Iterate/AnimatedContainer/ElementBlock.js.map +1 -1
  404. package/es/extensions/forms/Iterate/Array/Array.js +7 -5
  405. package/es/extensions/forms/Iterate/Array/Array.js.map +1 -1
  406. package/es/extensions/forms/Iterate/Array/types.d.ts +1 -4
  407. package/es/extensions/forms/Iterate/Array/types.js.map +1 -1
  408. package/es/extensions/forms/Iterate/EditContainer/EditContainer.d.ts +1 -3
  409. package/es/extensions/forms/Iterate/EditContainer/EditContainer.js +26 -20
  410. package/es/extensions/forms/Iterate/EditContainer/EditContainer.js.map +1 -1
  411. package/es/extensions/forms/Iterate/EditContainer/EditContainerDocs.js +10 -0
  412. package/es/extensions/forms/Iterate/EditContainer/EditContainerDocs.js.map +1 -1
  413. package/es/extensions/forms/Iterate/EditContainer/EditToolbarTools.js +44 -14
  414. package/es/extensions/forms/Iterate/EditContainer/EditToolbarTools.js.map +1 -1
  415. package/{extensions/forms/Iterate/IterateElementContext.d.ts → es/extensions/forms/Iterate/IterateItemContext.d.ts} +3 -3
  416. package/es/extensions/forms/Iterate/IterateItemContext.js +4 -0
  417. package/es/extensions/forms/Iterate/IterateItemContext.js.map +1 -0
  418. package/es/extensions/forms/Iterate/PushButton/PushButton.js +3 -3
  419. package/es/extensions/forms/Iterate/PushButton/PushButton.js.map +1 -1
  420. package/es/extensions/forms/Iterate/PushButton/PushButtonDocs.js +5 -0
  421. package/es/extensions/forms/Iterate/PushButton/PushButtonDocs.js.map +1 -1
  422. package/es/extensions/forms/Iterate/PushContainer/OpenButton.d.ts +4 -0
  423. package/es/extensions/forms/Iterate/PushContainer/OpenButton.js +32 -0
  424. package/es/extensions/forms/Iterate/PushContainer/OpenButton.js.map +1 -0
  425. package/es/extensions/forms/Iterate/PushContainer/PushContainer.d.ts +37 -0
  426. package/es/extensions/forms/Iterate/PushContainer/PushContainer.js +80 -0
  427. package/es/extensions/forms/Iterate/PushContainer/PushContainer.js.map +1 -0
  428. package/es/extensions/forms/Iterate/PushContainer/PushContainerContext.d.ts +11 -0
  429. package/es/extensions/forms/Iterate/PushContainer/PushContainerContext.js +6 -0
  430. package/es/extensions/forms/Iterate/PushContainer/PushContainerContext.js.map +1 -0
  431. package/es/extensions/forms/Iterate/PushContainer/PushContainerDocs.d.ts +3 -0
  432. package/es/extensions/forms/Iterate/PushContainer/PushContainerDocs.js +34 -0
  433. package/es/extensions/forms/Iterate/PushContainer/PushContainerDocs.js.map +1 -0
  434. package/es/extensions/forms/Iterate/PushContainer/index.d.ts +2 -0
  435. package/es/extensions/forms/Iterate/PushContainer/index.js +3 -0
  436. package/es/extensions/forms/Iterate/PushContainer/index.js.map +1 -0
  437. package/es/extensions/forms/Iterate/RemoveButton/RemoveButton.js +4 -4
  438. package/es/extensions/forms/Iterate/RemoveButton/RemoveButton.js.map +1 -1
  439. package/es/extensions/forms/Iterate/ViewContainer/ViewContainer.d.ts +4 -0
  440. package/es/extensions/forms/Iterate/ViewContainer/ViewContainer.js +15 -6
  441. package/es/extensions/forms/Iterate/ViewContainer/ViewContainer.js.map +1 -1
  442. package/es/extensions/forms/Iterate/ViewContainer/ViewContainerDocs.js +5 -0
  443. package/es/extensions/forms/Iterate/ViewContainer/ViewContainerDocs.js.map +1 -1
  444. package/es/extensions/forms/Iterate/ViewContainer/ViewToolbarTools.js +3 -3
  445. package/es/extensions/forms/Iterate/ViewContainer/ViewToolbarTools.js.map +1 -1
  446. package/es/extensions/forms/Iterate/hooks/useItem.d.ts +1 -0
  447. package/es/extensions/forms/Iterate/hooks/useItem.js +9 -0
  448. package/es/extensions/forms/Iterate/hooks/useItem.js.map +1 -0
  449. package/es/extensions/forms/Iterate/index.d.ts +3 -1
  450. package/es/extensions/forms/Iterate/index.js +3 -1
  451. package/es/extensions/forms/Iterate/index.js.map +1 -1
  452. package/es/extensions/forms/Iterate/style/dnb-iterate.css +1 -1
  453. package/es/extensions/forms/Iterate/style/dnb-iterate.min.css +1 -1
  454. package/es/extensions/forms/Iterate/style/dnb-iterate.scss +1 -1
  455. package/es/extensions/forms/Value/ArraySelection/ArraySelection.d.ts +19 -0
  456. package/es/extensions/forms/Value/ArraySelection/ArraySelection.js +66 -0
  457. package/es/extensions/forms/Value/ArraySelection/ArraySelection.js.map +1 -0
  458. package/es/extensions/forms/Value/ArraySelection/ArraySelectionDocs.d.ts +2 -0
  459. package/es/extensions/forms/Value/ArraySelection/ArraySelectionDocs.js +8 -0
  460. package/es/extensions/forms/Value/ArraySelection/ArraySelectionDocs.js.map +1 -0
  461. package/es/extensions/forms/Value/ArraySelection/index.d.ts +2 -0
  462. package/es/extensions/forms/Value/ArraySelection/index.js +3 -0
  463. package/es/extensions/forms/Value/ArraySelection/index.js.map +1 -0
  464. package/es/extensions/forms/Value/Selection/Selection.d.ts +9 -0
  465. package/es/extensions/forms/Value/Selection/Selection.js +48 -0
  466. package/es/extensions/forms/Value/Selection/Selection.js.map +1 -0
  467. package/es/extensions/forms/Value/Selection/SelectionDocs.d.ts +2 -0
  468. package/es/extensions/forms/Value/Selection/SelectionDocs.js +8 -0
  469. package/es/extensions/forms/Value/Selection/SelectionDocs.js.map +1 -0
  470. package/es/extensions/forms/Value/Selection/index.d.ts +2 -0
  471. package/es/extensions/forms/Value/Selection/index.js +3 -0
  472. package/es/extensions/forms/Value/Selection/index.js.map +1 -0
  473. package/es/extensions/forms/Value/ValueDocs.js +6 -1
  474. package/es/extensions/forms/Value/ValueDocs.js.map +1 -1
  475. package/es/extensions/forms/Value/index.d.ts +2 -0
  476. package/es/extensions/forms/Value/index.js +2 -0
  477. package/es/extensions/forms/Value/index.js.map +1 -1
  478. package/es/extensions/forms/ValueBlock/ValueBlock.js +3 -3
  479. package/es/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
  480. package/es/extensions/forms/Wizard/Container/WizardContainer.js +16 -1
  481. package/es/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  482. package/es/extensions/forms/Wizard/Context/WizardContext.d.ts +1 -0
  483. package/es/extensions/forms/Wizard/Context/WizardContext.js.map +1 -1
  484. package/es/extensions/forms/constants/locales/en-GB.d.ts +7 -0
  485. package/es/extensions/forms/constants/locales/en-GB.js +7 -0
  486. package/es/extensions/forms/constants/locales/en-GB.js.map +1 -1
  487. package/es/extensions/forms/constants/locales/en-US.d.ts +7 -0
  488. package/es/extensions/forms/constants/locales/index.d.ts +14 -0
  489. package/es/extensions/forms/constants/locales/nb-NO.d.ts +7 -0
  490. package/es/extensions/forms/constants/locales/nb-NO.js +7 -0
  491. package/es/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  492. package/es/extensions/forms/hooks/DataValueDocs.js +4 -4
  493. package/es/extensions/forms/hooks/DataValueDocs.js.map +1 -1
  494. package/es/extensions/forms/hooks/useDataValue.d.ts +2 -0
  495. package/es/extensions/forms/hooks/useDataValue.js +29 -13
  496. package/es/extensions/forms/hooks/useDataValue.js.map +1 -1
  497. package/es/extensions/forms/hooks/useExternalValue.js +4 -4
  498. package/es/extensions/forms/hooks/useExternalValue.js.map +1 -1
  499. package/es/extensions/forms/hooks/useFieldProps.d.ts +5 -5
  500. package/es/extensions/forms/hooks/useFieldProps.js +49 -31
  501. package/es/extensions/forms/hooks/useFieldProps.js.map +1 -1
  502. package/es/extensions/forms/hooks/usePath.js +2 -2
  503. package/es/extensions/forms/hooks/usePath.js.map +1 -1
  504. package/es/extensions/forms/hooks/useValueProps.js +4 -1
  505. package/es/extensions/forms/hooks/useValueProps.js.map +1 -1
  506. package/es/extensions/forms/style/dnb-forms.css +1 -1
  507. package/es/extensions/forms/style/dnb-forms.min.css +1 -1
  508. package/es/extensions/forms/types.d.ts +20 -7
  509. package/es/extensions/forms/types.js.map +1 -1
  510. package/es/shared/Eufemia.d.ts +1 -1
  511. package/es/shared/Eufemia.js +2 -2
  512. package/es/shared/Eufemia.js.map +1 -1
  513. package/es/shared/helpers/isAsync.js +2 -2
  514. package/es/shared/helpers/isAsync.js.map +1 -1
  515. package/es/shared/locales/en-GB.d.ts +1 -0
  516. package/es/shared/locales/en-GB.js +1 -0
  517. package/es/shared/locales/en-GB.js.map +1 -1
  518. package/es/shared/locales/en-US.d.ts +1 -0
  519. package/es/shared/locales/index.d.ts +2 -0
  520. package/es/shared/locales/nb-NO.d.ts +1 -0
  521. package/es/shared/locales/nb-NO.js +2 -1
  522. package/es/shared/locales/nb-NO.js.map +1 -1
  523. package/es/shared/useTheme.d.ts +4 -10
  524. package/es/shared/useTheme.js +7 -5
  525. package/es/shared/useTheme.js.map +1 -1
  526. package/es/style/core/scopes.scss +1 -1
  527. package/es/style/dnb-ui-basis.css +1 -1
  528. package/es/style/dnb-ui-basis.min.css +1 -1
  529. package/es/style/dnb-ui-body.css +1 -1
  530. package/es/style/dnb-ui-body.min.css +1 -1
  531. package/es/style/dnb-ui-components.css +16 -1
  532. package/es/style/dnb-ui-components.min.css +2 -2
  533. package/es/style/dnb-ui-core.css +1 -1
  534. package/es/style/dnb-ui-core.min.css +1 -1
  535. package/es/style/dnb-ui-extensions.css +1 -1
  536. package/es/style/dnb-ui-extensions.min.css +1 -1
  537. package/es/style/dnb-ui-forms.css +1 -1
  538. package/es/style/dnb-ui-forms.min.css +1 -1
  539. package/es/style/themes/theme-eiendom/eiendom-theme-components.css +17 -2
  540. package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  541. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.css +1 -1
  542. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  543. package/es/style/themes/theme-eiendom/eiendom-theme-forms.css +1 -1
  544. package/es/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  545. package/es/style/themes/theme-sbanken/sbanken-theme-components.css +17 -2
  546. package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  547. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.css +1 -1
  548. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  549. package/es/style/themes/theme-sbanken/sbanken-theme-forms.css +1 -1
  550. package/es/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  551. package/es/style/themes/theme-ui/ui-theme-components.css +17 -2
  552. package/es/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  553. package/es/style/themes/theme-ui/ui-theme-extensions.css +1 -1
  554. package/es/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  555. package/es/style/themes/theme-ui/ui-theme-forms.css +1 -1
  556. package/es/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  557. package/esm/dnb-ui-basis.min.mjs +1 -1
  558. package/esm/dnb-ui-components.min.mjs +1 -1
  559. package/esm/dnb-ui-elements.min.mjs +1 -1
  560. package/esm/dnb-ui-extensions.min.mjs +5 -5
  561. package/esm/dnb-ui-lib.min.mjs +1 -1
  562. package/extensions/forms/DataContext/Context.d.ts +9 -3
  563. package/extensions/forms/DataContext/Context.js.map +1 -1
  564. package/extensions/forms/DataContext/FieldBoundary/FieldBoundaryContext.d.ts +8 -0
  565. package/extensions/forms/DataContext/FieldBoundary/FieldBoundaryContext.js.map +1 -1
  566. package/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js +9 -1
  567. package/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js.map +1 -1
  568. package/extensions/forms/DataContext/Provider/Provider.d.ts +5 -12
  569. package/extensions/forms/DataContext/Provider/Provider.js +56 -18
  570. package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  571. package/extensions/forms/DataContext/Provider/ProviderDocs.js +6 -1
  572. package/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
  573. package/extensions/forms/Field/ArraySelection/ArraySelection.d.ts +2 -1
  574. package/extensions/forms/Field/ArraySelection/ArraySelection.js +28 -24
  575. package/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
  576. package/extensions/forms/Field/Currency/CurrencyDocs.d.ts +2 -0
  577. package/extensions/forms/Field/Currency/CurrencyDocs.js +22 -0
  578. package/extensions/forms/Field/Currency/CurrencyDocs.js.map +1 -0
  579. package/extensions/forms/Field/Expiry/Expiry.d.ts +1 -1
  580. package/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
  581. package/extensions/forms/Field/FieldDocs.d.ts +7 -0
  582. package/extensions/forms/Field/FieldDocs.js +18 -0
  583. package/extensions/forms/Field/FieldDocs.js.map +1 -1
  584. package/extensions/forms/Field/Name/Name.js +2 -2
  585. package/extensions/forms/Field/Name/Name.js.map +1 -1
  586. package/extensions/forms/Field/Number/Number.js +7 -12
  587. package/extensions/forms/Field/Number/Number.js.map +1 -1
  588. package/extensions/forms/Field/Option/Option.d.ts +2 -4
  589. package/extensions/forms/Field/Option/Option.js +0 -20
  590. package/extensions/forms/Field/Option/Option.js.map +1 -1
  591. package/extensions/forms/Field/PhoneNumber/PhoneNumber.d.ts +5 -2
  592. package/extensions/forms/Field/PhoneNumber/PhoneNumber.js +33 -15
  593. package/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  594. package/extensions/forms/Field/PhoneNumber/PhoneNumberDocs.d.ts +3 -0
  595. package/extensions/forms/Field/PhoneNumber/PhoneNumberDocs.js +20 -0
  596. package/extensions/forms/Field/PhoneNumber/PhoneNumberDocs.js.map +1 -0
  597. package/extensions/forms/Field/SelectCountry/SelectCountry.d.ts +2 -2
  598. package/extensions/forms/Field/SelectCountry/SelectCountry.js +32 -16
  599. package/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
  600. package/extensions/forms/Field/SelectCountry/SelectCountryDocs.d.ts +1 -0
  601. package/extensions/forms/Field/SelectCountry/SelectCountryDocs.js +9 -0
  602. package/extensions/forms/Field/SelectCountry/SelectCountryDocs.js.map +1 -0
  603. package/extensions/forms/Field/Selection/Selection.d.ts +42 -15
  604. package/extensions/forms/Field/Selection/Selection.js +90 -28
  605. package/extensions/forms/Field/Selection/Selection.js.map +1 -1
  606. package/extensions/forms/Field/Selection/SelectionDocs.js +10 -0
  607. package/extensions/forms/Field/Selection/SelectionDocs.js.map +1 -1
  608. package/extensions/forms/Field/Toggle/Toggle.js +1 -1
  609. package/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  610. package/extensions/forms/FieldBlock/FieldBlock.js +3 -3
  611. package/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  612. package/extensions/forms/Form/Element/Element.js +9 -9
  613. package/extensions/forms/Form/Element/Element.js.map +1 -1
  614. package/extensions/forms/Form/Handler/Handler.d.ts +1 -1
  615. package/extensions/forms/Form/Handler/Handler.js +3 -1
  616. package/extensions/forms/Form/Handler/Handler.js.map +1 -1
  617. package/extensions/forms/Form/Isolation/Isolation.d.ts +26 -5
  618. package/extensions/forms/Form/Isolation/Isolation.js +85 -27
  619. package/extensions/forms/Form/Isolation/Isolation.js.map +1 -1
  620. package/extensions/forms/Form/Isolation/IsolationCommitButton.js +1 -0
  621. package/extensions/forms/Form/Isolation/IsolationCommitButton.js.map +1 -1
  622. package/extensions/forms/Form/Isolation/IsolationDocs.js +11 -1
  623. package/extensions/forms/Form/Isolation/IsolationDocs.js.map +1 -1
  624. package/extensions/forms/Form/Section/EditContainer/EditToolbarTools.js +13 -5
  625. package/extensions/forms/Form/Section/EditContainer/EditToolbarTools.js.map +1 -1
  626. package/extensions/forms/Form/Section/EditContainer/useContainerDataStore.js +10 -11
  627. package/extensions/forms/Form/Section/EditContainer/useContainerDataStore.js.map +1 -1
  628. package/extensions/forms/Form/Section/Section.js +2 -2
  629. package/extensions/forms/Form/Section/Section.js.map +1 -1
  630. package/extensions/forms/Form/data-context/clearData.d.ts +1 -0
  631. package/extensions/forms/Form/data-context/clearData.js +10 -0
  632. package/extensions/forms/Form/data-context/clearData.js.map +1 -0
  633. package/extensions/forms/Form/index.d.ts +1 -0
  634. package/extensions/forms/Form/index.js +1 -0
  635. package/extensions/forms/Form/index.js.map +1 -1
  636. package/extensions/forms/Iterate/AnimatedContainer/AnimatedContainer.js +3 -3
  637. package/extensions/forms/Iterate/AnimatedContainer/AnimatedContainer.js.map +1 -1
  638. package/extensions/forms/Iterate/AnimatedContainer/ElementBlock.js +2 -2
  639. package/extensions/forms/Iterate/AnimatedContainer/ElementBlock.js.map +1 -1
  640. package/extensions/forms/Iterate/Array/Array.js +7 -5
  641. package/extensions/forms/Iterate/Array/Array.js.map +1 -1
  642. package/extensions/forms/Iterate/Array/types.d.ts +1 -4
  643. package/extensions/forms/Iterate/Array/types.js.map +1 -1
  644. package/extensions/forms/Iterate/EditContainer/EditContainer.d.ts +1 -3
  645. package/extensions/forms/Iterate/EditContainer/EditContainer.js +26 -20
  646. package/extensions/forms/Iterate/EditContainer/EditContainer.js.map +1 -1
  647. package/extensions/forms/Iterate/EditContainer/EditContainerDocs.js +10 -0
  648. package/extensions/forms/Iterate/EditContainer/EditContainerDocs.js.map +1 -1
  649. package/extensions/forms/Iterate/EditContainer/EditToolbarTools.js +44 -14
  650. package/extensions/forms/Iterate/EditContainer/EditToolbarTools.js.map +1 -1
  651. package/{es/extensions/forms/Iterate/IterateElementContext.d.ts → extensions/forms/Iterate/IterateItemContext.d.ts} +3 -3
  652. package/extensions/forms/Iterate/IterateItemContext.js +4 -0
  653. package/extensions/forms/Iterate/IterateItemContext.js.map +1 -0
  654. package/extensions/forms/Iterate/PushButton/PushButton.js +3 -3
  655. package/extensions/forms/Iterate/PushButton/PushButton.js.map +1 -1
  656. package/extensions/forms/Iterate/PushButton/PushButtonDocs.js +5 -0
  657. package/extensions/forms/Iterate/PushButton/PushButtonDocs.js.map +1 -1
  658. package/extensions/forms/Iterate/PushContainer/OpenButton.d.ts +4 -0
  659. package/extensions/forms/Iterate/PushContainer/OpenButton.js +32 -0
  660. package/extensions/forms/Iterate/PushContainer/OpenButton.js.map +1 -0
  661. package/extensions/forms/Iterate/PushContainer/PushContainer.d.ts +37 -0
  662. package/extensions/forms/Iterate/PushContainer/PushContainer.js +83 -0
  663. package/extensions/forms/Iterate/PushContainer/PushContainer.js.map +1 -0
  664. package/extensions/forms/Iterate/PushContainer/PushContainerContext.d.ts +11 -0
  665. package/extensions/forms/Iterate/PushContainer/PushContainerContext.js +6 -0
  666. package/extensions/forms/Iterate/PushContainer/PushContainerContext.js.map +1 -0
  667. package/extensions/forms/Iterate/PushContainer/PushContainerDocs.d.ts +3 -0
  668. package/extensions/forms/Iterate/PushContainer/PushContainerDocs.js +34 -0
  669. package/extensions/forms/Iterate/PushContainer/PushContainerDocs.js.map +1 -0
  670. package/extensions/forms/Iterate/PushContainer/index.d.ts +2 -0
  671. package/extensions/forms/Iterate/PushContainer/index.js +3 -0
  672. package/extensions/forms/Iterate/PushContainer/index.js.map +1 -0
  673. package/extensions/forms/Iterate/RemoveButton/RemoveButton.js +4 -4
  674. package/extensions/forms/Iterate/RemoveButton/RemoveButton.js.map +1 -1
  675. package/extensions/forms/Iterate/ViewContainer/ViewContainer.d.ts +4 -0
  676. package/extensions/forms/Iterate/ViewContainer/ViewContainer.js +15 -6
  677. package/extensions/forms/Iterate/ViewContainer/ViewContainer.js.map +1 -1
  678. package/extensions/forms/Iterate/ViewContainer/ViewContainerDocs.js +5 -0
  679. package/extensions/forms/Iterate/ViewContainer/ViewContainerDocs.js.map +1 -1
  680. package/extensions/forms/Iterate/ViewContainer/ViewToolbarTools.js +3 -3
  681. package/extensions/forms/Iterate/ViewContainer/ViewToolbarTools.js.map +1 -1
  682. package/extensions/forms/Iterate/hooks/useItem.d.ts +1 -0
  683. package/extensions/forms/Iterate/hooks/useItem.js +9 -0
  684. package/extensions/forms/Iterate/hooks/useItem.js.map +1 -0
  685. package/extensions/forms/Iterate/index.d.ts +3 -1
  686. package/extensions/forms/Iterate/index.js +3 -1
  687. package/extensions/forms/Iterate/index.js.map +1 -1
  688. package/extensions/forms/Iterate/style/dnb-iterate.css +1 -1
  689. package/extensions/forms/Iterate/style/dnb-iterate.min.css +1 -1
  690. package/extensions/forms/Iterate/style/dnb-iterate.scss +1 -1
  691. package/extensions/forms/Value/ArraySelection/ArraySelection.d.ts +19 -0
  692. package/extensions/forms/Value/ArraySelection/ArraySelection.js +70 -0
  693. package/extensions/forms/Value/ArraySelection/ArraySelection.js.map +1 -0
  694. package/extensions/forms/Value/ArraySelection/ArraySelectionDocs.d.ts +2 -0
  695. package/extensions/forms/Value/ArraySelection/ArraySelectionDocs.js +8 -0
  696. package/extensions/forms/Value/ArraySelection/ArraySelectionDocs.js.map +1 -0
  697. package/extensions/forms/Value/ArraySelection/index.d.ts +2 -0
  698. package/extensions/forms/Value/ArraySelection/index.js +3 -0
  699. package/extensions/forms/Value/ArraySelection/index.js.map +1 -0
  700. package/extensions/forms/Value/Selection/Selection.d.ts +9 -0
  701. package/extensions/forms/Value/Selection/Selection.js +48 -0
  702. package/extensions/forms/Value/Selection/Selection.js.map +1 -0
  703. package/extensions/forms/Value/Selection/SelectionDocs.d.ts +2 -0
  704. package/extensions/forms/Value/Selection/SelectionDocs.js +8 -0
  705. package/extensions/forms/Value/Selection/SelectionDocs.js.map +1 -0
  706. package/extensions/forms/Value/Selection/index.d.ts +2 -0
  707. package/extensions/forms/Value/Selection/index.js +3 -0
  708. package/extensions/forms/Value/Selection/index.js.map +1 -0
  709. package/extensions/forms/Value/ValueDocs.js +6 -1
  710. package/extensions/forms/Value/ValueDocs.js.map +1 -1
  711. package/extensions/forms/Value/index.d.ts +2 -0
  712. package/extensions/forms/Value/index.js +2 -0
  713. package/extensions/forms/Value/index.js.map +1 -1
  714. package/extensions/forms/ValueBlock/ValueBlock.js +3 -3
  715. package/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
  716. package/extensions/forms/Wizard/Container/WizardContainer.js +27 -11
  717. package/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  718. package/extensions/forms/Wizard/Context/WizardContext.d.ts +1 -0
  719. package/extensions/forms/Wizard/Context/WizardContext.js.map +1 -1
  720. package/extensions/forms/constants/locales/en-GB.d.ts +7 -0
  721. package/extensions/forms/constants/locales/en-GB.js +7 -0
  722. package/extensions/forms/constants/locales/en-GB.js.map +1 -1
  723. package/extensions/forms/constants/locales/en-US.d.ts +7 -0
  724. package/extensions/forms/constants/locales/index.d.ts +14 -0
  725. package/extensions/forms/constants/locales/nb-NO.d.ts +7 -0
  726. package/extensions/forms/constants/locales/nb-NO.js +7 -0
  727. package/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  728. package/extensions/forms/hooks/DataValueDocs.js +4 -4
  729. package/extensions/forms/hooks/DataValueDocs.js.map +1 -1
  730. package/extensions/forms/hooks/useDataValue.d.ts +2 -0
  731. package/extensions/forms/hooks/useDataValue.js +29 -13
  732. package/extensions/forms/hooks/useDataValue.js.map +1 -1
  733. package/extensions/forms/hooks/useExternalValue.js +4 -4
  734. package/extensions/forms/hooks/useExternalValue.js.map +1 -1
  735. package/extensions/forms/hooks/useFieldProps.d.ts +5 -5
  736. package/extensions/forms/hooks/useFieldProps.js +49 -31
  737. package/extensions/forms/hooks/useFieldProps.js.map +1 -1
  738. package/extensions/forms/hooks/usePath.js +2 -2
  739. package/extensions/forms/hooks/usePath.js.map +1 -1
  740. package/extensions/forms/hooks/useValueProps.js +4 -1
  741. package/extensions/forms/hooks/useValueProps.js.map +1 -1
  742. package/extensions/forms/style/dnb-forms.css +1 -1
  743. package/extensions/forms/style/dnb-forms.min.css +1 -1
  744. package/extensions/forms/types.d.ts +20 -7
  745. package/extensions/forms/types.js.map +1 -1
  746. package/package.json +1 -1
  747. package/shared/Eufemia.d.ts +1 -1
  748. package/shared/Eufemia.js +2 -2
  749. package/shared/Eufemia.js.map +1 -1
  750. package/shared/helpers/isAsync.js +2 -2
  751. package/shared/helpers/isAsync.js.map +1 -1
  752. package/shared/locales/en-GB.d.ts +1 -0
  753. package/shared/locales/en-GB.js +1 -0
  754. package/shared/locales/en-GB.js.map +1 -1
  755. package/shared/locales/en-US.d.ts +1 -0
  756. package/shared/locales/index.d.ts +2 -0
  757. package/shared/locales/nb-NO.d.ts +1 -0
  758. package/shared/locales/nb-NO.js +2 -1
  759. package/shared/locales/nb-NO.js.map +1 -1
  760. package/shared/useTheme.d.ts +4 -10
  761. package/shared/useTheme.js +7 -5
  762. package/shared/useTheme.js.map +1 -1
  763. package/style/core/scopes.scss +1 -1
  764. package/style/dnb-ui-basis.css +1 -1
  765. package/style/dnb-ui-basis.min.css +1 -1
  766. package/style/dnb-ui-body.css +1 -1
  767. package/style/dnb-ui-body.min.css +1 -1
  768. package/style/dnb-ui-components.css +16 -1
  769. package/style/dnb-ui-components.min.css +2 -2
  770. package/style/dnb-ui-core.css +1 -1
  771. package/style/dnb-ui-core.min.css +1 -1
  772. package/style/dnb-ui-extensions.css +1 -1
  773. package/style/dnb-ui-extensions.min.css +1 -1
  774. package/style/dnb-ui-forms.css +1 -1
  775. package/style/dnb-ui-forms.min.css +1 -1
  776. package/style/themes/theme-eiendom/eiendom-theme-components.css +17 -2
  777. package/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  778. package/style/themes/theme-eiendom/eiendom-theme-extensions.css +1 -1
  779. package/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  780. package/style/themes/theme-eiendom/eiendom-theme-forms.css +1 -1
  781. package/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  782. package/style/themes/theme-sbanken/sbanken-theme-components.css +17 -2
  783. package/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  784. package/style/themes/theme-sbanken/sbanken-theme-extensions.css +1 -1
  785. package/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  786. package/style/themes/theme-sbanken/sbanken-theme-forms.css +1 -1
  787. package/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  788. package/style/themes/theme-ui/ui-theme-components.css +17 -2
  789. package/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  790. package/style/themes/theme-ui/ui-theme-extensions.css +1 -1
  791. package/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  792. package/style/themes/theme-ui/ui-theme-forms.css +1 -1
  793. package/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  794. package/umd/dnb-ui-basis.min.js +1 -1
  795. package/umd/dnb-ui-components.min.js +1 -1
  796. package/umd/dnb-ui-elements.min.js +1 -1
  797. package/umd/dnb-ui-extensions.min.js +5 -5
  798. package/umd/dnb-ui-lib.min.js +1 -1
  799. package/cjs/extensions/forms/Iterate/IterateElementContext.js.map +0 -1
  800. package/es/extensions/forms/Iterate/IterateElementContext.js +0 -4
  801. package/es/extensions/forms/Iterate/IterateElementContext.js.map +0 -1
  802. package/extensions/forms/Iterate/IterateElementContext.js +0 -4
  803. package/extensions/forms/Iterate/IterateElementContext.js.map +0 -1
@@ -1,6 +1,7 @@
1
1
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
3
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
4
+ var _em, _em2;
4
5
  const _excluded = ["error", "title", "help", "children"];
5
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; }
6
7
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
@@ -8,12 +9,13 @@ import React, { useMemo, useCallback } from 'react';
8
9
  import classnames from 'classnames';
9
10
  import { makeUniqueId } from '../../../../shared/component-helper';
10
11
  import { ToggleButton, Dropdown, Radio, HelpButton, Autocomplete } from '../../../../components';
11
- import OptionField, { makeOptions } from '../Option';
12
+ import OptionField from '../Option';
12
13
  import { useFieldProps } from '../../hooks';
13
14
  import { pickSpacingProps } from '../../../../components/flex/utils';
14
15
  import FieldBlock from '../../FieldBlock';
15
16
  import { FormError } from '../../types';
16
17
  import { convertCamelCaseProps } from '../../../../shared/helpers/withCamelCaseProps';
18
+ import useDataValue from '../../hooks/useDataValue';
17
19
  function Selection(props) {
18
20
  const clearValue = useMemo(() => `clear-option-${makeUniqueId()}`, []);
19
21
  const {
@@ -37,11 +39,19 @@ function Selection(props) {
37
39
  htmlAttributes,
38
40
  setHasFocus,
39
41
  handleChange,
40
- children,
41
42
  data,
43
+ dataPath,
44
+ children,
42
45
  autocompleteProps,
43
46
  dropdownProps
44
47
  } = useFieldProps(props);
48
+ const {
49
+ getValueByPath
50
+ } = useDataValue();
51
+ let dataList = data;
52
+ if (dataPath) {
53
+ dataList = getValueByPath(dataPath);
54
+ }
45
55
  const handleDropdownChange = useCallback(_ref => {
46
56
  let {
47
57
  data
@@ -84,13 +94,7 @@ function Selection(props) {
84
94
  case 'button':
85
95
  {
86
96
  const Component = variant === 'radio' ? Radio : ToggleButton;
87
- return React.createElement(FieldBlock, fieldBlockProps, React.createElement(Component.Group, {
88
- className: cn,
89
- layout_direction: optionsLayout === 'horizontal' ? 'row' : 'column',
90
- disabled: disabled,
91
- on_change: onChangeHandler,
92
- value: String(value !== null && value !== void 0 ? value : '')
93
- }, getRadioOrToggleOptions({
97
+ const items = renderRadioItems({
94
98
  id,
95
99
  value,
96
100
  variant,
@@ -98,13 +102,24 @@ function Selection(props) {
98
102
  warning,
99
103
  htmlAttributes,
100
104
  children,
105
+ dataList,
101
106
  hasError
102
- })));
107
+ });
108
+ return React.createElement(FieldBlock, _extends({}, fieldBlockProps, {
109
+ asFieldset: React.Children.count(items) > 1
110
+ }), React.createElement(Component.Group, {
111
+ className: cn,
112
+ layout_direction: optionsLayout === 'horizontal' ? 'row' : 'column',
113
+ disabled: disabled,
114
+ on_change: onChangeHandler,
115
+ value: String(value !== null && value !== void 0 ? value : '')
116
+ }, items));
103
117
  }
104
118
  case 'autocomplete':
105
119
  case 'dropdown':
106
120
  {
107
121
  const status = getStatus(error, info, warning);
122
+ const data = renderDropdownItems(dataList).concat(makeOptions(children)).filter(Boolean);
108
123
  const sharedProps = _objectSpread(_objectSpread({
109
124
  id,
110
125
  list_class: 'dnb-forms-field-selection__list',
@@ -114,7 +129,7 @@ function Selection(props) {
114
129
  status: (hasError || status) && 'error',
115
130
  disabled
116
131
  }, htmlAttributes), {}, {
117
- data: data !== null && data !== void 0 ? data : makeOptions(children),
132
+ data,
118
133
  suffix: help ? React.createElement(HelpButton, {
119
134
  title: help.title
120
135
  }, help.content) : undefined,
@@ -133,7 +148,7 @@ export function getStatus(error, info, warning) {
133
148
  var _error$message;
134
149
  return (_error$message = error === null || error === void 0 ? void 0 : error.message) !== null && _error$message !== void 0 ? _error$message : warning instanceof Error && warning.message || warning instanceof FormError && warning.message || (warning === null || warning === void 0 ? void 0 : warning.toString()) || info instanceof Error && info.message || info instanceof FormError && info.message || (info === null || info === void 0 ? void 0 : info.toString());
135
150
  }
136
- export function getRadioOrToggleOptions(_ref5) {
151
+ function renderRadioItems(_ref5) {
137
152
  let {
138
153
  id,
139
154
  value,
@@ -142,10 +157,10 @@ export function getRadioOrToggleOptions(_ref5) {
142
157
  warning,
143
158
  htmlAttributes,
144
159
  children,
160
+ dataList,
145
161
  hasError
146
162
  } = _ref5;
147
- const optionsCount = React.Children.count(children);
148
- const Component = variant === 'radio' ? Radio : ToggleButton;
163
+ const optionsCount = React.Children.count(children) + ((dataList === null || dataList === void 0 ? void 0 : dataList.length) || 0);
149
164
  const createOption = (props, i) => {
150
165
  const {
151
166
  error,
@@ -160,6 +175,7 @@ export function getRadioOrToggleOptions(_ref5) {
160
175
  size: "small",
161
176
  title: help.title
162
177
  }, help.content) : undefined;
178
+ const Component = variant === 'radio' ? Radio : ToggleButton;
163
179
  return React.createElement(Component, _extends({
164
180
  id: optionsCount === 1 ? id : undefined,
165
181
  key: `option-${i}-${value}`,
@@ -170,21 +186,67 @@ export function getRadioOrToggleOptions(_ref5) {
170
186
  suffix: suffix
171
187
  }, htmlAttributes, rest));
172
188
  };
173
- const mapOptions = children => {
174
- return React.Children.toArray(children).map((child, i) => {
175
- if (React.isValidElement(child)) {
176
- if (child.type === OptionField) {
177
- return createOption(child.props, i);
178
- }
179
- if (child.props.children) {
180
- const nestedChildren = mapOptions(child.props.children);
181
- return React.cloneElement(child, child.props, nestedChildren);
182
- }
189
+ return [...(dataList || []).map((props, i) => {
190
+ return createOption(props, i);
191
+ }), ...(mapOptions(children, {
192
+ createOption
193
+ }) || [])].filter(Boolean);
194
+ }
195
+ export function mapOptions(children, _ref6) {
196
+ let {
197
+ createOption
198
+ } = _ref6;
199
+ return React.Children.map(children, (child, i) => {
200
+ if (React.isValidElement(child)) {
201
+ if (child.type === OptionField) {
202
+ return createOption(child.props, i);
183
203
  }
184
- return child;
185
- });
186
- };
187
- return mapOptions(children);
204
+ if (child.props.children) {
205
+ const nestedChildren = mapOptions(child.props.children, {
206
+ createOption
207
+ });
208
+ return React.cloneElement(child, child.props, nestedChildren);
209
+ }
210
+ }
211
+ return child;
212
+ });
213
+ }
214
+ export function makeOptions(children) {
215
+ return React.Children.map(children, child => {
216
+ var _child, _child$props, _child$props$children;
217
+ if (((_child = child) === null || _child === void 0 ? void 0 : (_child$props = _child['props']) === null || _child$props === void 0 ? void 0 : (_child$props$children = _child$props.children) === null || _child$props$children === void 0 ? void 0 : _child$props$children.type) === OptionField) {
218
+ child = child['props'].children;
219
+ }
220
+ if (React.isValidElement(child) && child.type === OptionField) {
221
+ var _ref7, _props$children, _props$value;
222
+ const props = child.props;
223
+ const title = (_ref7 = (_props$children = props.children) !== null && _props$children !== void 0 ? _props$children : props.title) !== null && _ref7 !== void 0 ? _ref7 : _em || (_em = React.createElement("em", null, "Untitled"));
224
+ const content = props.text ? [title, props.text] : title;
225
+ const selectedKey = String((_props$value = props.value) !== null && _props$value !== void 0 ? _props$value : '');
226
+ return {
227
+ selectedKey,
228
+ content
229
+ };
230
+ }
231
+ if (child) {
232
+ return {
233
+ content: child
234
+ };
235
+ }
236
+ });
237
+ }
238
+ function renderDropdownItems(data) {
239
+ return (data === null || data === void 0 ? void 0 : data.map(_ref8 => {
240
+ let {
241
+ value,
242
+ title,
243
+ text
244
+ } = _ref8;
245
+ return {
246
+ selectedKey: value,
247
+ content: (text ? [title, text] : title) || _em2 || (_em2 = React.createElement("em", null, "Untitled"))
248
+ };
249
+ })) || [];
188
250
  }
189
251
  Selection._supportsSpacingProps = true;
190
252
  export default Selection;
@@ -1 +1 @@
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","_ref","selectedKey","onChangeHandler","_ref2","undefined","handleShow","_ref3","handleHide","_ref4","cn","fieldBlockProps","_objectSpread","forId","Component","createElement","Group","layout_direction","on_change","String","getRadioOrToggleOptions","status","getStatus","sharedProps","list_class","portal_class","title","suffix","content","on_show","on_hide","stretch","_extends","_error$message","message","Error","toString","_ref5","optionsCount","Children","count","createOption","i","rest","_objectWithoutProperties","_excluded","size","key","text","mapOptions","toArray","map","child","isValidElement","type","nestedChildren","cloneElement","_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 { ReturnAdditional } from '../../hooks/useFieldProps'\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 { AutocompleteAllProps } from '../../../../components/Autocomplete'\nimport type { DropdownAllProps } from '../../../../components/Dropdown'\nimport { HelpButtonProps } from '../../../../components/HelpButton'\nimport {\n convertCamelCaseProps,\n ToCamelCase,\n} from '../../../../shared/helpers/withCamelCaseProps'\n\ntype IOption = {\n title: string | React.ReactNode\n value: number | string\n status: FormStatusText\n}\ntype OptionProps = React.ComponentProps<\n React.FC<{\n error: Error | FormError | undefined\n title: React.ReactNode\n help: HelpButtonProps\n children: React.ReactNode\n }>\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<AutocompleteAllProps>\n dropdownProps?: ToCamelCase<DropdownAllProps>\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 }) => {\n const selectedKey = 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 switch (variant) {\n case 'radio':\n case 'button': {\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 {getRadioOrToggleOptions({\n id,\n value,\n variant,\n info,\n warning,\n htmlAttributes,\n children,\n hasError,\n })}\n </Component.Group>\n </FieldBlock>\n )\n }\n\n case 'autocomplete':\n case 'dropdown': {\n const status = getStatus(error, info, warning)\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\nexport function getStatus(\n error: Error | FormError | undefined,\n info: React.ReactNode,\n warning: React.ReactNode\n) {\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\nexport function getRadioOrToggleOptions({\n id,\n value,\n variant,\n info,\n warning,\n htmlAttributes,\n children,\n hasError,\n}: {\n id: string\n value: Props['value']\n variant: Props['variant']\n info: Props['info']\n warning: Props['warning']\n htmlAttributes: Props['htmlAttributes']\n children: Props['children']\n hasError: ReturnAdditional<Props['value']>['hasError']\n}) {\n const optionsCount = React.Children.count(children)\n\n const Component = (\n variant === 'radio' ? Radio : ToggleButton\n ) as typeof Radio & typeof ToggleButton\n\n const createOption = (props: OptionProps, i: number) => {\n const { error, title, help, children, ...rest } = props\n\n const label = title ?? children\n const status = getStatus(error, info, warning)\n const suffix = help ? (\n <HelpButton size=\"small\" title={help.title}>\n {help.content}\n </HelpButton>\n ) : undefined\n\n return (\n <Component\n id={optionsCount === 1 ? id : undefined}\n key={`option-${i}-${value}`}\n label={variant === 'radio' ? label : undefined}\n text={variant === 'button' ? label : undefined}\n value={String(value ?? '')}\n status={(hasError || status) && 'error'}\n suffix={suffix}\n {...htmlAttributes}\n {...rest}\n />\n )\n }\n\n const mapOptions = (children: React.ReactNode) => {\n return React.Children.toArray(children).map(\n (child: React.ReactElement<OptionProps>, i) => {\n if (React.isValidElement(child)) {\n if (child.type === OptionField) {\n return createOption(child.props, i)\n }\n\n if (child.props.children) {\n const nestedChildren = mapOptions(child.props.children)\n return React.cloneElement(child, child.props, nestedChildren)\n }\n }\n\n return child\n }\n )\n }\n\n return mapOptions(children)\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","useFieldProps","pickSpacingProps","FieldBlock","FormError","convertCamelCaseProps","useDataValue","Selection","props","clearValue","id","className","variant","label","labelDescription","layout","optionsLayout","placeholder","value","info","warning","error","hasError","disabled","help","emptyValue","width","htmlAttributes","setHasFocus","handleChange","data","dataPath","children","autocompleteProps","dropdownProps","getValueByPath","dataList","handleDropdownChange","_ref","selectedKey","onChangeHandler","_ref2","undefined","handleShow","_ref3","handleHide","_ref4","cn","fieldBlockProps","_objectSpread","forId","Component","items","renderRadioItems","createElement","_extends","asFieldset","Children","count","Group","layout_direction","on_change","String","status","getStatus","renderDropdownItems","concat","makeOptions","filter","Boolean","sharedProps","list_class","portal_class","title","suffix","content","on_show","on_hide","stretch","_error$message","message","Error","toString","_ref5","optionsCount","length","createOption","i","rest","_objectWithoutProperties","_excluded","size","key","text","map","mapOptions","_ref6","child","isValidElement","type","nestedChildren","cloneElement","_child","_child$props","_child$props$children","_ref7","_props$children","_props$value","_em","_ref8","_em2","_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, { Props as OptionFieldProps } from '../Option'\nimport { useFieldProps } from '../../hooks'\nimport { ReturnAdditional } from '../../hooks/useFieldProps'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport FieldBlock from '../../FieldBlock'\nimport {\n FormError,\n FieldProps,\n FieldHelpProps,\n FieldBlockWidth,\n Path,\n} from '../../types'\nimport type { FormStatusText } from '../../../../components/FormStatus'\nimport type { AutocompleteAllProps } from '../../../../components/Autocomplete'\nimport type { DropdownAllProps } from '../../../../components/Dropdown'\nimport { HelpButtonProps } from '../../../../components/HelpButton'\nimport { DrawerListProps } from '../../../../fragments/DrawerList'\nimport {\n convertCamelCaseProps,\n ToCamelCase,\n} from '../../../../shared/helpers/withCamelCaseProps'\nimport useDataValue from '../../hooks/useDataValue'\n\ntype IOption = {\n title: string | React.ReactNode\n value: number | string\n status: FormStatusText\n}\nexport type Data = Array<{\n value: string\n title: React.ReactNode\n text?: React.ReactNode\n}>\n\nexport type Props = FieldHelpProps &\n FieldProps<IOption['value']> & {\n /**\n * Defines the variant of the component.\n * Default: dropdown\n */\n variant?: 'dropdown' | 'autocomplete' | 'radio' | 'button'\n\n /**\n * The width of the component.\n * Default: large\n */\n width?: FieldBlockWidth\n\n /**\n * Defines the layout of the options for radio and button variants.\n */\n optionsLayout?: 'horizontal' | 'vertical'\n\n /**\n * The path to the context data (Form.Handler).\n * The object needs to have a `value` and a `title` property.\n */\n dataPath?: Path\n\n /**\n * Data to be used for the component. The object needs to have a `value` and a `title` property.\n * The generated options will be placed above given JSX based children.\n */\n data?: Data\n\n /**\n * Autocomplete specific props\n */\n autocompleteProps?: ToCamelCase<AutocompleteAllProps>\n\n /**\n * Dropdown specific props\n */\n dropdownProps?: ToCamelCase<DropdownAllProps>\n\n /**\n * The content of the component.\n */\n children?: React.ReactNode\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 data,\n dataPath,\n children,\n\n // - Autocomplete and Dropdown specific props\n autocompleteProps,\n dropdownProps,\n } = useFieldProps(props)\n\n const { getValueByPath } = useDataValue()\n let dataList = data\n if (dataPath) {\n dataList = getValueByPath(dataPath)\n }\n\n const handleDropdownChange = useCallback(\n ({ data }) => {\n const selectedKey = 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 switch (variant) {\n case 'radio':\n case 'button': {\n const Component = (\n variant === 'radio' ? Radio : ToggleButton\n ) as typeof Radio & typeof ToggleButton\n\n const items = renderRadioItems({\n id,\n value,\n variant,\n info,\n warning,\n htmlAttributes,\n children,\n dataList,\n hasError,\n })\n\n return (\n <FieldBlock\n {...fieldBlockProps}\n asFieldset={React.Children.count(items) > 1}\n >\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 {items}\n </Component.Group>\n </FieldBlock>\n )\n }\n\n case 'autocomplete':\n case 'dropdown': {\n const status = getStatus(error, info, warning)\n const data = renderDropdownItems(dataList)\n .concat(makeOptions(children))\n .filter(Boolean)\n\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,\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\nexport function getStatus(\n error: Error | FormError | undefined,\n info: React.ReactNode,\n warning: React.ReactNode\n) {\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\ntype OptionProps = React.ComponentProps<\n React.FC<{\n error?: Error | FormError | undefined\n title: React.ReactNode\n help?: HelpButtonProps\n children?: React.ReactNode\n }>\n>\n\nfunction renderRadioItems({\n id,\n value,\n variant,\n info,\n warning,\n htmlAttributes,\n children,\n dataList,\n hasError,\n}: {\n id: string\n value: Props['value']\n variant: Props['variant']\n info: Props['info']\n warning: Props['warning']\n htmlAttributes: Props['htmlAttributes']\n children: Props['children']\n dataList: Data\n hasError: ReturnAdditional<Props['value']>['hasError']\n}) {\n const optionsCount =\n React.Children.count(children) + (dataList?.length || 0)\n\n const createOption = (props: OptionProps, i: number) => {\n const { error, title, help, children, ...rest } = props\n\n const label = title ?? children\n const status = getStatus(error, info, warning)\n const suffix = help ? (\n <HelpButton size=\"small\" title={help.title}>\n {help.content}\n </HelpButton>\n ) : undefined\n\n const Component = (\n variant === 'radio' ? Radio : ToggleButton\n ) as typeof Radio & typeof ToggleButton\n\n return (\n <Component\n id={optionsCount === 1 ? id : undefined}\n key={`option-${i}-${value}`}\n label={variant === 'radio' ? label : undefined}\n text={variant === 'button' ? label : undefined}\n value={String(value ?? '')}\n status={(hasError || status) && 'error'}\n suffix={suffix}\n {...htmlAttributes}\n {...rest}\n />\n )\n }\n\n return [\n ...(dataList || []).map((props, i) => {\n return createOption(props as OptionProps, i)\n }),\n ...(mapOptions(children, { createOption }) || []),\n ].filter(Boolean)\n}\n\nexport function mapOptions(children: React.ReactNode, { createOption }) {\n return React.Children.map(\n children,\n (child: React.ReactElement<OptionProps>, i) => {\n if (React.isValidElement(child)) {\n if (child.type === OptionField) {\n return createOption(child.props, i)\n }\n\n if (child.props.children) {\n const nestedChildren = mapOptions(child.props.children, {\n createOption,\n })\n return React.cloneElement(child, child.props, nestedChildren)\n }\n }\n\n return child\n }\n )\n}\n\nexport function makeOptions<T = DrawerListProps['data']>(\n children: React.ReactNode\n): T {\n return React.Children.map(children, (child) => {\n if (child?.['props']?.children?.type === OptionField) {\n child = child['props'].children\n }\n\n if (React.isValidElement(child) && child.type === OptionField) {\n const props = child.props as OptionFieldProps\n const title = props.children ?? props.title ?? <em>Untitled</em>\n const content = props.text ? [title, props.text] : title\n const selectedKey = String(props.value ?? '')\n\n return { selectedKey, content }\n }\n\n // For other children, just show them as content\n if (child) {\n return {\n content: child,\n }\n }\n }) as T\n}\n\nfunction renderDropdownItems(data: Data) {\n return (\n data?.map(({ value, title, text }) => ({\n selectedKey: value,\n content: (text ? [title, text] : title) || <em>Untitled</em>,\n })) || []\n )\n}\n\nSelection._supportsSpacingProps = true\nexport default Selection\n"],"mappings":"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"}
@@ -19,6 +19,16 @@ export const SelectionProperties = {
19
19
  type: 'object',
20
20
  status: 'optional'
21
21
  },
22
+ data: {
23
+ doc: 'Data to be used for the component. The object needs to have a `value` and a `title` property. Provide the Dropdown or Autocomplete data in the format documented here: [Dropdown](/uilib/components/dropdown) and [Autocomplete](/uilib/components/autocomplete) documentation.',
24
+ type: 'array',
25
+ status: 'optional'
26
+ },
27
+ dataPath: {
28
+ doc: 'The path to the context data (Form.Handler). The object needs to have a `value` and a `title` property. The generated options will be placed above given JSX based children.',
29
+ type: 'string',
30
+ status: 'optional'
31
+ },
22
32
  autocompleteProps: {
23
33
  doc: 'Forward any additional props (camelCase) to the [Autocomplete](/uilib/components/autocomplete/) component.',
24
34
  type: 'object',
@@ -1 +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"}
1
+ {"version":3,"file":"SelectionDocs.js","names":["SelectionProperties","variant","doc","type","status","optionsLayout","width","help","data","dataPath","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 data: {\n doc: 'Data to be used for the component. The object needs to have a `value` and a `title` property. Provide the Dropdown or Autocomplete data in the format documented here: [Dropdown](/uilib/components/dropdown) and [Autocomplete](/uilib/components/autocomplete) documentation.',\n type: 'array',\n status: 'optional',\n },\n dataPath: {\n doc: 'The path to the context data (Form.Handler). The object needs to have a `value` and a `title` property. The generated options will be placed above given JSX based children.',\n type: 'string',\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,IAAI,EAAE;IACJN,GAAG,EAAE,iRAAiR;IACtRC,IAAI,EAAE,OAAO;IACbC,MAAM,EAAE;EACV,CAAC;EACDK,QAAQ,EAAE;IACRP,GAAG,EAAE,8KAA8K;IACnLC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDM,iBAAiB,EAAE;IACjBR,GAAG,EAAE,4GAA4G;IACjHC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDO,aAAa,EAAE;IACbT,GAAG,EAAE,oGAAoG;IACzGC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDQ,QAAQ,EAAE;IACRV,GAAG,EAAE,kCAAkC;IACvCC,IAAI,EAAE,YAAY;IAClBC,MAAM,EAAE;EACV;AACF,CAAC"}
@@ -12,7 +12,7 @@ import { pickSpacingProps } from '../../../../components/flex/utils';
12
12
  import ToggleButtonGroupContext from '../../../../components/toggle-button/ToggleButtonGroupContext';
13
13
  import useTranslation from '../../hooks/useTranslation';
14
14
  function Toggle(props) {
15
- const translations = useTranslation().BooleanField;
15
+ const translations = useTranslation().ToggleField;
16
16
  const preparedProps = _objectSpread(_objectSpread({}, props), {}, {
17
17
  errorMessages: props.errorMessages
18
18
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Toggle.js","names":["React","useCallback","classnames","Checkbox","HelpButton","ToggleButton","ButtonRow","FieldBlock","useFieldProps","pickSpacingProps","ToggleButtonGroupContext","useTranslation","Toggle","props","translations","BooleanField","preparedProps","_objectSpread","errorMessages","id","className","valueOn","valueOff","layout","variant","disabled","label","labelDescription","textOn","textOff","value","help","info","warning","error","hasError","htmlAttributes","handleChange","handleCheckboxChange","_ref","checked","handleToggleChange","_ref2","cn","fieldBlockPropsWithoutLabel","forId","fieldBlockProps","suffix","createElement","title","content","undefined","isOn","isOff","_extends","yes","no","status","onChange","text","on_change","asFieldset","Fragment","size","left","bottom","Provider","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Toggle/Toggle.tsx"],"sourcesContent":["import React, { useCallback } from 'react'\nimport classnames from 'classnames'\n\nimport { Checkbox, HelpButton, ToggleButton } from '../../../../components'\nimport ButtonRow from '../../Form/ButtonRow'\nimport FieldBlock from '../../FieldBlock'\nimport { useFieldProps } from '../../hooks'\nimport { FieldHelpProps, FieldProps } from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport ToggleButtonGroupContext from '../../../../components/toggle-button/ToggleButtonGroupContext'\nimport useTranslation from '../../hooks/useTranslation'\n\nexport type ToggleProps = {\n valueOn: unknown\n valueOff: unknown\n variant?: 'checkbox' | 'checkbox-button' | 'button' | 'buttons'\n textOn?: string\n textOff?: string\n}\n\nexport type Props = FieldHelpProps & FieldProps<unknown> & ToggleProps\n\nfunction Toggle(props: Props) {\n const translations = useTranslation().BooleanField\n\n const preparedProps: Props = {\n ...props,\n errorMessages: props.errorMessages,\n }\n\n const {\n id,\n className,\n valueOn,\n valueOff,\n layout,\n variant,\n disabled,\n label,\n labelDescription,\n textOn,\n textOff,\n value,\n help,\n info,\n warning,\n error,\n hasError,\n htmlAttributes,\n handleChange,\n } = useFieldProps(preparedProps)\n\n const handleCheckboxChange = useCallback(\n ({ checked }) => {\n handleChange?.(checked ? valueOn : valueOff)\n },\n [handleChange, valueOn, valueOff]\n )\n const handleToggleChange = useCallback(\n ({ value }) => {\n handleChange?.(value === 'on' ? valueOn : valueOff)\n },\n [handleChange, valueOn, valueOff]\n )\n\n const cn = classnames('dnb-forms-field-toggle', className)\n\n const fieldBlockPropsWithoutLabel = {\n forId: id,\n className: cn,\n ...pickSpacingProps(props),\n info,\n warning,\n error,\n disabled,\n }\n\n const fieldBlockProps = {\n ...fieldBlockPropsWithoutLabel,\n layout,\n label,\n labelDescription,\n disabled,\n }\n\n const suffix = help ? (\n <HelpButton title={help.title}>{help.content}</HelpButton>\n ) : undefined\n\n const isOn = value === valueOn\n const isOff = value === valueOff\n\n switch (variant) {\n default:\n case 'checkbox':\n return (\n <FieldBlock {...fieldBlockPropsWithoutLabel}>\n <Checkbox\n id={id}\n className={cn}\n label={\n label ??\n (isOn\n ? textOn ?? translations.yes\n : textOff ?? translations.no)\n }\n checked={isOn}\n disabled={disabled}\n status={hasError ? 'error' : undefined}\n suffix={suffix}\n onChange={handleCheckboxChange}\n {...htmlAttributes}\n />\n </FieldBlock>\n )\n case 'button':\n return (\n <FieldBlock {...fieldBlockProps}>\n <ToggleButton\n id={id}\n text={\n isOn\n ? textOn ?? translations.yes\n : textOff ?? translations.no\n }\n checked={isOn}\n disabled={disabled}\n status={hasError ? 'error' : undefined}\n suffix={suffix}\n value={value ? 'true' : 'false'}\n on_change={handleCheckboxChange}\n {...htmlAttributes}\n />\n </FieldBlock>\n )\n case 'buttons':\n return (\n <FieldBlock\n {...fieldBlockProps}\n asFieldset\n labelDescription={\n <>\n {labelDescription}\n {help ? (\n <HelpButton\n size=\"small\"\n left={labelDescription ? 'x-small' : false}\n title={help.title}\n >\n {help.content}\n </HelpButton>\n ) : undefined}\n </>\n }\n >\n <ButtonRow bottom=\"x-small\">\n <ToggleButtonGroupContext.Provider\n value={{\n value: isOn ? 'on' : isOff ? 'off' : null, // use \"null\" to reset the value\n onChange: handleToggleChange,\n status: hasError ? 'error' : undefined,\n disabled,\n }}\n >\n <ToggleButton\n text={textOn ?? translations.yes}\n value=\"on\"\n {...htmlAttributes}\n />\n <ToggleButton\n text={textOff ?? translations.no}\n value=\"off\"\n {...htmlAttributes}\n />\n </ToggleButtonGroupContext.Provider>\n </ButtonRow>\n </FieldBlock>\n )\n case 'checkbox-button':\n return (\n <FieldBlock {...fieldBlockProps}>\n <ToggleButton\n id={id}\n variant=\"checkbox\"\n text={\n isOn\n ? textOn ?? translations.yes\n : textOff ?? translations.no\n }\n checked={isOn}\n disabled={disabled}\n status={hasError ? 'error' : undefined}\n suffix={suffix}\n value={value ? 'true' : 'false'}\n on_change={handleCheckboxChange}\n {...htmlAttributes}\n />\n </FieldBlock>\n )\n }\n}\n\nToggle._supportsSpacingProps = true\nexport default Toggle\n"],"mappings":"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"}
1
+ {"version":3,"file":"Toggle.js","names":["React","useCallback","classnames","Checkbox","HelpButton","ToggleButton","ButtonRow","FieldBlock","useFieldProps","pickSpacingProps","ToggleButtonGroupContext","useTranslation","Toggle","props","translations","ToggleField","preparedProps","_objectSpread","errorMessages","id","className","valueOn","valueOff","layout","variant","disabled","label","labelDescription","textOn","textOff","value","help","info","warning","error","hasError","htmlAttributes","handleChange","handleCheckboxChange","_ref","checked","handleToggleChange","_ref2","cn","fieldBlockPropsWithoutLabel","forId","fieldBlockProps","suffix","createElement","title","content","undefined","isOn","isOff","_extends","yes","no","status","onChange","text","on_change","asFieldset","Fragment","size","left","bottom","Provider","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Toggle/Toggle.tsx"],"sourcesContent":["import React, { useCallback } from 'react'\nimport classnames from 'classnames'\n\nimport { Checkbox, HelpButton, ToggleButton } from '../../../../components'\nimport ButtonRow from '../../Form/ButtonRow'\nimport FieldBlock from '../../FieldBlock'\nimport { useFieldProps } from '../../hooks'\nimport { FieldHelpProps, FieldProps } from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport ToggleButtonGroupContext from '../../../../components/toggle-button/ToggleButtonGroupContext'\nimport useTranslation from '../../hooks/useTranslation'\n\nexport type ToggleProps = {\n valueOn: unknown\n valueOff: unknown\n variant?: 'checkbox' | 'checkbox-button' | 'button' | 'buttons'\n textOn?: string\n textOff?: string\n}\n\nexport type Props = FieldHelpProps & FieldProps<unknown> & ToggleProps\n\nfunction Toggle(props: Props) {\n const translations = useTranslation().ToggleField\n\n const preparedProps: Props = {\n ...props,\n errorMessages: props.errorMessages,\n }\n\n const {\n id,\n className,\n valueOn,\n valueOff,\n layout,\n variant,\n disabled,\n label,\n labelDescription,\n textOn,\n textOff,\n value,\n help,\n info,\n warning,\n error,\n hasError,\n htmlAttributes,\n handleChange,\n } = useFieldProps(preparedProps)\n\n const handleCheckboxChange = useCallback(\n ({ checked }) => {\n handleChange?.(checked ? valueOn : valueOff)\n },\n [handleChange, valueOn, valueOff]\n )\n const handleToggleChange = useCallback(\n ({ value }) => {\n handleChange?.(value === 'on' ? valueOn : valueOff)\n },\n [handleChange, valueOn, valueOff]\n )\n\n const cn = classnames('dnb-forms-field-toggle', className)\n\n const fieldBlockPropsWithoutLabel = {\n forId: id,\n className: cn,\n ...pickSpacingProps(props),\n info,\n warning,\n error,\n disabled,\n }\n\n const fieldBlockProps = {\n ...fieldBlockPropsWithoutLabel,\n layout,\n label,\n labelDescription,\n disabled,\n }\n\n const suffix = help ? (\n <HelpButton title={help.title}>{help.content}</HelpButton>\n ) : undefined\n\n const isOn = value === valueOn\n const isOff = value === valueOff\n\n switch (variant) {\n default:\n case 'checkbox':\n return (\n <FieldBlock {...fieldBlockPropsWithoutLabel}>\n <Checkbox\n id={id}\n className={cn}\n label={\n label ??\n (isOn\n ? textOn ?? translations.yes\n : textOff ?? translations.no)\n }\n checked={isOn}\n disabled={disabled}\n status={hasError ? 'error' : undefined}\n suffix={suffix}\n onChange={handleCheckboxChange}\n {...htmlAttributes}\n />\n </FieldBlock>\n )\n case 'button':\n return (\n <FieldBlock {...fieldBlockProps}>\n <ToggleButton\n id={id}\n text={\n isOn\n ? textOn ?? translations.yes\n : textOff ?? translations.no\n }\n checked={isOn}\n disabled={disabled}\n status={hasError ? 'error' : undefined}\n suffix={suffix}\n value={value ? 'true' : 'false'}\n on_change={handleCheckboxChange}\n {...htmlAttributes}\n />\n </FieldBlock>\n )\n case 'buttons':\n return (\n <FieldBlock\n {...fieldBlockProps}\n asFieldset\n labelDescription={\n <>\n {labelDescription}\n {help ? (\n <HelpButton\n size=\"small\"\n left={labelDescription ? 'x-small' : false}\n title={help.title}\n >\n {help.content}\n </HelpButton>\n ) : undefined}\n </>\n }\n >\n <ButtonRow bottom=\"x-small\">\n <ToggleButtonGroupContext.Provider\n value={{\n value: isOn ? 'on' : isOff ? 'off' : null, // use \"null\" to reset the value\n onChange: handleToggleChange,\n status: hasError ? 'error' : undefined,\n disabled,\n }}\n >\n <ToggleButton\n text={textOn ?? translations.yes}\n value=\"on\"\n {...htmlAttributes}\n />\n <ToggleButton\n text={textOff ?? translations.no}\n value=\"off\"\n {...htmlAttributes}\n />\n </ToggleButtonGroupContext.Provider>\n </ButtonRow>\n </FieldBlock>\n )\n case 'checkbox-button':\n return (\n <FieldBlock {...fieldBlockProps}>\n <ToggleButton\n id={id}\n variant=\"checkbox\"\n text={\n isOn\n ? textOn ?? translations.yes\n : textOff ?? translations.no\n }\n checked={isOn}\n disabled={disabled}\n status={hasError ? 'error' : undefined}\n suffix={suffix}\n value={value ? 'true' : 'false'}\n on_change={handleCheckboxChange}\n {...htmlAttributes}\n />\n </FieldBlock>\n )\n }\n}\n\nToggle._supportsSpacingProps = true\nexport default Toggle\n"],"mappings":"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"}
@@ -10,7 +10,7 @@ import React, { useMemo, useContext, useCallback, useRef, useReducer, useEffect
10
10
  import classnames from 'classnames';
11
11
  import FieldBlockContext from './FieldBlockContext';
12
12
  import DataContext from '../DataContext/Context';
13
- import IterateElementContext from '../Iterate/IterateElementContext';
13
+ import IterateElementContext from '../Iterate/IterateItemContext';
14
14
  import { Space, FormLabel, FormStatus } from '../../../components';
15
15
  import { Ul, Li } from '../../../elements';
16
16
  import { convertJsxToString, findElementInChildren, warn } from '../../../shared/component-helper';
@@ -48,10 +48,10 @@ function FieldBlock(props) {
48
48
  children
49
49
  } = _Object$assign,
50
50
  rest = _objectWithoutProperties(_Object$assign, _excluded);
51
- const iterateElementContext = useContext(IterateElementContext);
51
+ const iterateItemContext = useContext(IterateElementContext);
52
52
  const {
53
53
  index: iterateIndex
54
- } = iterateElementContext !== null && iterateElementContext !== void 0 ? iterateElementContext : {};
54
+ } = iterateItemContext !== null && iterateItemContext !== void 0 ? iterateItemContext : {};
55
55
  const blockId = useId(props.id);
56
56
  const [wasUpdated, forceUpdate] = useReducer(() => ({}), {});
57
57
  const mountedFieldsRef = useRef({});
@@ -1 +1 @@
1
- {"version":3,"file":"FieldBlock.js","names":["React","useMemo","useContext","useCallback","useRef","useReducer","useEffect","classnames","FieldBlockContext","DataContext","IterateElementContext","Space","FormLabel","FormStatus","Ul","Li","convertJsxToString","findElementInChildren","warn","useId","useUnmountEffect","FormError","SubmitIndicator","createSharedState","useTranslation","states","FieldBlock","props","dataContext","nestedFieldBlockContext","sharedData","forId","id","_Object$assign","Object","assign","data","className","layout","composition","label","labelProp","labelDescription","labelSrOnly","asFieldset","info","warning","error","errorProp","fieldState","disabled","width","contentWidth","align","labelSize","contentClassName","children","rest","_objectWithoutProperties","_excluded","iterateElementContext","index","iterateIndex","blockId","wasUpdated","forceUpdate","mountedFieldsRef","stateRecordRef","fieldStateIdsRef","contentsRef","hasInitiallyErrorProp","Boolean","undefined","replace","String","setInternalRecord","stateId","identifier","type","current","existingIndex","findIndex","item","_objectSpread","push","setFieldState","showFieldError","show","map","showInitially","statusContent","content","statesWithMessages","entries","flatMap","_ref","reduce","acc","cur","existing","find","message","getMessage","messages","state","width_element","no_animation","process","env","NODE_ENV","globalThis","IS_TEST","found","msg","filter","_ref2","i","arr","length","text","createElement","CombineMessages","mainClasses","gridClasses","enableFieldset","useEnableFieldset","labelProps","element","srOnly","space","top","bottom","size","prerenderFieldProps","Provider","value","hasErrorProp","_extends","LabelDescription","ref","_ref3","result","count","child","_child$props","_child$type","_ref4","translations","Field","Fragment","errorSummary","stateSummary","_ref5","key","_ref6","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 DataContext from '../DataContext/Context'\nimport IterateElementContext from '../Iterate/IterateElementContext'\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 /** use `true` to make the label only readable by screen readers. */\n labelSrOnly?: 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 /** For composition only: Align the contents vertically */\n align?: 'center' | 'bottom'\n /** Class name for the contents block */\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 dataContext = useContext(DataContext)\n const nestedFieldBlockContext = useContext(FieldBlockContext)\n\n const sharedData = createSharedState<Props>(\n 'field-block-props-' + (props.forId || props.id)\n )\n const {\n className,\n forId,\n layout = 'vertical',\n composition,\n label: labelProp,\n labelDescription,\n labelSrOnly,\n asFieldset,\n info,\n warning,\n error: errorProp,\n fieldState,\n disabled,\n width,\n contentWidth,\n align,\n labelSize,\n contentClassName,\n children,\n ...rest\n } = Object.assign({}, sharedData.data, props)\n\n const iterateElementContext = useContext(IterateElementContext)\n const { index: iterateIndex } = iterateElementContext ?? {}\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 label = useMemo(() => {\n if (iterateIndex !== undefined) {\n return convertJsxToString(labelProp).replace(\n '{itemNr}',\n String(iterateIndex + 1)\n )\n }\n return labelProp\n }, [iterateIndex, labelProp])\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 srOnly: labelSrOnly,\n space: { top: 0, bottom: 'x-small' },\n size: labelSize,\n disabled,\n }\n\n if (dataContext?.prerenderFieldProps) {\n return null\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 &&\n `dnb-forms-field-block__contents--width-${contentWidth}`,\n align && `dnb-forms-field-block__contents--align-${align}`,\n composition &&\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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"}
1
+ {"version":3,"file":"FieldBlock.js","names":["React","useMemo","useContext","useCallback","useRef","useReducer","useEffect","classnames","FieldBlockContext","DataContext","IterateElementContext","Space","FormLabel","FormStatus","Ul","Li","convertJsxToString","findElementInChildren","warn","useId","useUnmountEffect","FormError","SubmitIndicator","createSharedState","useTranslation","states","FieldBlock","props","dataContext","nestedFieldBlockContext","sharedData","forId","id","_Object$assign","Object","assign","data","className","layout","composition","label","labelProp","labelDescription","labelSrOnly","asFieldset","info","warning","error","errorProp","fieldState","disabled","width","contentWidth","align","labelSize","contentClassName","children","rest","_objectWithoutProperties","_excluded","iterateItemContext","index","iterateIndex","blockId","wasUpdated","forceUpdate","mountedFieldsRef","stateRecordRef","fieldStateIdsRef","contentsRef","hasInitiallyErrorProp","Boolean","undefined","replace","String","setInternalRecord","stateId","identifier","type","current","existingIndex","findIndex","item","_objectSpread","push","setFieldState","showFieldError","show","map","showInitially","statusContent","content","statesWithMessages","entries","flatMap","_ref","reduce","acc","cur","existing","find","message","getMessage","messages","state","width_element","no_animation","process","env","NODE_ENV","globalThis","IS_TEST","found","msg","filter","_ref2","i","arr","length","text","createElement","CombineMessages","mainClasses","gridClasses","enableFieldset","useEnableFieldset","labelProps","element","srOnly","space","top","bottom","size","prerenderFieldProps","Provider","value","hasErrorProp","_extends","LabelDescription","ref","_ref3","result","count","child","_child$props","_child$type","_ref4","translations","Field","Fragment","errorSummary","stateSummary","_ref5","key","_ref6","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 DataContext from '../DataContext/Context'\nimport IterateElementContext from '../Iterate/IterateItemContext'\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 /** use `true` to make the label only readable by screen readers. */\n labelSrOnly?: 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 /** For composition only: Align the contents vertically */\n align?: 'center' | 'bottom'\n /** Class name for the contents block */\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 dataContext = useContext(DataContext)\n const nestedFieldBlockContext = useContext(FieldBlockContext)\n\n const sharedData = createSharedState<Props>(\n 'field-block-props-' + (props.forId || props.id)\n )\n const {\n className,\n forId,\n layout = 'vertical',\n composition,\n label: labelProp,\n labelDescription,\n labelSrOnly,\n asFieldset,\n info,\n warning,\n error: errorProp,\n fieldState,\n disabled,\n width,\n contentWidth,\n align,\n labelSize,\n contentClassName,\n children,\n ...rest\n } = Object.assign({}, sharedData.data, props)\n\n const iterateItemContext = useContext(IterateElementContext)\n const { index: iterateIndex } = iterateItemContext ?? {}\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 label = useMemo(() => {\n if (iterateIndex !== undefined) {\n return convertJsxToString(labelProp).replace(\n '{itemNr}',\n String(iterateIndex + 1)\n )\n }\n return labelProp\n }, [iterateIndex, labelProp])\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 srOnly: labelSrOnly,\n space: { top: 0, bottom: 'x-small' },\n size: labelSize,\n disabled,\n }\n\n if (dataContext?.prerenderFieldProps) {\n return null\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 &&\n `dnb-forms-field-block__contents--width-${contentWidth}`,\n align && `dnb-forms-field-block__contents--align-${align}`,\n composition &&\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,OAAOC,WAAW,MAAM,wBAAwB;AAChD,OAAOC,qBAAqB,MAAM,+BAA+B;AACjE,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,QAIJ,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;AAoCrE,SAASC,UAAUA,CAACC,KAAY,EAAE;EAChC,MAAMC,WAAW,GAAG1B,UAAU,CAACO,WAAW,CAAC;EAC3C,MAAMoB,uBAAuB,GAAG3B,UAAU,CAACM,iBAAiB,CAAC;EAE7D,MAAMsB,UAAU,GAAGP,iBAAiB,CAClC,oBAAoB,IAAII,KAAK,CAACI,KAAK,IAAIJ,KAAK,CAACK,EAAE,CACjD,CAAC;EACD,MAAAC,cAAA,GAqBIC,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,EAAEL,UAAU,CAACM,IAAI,EAAET,KAAK,CAAC;IArBvC;MACJU,SAAS;MACTN,KAAK;MACLO,MAAM,GAAG,UAAU;MACnBC,WAAW;MACXC,KAAK,EAAEC,SAAS;MAChBC,gBAAgB;MAChBC,WAAW;MACXC,UAAU;MACVC,IAAI;MACJC,OAAO;MACPC,KAAK,EAAEC,SAAS;MAChBC,UAAU;MACVC,QAAQ;MACRC,KAAK;MACLC,YAAY;MACZC,KAAK;MACLC,SAAS;MACTC,gBAAgB;MAChBC;IAEF,CAAC,GAAAvB,cAAA;IADIwB,IAAI,GAAAC,wBAAA,CAAAzB,cAAA,EAAA0B,SAAA;EAGT,MAAMC,kBAAkB,GAAG1D,UAAU,CAACQ,qBAAqB,CAAC;EAC5D,MAAM;IAAEmD,KAAK,EAAEC;EAAa,CAAC,GAAGF,kBAAkB,aAAlBA,kBAAkB,cAAlBA,kBAAkB,GAAI,CAAC,CAAC;EAExD,MAAMG,OAAO,GAAG5C,KAAK,CAACQ,KAAK,CAACK,EAAE,CAAC;EAC/B,MAAM,CAACgC,UAAU,EAAEC,WAAW,CAAC,GAAG5D,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAC5D,MAAM6D,gBAAgB,GAAG9D,MAAM,CAAmB,CAAC,CAAC,CAAC;EACrD,MAAM+D,cAAc,GAAG/D,MAAM,CAAc,CAAC,CAAC,CAAC;EAC9C,MAAMgE,gBAAgB,GAAGhE,MAAM,CAAmB,IAAI,CAAC;EACvD,MAAMiE,WAAW,GAAGjE,MAAM,CAAiB,IAAI,CAAC;EAChD,MAAMkE,qBAAqB,GAAGrE,OAAO,CAAC,MAAM;IAC1C,OAAOsE,OAAO,CAACvB,SAAS,CAAC;EAC3B,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMR,KAAK,GAAGvC,OAAO,CAAC,MAAM;IAC1B,IAAI6D,YAAY,KAAKU,SAAS,EAAE;MAC9B,OAAOxD,kBAAkB,CAACyB,SAAS,CAAC,CAACgC,OAAO,CAC1C,UAAU,EACVC,MAAM,CAACZ,YAAY,GAAG,CAAC,CACzB,CAAC;IACH;IACA,OAAOrB,SAAS;EAClB,CAAC,EAAE,CAACqB,YAAY,EAAErB,SAAS,CAAC,CAAC;EAE7B,MAAMkC,iBAAiB,GAAGxE,WAAW,CAAEwB,KAAiB,IAAK;IAC3D,MAAM;MAAEiD,OAAO;MAAEC,UAAU;MAAEC;IAAK,CAAC,GAAGnD,KAAK;IAE3C,IAAI,CAACwC,cAAc,CAACY,OAAO,CAACF,UAAU,CAAC,EAAE;MACvCV,cAAc,CAACY,OAAO,CAACF,UAAU,CAAC,GAAG,EAAE;IACzC;IAEAT,gBAAgB,CAACW,OAAO,GAAG;MAAEhC,KAAK,EAAE,IAAI;MAAED,OAAO,EAAE,IAAI;MAAED,IAAI,EAAE;IAAK,CAAC;IAErE,MAAMmC,aAAa,GAAGb,cAAc,CAACY,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;MACtBb,cAAc,CAACY,OAAO,CAACF,UAAU,CAAC,CAACG,aAAa,CAAC,GAAAG,aAAA,CAAAA,aAAA,KAC5ChB,cAAc,CAACY,OAAO,CAACF,UAAU,CAAC,CAACG,aAAa,CAAC,GACjDrD,KAAK,CACT;IACH,CAAC,MAAM;MACLwC,cAAc,CAACY,OAAO,CAACF,UAAU,CAAC,CAACO,IAAI,CAACzD,KAAK,CAAC;IAChD;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,MAAM0D,aAAa,GAAGlF,WAAW,CAC9BwB,KAAiB,IAAK;IACrB,IAAIE,uBAAuB,EAAE;MAE3BA,uBAAuB,CAACwD,aAAa,CAAC1D,KAAK,CAAC;MAC5C;IACF;IAEAgD,iBAAiB,CAAChD,KAAK,CAAC;IAExBsC,WAAW,CAAC,CAAC;EACf,CAAC,EACD,CAACpC,uBAAuB,EAAE8C,iBAAiB,CAC7C,CAAC;EAED,MAAMW,cAAc,GAAGnF,WAAW,CAChC,CAAC0E,UAAsB,EAAEU,IAAa,KAAK;IACzC,IAAI1D,uBAAuB,EAAE;MAE3BA,uBAAuB,CAACyD,cAAc,CAACT,UAAU,EAAEU,IAAI,CAAC;MACxD;IACF;IAEA,IAAIpB,cAAc,CAACY,OAAO,CAACF,UAAU,CAAC,EAAE;MACtCV,cAAc,CAACY,OAAO,CAACF,UAAU,CAAC,GAAGV,cAAc,CAACY,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;MAEFtB,WAAW,CAAC,CAAC;IACf;EACF,CAAC,EACD,CAACpC,uBAAuB,CAC1B,CAAC;EAED,MAAM6D,aAAa,GAAGzF,OAAO,CAAC,MAAM;IAClC,IAAI,OAAO+C,SAAS,KAAK,WAAW,EAAE;MACpC2B,iBAAiB,CAAC;QAChBE,UAAU,EAAEd,OAAO;QACnB0B,aAAa,EAAEnB,qBAAqB;QACpCQ,IAAI,EAAE,OAAO;QACba,OAAO,EAAE3C;MACX,CAAC,CAAC;IACJ;IAEA,IAAI,OAAOF,OAAO,KAAK,WAAW,EAAE;MAClC6B,iBAAiB,CAAC;QAChBE,UAAU,EAAEd,OAAO;QACnB0B,aAAa,EAAE,IAAI;QACnBX,IAAI,EAAE,SAAS;QACfa,OAAO,EAAE7C;MACX,CAAC,CAAC;IACJ;IAEA,IAAI,OAAOD,IAAI,KAAK,WAAW,EAAE;MAC/B8B,iBAAiB,CAAC;QAChBE,UAAU,EAAEd,OAAO;QACnB0B,aAAa,EAAE,IAAI;QACnBX,IAAI,EAAE,MAAM;QACZa,OAAO,EAAE9C;MACX,CAAC,CAAC;IACJ;IAEA,MAAM+C,kBAA6C,GAEjD1D,MAAM,CAAC2D,OAAO,CAAC1B,cAAc,CAACY,OAAO,CAAC,CACnCe,OAAO,CAACC,IAAA;MAAA,IAAC,CAAClB,UAAU,EAAEpD,MAAM,CAAC,GAAAsE,IAAA;MAAA,OAC5BtE,MAAM,CAAC+D,GAAG,CAAE7D,KAAK,IAAK;QACpB,OAAAwD,aAAA;UACEN;QAAU,GACPlD,KAAK;MAEZ,CAAC,CAAC;IAAA,CACJ,CAAC,CAGAqE,MAAM,CAAC,CAACC,GAAG,EAAEC,GAAG,KAAK;MACpB,MAAMC,QAAQ,GAAGF,GAAG,CAACG,IAAI,CAAElB,IAAI,IAAK;QAClC,OAAOA,IAAI,CAACJ,IAAI,KAAKoB,GAAG,CAACpB,IAAI;MAC/B,CAAC,CAAC;MAEF,MAAMuB,OAAO,GAAGC,UAAU,CAACJ,GAAG,CAAC;MAE/B,IAAIC,QAAQ,EAAE;QACZA,QAAQ,CAACI,QAAQ,CAACnB,IAAI,CAAAD,aAAA,CAAAA,aAAA,KACjBe,GAAG;UACNG;QAAO,EACR,CAAC;MACJ,CAAC,MAAM;QACLJ,GAAG,CAACb,IAAI,CAAAD,aAAA,CAAAA,aAAA,KACHe,GAAG;UACNP,OAAO,EAAEnB,SAAS;UAClB+B,QAAQ,EAAE,CAAApB,aAAA,CAAAA,aAAA,KAEHe,GAAG;YACNG;UAAO;QAEV,EACF,CAAC;MACJ;MAEA,OAAOJ,GAAG;IACZ,CAAC,EAAE,EAA+B,CAAC;IAGvC,OAAOxE,MAAM,CAACuE,MAAM,CAAC,CAACC,GAAG,EAAEnB,IAAI,KAAK;MAClC,MAAM9C,EAAE,GAAI,GAAEL,KAAK,CAACK,EAAE,IAAID,KAAK,IAAIgC,OAAQ,iBAAgBe,IAAK,EAAC;MACjEmB,GAAG,CAACnB,IAAI,CAAC,GAAG;QACV9C,EAAE;QACFQ,KAAK;QACLgE,KAAK,EAAE1B,IAAI,KAAK,SAAS,GAAG,MAAM,GAAGA,IAAI;QACzC2B,aAAa,EAAEpC,WAAW;QAG1BqC,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,CAACQ,IAAI,CAAElB,IAAI,IAAK;QAC9C,OAAOA,IAAI,CAACJ,IAAI,KAAKA,IAAI;MAC3B,CAAC,CAAC;MAEF,IAAIkC,KAAK,aAALA,KAAK,eAALA,KAAK,CAAET,QAAQ,EAAE;QAEnB,MAAMA,QAAQ,GAAGS,KAAK,CAACT,QAAQ,CAC5Bf,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,CAACZ,OAAO,GAAG,IAAI;YACpB;UACF;UAEA,OAAOY,GAAG;QACZ,CAAC,CAAC,CACDC,MAAM,CAACC,KAAA;UAAA,IAAC;YAAEd;UAAQ,CAAC,GAAAc,KAAA;UAAA,OAAKd,OAAO;QAAA,EAAC,CAChCL,MAAM,CAAC,CAACC,GAAG,EAAEgB,GAAG,EAAEG,CAAC,EAAEC,GAAG,KAAK;UAC5B,MAAMrC,aAAa,GAAGqC,GAAG,CAACpC,SAAS,CAAEC,IAAI,IAAK;YAC5C,OACElE,kBAAkB,CAACkE,IAAI,CAACmB,OAAO,CAAC,KAChCrF,kBAAkB,CAACiG,GAAG,CAACZ,OAAO,CAAC;UAEnC,CAAC,CAAC;UAGF,IAAIrB,aAAa,KAAKoC,CAAC,EAAE;YACvBnB,GAAG,CAACb,IAAI,CAAC6B,GAAG,CAAC;UACf;UAEA,OAAOhB,GAAG;QACZ,CAAC,EAAE,EAAE,CAAC;QAGR,IAAIM,QAAQ,CAACe,MAAM,GAAG,CAAC,EAAE;UACvBrB,GAAG,CAACnB,IAAI,CAAC,GAAAK,aAAA,CAAAA,aAAA,KACJc,GAAG,CAACnB,IAAI,CAAC;YACZyC,IAAI,EAAEvH,KAAA,CAAAwH,aAAA,CAACC,eAAe;cAAC3C,IAAI,EAAEA,IAAK;cAACyB,QAAQ,EAAEA;YAAS,CAAE;UAAC,EAC1D;UAEDnC,gBAAgB,CAACW,OAAO,CAACD,IAAI,CAAC,GAAG9C,EAAE;QACrC,CAAC,MAAM;UACLoC,gBAAgB,CAACW,OAAO,CAACD,IAAI,CAAC,GAAGN,SAAS;QAC5C;MACF;MAEA,OAAOyB,GAAG;IACZ,CAAC,EAAE,CAAC,CAAC,CAAC;EAGR,CAAC,EAAE,CACDpD,IAAI,EACJC,OAAO,EACPE,SAAS,EACTnB,uBAAuB,EACvB8C,iBAAiB,EACjBZ,OAAO,EACPC,UAAU,CACX,CAAC;EAGF1D,SAAS,CAAC,MAAM;IACd,IAAI,CAACuB,uBAAuB,EAAE;MAC5ByD,cAAc,CAACvB,OAAO,EAAEQ,OAAO,CAACvB,SAAS,CAAC,CAAC;IAC7C;EACF,CAAC,EAAE,CAACA,SAAS,EAAEe,OAAO,EAAEuB,cAAc,EAAEzD,uBAAuB,CAAC,CAAC;EAEjET,gBAAgB,CAAC,MAAM,MAAM;IAC3B8C,gBAAgB,CAACa,OAAO,GAAG,CAAC,CAAC;IAC7BZ,cAAc,CAACY,OAAO,GAAG,CAAC,CAAC;EAC7B,CAAC,CAAC;EAEF,MAAM2C,WAAW,GAAGnH,UAAU,CAC5B,uBAAuB,EAEvB8B,SAAS,EADTc,KAAK,KAAKqB,SAAS,IAAK,gCAA+BrB,KAAM,EAE/D,CAAC;EACD,MAAMwE,WAAW,gEAEkBrF,MAAO,EACzC;EAGD,MAAMsF,cAAc,GAAGC,iBAAiB,CAAC;IACvCrF,KAAK;IACLI,UAAU;IACVY,QAAQ;IACR3B;EACF,CAAC,CAAC;EAEF,MAAMiG,UAA6B,GAAG;IACpCC,OAAO,EAAEH,cAAc,GAAG,QAAQ,GAAG,OAAO;IAC5C7F,KAAK,EAAE6F,cAAc,GAAGpD,SAAS,GAAGzC,KAAK;IACzCiG,MAAM,EAAErF,WAAW;IACnBsF,KAAK,EAAE;MAAEC,GAAG,EAAE,CAAC;MAAEC,MAAM,EAAE;IAAU,CAAC;IACpCC,IAAI,EAAE9E,SAAS;IACfJ;EACF,CAAC;EAED,IAAItB,WAAW,aAAXA,WAAW,eAAXA,WAAW,CAAEyG,mBAAmB,EAAE;IACpC,OAAO,IAAI;EACb;EAEA,IAAIpF,UAAU,IAAI,CAACT,KAAK,EAAE;IACxBtB,IAAI,CAAC,uDAAuD,CAAC;EAC/D;EAEA,OACElB,KAAA,CAAAwH,aAAA,CAAChH,iBAAiB,CAAC8H,QAAQ;IACzBC,KAAK,EAAE;MACLlD,aAAa;MACbC,cAAc;MACdkD,YAAY,EAAEjE,OAAO,CAACvB,SAAS,CAAC;MAChCoB,gBAAgB;MAChBF,gBAAgB;MAChB3B;IACF;EAAE,GAEFvC,KAAA,CAAAwH,aAAA,CAAC7G,KAAK,EAAA8H,QAAA;IACJV,OAAO,EAAEH,cAAc,GAAG,UAAU,GAAG,KAAM;IAC7CvF,SAAS,EAAEqF;EAAY,GACnBjE,IAAI,GAERzD,KAAA,CAAAwH,aAAA;IAAKnF,SAAS,EAAEsF;EAAY,GAC1B3H,KAAA,CAAAwH,aAAA,CAACkB,gBAAgB;IAAChG,gBAAgB,EAAEA;EAAiB,GAClD,CAACF,KAAK,IAAIE,gBAAgB,KACzB1C,KAAA,CAAAwH,aAAA,CAAC5G,SAAS,EAAKkH,UAAU,EACvB9H,KAAA,CAAAwH,aAAA,CAAClG,eAAe;IAACkF,KAAK,EAAEvD;EAAW,GAChCT,KAAK,EACLE,gBAAgB,IACf1C,KAAA,CAAAwH,aAAA;IAAMnF,SAAS,EAAC;EAA0C,GACvDK,gBACG,CAEO,CACR,CAEG,CAAC,EAEnB1C,KAAA,CAAAwH,aAAA;IAAKnF,SAAS,EAAC;EAA+B,GAC5CrC,KAAA,CAAAwH,aAAA,CAAC3G,UAAU,EAAK6E,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAE3C,KAAQ,CAAC,EACxC/C,KAAA,CAAAwH,aAAA,CAAC3G,UAAU,EAAK6E,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAE5C,OAAU,CAAC,EAC1C9C,KAAA,CAAAwH,aAAA,CAAC3G,UAAU,EAAK6E,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAE7C,IAAO,CACnC,CAAC,EAEN7C,KAAA,CAAAwH,aAAA;IACEnF,SAAS,EAAE9B,UAAU,CACnB,iCAAiC,EAQjCgD,gBAAgB,EAPhBH,YAAY,IACT,0CAAyCA,YAAa,EAAC,EAC1DC,KAAK,IAAK,0CAAyCA,KAAM,EAAC,EAC1Dd,WAAW,IACR,iDACCA,WAAW,KAAK,IAAI,GAAG,YAAY,GAAGA,WACvC,EAEL,CAAE;IACFoG,GAAG,EAAEtE;EAAY,GAEhBb,QACE,CACF,CACA,CACmB,CAAC;AAEjC;AAEA,SAASqE,iBAAiBA,CAAAe,KAAA,EAKvB;EAAA,IALwB;IACzBpG,KAAK;IACLI,UAAU;IACVY,QAAQ;IACR3B;EACF,CAAC,GAAA+G,KAAA;EACC,OAAO3I,OAAO,CAAC,MAAM;IACnB,IAAI2C,UAAU,KAAK,KAAK,EAAE;MACxB,OAAO,KAAK;IACd;IAEA,IAAIiG,MAAM,GAAGjG,UAAU;IAEvB,IAAIJ,KAAK,IAAI,CAACqG,MAAM,IAAI,CAAChH,uBAAuB,EAAE;MAChD,IAAIiH,KAAK,GAAG,CAAC;MAEb7H,qBAAqB,CAACuC,QAAQ,EAAGuF,KAAyB,IAAK;QAAA,IAAAC,YAAA,EAAAC,WAAA;QAC7D,IACEF,KAAK,aAALA,KAAK,gBAAAC,YAAA,GAALD,KAAK,CAAEpH,KAAK,cAAAqH,YAAA,eAAZA,YAAA,CAAcxG,KAAK,IACnB,CAAAuG,KAAK,aAALA,KAAK,wBAAAE,WAAA,GAALF,KAAK,CAAEjE,IAAI,cAAAmE,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,OAAOtE,OAAO,CAACsE,MAAM,CAAC;EACxB,CAAC,EAAE,CAACjG,UAAU,EAAEY,QAAQ,EAAEhB,KAAK,EAAEX,uBAAuB,CAAC,CAAC;AAC5D;AAEA,SAAS4F,eAAeA,CAAAyB,KAAA,EAMrB;EAAA,IANsB;IACvBpE,IAAI;IACJyB;EAIF,CAAC,GAAA2C,KAAA;EACC,MAAMC,YAAY,GAAG3H,cAAc,CAAC,CAAC,CAAC4H,KAAK;EAE3C,IAAI7C,QAAQ,CAACe,MAAM,KAAK,CAAC,EAAE;IACzB,OAAOtH,KAAA,CAAAwH,aAAA,CAAAxH,KAAA,CAAAqJ,QAAA,QAAG9C,QAAQ,CAAC,CAAC,CAAC,CAACF,OAAU,CAAC;EACnC;EAEA,OACErG,KAAA,CAAAwH,aAAA,CAAAxH,KAAA,CAAAqJ,QAAA,QACGvE,IAAI,KAAK,OAAO,GACbqE,YAAY,CAACG,YAAY,GACzBH,YAAY,CAACI,YAAY,EAC7BvJ,KAAA,CAAAwH,aAAA,CAAC1G,EAAE,QACAyF,QAAQ,CAACf,GAAG,CAAC,CAAAgE,KAAA,EAAcpC,CAAC,KAAK;IAAA,IAAnB;MAAEf;IAAQ,CAAC,GAAAmD,KAAA;IACxB,OAAOxJ,KAAA,CAAAwH,aAAA,CAACzG,EAAE;MAAC0I,GAAG,EAAErC;IAAE,GAAEf,OAAY,CAAC;EACnC,CAAC,CACC,CACJ,CAAC;AAEP;AAEA,SAASqC,gBAAgBA,CAAAgB,KAAA,EAAiC;EAAA,IAAhC;IAAEhH,gBAAgB;IAAEc;EAAS,CAAC,GAAAkG,KAAA;EACtD,IAAI,CAAChH,gBAAgB,EAAE;IACrB,OAAOc,QAAQ;EACjB;EACA,OAAOxD,KAAA,CAAAwH,aAAA;IAAKnF,SAAS,EAAC;EAA8B,GAAEmB,QAAc,CAAC;AACvE;AAEA,SAAS8C,UAAUA,CAACpB,IAA+B,EAAgB;EACjE,MAAM;IAAES;EAAQ,CAAC,GAAGT,IAAI;EAExB,OAASS,OAAO,YAAYgE,KAAK,IAAIhE,OAAO,CAACU,OAAO,IACjDV,OAAO,YAAYtE,SAAS,IAAIsE,OAAO,CAACU,OAAQ,KACjDV,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEiE,QAAQ,CAAC,CAAC,KACnBjE,OAAO;AACX;AAEAjE,UAAU,CAACmI,qBAAqB,GAAG,IAAI;AAEvC,eAAenI,UAAU"}
@@ -3,7 +3,7 @@
3
3
  import _extends from "@babel/runtime/helpers/esm/extends";
4
4
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
5
5
  const _excluded = ["children", "className", "onSubmit"];
6
- import React from 'react';
6
+ import React, { useCallback, useContext } from 'react';
7
7
  import Context from '../../DataContext/Context';
8
8
  import Space from '../../../../components/space/Space';
9
9
  import classnames from 'classnames';
@@ -14,14 +14,9 @@ export default function FormElement(_ref) {
14
14
  onSubmit = null
15
15
  } = _ref,
16
16
  rest = _objectWithoutProperties(_ref, _excluded);
17
- const dataContext = React.useContext(Context);
17
+ const dataContext = useContext(Context);
18
18
  dataContext.isInsideFormElement = true;
19
- return React.createElement(Space, _extends({
20
- element: "form",
21
- className: classnames('dnb-forms-form', className),
22
- onSubmit: onSubmitHandler
23
- }, rest), children);
24
- function onSubmitHandler(event) {
19
+ const onSubmitHandler = useCallback(event => {
25
20
  var _dataContext$handleSu;
26
21
  event === null || event === void 0 ? void 0 : event.preventDefault();
27
22
  const formElement = event.target;
@@ -31,6 +26,11 @@ export default function FormElement(_ref) {
31
26
  if (typeof onSubmit === 'function') {
32
27
  onSubmit(event);
33
28
  }
34
- }
29
+ }, [dataContext, onSubmit]);
30
+ return React.createElement(Space, _extends({
31
+ element: "form",
32
+ className: classnames('dnb-forms-form', className),
33
+ onSubmit: onSubmitHandler
34
+ }, rest), children);
35
35
  }
36
36
  //# sourceMappingURL=Element.js.map