@dnb/eufemia 10.47.0 → 10.48.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 (561) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/cjs/extensions/forms/DataContext/Context.d.ts +1 -0
  3. package/cjs/extensions/forms/DataContext/Context.js.map +1 -1
  4. package/cjs/extensions/forms/DataContext/FieldBoundary/FieldBoundaryContext.d.ts +3 -2
  5. package/cjs/extensions/forms/DataContext/FieldBoundary/FieldBoundaryContext.js.map +1 -1
  6. package/cjs/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.d.ts +8 -3
  7. package/cjs/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js +12 -5
  8. package/cjs/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js.map +1 -1
  9. package/cjs/extensions/forms/DataContext/Provider/Provider.js +1 -0
  10. package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  11. package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.js +1 -1
  12. package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
  13. package/cjs/extensions/forms/FieldBlock/FieldBlock.d.ts +5 -2
  14. package/cjs/extensions/forms/FieldBlock/FieldBlock.js +32 -7
  15. package/cjs/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  16. package/cjs/extensions/forms/FieldBlock/FieldBlockDocs.js +1 -1
  17. package/cjs/extensions/forms/FieldBlock/FieldBlockDocs.js.map +1 -1
  18. package/cjs/extensions/forms/Form/Isolation/Isolation.js +2 -3
  19. package/cjs/extensions/forms/Form/Isolation/Isolation.js.map +1 -1
  20. package/cjs/extensions/forms/Form/Section/EditContainer/EditContainer.js +20 -1
  21. package/cjs/extensions/forms/Form/Section/EditContainer/EditContainer.js.map +1 -1
  22. package/cjs/extensions/forms/Form/Section/EditContainer/EditToolbarTools.js +17 -11
  23. package/cjs/extensions/forms/Form/Section/EditContainer/EditToolbarTools.js.map +1 -1
  24. package/cjs/extensions/forms/Form/Section/Section.d.ts +7 -2
  25. package/cjs/extensions/forms/Form/Section/Section.js +3 -1
  26. package/cjs/extensions/forms/Form/Section/Section.js.map +1 -1
  27. package/cjs/extensions/forms/Form/Section/SectionDocs.js +6 -1
  28. package/cjs/extensions/forms/Form/Section/SectionDocs.js.map +1 -1
  29. package/cjs/extensions/forms/Form/Section/containers/SectionContainer.d.ts +3 -1
  30. package/cjs/extensions/forms/Form/Section/containers/SectionContainer.js +22 -20
  31. package/cjs/extensions/forms/Form/Section/containers/SectionContainer.js.map +1 -1
  32. package/cjs/extensions/forms/Form/Section/containers/SectionContainerContext.d.ts +2 -0
  33. package/cjs/extensions/forms/Form/Section/containers/SectionContainerContext.js.map +1 -1
  34. package/cjs/extensions/forms/Form/Section/containers/SectionContainerProvider.d.ts +1 -0
  35. package/cjs/extensions/forms/Form/Section/containers/SectionContainerProvider.js +4 -1
  36. package/cjs/extensions/forms/Form/Section/containers/SectionContainerProvider.js.map +1 -1
  37. package/cjs/extensions/forms/Form/Section/style/dnb-form-section.css +3 -0
  38. package/cjs/extensions/forms/Form/Section/style/dnb-form-section.min.css +1 -1
  39. package/cjs/extensions/forms/Form/Section/style/dnb-form-section.scss +4 -0
  40. package/cjs/extensions/forms/Iterate/Array/Array.js +67 -24
  41. package/cjs/extensions/forms/Iterate/Array/Array.js.map +1 -1
  42. package/cjs/extensions/forms/Iterate/Array/ArrayDocs.js +9 -0
  43. package/cjs/extensions/forms/Iterate/Array/ArrayDocs.js.map +1 -1
  44. package/cjs/extensions/forms/Iterate/{AnimatedContainer/ElementBlock.d.ts → Array/ArrayItemArea.d.ts} +6 -6
  45. package/cjs/extensions/forms/Iterate/{AnimatedContainer/ElementBlock.js → Array/ArrayItemArea.js} +66 -49
  46. package/cjs/extensions/forms/Iterate/Array/ArrayItemArea.js.map +1 -0
  47. package/cjs/extensions/forms/Iterate/Array/ArrayItemAreaContext.d.ts +6 -0
  48. package/cjs/extensions/forms/Iterate/{AnimatedContainer/ElementBlockContext.js → Array/ArrayItemAreaContext.js} +3 -3
  49. package/cjs/extensions/forms/Iterate/Array/ArrayItemAreaContext.js.map +1 -0
  50. package/cjs/extensions/forms/Iterate/Array/types.d.ts +7 -5
  51. package/cjs/extensions/forms/Iterate/Array/types.js.map +1 -1
  52. package/cjs/extensions/forms/Iterate/EditContainer/CancelButton.d.ts +9 -0
  53. package/cjs/extensions/forms/Iterate/EditContainer/{EditToolbarTools.js → CancelButton.js} +30 -56
  54. package/cjs/extensions/forms/Iterate/EditContainer/CancelButton.js.map +1 -0
  55. package/cjs/extensions/forms/Iterate/EditContainer/DoneButton.d.ts +4 -0
  56. package/cjs/extensions/forms/Iterate/EditContainer/DoneButton.js +75 -0
  57. package/cjs/extensions/forms/Iterate/EditContainer/DoneButton.js.map +1 -0
  58. package/cjs/extensions/forms/Iterate/EditContainer/EditContainer.d.ts +8 -2
  59. package/cjs/extensions/forms/Iterate/EditContainer/EditContainer.js +33 -12
  60. package/cjs/extensions/forms/Iterate/EditContainer/EditContainer.js.map +1 -1
  61. package/cjs/extensions/forms/Iterate/EditContainer/EditContainerDocs.js +5 -0
  62. package/cjs/extensions/forms/Iterate/EditContainer/EditContainerDocs.js.map +1 -1
  63. package/cjs/extensions/forms/Iterate/EditContainer/index.d.ts +2 -0
  64. package/cjs/extensions/forms/Iterate/EditContainer/index.js +19 -1
  65. package/cjs/extensions/forms/Iterate/EditContainer/index.js.map +1 -1
  66. package/cjs/extensions/forms/Iterate/IterateItemContext.d.ts +7 -1
  67. package/cjs/extensions/forms/Iterate/IterateItemContext.js.map +1 -1
  68. package/cjs/extensions/forms/Iterate/PushButton/PushButton.d.ts +7 -2
  69. package/cjs/extensions/forms/Iterate/PushButton/PushButton.js +23 -12
  70. package/cjs/extensions/forms/Iterate/PushButton/PushButton.js.map +1 -1
  71. package/cjs/extensions/forms/Iterate/PushContainer/PushContainer.d.ts +5 -1
  72. package/cjs/extensions/forms/Iterate/PushContainer/PushContainer.js +78 -24
  73. package/cjs/extensions/forms/Iterate/PushContainer/PushContainer.js.map +1 -1
  74. package/cjs/extensions/forms/Iterate/PushContainer/PushContainerDocs.js +5 -0
  75. package/cjs/extensions/forms/Iterate/PushContainer/PushContainerDocs.js.map +1 -1
  76. package/cjs/extensions/forms/Iterate/RemoveButton/RemoveButton.js +9 -9
  77. package/cjs/extensions/forms/Iterate/RemoveButton/RemoveButton.js.map +1 -1
  78. package/cjs/extensions/forms/Iterate/Toolbar/Toolbar.d.ts +10 -2
  79. package/cjs/extensions/forms/Iterate/Toolbar/Toolbar.js +52 -6
  80. package/cjs/extensions/forms/Iterate/Toolbar/Toolbar.js.map +1 -1
  81. package/cjs/extensions/forms/Iterate/Toolbar/ToolbarContext.d.ts +6 -0
  82. package/cjs/extensions/forms/Iterate/Toolbar/ToolbarContext.js +12 -0
  83. package/cjs/extensions/forms/Iterate/Toolbar/ToolbarContext.js.map +1 -0
  84. package/cjs/extensions/forms/Iterate/ViewContainer/EditButton.d.ts +1 -0
  85. package/cjs/extensions/forms/Iterate/ViewContainer/{ViewToolbarTools.js → EditButton.js} +8 -11
  86. package/cjs/extensions/forms/Iterate/ViewContainer/EditButton.js.map +1 -0
  87. package/cjs/extensions/forms/Iterate/ViewContainer/RemoveButton.d.ts +1 -0
  88. package/cjs/extensions/forms/Iterate/ViewContainer/RemoveButton.js +19 -0
  89. package/cjs/extensions/forms/Iterate/ViewContainer/RemoveButton.js.map +1 -0
  90. package/cjs/extensions/forms/Iterate/ViewContainer/ViewContainer.d.ts +8 -2
  91. package/cjs/extensions/forms/Iterate/ViewContainer/ViewContainer.js +25 -10
  92. package/cjs/extensions/forms/Iterate/ViewContainer/ViewContainer.js.map +1 -1
  93. package/cjs/extensions/forms/Iterate/ViewContainer/ViewContainerDocs.js +5 -0
  94. package/cjs/extensions/forms/Iterate/ViewContainer/ViewContainerDocs.js.map +1 -1
  95. package/cjs/extensions/forms/Iterate/ViewContainer/index.d.ts +2 -0
  96. package/cjs/extensions/forms/Iterate/ViewContainer/index.js +19 -1
  97. package/cjs/extensions/forms/Iterate/ViewContainer/index.js.map +1 -1
  98. package/cjs/extensions/forms/Iterate/hooks/index.d.ts +2 -0
  99. package/cjs/extensions/forms/Iterate/hooks/index.js +21 -0
  100. package/cjs/extensions/forms/Iterate/hooks/index.js.map +1 -0
  101. package/cjs/extensions/forms/Iterate/hooks/useSwitchContainerMode.d.ts +17 -0
  102. package/cjs/extensions/forms/Iterate/hooks/useSwitchContainerMode.js +93 -0
  103. package/cjs/extensions/forms/Iterate/hooks/useSwitchContainerMode.js.map +1 -0
  104. package/cjs/extensions/forms/Tools/Log.d.ts +6 -0
  105. package/cjs/extensions/forms/Tools/Log.js +29 -0
  106. package/cjs/extensions/forms/Tools/Log.js.map +1 -0
  107. package/cjs/extensions/forms/Tools/index.d.ts +1 -0
  108. package/cjs/extensions/forms/Tools/index.js +7 -0
  109. package/cjs/extensions/forms/Tools/index.js.map +1 -1
  110. package/cjs/extensions/forms/Wizard/Container/WizardContainer.js +18 -6
  111. package/cjs/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  112. package/cjs/extensions/forms/Wizard/Container/WizardContainerDocs.js +1 -1
  113. package/cjs/extensions/forms/Wizard/Container/WizardContainerDocs.js.map +1 -1
  114. package/cjs/extensions/forms/Wizard/Context/WizardContext.d.ts +3 -1
  115. package/cjs/extensions/forms/Wizard/Context/WizardContext.js.map +1 -1
  116. package/cjs/extensions/forms/blocks/ChildrenWithAge/ChildrenWithAge.js +0 -2
  117. package/cjs/extensions/forms/blocks/ChildrenWithAge/ChildrenWithAge.js.map +1 -1
  118. package/cjs/extensions/forms/constants/countries.js +10 -26
  119. package/cjs/extensions/forms/constants/countries.js.map +1 -1
  120. package/cjs/extensions/forms/constants/locales/en-GB.d.ts +2 -1
  121. package/cjs/extensions/forms/constants/locales/en-GB.js +3 -2
  122. package/cjs/extensions/forms/constants/locales/en-GB.js.map +1 -1
  123. package/cjs/extensions/forms/constants/locales/en-US.d.ts +2 -1
  124. package/cjs/extensions/forms/constants/locales/index.d.ts +4 -2
  125. package/cjs/extensions/forms/constants/locales/nb-NO.d.ts +2 -1
  126. package/cjs/extensions/forms/constants/locales/nb-NO.js +3 -2
  127. package/cjs/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  128. package/cjs/extensions/forms/hooks/DataValueDocs.js +6 -1
  129. package/cjs/extensions/forms/hooks/DataValueDocs.js.map +1 -1
  130. package/cjs/extensions/forms/hooks/useExternalValue.js +8 -6
  131. package/cjs/extensions/forms/hooks/useExternalValue.js.map +1 -1
  132. package/cjs/extensions/forms/hooks/useFieldProps.d.ts +1 -0
  133. package/cjs/extensions/forms/hooks/useFieldProps.js +29 -14
  134. package/cjs/extensions/forms/hooks/useFieldProps.js.map +1 -1
  135. package/cjs/extensions/forms/hooks/usePath.d.ts +1 -0
  136. package/cjs/extensions/forms/hooks/usePath.js +5 -1
  137. package/cjs/extensions/forms/hooks/usePath.js.map +1 -1
  138. package/cjs/extensions/forms/style/dnb-forms.css +3 -0
  139. package/cjs/extensions/forms/style/dnb-forms.min.css +1 -1
  140. package/cjs/extensions/forms/types.d.ts +4 -0
  141. package/cjs/extensions/forms/types.js.map +1 -1
  142. package/cjs/shared/Eufemia.d.ts +1 -1
  143. package/cjs/shared/Eufemia.js +2 -2
  144. package/cjs/shared/Eufemia.js.map +1 -1
  145. package/cjs/style/core/scopes.scss +1 -1
  146. package/cjs/style/dnb-ui-basis.css +1 -1
  147. package/cjs/style/dnb-ui-basis.min.css +1 -1
  148. package/cjs/style/dnb-ui-body.css +1 -1
  149. package/cjs/style/dnb-ui-body.min.css +1 -1
  150. package/cjs/style/dnb-ui-components.css +3 -0
  151. package/cjs/style/dnb-ui-components.min.css +1 -1
  152. package/cjs/style/dnb-ui-core.css +1 -1
  153. package/cjs/style/dnb-ui-core.min.css +1 -1
  154. package/cjs/style/dnb-ui-extensions.css +3 -0
  155. package/cjs/style/dnb-ui-extensions.min.css +1 -1
  156. package/cjs/style/dnb-ui-forms.css +3 -0
  157. package/cjs/style/dnb-ui-forms.min.css +1 -1
  158. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +6 -0
  159. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +1 -1
  160. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.css +3 -0
  161. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  162. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.css +3 -0
  163. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  164. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +6 -0
  165. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +1 -1
  166. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.css +3 -0
  167. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  168. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.css +3 -0
  169. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  170. package/cjs/style/themes/theme-ui/ui-theme-components.css +6 -0
  171. package/cjs/style/themes/theme-ui/ui-theme-components.min.css +1 -1
  172. package/cjs/style/themes/theme-ui/ui-theme-extensions.css +3 -0
  173. package/cjs/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  174. package/cjs/style/themes/theme-ui/ui-theme-forms.css +3 -0
  175. package/cjs/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  176. package/es/extensions/forms/DataContext/Context.d.ts +1 -0
  177. package/es/extensions/forms/DataContext/Context.js.map +1 -1
  178. package/es/extensions/forms/DataContext/FieldBoundary/FieldBoundaryContext.d.ts +3 -2
  179. package/es/extensions/forms/DataContext/FieldBoundary/FieldBoundaryContext.js.map +1 -1
  180. package/es/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.d.ts +8 -3
  181. package/es/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js +13 -5
  182. package/es/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js.map +1 -1
  183. package/es/extensions/forms/DataContext/Provider/Provider.js +1 -0
  184. package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  185. package/es/extensions/forms/Field/SelectCountry/SelectCountry.js +1 -1
  186. package/es/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
  187. package/es/extensions/forms/FieldBlock/FieldBlock.d.ts +5 -2
  188. package/es/extensions/forms/FieldBlock/FieldBlock.js +30 -7
  189. package/es/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  190. package/es/extensions/forms/FieldBlock/FieldBlockDocs.js +1 -1
  191. package/es/extensions/forms/FieldBlock/FieldBlockDocs.js.map +1 -1
  192. package/es/extensions/forms/Form/Isolation/Isolation.js +2 -3
  193. package/es/extensions/forms/Form/Isolation/Isolation.js.map +1 -1
  194. package/es/extensions/forms/Form/Section/EditContainer/EditContainer.js +22 -2
  195. package/es/extensions/forms/Form/Section/EditContainer/EditContainer.js.map +1 -1
  196. package/es/extensions/forms/Form/Section/EditContainer/EditToolbarTools.js +17 -11
  197. package/es/extensions/forms/Form/Section/EditContainer/EditToolbarTools.js.map +1 -1
  198. package/es/extensions/forms/Form/Section/Section.d.ts +7 -2
  199. package/es/extensions/forms/Form/Section/Section.js +3 -1
  200. package/es/extensions/forms/Form/Section/Section.js.map +1 -1
  201. package/es/extensions/forms/Form/Section/SectionDocs.js +6 -1
  202. package/es/extensions/forms/Form/Section/SectionDocs.js.map +1 -1
  203. package/es/extensions/forms/Form/Section/containers/SectionContainer.d.ts +3 -1
  204. package/es/extensions/forms/Form/Section/containers/SectionContainer.js +22 -20
  205. package/es/extensions/forms/Form/Section/containers/SectionContainer.js.map +1 -1
  206. package/es/extensions/forms/Form/Section/containers/SectionContainerContext.d.ts +2 -0
  207. package/es/extensions/forms/Form/Section/containers/SectionContainerContext.js.map +1 -1
  208. package/es/extensions/forms/Form/Section/containers/SectionContainerProvider.d.ts +1 -0
  209. package/es/extensions/forms/Form/Section/containers/SectionContainerProvider.js +4 -1
  210. package/es/extensions/forms/Form/Section/containers/SectionContainerProvider.js.map +1 -1
  211. package/es/extensions/forms/Form/Section/style/dnb-form-section.css +3 -0
  212. package/es/extensions/forms/Form/Section/style/dnb-form-section.min.css +1 -1
  213. package/es/extensions/forms/Form/Section/style/dnb-form-section.scss +4 -0
  214. package/es/extensions/forms/Iterate/Array/Array.js +67 -25
  215. package/es/extensions/forms/Iterate/Array/Array.js.map +1 -1
  216. package/es/extensions/forms/Iterate/Array/ArrayDocs.js +9 -0
  217. package/es/extensions/forms/Iterate/Array/ArrayDocs.js.map +1 -1
  218. package/es/extensions/forms/Iterate/{AnimatedContainer/ElementBlock.d.ts → Array/ArrayItemArea.d.ts} +6 -6
  219. package/es/extensions/forms/Iterate/Array/ArrayItemArea.js +137 -0
  220. package/es/extensions/forms/Iterate/Array/ArrayItemArea.js.map +1 -0
  221. package/es/extensions/forms/Iterate/Array/ArrayItemAreaContext.d.ts +6 -0
  222. package/es/extensions/forms/Iterate/Array/ArrayItemAreaContext.js +6 -0
  223. package/es/extensions/forms/Iterate/Array/ArrayItemAreaContext.js.map +1 -0
  224. package/es/extensions/forms/Iterate/Array/types.d.ts +7 -5
  225. package/es/extensions/forms/Iterate/Array/types.js.map +1 -1
  226. package/es/extensions/forms/Iterate/EditContainer/CancelButton.d.ts +9 -0
  227. package/es/extensions/forms/Iterate/EditContainer/CancelButton.js +87 -0
  228. package/es/extensions/forms/Iterate/EditContainer/CancelButton.js.map +1 -0
  229. package/es/extensions/forms/Iterate/EditContainer/DoneButton.d.ts +4 -0
  230. package/es/extensions/forms/Iterate/EditContainer/DoneButton.js +67 -0
  231. package/es/extensions/forms/Iterate/EditContainer/DoneButton.js.map +1 -0
  232. package/es/extensions/forms/Iterate/EditContainer/EditContainer.d.ts +8 -2
  233. package/es/extensions/forms/Iterate/EditContainer/EditContainer.js +32 -11
  234. package/es/extensions/forms/Iterate/EditContainer/EditContainer.js.map +1 -1
  235. package/es/extensions/forms/Iterate/EditContainer/EditContainerDocs.js +5 -0
  236. package/es/extensions/forms/Iterate/EditContainer/EditContainerDocs.js.map +1 -1
  237. package/es/extensions/forms/Iterate/EditContainer/index.d.ts +2 -0
  238. package/es/extensions/forms/Iterate/EditContainer/index.js +2 -0
  239. package/es/extensions/forms/Iterate/EditContainer/index.js.map +1 -1
  240. package/es/extensions/forms/Iterate/IterateItemContext.d.ts +7 -1
  241. package/es/extensions/forms/Iterate/IterateItemContext.js.map +1 -1
  242. package/es/extensions/forms/Iterate/PushButton/PushButton.d.ts +7 -2
  243. package/es/extensions/forms/Iterate/PushButton/PushButton.js +23 -12
  244. package/es/extensions/forms/Iterate/PushButton/PushButton.js.map +1 -1
  245. package/es/extensions/forms/Iterate/PushContainer/PushContainer.d.ts +5 -1
  246. package/es/extensions/forms/Iterate/PushContainer/PushContainer.js +78 -23
  247. package/es/extensions/forms/Iterate/PushContainer/PushContainer.js.map +1 -1
  248. package/es/extensions/forms/Iterate/PushContainer/PushContainerDocs.js +5 -0
  249. package/es/extensions/forms/Iterate/PushContainer/PushContainerDocs.js.map +1 -1
  250. package/es/extensions/forms/Iterate/RemoveButton/RemoveButton.js +9 -9
  251. package/es/extensions/forms/Iterate/RemoveButton/RemoveButton.js.map +1 -1
  252. package/es/extensions/forms/Iterate/Toolbar/Toolbar.d.ts +10 -2
  253. package/es/extensions/forms/Iterate/Toolbar/Toolbar.js +51 -7
  254. package/es/extensions/forms/Iterate/Toolbar/Toolbar.js.map +1 -1
  255. package/es/extensions/forms/Iterate/Toolbar/ToolbarContext.d.ts +6 -0
  256. package/es/extensions/forms/Iterate/Toolbar/ToolbarContext.js +4 -0
  257. package/es/extensions/forms/Iterate/Toolbar/ToolbarContext.js.map +1 -0
  258. package/es/extensions/forms/Iterate/ViewContainer/EditButton.d.ts +1 -0
  259. package/{extensions/forms/Iterate/ViewContainer/ViewToolbarTools.js → es/extensions/forms/Iterate/ViewContainer/EditButton.js} +8 -11
  260. package/es/extensions/forms/Iterate/ViewContainer/EditButton.js.map +1 -0
  261. package/es/extensions/forms/Iterate/ViewContainer/RemoveButton.d.ts +1 -0
  262. package/es/extensions/forms/Iterate/ViewContainer/RemoveButton.js +12 -0
  263. package/es/extensions/forms/Iterate/ViewContainer/RemoveButton.js.map +1 -0
  264. package/es/extensions/forms/Iterate/ViewContainer/ViewContainer.d.ts +8 -2
  265. package/es/extensions/forms/Iterate/ViewContainer/ViewContainer.js +24 -9
  266. package/es/extensions/forms/Iterate/ViewContainer/ViewContainer.js.map +1 -1
  267. package/es/extensions/forms/Iterate/ViewContainer/ViewContainerDocs.js +5 -0
  268. package/es/extensions/forms/Iterate/ViewContainer/ViewContainerDocs.js.map +1 -1
  269. package/es/extensions/forms/Iterate/ViewContainer/index.d.ts +2 -0
  270. package/es/extensions/forms/Iterate/ViewContainer/index.js +2 -0
  271. package/es/extensions/forms/Iterate/ViewContainer/index.js.map +1 -1
  272. package/es/extensions/forms/Iterate/hooks/index.d.ts +2 -0
  273. package/es/extensions/forms/Iterate/hooks/index.js +3 -0
  274. package/es/extensions/forms/Iterate/hooks/index.js.map +1 -0
  275. package/es/extensions/forms/Iterate/hooks/useSwitchContainerMode.d.ts +17 -0
  276. package/es/extensions/forms/Iterate/hooks/useSwitchContainerMode.js +85 -0
  277. package/es/extensions/forms/Iterate/hooks/useSwitchContainerMode.js.map +1 -0
  278. package/es/extensions/forms/Tools/Log.d.ts +6 -0
  279. package/es/extensions/forms/Tools/Log.js +22 -0
  280. package/es/extensions/forms/Tools/Log.js.map +1 -0
  281. package/es/extensions/forms/Tools/index.d.ts +1 -0
  282. package/es/extensions/forms/Tools/index.js +1 -0
  283. package/es/extensions/forms/Tools/index.js.map +1 -1
  284. package/es/extensions/forms/Wizard/Container/WizardContainer.js +17 -6
  285. package/es/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  286. package/es/extensions/forms/Wizard/Container/WizardContainerDocs.js +1 -1
  287. package/es/extensions/forms/Wizard/Container/WizardContainerDocs.js.map +1 -1
  288. package/es/extensions/forms/Wizard/Context/WizardContext.d.ts +3 -1
  289. package/es/extensions/forms/Wizard/Context/WizardContext.js.map +1 -1
  290. package/es/extensions/forms/blocks/ChildrenWithAge/ChildrenWithAge.js +0 -2
  291. package/es/extensions/forms/blocks/ChildrenWithAge/ChildrenWithAge.js.map +1 -1
  292. package/es/extensions/forms/constants/countries.js +10 -26
  293. package/es/extensions/forms/constants/countries.js.map +1 -1
  294. package/es/extensions/forms/constants/locales/en-GB.d.ts +2 -1
  295. package/es/extensions/forms/constants/locales/en-GB.js +3 -2
  296. package/es/extensions/forms/constants/locales/en-GB.js.map +1 -1
  297. package/es/extensions/forms/constants/locales/en-US.d.ts +2 -1
  298. package/es/extensions/forms/constants/locales/index.d.ts +4 -2
  299. package/es/extensions/forms/constants/locales/nb-NO.d.ts +2 -1
  300. package/es/extensions/forms/constants/locales/nb-NO.js +3 -2
  301. package/es/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  302. package/es/extensions/forms/hooks/DataValueDocs.js +6 -1
  303. package/es/extensions/forms/hooks/DataValueDocs.js.map +1 -1
  304. package/es/extensions/forms/hooks/useExternalValue.js +8 -6
  305. package/es/extensions/forms/hooks/useExternalValue.js.map +1 -1
  306. package/es/extensions/forms/hooks/useFieldProps.d.ts +1 -0
  307. package/es/extensions/forms/hooks/useFieldProps.js +29 -15
  308. package/es/extensions/forms/hooks/useFieldProps.js.map +1 -1
  309. package/es/extensions/forms/hooks/usePath.d.ts +1 -0
  310. package/es/extensions/forms/hooks/usePath.js +5 -1
  311. package/es/extensions/forms/hooks/usePath.js.map +1 -1
  312. package/es/extensions/forms/style/dnb-forms.css +3 -0
  313. package/es/extensions/forms/style/dnb-forms.min.css +1 -1
  314. package/es/extensions/forms/types.d.ts +4 -0
  315. package/es/extensions/forms/types.js.map +1 -1
  316. package/es/shared/Eufemia.d.ts +1 -1
  317. package/es/shared/Eufemia.js +2 -2
  318. package/es/shared/Eufemia.js.map +1 -1
  319. package/es/style/core/scopes.scss +1 -1
  320. package/es/style/dnb-ui-basis.css +1 -1
  321. package/es/style/dnb-ui-basis.min.css +1 -1
  322. package/es/style/dnb-ui-body.css +1 -1
  323. package/es/style/dnb-ui-body.min.css +1 -1
  324. package/es/style/dnb-ui-components.css +3 -0
  325. package/es/style/dnb-ui-components.min.css +1 -1
  326. package/es/style/dnb-ui-core.css +1 -1
  327. package/es/style/dnb-ui-core.min.css +1 -1
  328. package/es/style/dnb-ui-extensions.css +3 -0
  329. package/es/style/dnb-ui-extensions.min.css +1 -1
  330. package/es/style/dnb-ui-forms.css +3 -0
  331. package/es/style/dnb-ui-forms.min.css +1 -1
  332. package/es/style/themes/theme-eiendom/eiendom-theme-components.css +6 -0
  333. package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +1 -1
  334. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.css +3 -0
  335. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  336. package/es/style/themes/theme-eiendom/eiendom-theme-forms.css +3 -0
  337. package/es/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  338. package/es/style/themes/theme-sbanken/sbanken-theme-components.css +6 -0
  339. package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +1 -1
  340. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.css +3 -0
  341. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  342. package/es/style/themes/theme-sbanken/sbanken-theme-forms.css +3 -0
  343. package/es/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  344. package/es/style/themes/theme-ui/ui-theme-components.css +6 -0
  345. package/es/style/themes/theme-ui/ui-theme-components.min.css +1 -1
  346. package/es/style/themes/theme-ui/ui-theme-extensions.css +3 -0
  347. package/es/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  348. package/es/style/themes/theme-ui/ui-theme-forms.css +3 -0
  349. package/es/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  350. package/esm/dnb-ui-basis.min.mjs +1 -1
  351. package/esm/dnb-ui-components.min.mjs +1 -1
  352. package/esm/dnb-ui-elements.min.mjs +1 -1
  353. package/esm/dnb-ui-extensions.min.mjs +2 -2
  354. package/esm/dnb-ui-lib.min.mjs +1 -1
  355. package/extensions/forms/DataContext/Context.d.ts +1 -0
  356. package/extensions/forms/DataContext/Context.js.map +1 -1
  357. package/extensions/forms/DataContext/FieldBoundary/FieldBoundaryContext.d.ts +3 -2
  358. package/extensions/forms/DataContext/FieldBoundary/FieldBoundaryContext.js.map +1 -1
  359. package/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.d.ts +8 -3
  360. package/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js +12 -5
  361. package/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js.map +1 -1
  362. package/extensions/forms/DataContext/Provider/Provider.js +1 -0
  363. package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  364. package/extensions/forms/Field/SelectCountry/SelectCountry.js +1 -1
  365. package/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
  366. package/extensions/forms/FieldBlock/FieldBlock.d.ts +5 -2
  367. package/extensions/forms/FieldBlock/FieldBlock.js +30 -7
  368. package/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  369. package/extensions/forms/FieldBlock/FieldBlockDocs.js +1 -1
  370. package/extensions/forms/FieldBlock/FieldBlockDocs.js.map +1 -1
  371. package/extensions/forms/Form/Isolation/Isolation.js +2 -3
  372. package/extensions/forms/Form/Isolation/Isolation.js.map +1 -1
  373. package/extensions/forms/Form/Section/EditContainer/EditContainer.js +22 -2
  374. package/extensions/forms/Form/Section/EditContainer/EditContainer.js.map +1 -1
  375. package/extensions/forms/Form/Section/EditContainer/EditToolbarTools.js +17 -11
  376. package/extensions/forms/Form/Section/EditContainer/EditToolbarTools.js.map +1 -1
  377. package/extensions/forms/Form/Section/Section.d.ts +7 -2
  378. package/extensions/forms/Form/Section/Section.js +3 -1
  379. package/extensions/forms/Form/Section/Section.js.map +1 -1
  380. package/extensions/forms/Form/Section/SectionDocs.js +6 -1
  381. package/extensions/forms/Form/Section/SectionDocs.js.map +1 -1
  382. package/extensions/forms/Form/Section/containers/SectionContainer.d.ts +3 -1
  383. package/extensions/forms/Form/Section/containers/SectionContainer.js +22 -20
  384. package/extensions/forms/Form/Section/containers/SectionContainer.js.map +1 -1
  385. package/extensions/forms/Form/Section/containers/SectionContainerContext.d.ts +2 -0
  386. package/extensions/forms/Form/Section/containers/SectionContainerContext.js.map +1 -1
  387. package/extensions/forms/Form/Section/containers/SectionContainerProvider.d.ts +1 -0
  388. package/extensions/forms/Form/Section/containers/SectionContainerProvider.js +4 -1
  389. package/extensions/forms/Form/Section/containers/SectionContainerProvider.js.map +1 -1
  390. package/extensions/forms/Form/Section/style/dnb-form-section.css +3 -0
  391. package/extensions/forms/Form/Section/style/dnb-form-section.min.css +1 -1
  392. package/extensions/forms/Form/Section/style/dnb-form-section.scss +4 -0
  393. package/extensions/forms/Iterate/Array/Array.js +68 -25
  394. package/extensions/forms/Iterate/Array/Array.js.map +1 -1
  395. package/extensions/forms/Iterate/Array/ArrayDocs.js +9 -0
  396. package/extensions/forms/Iterate/Array/ArrayDocs.js.map +1 -1
  397. package/extensions/forms/Iterate/{AnimatedContainer/ElementBlock.d.ts → Array/ArrayItemArea.d.ts} +6 -6
  398. package/extensions/forms/Iterate/Array/ArrayItemArea.js +137 -0
  399. package/extensions/forms/Iterate/Array/ArrayItemArea.js.map +1 -0
  400. package/extensions/forms/Iterate/Array/ArrayItemAreaContext.d.ts +6 -0
  401. package/extensions/forms/Iterate/Array/ArrayItemAreaContext.js +6 -0
  402. package/extensions/forms/Iterate/Array/ArrayItemAreaContext.js.map +1 -0
  403. package/extensions/forms/Iterate/Array/types.d.ts +7 -5
  404. package/extensions/forms/Iterate/Array/types.js.map +1 -1
  405. package/extensions/forms/Iterate/EditContainer/CancelButton.d.ts +9 -0
  406. package/extensions/forms/Iterate/EditContainer/CancelButton.js +88 -0
  407. package/extensions/forms/Iterate/EditContainer/CancelButton.js.map +1 -0
  408. package/extensions/forms/Iterate/EditContainer/DoneButton.d.ts +4 -0
  409. package/extensions/forms/Iterate/EditContainer/DoneButton.js +67 -0
  410. package/extensions/forms/Iterate/EditContainer/DoneButton.js.map +1 -0
  411. package/extensions/forms/Iterate/EditContainer/EditContainer.d.ts +8 -2
  412. package/extensions/forms/Iterate/EditContainer/EditContainer.js +32 -11
  413. package/extensions/forms/Iterate/EditContainer/EditContainer.js.map +1 -1
  414. package/extensions/forms/Iterate/EditContainer/EditContainerDocs.js +5 -0
  415. package/extensions/forms/Iterate/EditContainer/EditContainerDocs.js.map +1 -1
  416. package/extensions/forms/Iterate/EditContainer/index.d.ts +2 -0
  417. package/extensions/forms/Iterate/EditContainer/index.js +2 -0
  418. package/extensions/forms/Iterate/EditContainer/index.js.map +1 -1
  419. package/extensions/forms/Iterate/IterateItemContext.d.ts +7 -1
  420. package/extensions/forms/Iterate/IterateItemContext.js.map +1 -1
  421. package/extensions/forms/Iterate/PushButton/PushButton.d.ts +7 -2
  422. package/extensions/forms/Iterate/PushButton/PushButton.js +23 -12
  423. package/extensions/forms/Iterate/PushButton/PushButton.js.map +1 -1
  424. package/extensions/forms/Iterate/PushContainer/PushContainer.d.ts +5 -1
  425. package/extensions/forms/Iterate/PushContainer/PushContainer.js +80 -26
  426. package/extensions/forms/Iterate/PushContainer/PushContainer.js.map +1 -1
  427. package/extensions/forms/Iterate/PushContainer/PushContainerDocs.js +5 -0
  428. package/extensions/forms/Iterate/PushContainer/PushContainerDocs.js.map +1 -1
  429. package/extensions/forms/Iterate/RemoveButton/RemoveButton.js +9 -9
  430. package/extensions/forms/Iterate/RemoveButton/RemoveButton.js.map +1 -1
  431. package/extensions/forms/Iterate/Toolbar/Toolbar.d.ts +10 -2
  432. package/extensions/forms/Iterate/Toolbar/Toolbar.js +52 -7
  433. package/extensions/forms/Iterate/Toolbar/Toolbar.js.map +1 -1
  434. package/extensions/forms/Iterate/Toolbar/ToolbarContext.d.ts +6 -0
  435. package/extensions/forms/Iterate/Toolbar/ToolbarContext.js +4 -0
  436. package/extensions/forms/Iterate/Toolbar/ToolbarContext.js.map +1 -0
  437. package/extensions/forms/Iterate/ViewContainer/EditButton.d.ts +1 -0
  438. package/{es/extensions/forms/Iterate/ViewContainer/ViewToolbarTools.js → extensions/forms/Iterate/ViewContainer/EditButton.js} +8 -11
  439. package/extensions/forms/Iterate/ViewContainer/EditButton.js.map +1 -0
  440. package/extensions/forms/Iterate/ViewContainer/RemoveButton.d.ts +1 -0
  441. package/extensions/forms/Iterate/ViewContainer/RemoveButton.js +12 -0
  442. package/extensions/forms/Iterate/ViewContainer/RemoveButton.js.map +1 -0
  443. package/extensions/forms/Iterate/ViewContainer/ViewContainer.d.ts +8 -2
  444. package/extensions/forms/Iterate/ViewContainer/ViewContainer.js +24 -9
  445. package/extensions/forms/Iterate/ViewContainer/ViewContainer.js.map +1 -1
  446. package/extensions/forms/Iterate/ViewContainer/ViewContainerDocs.js +5 -0
  447. package/extensions/forms/Iterate/ViewContainer/ViewContainerDocs.js.map +1 -1
  448. package/extensions/forms/Iterate/ViewContainer/index.d.ts +2 -0
  449. package/extensions/forms/Iterate/ViewContainer/index.js +2 -0
  450. package/extensions/forms/Iterate/ViewContainer/index.js.map +1 -1
  451. package/extensions/forms/Iterate/hooks/index.d.ts +2 -0
  452. package/extensions/forms/Iterate/hooks/index.js +3 -0
  453. package/extensions/forms/Iterate/hooks/index.js.map +1 -0
  454. package/extensions/forms/Iterate/hooks/useSwitchContainerMode.d.ts +17 -0
  455. package/extensions/forms/Iterate/hooks/useSwitchContainerMode.js +87 -0
  456. package/extensions/forms/Iterate/hooks/useSwitchContainerMode.js.map +1 -0
  457. package/extensions/forms/Tools/Log.d.ts +6 -0
  458. package/extensions/forms/Tools/Log.js +22 -0
  459. package/extensions/forms/Tools/Log.js.map +1 -0
  460. package/extensions/forms/Tools/index.d.ts +1 -0
  461. package/extensions/forms/Tools/index.js +1 -0
  462. package/extensions/forms/Tools/index.js.map +1 -1
  463. package/extensions/forms/Wizard/Container/WizardContainer.js +18 -6
  464. package/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  465. package/extensions/forms/Wizard/Container/WizardContainerDocs.js +1 -1
  466. package/extensions/forms/Wizard/Container/WizardContainerDocs.js.map +1 -1
  467. package/extensions/forms/Wizard/Context/WizardContext.d.ts +3 -1
  468. package/extensions/forms/Wizard/Context/WizardContext.js.map +1 -1
  469. package/extensions/forms/blocks/ChildrenWithAge/ChildrenWithAge.js +0 -2
  470. package/extensions/forms/blocks/ChildrenWithAge/ChildrenWithAge.js.map +1 -1
  471. package/extensions/forms/constants/countries.js +10 -26
  472. package/extensions/forms/constants/countries.js.map +1 -1
  473. package/extensions/forms/constants/locales/en-GB.d.ts +2 -1
  474. package/extensions/forms/constants/locales/en-GB.js +3 -2
  475. package/extensions/forms/constants/locales/en-GB.js.map +1 -1
  476. package/extensions/forms/constants/locales/en-US.d.ts +2 -1
  477. package/extensions/forms/constants/locales/index.d.ts +4 -2
  478. package/extensions/forms/constants/locales/nb-NO.d.ts +2 -1
  479. package/extensions/forms/constants/locales/nb-NO.js +3 -2
  480. package/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  481. package/extensions/forms/hooks/DataValueDocs.js +6 -1
  482. package/extensions/forms/hooks/DataValueDocs.js.map +1 -1
  483. package/extensions/forms/hooks/useExternalValue.js +8 -6
  484. package/extensions/forms/hooks/useExternalValue.js.map +1 -1
  485. package/extensions/forms/hooks/useFieldProps.d.ts +1 -0
  486. package/extensions/forms/hooks/useFieldProps.js +29 -14
  487. package/extensions/forms/hooks/useFieldProps.js.map +1 -1
  488. package/extensions/forms/hooks/usePath.d.ts +1 -0
  489. package/extensions/forms/hooks/usePath.js +5 -1
  490. package/extensions/forms/hooks/usePath.js.map +1 -1
  491. package/extensions/forms/style/dnb-forms.css +3 -0
  492. package/extensions/forms/style/dnb-forms.min.css +1 -1
  493. package/extensions/forms/types.d.ts +4 -0
  494. package/extensions/forms/types.js.map +1 -1
  495. package/package.json +1 -1
  496. package/shared/Eufemia.d.ts +1 -1
  497. package/shared/Eufemia.js +2 -2
  498. package/shared/Eufemia.js.map +1 -1
  499. package/style/core/scopes.scss +1 -1
  500. package/style/dnb-ui-basis.css +1 -1
  501. package/style/dnb-ui-basis.min.css +1 -1
  502. package/style/dnb-ui-body.css +1 -1
  503. package/style/dnb-ui-body.min.css +1 -1
  504. package/style/dnb-ui-components.css +3 -0
  505. package/style/dnb-ui-components.min.css +1 -1
  506. package/style/dnb-ui-core.css +1 -1
  507. package/style/dnb-ui-core.min.css +1 -1
  508. package/style/dnb-ui-extensions.css +3 -0
  509. package/style/dnb-ui-extensions.min.css +1 -1
  510. package/style/dnb-ui-forms.css +3 -0
  511. package/style/dnb-ui-forms.min.css +1 -1
  512. package/style/themes/theme-eiendom/eiendom-theme-components.css +6 -0
  513. package/style/themes/theme-eiendom/eiendom-theme-components.min.css +1 -1
  514. package/style/themes/theme-eiendom/eiendom-theme-extensions.css +3 -0
  515. package/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  516. package/style/themes/theme-eiendom/eiendom-theme-forms.css +3 -0
  517. package/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  518. package/style/themes/theme-sbanken/sbanken-theme-components.css +6 -0
  519. package/style/themes/theme-sbanken/sbanken-theme-components.min.css +1 -1
  520. package/style/themes/theme-sbanken/sbanken-theme-extensions.css +3 -0
  521. package/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  522. package/style/themes/theme-sbanken/sbanken-theme-forms.css +3 -0
  523. package/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  524. package/style/themes/theme-ui/ui-theme-components.css +6 -0
  525. package/style/themes/theme-ui/ui-theme-components.min.css +1 -1
  526. package/style/themes/theme-ui/ui-theme-extensions.css +3 -0
  527. package/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  528. package/style/themes/theme-ui/ui-theme-forms.css +3 -0
  529. package/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  530. package/umd/dnb-ui-basis.min.js +1 -1
  531. package/umd/dnb-ui-components.min.js +1 -1
  532. package/umd/dnb-ui-elements.min.js +1 -1
  533. package/umd/dnb-ui-extensions.min.js +3 -3
  534. package/umd/dnb-ui-lib.min.js +1 -1
  535. package/cjs/extensions/forms/Iterate/AnimatedContainer/ElementBlock.js.map +0 -1
  536. package/cjs/extensions/forms/Iterate/AnimatedContainer/ElementBlockContext.d.ts +0 -6
  537. package/cjs/extensions/forms/Iterate/AnimatedContainer/ElementBlockContext.js.map +0 -1
  538. package/cjs/extensions/forms/Iterate/EditContainer/EditToolbarTools.d.ts +0 -6
  539. package/cjs/extensions/forms/Iterate/EditContainer/EditToolbarTools.js.map +0 -1
  540. package/cjs/extensions/forms/Iterate/ViewContainer/ViewToolbarTools.d.ts +0 -1
  541. package/cjs/extensions/forms/Iterate/ViewContainer/ViewToolbarTools.js.map +0 -1
  542. package/es/extensions/forms/Iterate/AnimatedContainer/ElementBlock.js +0 -120
  543. package/es/extensions/forms/Iterate/AnimatedContainer/ElementBlock.js.map +0 -1
  544. package/es/extensions/forms/Iterate/AnimatedContainer/ElementBlockContext.d.ts +0 -6
  545. package/es/extensions/forms/Iterate/AnimatedContainer/ElementBlockContext.js +0 -6
  546. package/es/extensions/forms/Iterate/AnimatedContainer/ElementBlockContext.js.map +0 -1
  547. package/es/extensions/forms/Iterate/EditContainer/EditToolbarTools.d.ts +0 -6
  548. package/es/extensions/forms/Iterate/EditContainer/EditToolbarTools.js +0 -113
  549. package/es/extensions/forms/Iterate/EditContainer/EditToolbarTools.js.map +0 -1
  550. package/es/extensions/forms/Iterate/ViewContainer/ViewToolbarTools.d.ts +0 -1
  551. package/es/extensions/forms/Iterate/ViewContainer/ViewToolbarTools.js.map +0 -1
  552. package/extensions/forms/Iterate/AnimatedContainer/ElementBlock.js +0 -120
  553. package/extensions/forms/Iterate/AnimatedContainer/ElementBlock.js.map +0 -1
  554. package/extensions/forms/Iterate/AnimatedContainer/ElementBlockContext.d.ts +0 -6
  555. package/extensions/forms/Iterate/AnimatedContainer/ElementBlockContext.js +0 -6
  556. package/extensions/forms/Iterate/AnimatedContainer/ElementBlockContext.js.map +0 -1
  557. package/extensions/forms/Iterate/EditContainer/EditToolbarTools.d.ts +0 -6
  558. package/extensions/forms/Iterate/EditContainer/EditToolbarTools.js +0 -114
  559. package/extensions/forms/Iterate/EditContainer/EditToolbarTools.js.map +0 -1
  560. package/extensions/forms/Iterate/ViewContainer/ViewToolbarTools.d.ts +0 -1
  561. package/extensions/forms/Iterate/ViewContainer/ViewToolbarTools.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"SelectCountry.js","names":["React","useCallback","useContext","useMemo","classnames","SharedContext","Autocomplete","HelpButton","pickSpacingProps","countries","prioritizedCountries","useFieldProps","FieldBlock","useErrorMessage","useTranslation","SelectCountry","props","_sharedContext$locale","sharedContext","translations","lang","locale","split","transformAdditionalArgs","additionalArgs","value","country","find","_ref","iso","errorMessages","path","required","errorRequired","defaultProps","preparedProps","_objectSpread","className","placeholder","label","ccFilter","info","warning","error","hasError","disabled","width","help","htmlAttributes","handleFocus","handleBlur","handleChange","updateValue","forceUpdate","filterCountries","makeCountryFilterSet","undefined","dataRef","useRef","langRef","wasFilled","isLangChange","current","getCountryData","filter","sort","window","requestAnimationFrame","handleCountryChange","_ref2","data","newValue","selectedKey","_ref3","fillData","onFocusHandler","_ref4","updateData","onTypeHandler","_ref5","_event$nativeEvent","currentValue","setHidden","event","nativeEvent","search","toLowerCase","_ref6","i18n","Object","values","some","s","includes","createElement","_extends","label_direction","input_icon","on_show","on_focus","on_blur","on_change","on_type","stretch","status","show_submit_button","keep_selection","suffix","title","content","autoComplete","no_animation","noAnimation","makeObject","_country$i18n$lang","en","arguments","length","_ref7","_ref8","a","b","indexA","indexOf","indexB","priorityA","priorityB","localeCompare","map","_country$regions","regions","continent","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/SelectCountry/SelectCountry.tsx"],"sourcesContent":["import React, { useCallback, useContext, useMemo } from 'react'\nimport classnames from 'classnames'\nimport SharedContext from '../../../../shared/Context'\nimport { Autocomplete, HelpButton } from '../../../../components'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport countries, {\n prioritizedCountries,\n type CountryType,\n type CountryLang,\n} from '../../constants/countries'\nimport { useFieldProps } from '../../hooks'\nimport {\n FieldBlockWidth,\n FieldHelpProps,\n FieldPropsWithExtraValue,\n} from '../../types'\nimport FieldBlock from '../../FieldBlock'\nimport useErrorMessage from '../../hooks/useErrorMessage'\nimport useTranslation from '../../hooks/useTranslation'\n\nexport type CountryFilterSet =\n | 'Scandinavia'\n | 'Nordic'\n | 'Europe'\n | 'Prioritized'\n\nexport type Props = FieldHelpProps &\n FieldPropsWithExtraValue<string, CountryType, undefined | string> & {\n countries?: CountryFilterSet\n\n // Styling\n width?: FieldBlockWidth\n\n /**\n * For internal use only.\n *\n * @param country\n * @returns boolean\n */\n filterCountries?: (country: CountryType) => boolean\n\n /**\n * For internal testing purposes\n */\n noAnimation?: boolean\n }\n\nfunction SelectCountry(props: Props) {\n const sharedContext = useContext(SharedContext)\n const translations = useTranslation().SelectCountry\n const lang = sharedContext.locale?.split('-')[0] as CountryLang\n\n const transformAdditionalArgs = (additionalArgs: CountryType, value) => {\n const country = countries.find(({ iso }) => value === iso)\n if (country?.iso) {\n return country\n } else {\n return additionalArgs\n }\n }\n\n const errorMessages = useErrorMessage(props.path, props.errorMessages, {\n required: translations.errorRequired,\n })\n\n const defaultProps: Partial<Props> = {\n errorMessages,\n }\n const preparedProps: Props = {\n ...defaultProps,\n ...props,\n transformAdditionalArgs,\n }\n\n const {\n className,\n placeholder = translations.placeholder,\n label = translations.label,\n countries: ccFilter = 'Prioritized',\n info,\n warning,\n error,\n hasError,\n disabled,\n value,\n width = 'large',\n help,\n htmlAttributes,\n handleFocus,\n handleBlur,\n handleChange,\n updateValue,\n forceUpdate,\n filterCountries = ccFilter !== 'Prioritized'\n ? makeCountryFilterSet(ccFilter)\n : undefined,\n } = useFieldProps(preparedProps)\n\n const dataRef = React.useRef(null)\n const langRef = React.useRef(lang)\n const wasFilled = React.useRef(false)\n\n /**\n * We do not process the whole country list at the first render.\n * Only when the Autocomplete opens (focus).\n * To achieve this, we use memo instead of effect to update refs in sync.\n *\n * We set or update the data list depending on if the countrycode changes or lang changes.\n * We then update data set when value changes.\n */\n useMemo(() => {\n const isLangChange = lang !== langRef.current\n\n if (isLangChange || !wasFilled.current) {\n langRef.current = lang\n dataRef.current = getCountryData({\n lang,\n filter: !wasFilled.current\n ? (country) => country.iso === value\n : filterCountries,\n sort: ccFilter as Extract<CountryFilterSet, 'Prioritized'>,\n })\n\n // To force Autocomplete to re-evaluate the internal data\n if (isLangChange && value && typeof window !== 'undefined') {\n updateValue(null)\n window.requestAnimationFrame(() => {\n updateValue(value)\n })\n }\n }\n }, [lang, filterCountries, ccFilter, updateValue, value])\n\n const handleCountryChange = useCallback(\n ({ data }: { data: { selectedKey: string } }) => {\n const newValue = data?.selectedKey\n const country = countries.find(({ iso }) => newValue === iso)\n if (country?.iso) {\n handleChange(country.iso)\n }\n },\n [handleChange]\n )\n\n const fillData = useCallback(() => {\n if (!wasFilled.current) {\n wasFilled.current = true\n dataRef.current = getCountryData({\n lang: langRef.current,\n filter: filterCountries,\n sort: ccFilter as Extract<CountryFilterSet, 'Prioritized'>,\n })\n forceUpdate()\n }\n }, [ccFilter, filterCountries, forceUpdate])\n\n const onFocusHandler = useCallback(\n ({ updateData }) => {\n fillData()\n updateData(dataRef.current)\n handleFocus()\n },\n [fillData, handleFocus]\n )\n\n const onTypeHandler = useCallback(\n ({ value: currentValue, setHidden, event }) => {\n // Handle browser autofill/autocomplete\n if (typeof event?.nativeEvent?.data === 'undefined') {\n const search = currentValue.toLowerCase()\n const country = countries.find(({ i18n }) =>\n Object.values(i18n).some((s) => s.toLowerCase().includes(search))\n )\n if (country?.iso) {\n setHidden()\n handleChange(country.iso)\n }\n }\n },\n [handleChange]\n )\n\n return (\n <FieldBlock\n className={classnames('dnb-forms-field-select-country', className)}\n width={width}\n info={info}\n warning={warning}\n error={error}\n {...pickSpacingProps(props)}\n >\n <Autocomplete\n placeholder={placeholder}\n label_direction=\"vertical\"\n label={label}\n input_icon={false}\n data={dataRef.current}\n value={value}\n disabled={disabled}\n on_show={fillData}\n on_focus={onFocusHandler}\n on_blur={handleBlur}\n on_change={handleCountryChange}\n on_type={onTypeHandler}\n stretch\n status={hasError ? 'error' : undefined}\n show_submit_button\n keep_selection\n suffix={\n help ? (\n <HelpButton title={help.title}>{help.content}</HelpButton>\n ) : undefined\n }\n autoComplete=\"country-name\"\n no_animation={props.noAnimation}\n {...htmlAttributes}\n />\n </FieldBlock>\n )\n}\n\ntype GetCountryData = {\n lang?: CountryLang\n filter?: Props['filterCountries']\n sort?: Extract<CountryFilterSet, 'Prioritized'>\n makeObject?: (\n country: CountryType,\n lang: string\n ) => {\n selectedKey: string\n selected_value?: string\n content: string\n }\n}\n\nexport function getCountryData({\n lang = 'nb',\n filter = null,\n sort = null,\n makeObject = (country: CountryType, lang: string) => {\n const content = country.i18n[lang] ?? country.i18n.en\n return {\n selectedKey: country.iso,\n content,\n }\n },\n}: GetCountryData = {}) {\n return countries\n .filter((country) => {\n if (typeof filter === 'function') {\n return filter(country)\n }\n\n return !filter\n })\n .sort(({ i18n: a }, { i18n: b }) => {\n if (sort === 'Prioritized') {\n const indexA = prioritizedCountries.indexOf(a['en'])\n const indexB = prioritizedCountries.indexOf(b['en'])\n\n const priorityA = indexA !== -1\n const priorityB = indexB !== -1\n\n if (priorityA && priorityB) {\n return indexA - indexB\n } else if (priorityA) {\n return -1\n } else if (priorityB) {\n return 1\n }\n }\n\n return a[lang].localeCompare(b[lang])\n })\n .map((country) => makeObject(country, lang))\n}\n\nexport function makeCountryFilterSet(ccFilter: CountryFilterSet) {\n return (country: CountryType) => {\n switch (ccFilter) {\n case 'Scandinavia':\n case 'Nordic':\n return country.regions?.includes(ccFilter)\n case 'Europe':\n return country.continent.includes(ccFilter)\n }\n return true\n }\n}\n\nSelectCountry._supportsSpacingProps = true\nexport default SelectCountry\n"],"mappings":"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"}
1
+ {"version":3,"file":"SelectCountry.js","names":["React","useCallback","useContext","useMemo","classnames","SharedContext","Autocomplete","HelpButton","pickSpacingProps","countries","prioritizedCountries","useFieldProps","FieldBlock","useErrorMessage","useTranslation","SelectCountry","props","_sharedContext$locale","sharedContext","translations","lang","locale","split","transformAdditionalArgs","additionalArgs","value","country","find","_ref","iso","errorMessages","path","required","errorRequired","defaultProps","preparedProps","_objectSpread","className","placeholder","label","ccFilter","info","warning","error","hasError","disabled","width","help","htmlAttributes","handleFocus","handleBlur","handleChange","updateValue","forceUpdate","filterCountries","makeCountryFilterSet","undefined","dataRef","useRef","langRef","wasFilled","isLangChange","current","getCountryData","filter","sort","window","requestAnimationFrame","handleCountryChange","_ref2","data","newValue","selectedKey","_ref3","fillData","onFocusHandler","_ref4","updateData","onTypeHandler","_ref5","_event$nativeEvent","currentValue","setHidden","event","nativeEvent","search","toLowerCase","_ref6","i18n","Object","values","some","s","includes","createElement","_extends","label_direction","input_icon","on_show","on_focus","on_blur","on_change","on_type","stretch","status","show_submit_button","keep_selection","suffix","title","content","autoComplete","no_animation","noAnimation","makeObject","_country$i18n$lang","en","arguments","length","_ref7","_ref8","a","b","indexA","indexOf","indexB","priorityA","priorityB","localeCompare","map","_country$regions","regions","continent","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/SelectCountry/SelectCountry.tsx"],"sourcesContent":["import React, { useCallback, useContext, useMemo } from 'react'\nimport classnames from 'classnames'\nimport SharedContext from '../../../../shared/Context'\nimport { Autocomplete, HelpButton } from '../../../../components'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport countries, {\n prioritizedCountries,\n type CountryType,\n type CountryLang,\n} from '../../constants/countries'\nimport { useFieldProps } from '../../hooks'\nimport {\n FieldBlockWidth,\n FieldHelpProps,\n FieldPropsWithExtraValue,\n} from '../../types'\nimport FieldBlock from '../../FieldBlock'\nimport useErrorMessage from '../../hooks/useErrorMessage'\nimport useTranslation from '../../hooks/useTranslation'\n\nexport type CountryFilterSet =\n | 'Scandinavia'\n | 'Nordic'\n | 'Europe'\n | 'Prioritized'\n\nexport type Props = FieldHelpProps &\n FieldPropsWithExtraValue<string, CountryType, undefined | string> & {\n countries?: CountryFilterSet\n\n // Styling\n width?: FieldBlockWidth\n\n /**\n * For internal use only.\n *\n * @param country\n * @returns boolean\n */\n filterCountries?: (country: CountryType) => boolean\n\n /**\n * For internal testing purposes\n */\n noAnimation?: boolean\n }\n\nfunction SelectCountry(props: Props) {\n const sharedContext = useContext(SharedContext)\n const translations = useTranslation().SelectCountry\n const lang = sharedContext.locale?.split('-')[0] as CountryLang\n\n const transformAdditionalArgs = (additionalArgs: CountryType, value) => {\n const country = countries.find(({ iso }) => value === iso)\n if (country?.iso) {\n return country\n } else {\n return additionalArgs\n }\n }\n\n const errorMessages = useErrorMessage(props.path, props.errorMessages, {\n required: translations.errorRequired,\n })\n\n const defaultProps: Partial<Props> = {\n errorMessages,\n }\n const preparedProps: Props = {\n ...defaultProps,\n ...props,\n transformAdditionalArgs,\n }\n\n const {\n className,\n placeholder = translations.placeholder,\n label = translations.label,\n countries: ccFilter = 'Prioritized',\n info,\n warning,\n error,\n hasError,\n disabled,\n value,\n width = 'large',\n help,\n htmlAttributes,\n handleFocus,\n handleBlur,\n handleChange,\n updateValue,\n forceUpdate,\n filterCountries = ccFilter !== 'Prioritized'\n ? makeCountryFilterSet(ccFilter)\n : undefined,\n } = useFieldProps(preparedProps)\n\n const dataRef = React.useRef(null)\n const langRef = React.useRef(lang)\n const wasFilled = React.useRef(false)\n\n /**\n * We do not process the whole country list at the first render.\n * Only when the Autocomplete opens (focus).\n * To achieve this, we use memo instead of effect to update refs in sync.\n *\n * We set or update the data list depending on if the countrycode changes or lang changes.\n * We then update data set when value changes.\n */\n useMemo(() => {\n const isLangChange = lang !== langRef.current\n\n if (isLangChange || !wasFilled.current) {\n langRef.current = lang\n dataRef.current = getCountryData({\n lang,\n filter: !wasFilled.current\n ? (country) => country.iso === value\n : filterCountries,\n sort: ccFilter as Extract<CountryFilterSet, 'Prioritized'>,\n })\n\n // To force Autocomplete to re-evaluate the internal data\n if (isLangChange && value && typeof window !== 'undefined') {\n updateValue(null)\n window.requestAnimationFrame(() => {\n updateValue(value)\n })\n }\n }\n }, [lang, filterCountries, ccFilter, updateValue, value])\n\n const handleCountryChange = useCallback(\n ({ data }: { data: { selectedKey: string } }) => {\n const newValue = data?.selectedKey\n const country = countries.find(({ iso }) => newValue === iso)\n if (country?.iso) {\n handleChange(country.iso)\n }\n },\n [handleChange]\n )\n\n const fillData = useCallback(() => {\n if (!wasFilled.current) {\n wasFilled.current = true\n dataRef.current = getCountryData({\n lang: langRef.current,\n filter: filterCountries,\n sort: ccFilter as Extract<CountryFilterSet, 'Prioritized'>,\n })\n forceUpdate()\n }\n }, [ccFilter, filterCountries, forceUpdate])\n\n const onFocusHandler = useCallback(\n ({ updateData }) => {\n fillData()\n updateData(dataRef.current)\n handleFocus()\n },\n [fillData, handleFocus]\n )\n\n const onTypeHandler = useCallback(\n ({ value: currentValue, setHidden, event }) => {\n // Handle browser autofill/autocomplete\n if (typeof event?.nativeEvent?.data === 'undefined') {\n const search = currentValue.toLowerCase()\n const country = countries.find(({ i18n }) =>\n Object.values(i18n).some((s) => s.toLowerCase().includes(search))\n )\n if (country?.iso) {\n setHidden()\n handleChange(country.iso)\n }\n }\n },\n [handleChange]\n )\n\n return (\n <FieldBlock\n className={classnames('dnb-forms-field-select-country', className)}\n width={width}\n info={info}\n warning={warning}\n error={error}\n {...pickSpacingProps(props)}\n >\n <Autocomplete\n placeholder={placeholder}\n label_direction=\"vertical\"\n label={label}\n input_icon={false}\n data={dataRef.current}\n value={typeof value === 'string' ? value : null}\n disabled={disabled}\n on_show={fillData}\n on_focus={onFocusHandler}\n on_blur={handleBlur}\n on_change={handleCountryChange}\n on_type={onTypeHandler}\n stretch\n status={hasError ? 'error' : undefined}\n show_submit_button\n keep_selection\n suffix={\n help ? (\n <HelpButton title={help.title}>{help.content}</HelpButton>\n ) : undefined\n }\n autoComplete=\"country-name\"\n no_animation={props.noAnimation}\n {...htmlAttributes}\n />\n </FieldBlock>\n )\n}\n\ntype GetCountryData = {\n lang?: CountryLang\n filter?: Props['filterCountries']\n sort?: Extract<CountryFilterSet, 'Prioritized'>\n makeObject?: (\n country: CountryType,\n lang: string\n ) => {\n selectedKey: string\n selected_value?: string\n content: string\n }\n}\n\nexport function getCountryData({\n lang = 'nb',\n filter = null,\n sort = null,\n makeObject = (country: CountryType, lang: string) => {\n const content = country.i18n[lang] ?? country.i18n.en\n return {\n selectedKey: country.iso,\n content,\n }\n },\n}: GetCountryData = {}) {\n return countries\n .filter((country) => {\n if (typeof filter === 'function') {\n return filter(country)\n }\n\n return !filter\n })\n .sort(({ i18n: a }, { i18n: b }) => {\n if (sort === 'Prioritized') {\n const indexA = prioritizedCountries.indexOf(a['en'])\n const indexB = prioritizedCountries.indexOf(b['en'])\n\n const priorityA = indexA !== -1\n const priorityB = indexB !== -1\n\n if (priorityA && priorityB) {\n return indexA - indexB\n } else if (priorityA) {\n return -1\n } else if (priorityB) {\n return 1\n }\n }\n\n return a[lang].localeCompare(b[lang])\n })\n .map((country) => makeObject(country, lang))\n}\n\nexport function makeCountryFilterSet(ccFilter: CountryFilterSet) {\n return (country: CountryType) => {\n switch (ccFilter) {\n case 'Scandinavia':\n case 'Nordic':\n return country.regions?.includes(ccFilter)\n case 'Europe':\n return country.continent.includes(ccFilter)\n }\n return true\n }\n}\n\nSelectCountry._supportsSpacingProps = true\nexport default SelectCountry\n"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
- import { StateTypes, FieldBlockContextProps } from './FieldBlockContext';
2
+ import { StateWithMessage, StateMessage, StateTypes, FieldBlockContextProps } from './FieldBlockContext';
3
3
  import { ComponentProps, FieldProps, SubmitState, FieldBlockWidth } from '../types';
4
4
  export declare const states: Array<StateTypes>;
5
- export type Props = Pick<FieldProps, keyof ComponentProps | 'layout' | 'label' | 'labelDescription' | 'info' | 'warning' | 'error' | 'disabled'> & {
5
+ export type Props = Pick<FieldProps, keyof ComponentProps | 'layout' | 'label' | 'labelSuffix' | 'labelDescription' | 'info' | 'warning' | 'error' | 'disabled'> & {
6
6
  /** The id to link a element with */
7
7
  forId?: string;
8
8
  /** Use true if you have more than one form element */
@@ -23,10 +23,13 @@ export type Props = Pick<FieldProps, keyof ComponentProps | 'layout' | 'label' |
23
23
  fieldState?: SubmitState;
24
24
  /** Typography size */
25
25
  labelSize?: 'medium' | 'large';
26
+ /** For internal use only */
27
+ required?: boolean;
26
28
  children?: React.ReactNode;
27
29
  } & React.HTMLAttributes<HTMLDivElement>;
28
30
  declare function FieldBlock(props: Props): import("react/jsx-runtime").JSX.Element;
29
31
  declare namespace FieldBlock {
30
32
  var _supportsSpacingProps: boolean;
31
33
  }
34
+ export declare function getMessage(item: Partial<StateWithMessage>): StateMessage;
32
35
  export default FieldBlock;
@@ -3,7 +3,7 @@
3
3
  import _extends from "@babel/runtime/helpers/esm/extends";
4
4
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
5
5
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
6
- const _excluded = ["className", "forId", "layout", "composition", "label", "labelDescription", "labelSrOnly", "asFieldset", "info", "warning", "error", "fieldState", "disabled", "width", "contentWidth", "align", "labelSize", "contentClassName", "children"];
6
+ const _excluded = ["className", "forId", "layout", "composition", "label", "labelDescription", "labelSuffix", "labelSrOnly", "asFieldset", "required", "info", "warning", "error", "fieldState", "disabled", "width", "contentWidth", "align", "labelSize", "contentClassName", "children"];
7
7
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
8
8
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
9
9
  import React, { useMemo, useContext, useCallback, useRef, useReducer, useEffect } from 'react';
@@ -32,8 +32,10 @@ function FieldBlock(props) {
32
32
  composition,
33
33
  label: labelProp,
34
34
  labelDescription,
35
+ labelSuffix,
35
36
  labelSrOnly,
36
37
  asFieldset,
38
+ required,
37
39
  info,
38
40
  warning,
39
41
  error: errorProp,
@@ -60,12 +62,33 @@ function FieldBlock(props) {
60
62
  const hasInitiallyErrorProp = useMemo(() => {
61
63
  return Boolean(errorProp);
62
64
  }, []);
65
+ const {
66
+ optionalLabelSuffix
67
+ } = useTranslation().Field;
68
+ const labelSuffixText = useMemo(() => {
69
+ if (required === false || typeof labelSuffix !== 'undefined') {
70
+ return labelSuffix !== null && labelSuffix !== void 0 ? labelSuffix : optionalLabelSuffix;
71
+ }
72
+ return '';
73
+ }, [required, labelSuffix, optionalLabelSuffix]);
63
74
  const label = useMemo(() => {
75
+ let content = labelProp;
64
76
  if (iterateIndex !== undefined) {
65
- return convertJsxToString(labelProp).replace('{itemNr}', String(iterateIndex + 1));
77
+ content = convertJsxToString(labelProp).replace('{itemNr}', String(iterateIndex + 1));
78
+ }
79
+ if (labelSuffixText) {
80
+ if (convertJsxToString(content).includes(optionalLabelSuffix)) {
81
+ return content;
82
+ }
83
+ if (typeof content === 'string') {
84
+ return content + ' ' + labelSuffixText;
85
+ }
86
+ if (React.isValidElement(content)) {
87
+ return React.createElement(React.Fragment, null, content, ' ', labelSuffixText);
88
+ }
66
89
  }
67
- return labelProp;
68
- }, [iterateIndex, labelProp]);
90
+ return content;
91
+ }, [iterateIndex, labelProp, labelSuffixText]);
69
92
  const setInternalRecord = useCallback(props => {
70
93
  const {
71
94
  stateId,
@@ -245,8 +268,8 @@ function FieldBlock(props) {
245
268
  if (dataContext !== null && dataContext !== void 0 && dataContext.prerenderFieldProps) {
246
269
  return null;
247
270
  }
248
- if (fieldState && !label) {
249
- warn('You have to provide a label to use show an indicator.');
271
+ if (fieldState && typeof label === 'undefined') {
272
+ warn('Provide a label when using an async validator or onChange event.');
250
273
  }
251
274
  return React.createElement(FieldBlockContext.Provider, {
252
275
  value: {
@@ -332,7 +355,7 @@ function LabelDescription(_ref6) {
332
355
  className: "dnb-forms-field-block__label"
333
356
  }, children);
334
357
  }
335
- function getMessage(item) {
358
+ export function getMessage(item) {
336
359
  const {
337
360
  content
338
361
  } = item;
@@ -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","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 {\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 useEffect(\n () => () => {\n mountedFieldsRef.current = {}\n stateRecordRef.current = {}\n },\n []\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 ?? null\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","FormError","SubmitIndicator","createSharedState","useTranslation","states","FieldBlock","props","dataContext","nestedFieldBlockContext","sharedData","forId","id","_Object$assign","Object","assign","data","className","layout","composition","label","labelProp","labelDescription","labelSuffix","labelSrOnly","asFieldset","required","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","optionalLabelSuffix","Field","labelSuffixText","content","undefined","replace","String","includes","isValidElement","createElement","Fragment","setInternalRecord","stateId","identifier","type","current","existingIndex","findIndex","item","_objectSpread","push","setFieldState","showFieldError","show","map","showInitially","statusContent","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","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","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 {\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 | 'labelSuffix'\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 /** For internal use only */\n required?: boolean\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 labelSuffix,\n labelSrOnly,\n asFieldset,\n required,\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 { optionalLabelSuffix } = useTranslation().Field\n const labelSuffixText = useMemo(() => {\n if (required === false || typeof labelSuffix !== 'undefined') {\n return labelSuffix ?? optionalLabelSuffix\n }\n return ''\n }, [required, labelSuffix, optionalLabelSuffix])\n\n const label = useMemo(() => {\n let content = labelProp\n\n if (iterateIndex !== undefined) {\n content = convertJsxToString(labelProp).replace(\n '{itemNr}',\n String(iterateIndex + 1)\n )\n }\n\n if (labelSuffixText) {\n if (convertJsxToString(content).includes(optionalLabelSuffix)) {\n return content\n }\n\n if (typeof content === 'string') {\n return content + ' ' + labelSuffixText\n }\n\n if (React.isValidElement(content)) {\n return (\n <>\n {content}\n {' '}\n {labelSuffixText}\n </>\n )\n }\n }\n\n return content\n }, [iterateIndex, labelProp, labelSuffixText])\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 useEffect(\n () => () => {\n mountedFieldsRef.current = {}\n stateRecordRef.current = {}\n },\n []\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 && typeof label === 'undefined') {\n warn(\n 'Provide a label when using an async validator or onChange event.'\n )\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 ?? null\n }\n return <div className=\"dnb-forms-field-block__label\">{children}</div>\n}\n\nexport function 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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"}
@@ -40,7 +40,7 @@ export const fieldBlockSharedProperties = {
40
40
  };
41
41
  export const fieldBlockProperties = _objectSpread(_objectSpread({}, fieldBlockSharedProperties), {}, {
42
42
  labelSize: {
43
- doc: 'Define one of the following [heading size](/uilib/elements/heading/): `medium` or `large`.',
43
+ doc: 'Define one of the following [heading sizes](/uilib/elements/heading/): `medium` or `large`.',
44
44
  type: ['string', 'false'],
45
45
  status: 'optional'
46
46
  },
@@ -1 +1 @@
1
- {"version":3,"file":"FieldBlockDocs.js","names":["fieldBlockSharedProperties","label","doc","type","status","labelDescription","labelSrOnly","layout","width","contentWidth","fieldBlockProperties","_objectSpread","labelSize","asFieldset","align","composition","disabled"],"sources":["../../../../../src/extensions/forms/FieldBlock/FieldBlockDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../../shared/types'\n\nexport const fieldBlockSharedProperties: PropertiesTableProps = {\n label: {\n doc: 'Field label to show above / before the input feature.',\n type: 'string',\n status: 'optional',\n },\n labelDescription: {\n doc: 'A more discreet text displayed beside the label (i.e for \"(optional)\").',\n type: 'string',\n status: 'optional',\n },\n labelSrOnly: {\n doc: 'Use `true` to make the label only readable by screen readers.',\n type: 'boolean',\n status: 'optional',\n },\n layout: {\n doc: 'Layout for the label and input. Can be `horizontal` or `vertical`.',\n type: 'string',\n status: 'optional',\n },\n width: {\n doc: '`small`, `medium`, `large`, `stretch` or `false` for predefined standard widths.',\n type: ['string', 'false'],\n status: 'optional',\n },\n contentWidth: {\n doc: '`small`, `medium`, `large`, `stretch` or `false` for predefined standard widths.',\n type: ['string', 'false'],\n status: 'optional',\n },\n '[Space](/uilib/layout/space/properties)': {\n doc: 'Spacing properties like `top` or `bottom` are supported.',\n type: ['string', 'object'],\n status: 'optional',\n },\n}\n\nexport const fieldBlockProperties: PropertiesTableProps = {\n ...fieldBlockSharedProperties,\n labelSize: {\n doc: 'Define one of the following [heading size](/uilib/elements/heading/): `medium` or `large`.',\n type: ['string', 'false'],\n status: 'optional',\n },\n asFieldset: {\n doc: 'Use `true` when you have several form elements. This way a `fieldset` with a `legend` is used.',\n type: 'boolean',\n status: 'optional',\n },\n align: {\n doc: '`center` or `bottom` for aligning the contents vertically. Defaults to `bottom`.',\n type: ['string', 'false'],\n status: 'optional',\n },\n composition: {\n doc: 'Use `true` for when you have more than one field wrapped.',\n type: 'string',\n status: 'optional',\n },\n disabled: {\n doc: 'Set `true` to make the inner [FormLabel](/uilib/components/form-label/) behave as disabled.',\n type: 'boolean',\n status: 'optional',\n },\n}\n"],"mappings":";;;AAEA,OAAO,MAAMA,0BAAgD,GAAG;EAC9DC,KAAK,EAAE;IACLC,GAAG,EAAE,uDAAuD;IAC5DC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDC,gBAAgB,EAAE;IAChBH,GAAG,EAAE,yEAAyE;IAC9EC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDE,WAAW,EAAE;IACXJ,GAAG,EAAE,+DAA+D;IACpEC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDG,MAAM,EAAE;IACNL,GAAG,EAAE,oEAAoE;IACzEC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDI,KAAK,EAAE;IACLN,GAAG,EAAE,kFAAkF;IACvFC,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;IACzBC,MAAM,EAAE;EACV,CAAC;EACDK,YAAY,EAAE;IACZP,GAAG,EAAE,kFAAkF;IACvFC,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;IACzBC,MAAM,EAAE;EACV,CAAC;EACD,yCAAyC,EAAE;IACzCF,GAAG,EAAE,0DAA0D;IAC/DC,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC1BC,MAAM,EAAE;EACV;AACF,CAAC;AAED,OAAO,MAAMM,oBAA0C,GAAAC,aAAA,CAAAA,aAAA,KAClDX,0BAA0B;EAC7BY,SAAS,EAAE;IACTV,GAAG,EAAE,4FAA4F;IACjGC,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;IACzBC,MAAM,EAAE;EACV,CAAC;EACDS,UAAU,EAAE;IACVX,GAAG,EAAE,gGAAgG;IACrGC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDU,KAAK,EAAE;IACLZ,GAAG,EAAE,kFAAkF;IACvFC,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;IACzBC,MAAM,EAAE;EACV,CAAC;EACDW,WAAW,EAAE;IACXb,GAAG,EAAE,2DAA2D;IAChEC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDY,QAAQ,EAAE;IACRd,GAAG,EAAE,6FAA6F;IAClGC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV;AAAC,EACF"}
1
+ {"version":3,"file":"FieldBlockDocs.js","names":["fieldBlockSharedProperties","label","doc","type","status","labelDescription","labelSrOnly","layout","width","contentWidth","fieldBlockProperties","_objectSpread","labelSize","asFieldset","align","composition","disabled"],"sources":["../../../../../src/extensions/forms/FieldBlock/FieldBlockDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../../shared/types'\n\nexport const fieldBlockSharedProperties: PropertiesTableProps = {\n label: {\n doc: 'Field label to show above / before the input feature.',\n type: 'string',\n status: 'optional',\n },\n labelDescription: {\n doc: 'A more discreet text displayed beside the label (i.e for \"(optional)\").',\n type: 'string',\n status: 'optional',\n },\n labelSrOnly: {\n doc: 'Use `true` to make the label only readable by screen readers.',\n type: 'boolean',\n status: 'optional',\n },\n layout: {\n doc: 'Layout for the label and input. Can be `horizontal` or `vertical`.',\n type: 'string',\n status: 'optional',\n },\n width: {\n doc: '`small`, `medium`, `large`, `stretch` or `false` for predefined standard widths.',\n type: ['string', 'false'],\n status: 'optional',\n },\n contentWidth: {\n doc: '`small`, `medium`, `large`, `stretch` or `false` for predefined standard widths.',\n type: ['string', 'false'],\n status: 'optional',\n },\n '[Space](/uilib/layout/space/properties)': {\n doc: 'Spacing properties like `top` or `bottom` are supported.',\n type: ['string', 'object'],\n status: 'optional',\n },\n}\n\nexport const fieldBlockProperties: PropertiesTableProps = {\n ...fieldBlockSharedProperties,\n labelSize: {\n doc: 'Define one of the following [heading sizes](/uilib/elements/heading/): `medium` or `large`.',\n type: ['string', 'false'],\n status: 'optional',\n },\n asFieldset: {\n doc: 'Use `true` when you have several form elements. This way a `fieldset` with a `legend` is used.',\n type: 'boolean',\n status: 'optional',\n },\n align: {\n doc: '`center` or `bottom` for aligning the contents vertically. Defaults to `bottom`.',\n type: ['string', 'false'],\n status: 'optional',\n },\n composition: {\n doc: 'Use `true` for when you have more than one field wrapped.',\n type: 'string',\n status: 'optional',\n },\n disabled: {\n doc: 'Set `true` to make the inner [FormLabel](/uilib/components/form-label/) behave as disabled.',\n type: 'boolean',\n status: 'optional',\n },\n}\n"],"mappings":";;;AAEA,OAAO,MAAMA,0BAAgD,GAAG;EAC9DC,KAAK,EAAE;IACLC,GAAG,EAAE,uDAAuD;IAC5DC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDC,gBAAgB,EAAE;IAChBH,GAAG,EAAE,yEAAyE;IAC9EC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDE,WAAW,EAAE;IACXJ,GAAG,EAAE,+DAA+D;IACpEC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDG,MAAM,EAAE;IACNL,GAAG,EAAE,oEAAoE;IACzEC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDI,KAAK,EAAE;IACLN,GAAG,EAAE,kFAAkF;IACvFC,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;IACzBC,MAAM,EAAE;EACV,CAAC;EACDK,YAAY,EAAE;IACZP,GAAG,EAAE,kFAAkF;IACvFC,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;IACzBC,MAAM,EAAE;EACV,CAAC;EACD,yCAAyC,EAAE;IACzCF,GAAG,EAAE,0DAA0D;IAC/DC,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC1BC,MAAM,EAAE;EACV;AACF,CAAC;AAED,OAAO,MAAMM,oBAA0C,GAAAC,aAAA,CAAAA,aAAA,KAClDX,0BAA0B;EAC7BY,SAAS,EAAE;IACTV,GAAG,EAAE,6FAA6F;IAClGC,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;IACzBC,MAAM,EAAE;EACV,CAAC;EACDS,UAAU,EAAE;IACVX,GAAG,EAAE,gGAAgG;IACrGC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDU,KAAK,EAAE;IACLZ,GAAG,EAAE,kFAAkF;IACvFC,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;IACzBC,MAAM,EAAE;EACV,CAAC;EACDW,WAAW,EAAE;IACXb,GAAG,EAAE,2DAA2D;IAChEC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDY,QAAQ,EAAE;IACRd,GAAG,EAAE,6FAA6F;IAClGC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV;AAAC,EACF"}
@@ -84,7 +84,7 @@ function IsolationProvider(props) {
84
84
  if (typeof transformOnCommitProp === 'function') {
85
85
  isolatedData = transformOnCommitProp(isolatedData, outerData);
86
86
  }
87
- handlePathChangeOuter === null || handlePathChangeOuter === void 0 ? void 0 : handlePathChangeOuter(path, extendDeep({}, outerData, isolatedData));
87
+ handlePathChangeOuter === null || handlePathChangeOuter === void 0 ? void 0 : handlePathChangeOuter(path, Array.isArray(isolatedData) ? isolatedData : extendDeep({}, outerData, isolatedData));
88
88
  return await (onCommitProp === null || onCommitProp === void 0 ? void 0 : onCommitProp(removeSectionPath(isolatedData), additionalArgs));
89
89
  }, [getMountedData, props.path, dataOuter, transformOnCommitProp, handlePathChangeOuter, onCommitProp, removeSectionPath]);
90
90
  const onClear = useCallback(() => {
@@ -94,8 +94,7 @@ function IsolationProvider(props) {
94
94
  onClearProp === null || onClearProp === void 0 ? void 0 : onClearProp();
95
95
  }, [onClearProp]);
96
96
  const providerProps = _objectSpread(_objectSpread({}, props), {}, {
97
- data: internalDataRef.current,
98
- defaultData: undefined,
97
+ [defaultData ? 'defaultData' : 'data']: internalDataRef.current,
99
98
  onPathChange: onPathChangeHandler,
100
99
  onCommit,
101
100
  onClear,
@@ -1 +1 @@
1
- {"version":3,"file":"Isolation.js","names":["React","useCallback","useContext","useEffect","useMemo","useReducer","useRef","pointer","extendDeep","useDataValue","Context","Provider","SectionContext","IsolationCommitButton","clearedData","structuredClone","IsolationProvider","props","children","onPathChange","onCommit","onCommitProp","onClear","onClearProp","transformOnCommit","transformOnCommitProp","commitHandleRef","data","defaultData","forceUpdate","internalDataRef","localDataRef","dataContextRef","outerContext","path","pathSection","handlePathChange","handlePathChangeOuter","dataOuter","moveValueToPath","onPathChangeHandler","value","current","set","replace","removeSectionPath","has","get","getMountedData","_dataContextRef$curre","mounterData","mountedFieldPathsRef","forEach","localData","Object","assign","additionalArgs","_props$path","mountedData","outerData","isolatedData","providerProps","_objectSpread","undefined","isolate","createElement","Consumer","dataContext","handleSubmit","CommitButton","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Form/Isolation/Isolation.tsx"],"sourcesContent":["import React, {\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useReducer,\n useRef,\n} from 'react'\nimport pointer, { JsonObject } from 'json-pointer'\nimport { extendDeep } from '../../../../shared/component-helper'\nimport useDataValue from '../../hooks/useDataValue'\nimport { Context, ContextState, Provider } from '../../DataContext'\nimport SectionContext from '../Section/SectionContext'\nimport IsolationCommitButton from './IsolationCommitButton'\nimport {\n clearedData,\n type Props as ProviderProps,\n} from '../../DataContext/Provider'\nimport type { OnCommit, Path } from '../../types'\n\n/**\n * Deprecated, as it is supported by all major browsers and Node.js >=v18\n * So its a question of time, when we will remove this polyfill\n */\nimport structuredClone from '@ungap/structured-clone'\n\nexport type IsolationProviderProps<Data> = {\n /**\n * Form.Isolation: Will be called when the isolated context is committed.\n */\n onCommit?: OnCommit<Data>\n /**\n * Form.Isolation: Will be called when the form is cleared via Form.clearData\n */\n onClear?: () => void\n /**\n * Form.Isolation: A function that will be called when the isolated context is committed.\n * It will receive the data from the isolated context and the data from the outer context.\n * You can use this to transform the data before it is committed.\n */\n transformOnCommit?: (isolatedData: Data, handlerData: Data) => Data\n /**\n * Used internally by the Form.Isolation component\n */\n path?: Path\n /**\n * Used internally by the Form.Isolation component\n */\n isolate?: boolean\n}\n\nexport type IsolationProps<Data> = Omit<\n ProviderProps<Data>,\n | 'onSubmit'\n | 'onSubmitRequest'\n | 'onSubmitComplete'\n | 'minimumAsyncBehaviorTime'\n | 'asyncSubmitTimeout'\n | 'scrollTopOnSubmit'\n | 'sessionStorageId'\n | 'globalStatusId'\n> & {\n /**\n * A ref (function) that you can call in order to commit the data programmatically to the outer context.\n */\n commitHandleRef?: React.MutableRefObject<() => void>\n}\n\nfunction IsolationProvider<Data extends JsonObject>(\n props: IsolationProps<Data>\n) {\n const {\n children,\n onPathChange,\n onCommit: onCommitProp,\n onClear: onClearProp,\n transformOnCommit: transformOnCommitProp,\n commitHandleRef,\n data,\n defaultData,\n } = props\n\n const [, forceUpdate] = useReducer(() => ({}), {})\n const internalDataRef = useRef<Data>()\n const localDataRef = useRef<Partial<Data>>({})\n const dataContextRef = useRef<ContextState>(null)\n const outerContext = useContext(Context)\n const { path: pathSection } = useContext(SectionContext) || {}\n const { handlePathChange: handlePathChangeOuter, data: dataOuter } =\n outerContext || {}\n const { moveValueToPath } = useDataValue()\n\n const onPathChangeHandler = useCallback(\n async (path: Path, value: unknown) => {\n if (localDataRef.current === clearedData) {\n localDataRef.current = {}\n }\n\n pointer.set(localDataRef.current, path, value)\n\n if (pathSection) {\n path = path.replace(pathSection, '')\n }\n\n return await onPathChange?.(path, value)\n },\n [onPathChange, pathSection]\n )\n\n const removeSectionPath = useCallback(\n (data: Data) => {\n return pathSection && pointer.has(data, pathSection)\n ? pointer.get(data, pathSection)\n : data\n },\n [pathSection]\n )\n\n const getMountedData = useCallback((data: Data) => {\n const mounterData = {} as Data\n dataContextRef.current?.mountedFieldPathsRef.current.forEach(\n (path) => {\n if (pointer.has(data, path)) {\n pointer.set(mounterData, path, pointer.get(data, path))\n }\n }\n )\n return mounterData\n }, [])\n\n useEffect(() => {\n localDataRef.current = getMountedData(internalDataRef.current)\n }, [getMountedData])\n\n // Update the isolated data with the outside context data\n useMemo(() => {\n if (localDataRef.current === clearedData) {\n return // stop here\n }\n\n let localData = data ?? defaultData\n\n if (\n localData &&\n pathSection &&\n !pointer.has(localDataRef.current, pathSection)\n ) {\n localData = moveValueToPath<Data>(pathSection, localData)\n }\n\n internalDataRef.current = Object.assign(\n {},\n localData || dataOuter || {},\n localDataRef.current\n )\n }, [data, defaultData, pathSection, dataOuter, moveValueToPath])\n\n const onCommit: IsolationProps<Data>['onCommit'] = useCallback(\n async (data: Data, additionalArgs) => {\n const mountedData = getMountedData(data)\n const path = props.path ?? '/'\n const outerData =\n props.path && pointer.has(dataOuter, path)\n ? pointer.get(dataOuter, path)\n : dataOuter\n\n localDataRef.current = mountedData\n let isolatedData = structuredClone(mountedData) as Data\n\n if (typeof transformOnCommitProp === 'function') {\n isolatedData = transformOnCommitProp(isolatedData, outerData)\n }\n\n // Commit the internal data to the nested context data\n handlePathChangeOuter?.(\n path,\n extendDeep({}, outerData, isolatedData)\n )\n\n return await onCommitProp?.(\n removeSectionPath(isolatedData),\n additionalArgs\n )\n },\n [\n getMountedData,\n props.path,\n dataOuter,\n transformOnCommitProp,\n handlePathChangeOuter,\n onCommitProp,\n removeSectionPath,\n ]\n )\n\n const onClear = useCallback(() => {\n localDataRef.current = clearedData\n internalDataRef.current = clearedData as Data\n forceUpdate()\n onClearProp?.()\n }, [onClearProp])\n\n const providerProps: IsolationProps<Data> = {\n ...props,\n data: internalDataRef.current,\n defaultData: undefined,\n onPathChange: onPathChangeHandler,\n onCommit,\n onClear,\n isolate: true,\n }\n\n return (\n <Provider {...providerProps}>\n <Context.Consumer>\n {(dataContext) => {\n dataContextRef.current = dataContext\n\n if (commitHandleRef) {\n commitHandleRef.current = dataContext?.handleSubmit\n }\n\n return children\n }}\n </Context.Consumer>\n </Provider>\n )\n}\n\nIsolationProvider.CommitButton = IsolationCommitButton\nIsolationProvider._supportsSpacingProps = undefined\n\nexport default IsolationProvider\n"],"mappings":"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"}
1
+ {"version":3,"file":"Isolation.js","names":["React","useCallback","useContext","useEffect","useMemo","useReducer","useRef","pointer","extendDeep","useDataValue","Context","Provider","SectionContext","IsolationCommitButton","clearedData","structuredClone","IsolationProvider","props","children","onPathChange","onCommit","onCommitProp","onClear","onClearProp","transformOnCommit","transformOnCommitProp","commitHandleRef","data","defaultData","forceUpdate","internalDataRef","localDataRef","dataContextRef","outerContext","path","pathSection","handlePathChange","handlePathChangeOuter","dataOuter","moveValueToPath","onPathChangeHandler","value","current","set","replace","removeSectionPath","has","get","getMountedData","_dataContextRef$curre","mounterData","mountedFieldPathsRef","forEach","localData","Object","assign","additionalArgs","_props$path","mountedData","outerData","isolatedData","Array","isArray","providerProps","_objectSpread","isolate","createElement","Consumer","dataContext","handleSubmit","CommitButton","_supportsSpacingProps","undefined"],"sources":["../../../../../../src/extensions/forms/Form/Isolation/Isolation.tsx"],"sourcesContent":["import React, {\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useReducer,\n useRef,\n} from 'react'\nimport pointer, { JsonObject } from 'json-pointer'\nimport { extendDeep } from '../../../../shared/component-helper'\nimport useDataValue from '../../hooks/useDataValue'\nimport { Context, ContextState, Provider } from '../../DataContext'\nimport SectionContext from '../Section/SectionContext'\nimport IsolationCommitButton from './IsolationCommitButton'\nimport {\n clearedData,\n type Props as ProviderProps,\n} from '../../DataContext/Provider'\nimport type { OnCommit, Path } from '../../types'\n\n/**\n * Deprecated, as it is supported by all major browsers and Node.js >=v18\n * So its a question of time, when we will remove this polyfill\n */\nimport structuredClone from '@ungap/structured-clone'\n\nexport type IsolationProviderProps<Data> = {\n /**\n * Form.Isolation: Will be called when the isolated context is committed.\n */\n onCommit?: OnCommit<Data>\n /**\n * Form.Isolation: Will be called when the form is cleared via Form.clearData\n */\n onClear?: () => void\n /**\n * Form.Isolation: A function that will be called when the isolated context is committed.\n * It will receive the data from the isolated context and the data from the outer context.\n * You can use this to transform the data before it is committed.\n */\n transformOnCommit?: (isolatedData: Data, handlerData: Data) => Data\n /**\n * Used internally by the Form.Isolation component\n */\n path?: Path\n /**\n * Used internally by the Form.Isolation component\n */\n isolate?: boolean\n}\n\nexport type IsolationProps<Data> = Omit<\n ProviderProps<Data>,\n | 'onSubmit'\n | 'onSubmitRequest'\n | 'onSubmitComplete'\n | 'minimumAsyncBehaviorTime'\n | 'asyncSubmitTimeout'\n | 'scrollTopOnSubmit'\n | 'sessionStorageId'\n | 'globalStatusId'\n> & {\n /**\n * A ref (function) that you can call in order to commit the data programmatically to the outer context.\n */\n commitHandleRef?: React.MutableRefObject<() => void>\n}\n\nfunction IsolationProvider<Data extends JsonObject>(\n props: IsolationProps<Data>\n) {\n const {\n children,\n onPathChange,\n onCommit: onCommitProp,\n onClear: onClearProp,\n transformOnCommit: transformOnCommitProp,\n commitHandleRef,\n data,\n defaultData,\n } = props\n\n const [, forceUpdate] = useReducer(() => ({}), {})\n const internalDataRef = useRef<Data>()\n const localDataRef = useRef<Partial<Data>>({})\n const dataContextRef = useRef<ContextState>(null)\n const outerContext = useContext(Context)\n const { path: pathSection } = useContext(SectionContext) || {}\n const { handlePathChange: handlePathChangeOuter, data: dataOuter } =\n outerContext || {}\n const { moveValueToPath } = useDataValue()\n\n const onPathChangeHandler = useCallback(\n async (path: Path, value: unknown) => {\n if (localDataRef.current === clearedData) {\n localDataRef.current = {}\n }\n\n pointer.set(localDataRef.current, path, value)\n\n if (pathSection) {\n path = path.replace(pathSection, '')\n }\n\n return await onPathChange?.(path, value)\n },\n [onPathChange, pathSection]\n )\n\n const removeSectionPath = useCallback(\n (data: Data) => {\n return pathSection && pointer.has(data, pathSection)\n ? pointer.get(data, pathSection)\n : data\n },\n [pathSection]\n )\n\n const getMountedData = useCallback((data: Data) => {\n const mounterData = {} as Data\n dataContextRef.current?.mountedFieldPathsRef.current.forEach(\n (path) => {\n if (pointer.has(data, path)) {\n pointer.set(mounterData, path, pointer.get(data, path))\n }\n }\n )\n return mounterData\n }, [])\n\n useEffect(() => {\n localDataRef.current = getMountedData(internalDataRef.current)\n }, [getMountedData])\n\n // Update the isolated data with the outside context data\n useMemo(() => {\n if (localDataRef.current === clearedData) {\n return // stop here\n }\n\n let localData = data ?? defaultData\n\n if (\n localData &&\n pathSection &&\n !pointer.has(localDataRef.current, pathSection)\n ) {\n localData = moveValueToPath<Data>(pathSection, localData)\n }\n\n internalDataRef.current = Object.assign(\n {},\n localData || dataOuter || {},\n localDataRef.current\n )\n }, [data, defaultData, pathSection, dataOuter, moveValueToPath])\n\n const onCommit: IsolationProps<Data>['onCommit'] = useCallback(\n async (data: Data, additionalArgs) => {\n const mountedData = getMountedData(data)\n const path = props.path ?? '/'\n const outerData =\n props.path && pointer.has(dataOuter, path)\n ? pointer.get(dataOuter, path)\n : dataOuter\n\n localDataRef.current = mountedData\n let isolatedData = structuredClone(mountedData) as Data\n\n if (typeof transformOnCommitProp === 'function') {\n isolatedData = transformOnCommitProp(isolatedData, outerData)\n }\n\n // Commit the internal data to the nested context data\n handlePathChangeOuter?.(\n path,\n Array.isArray(isolatedData)\n ? isolatedData\n : extendDeep({}, outerData, isolatedData)\n )\n\n return await onCommitProp?.(\n removeSectionPath(isolatedData),\n additionalArgs\n )\n },\n [\n getMountedData,\n props.path,\n dataOuter,\n transformOnCommitProp,\n handlePathChangeOuter,\n onCommitProp,\n removeSectionPath,\n ]\n )\n\n const onClear = useCallback(() => {\n localDataRef.current = clearedData\n internalDataRef.current = clearedData as Data\n forceUpdate()\n onClearProp?.()\n }, [onClearProp])\n\n const providerProps: IsolationProps<Data> = {\n ...props,\n [defaultData ? 'defaultData' : 'data']: internalDataRef.current,\n onPathChange: onPathChangeHandler,\n onCommit,\n onClear,\n isolate: true,\n }\n\n return (\n <Provider {...providerProps}>\n <Context.Consumer>\n {(dataContext) => {\n dataContextRef.current = dataContext\n\n if (commitHandleRef) {\n commitHandleRef.current = dataContext?.handleSubmit\n }\n\n return children\n }}\n </Context.Consumer>\n </Provider>\n )\n}\n\nIsolationProvider.CommitButton = IsolationCommitButton\nIsolationProvider._supportsSpacingProps = undefined\n\nexport default IsolationProvider\n"],"mappings":"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"}
@@ -1,13 +1,16 @@
1
+ "use client";
2
+
1
3
  import _extends from "@babel/runtime/helpers/esm/extends";
2
4
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
5
  var _Toolbar;
4
6
  const _excluded = ["children", "className", "title"];
5
- import React, { useMemo } from 'react';
7
+ import React, { useCallback, useContext, useMemo, useRef } from 'react';
6
8
  import classnames from 'classnames';
7
9
  import { convertJsxToString } from '../../../../../shared/component-helper';
8
10
  import { Flex } from '../../../../../components';
9
11
  import { Lead } from '../../../../../elements';
10
12
  import FieldBoundaryProvider from '../../../DataContext/FieldBoundary/FieldBoundaryProvider';
13
+ import SectionContainerContext from '../containers/SectionContainerContext';
11
14
  import EditToolbarTools from './EditToolbarTools';
12
15
  import SectionContainer from '../containers/SectionContainer';
13
16
  import Toolbar from '../containers/Toolbar';
@@ -20,9 +23,26 @@ function EditContainer(props) {
20
23
  } = _ref,
21
24
  restProps = _objectWithoutProperties(_ref, _excluded);
22
25
  const ariaLabel = useMemo(() => convertJsxToString(title), [title]);
23
- return React.createElement(FieldBoundaryProvider, null, React.createElement(SectionContainer, _extends({
26
+ const {
27
+ containerMode,
28
+ initialContainerMode,
29
+ validateInitially,
30
+ switchContainerMode
31
+ } = useContext(SectionContainerContext) || {};
32
+ const omitFocusManagementRef = useRef(false);
33
+ const onPathError = useCallback((path, error) => {
34
+ if (initialContainerMode === 'auto' && containerMode !== 'edit' && error instanceof Error) {
35
+ omitFocusManagementRef.current = true;
36
+ switchContainerMode === null || switchContainerMode === void 0 ? void 0 : switchContainerMode('edit');
37
+ }
38
+ }, [containerMode, initialContainerMode, switchContainerMode]);
39
+ return React.createElement(FieldBoundaryProvider, {
40
+ showErrors: validateInitially,
41
+ onPathError: onPathError
42
+ }, React.createElement(SectionContainer, _extends({
24
43
  mode: "edit",
25
44
  ariaLabel: ariaLabel,
45
+ omitFocusManagementRef: omitFocusManagementRef,
26
46
  className: classnames('dnb-forms-section-edit-block', className)
27
47
  }, restProps), React.createElement(Flex.Stack, null, title && React.createElement(Lead, {
28
48
  size: "basis"
@@ -1 +1 @@
1
- {"version":3,"file":"EditContainer.js","names":["React","useMemo","classnames","convertJsxToString","Flex","Lead","FieldBoundaryProvider","EditToolbarTools","SectionContainer","Toolbar","EditContainer","props","_ref","children","className","title","restProps","_objectWithoutProperties","_excluded","ariaLabel","createElement","_extends","mode","Stack","size","_Toolbar","_supportsSpacingProps"],"sources":["../../../../../../../src/extensions/forms/Form/Section/EditContainer/EditContainer.tsx"],"sourcesContent":["import React, { useMemo } from 'react'\nimport classnames from 'classnames'\nimport { convertJsxToString } from '../../../../../shared/component-helper'\nimport { Flex } from '../../../../../components'\nimport { Props as FlexContainerProps } from '../../../../../components/flex/Container'\nimport { Lead } from '../../../../../elements'\nimport FieldBoundaryProvider from '../../../DataContext/FieldBoundary/FieldBoundaryProvider'\nimport EditToolbarTools from './EditToolbarTools'\nimport SectionContainer, {\n SectionContainerProps,\n} from '../containers/SectionContainer'\nimport Toolbar from '../containers/Toolbar'\n\nexport type Props = {\n title?: React.ReactNode\n}\n\nexport type AllProps = Props & SectionContainerProps & FlexContainerProps\n\nfunction EditContainer(props: AllProps) {\n const { children, className, title, ...restProps } = props || {}\n const ariaLabel = useMemo(() => convertJsxToString(title), [title])\n\n return (\n <FieldBoundaryProvider>\n <SectionContainer\n mode=\"edit\"\n ariaLabel={ariaLabel}\n className={classnames('dnb-forms-section-edit-block', className)}\n {...restProps}\n >\n <Flex.Stack>\n {title && <Lead size=\"basis\">{title}</Lead>}\n {children}\n <Toolbar>\n <EditToolbarTools />\n </Toolbar>\n </Flex.Stack>\n </SectionContainer>\n </FieldBoundaryProvider>\n )\n}\n\nEditContainer._supportsSpacingProps = true\nexport default EditContainer\n"],"mappings":";;;;AAAA,OAAOA,KAAK,IAAIC,OAAO,QAAQ,OAAO;AACtC,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,kBAAkB,QAAQ,wCAAwC;AAC3E,SAASC,IAAI,QAAQ,2BAA2B;AAEhD,SAASC,IAAI,QAAQ,yBAAyB;AAC9C,OAAOC,qBAAqB,MAAM,0DAA0D;AAC5F,OAAOC,gBAAgB,MAAM,oBAAoB;AACjD,OAAOC,gBAAgB,MAEhB,gCAAgC;AACvC,OAAOC,OAAO,MAAM,uBAAuB;AAQ3C,SAASC,aAAaA,CAACC,KAAe,EAAE;EACtC,MAAAC,IAAA,GAAqDD,KAAK,IAAI,CAAC,CAAC;IAA1D;MAAEE,QAAQ;MAAEC,SAAS;MAAEC;IAAoB,CAAC,GAAAH,IAAA;IAAXI,SAAS,GAAAC,wBAAA,CAAAL,IAAA,EAAAM,SAAA;EAChD,MAAMC,SAAS,GAAGlB,OAAO,CAAC,MAAME,kBAAkB,CAACY,KAAK,CAAC,EAAE,CAACA,KAAK,CAAC,CAAC;EAEnE,OACEf,KAAA,CAAAoB,aAAA,CAACd,qBAAqB,QACpBN,KAAA,CAAAoB,aAAA,CAACZ,gBAAgB,EAAAa,QAAA;IACfC,IAAI,EAAC,MAAM;IACXH,SAAS,EAAEA,SAAU;IACrBL,SAAS,EAAEZ,UAAU,CAAC,8BAA8B,EAAEY,SAAS;EAAE,GAC7DE,SAAS,GAEbhB,KAAA,CAAAoB,aAAA,CAAChB,IAAI,CAACmB,KAAK,QACRR,KAAK,IAAIf,KAAA,CAAAoB,aAAA,CAACf,IAAI;IAACmB,IAAI,EAAC;EAAO,GAAET,KAAY,CAAC,EAC1CF,QAAQ,EAAAY,QAAA,KAAAA,QAAA,GACTzB,KAAA,CAAAoB,aAAA,CAACX,OAAO,QACNT,KAAA,CAAAoB,aAAA,CAACb,gBAAgB,MAAE,CACZ,CAAC,CACA,CACI,CACG,CAAC;AAE5B;AAEAG,aAAa,CAACgB,qBAAqB,GAAG,IAAI;AAC1C,eAAehB,aAAa"}
1
+ {"version":3,"file":"EditContainer.js","names":["React","useCallback","useContext","useMemo","useRef","classnames","convertJsxToString","Flex","Lead","FieldBoundaryProvider","SectionContainerContext","EditToolbarTools","SectionContainer","Toolbar","EditContainer","props","_ref","children","className","title","restProps","_objectWithoutProperties","_excluded","ariaLabel","containerMode","initialContainerMode","validateInitially","switchContainerMode","omitFocusManagementRef","onPathError","path","error","Error","current","createElement","showErrors","_extends","mode","Stack","size","_Toolbar","_supportsSpacingProps"],"sources":["../../../../../../../src/extensions/forms/Form/Section/EditContainer/EditContainer.tsx"],"sourcesContent":["import React, { useCallback, useContext, useMemo, useRef } from 'react'\nimport classnames from 'classnames'\nimport { convertJsxToString } from '../../../../../shared/component-helper'\nimport { Flex } from '../../../../../components'\nimport { Props as FlexContainerProps } from '../../../../../components/flex/Container'\nimport { Lead } from '../../../../../elements'\nimport FieldBoundaryProvider from '../../../DataContext/FieldBoundary/FieldBoundaryProvider'\nimport SectionContainerContext from '../containers/SectionContainerContext'\nimport EditToolbarTools from './EditToolbarTools'\nimport SectionContainer, {\n SectionContainerProps,\n} from '../containers/SectionContainer'\nimport Toolbar from '../containers/Toolbar'\nimport { Path } from '../../../types'\n\nexport type Props = {\n title?: React.ReactNode\n}\n\nexport type AllProps = Props & SectionContainerProps & FlexContainerProps\n\nfunction EditContainer(props: AllProps) {\n const { children, className, title, ...restProps } = props || {}\n const ariaLabel = useMemo(() => convertJsxToString(title), [title])\n const {\n containerMode,\n initialContainerMode,\n validateInitially,\n switchContainerMode,\n } = useContext(SectionContainerContext) || {}\n const omitFocusManagementRef = useRef(false)\n\n const onPathError = useCallback(\n (path: Path, error: Error) => {\n if (\n initialContainerMode === 'auto' &&\n containerMode !== 'edit' &&\n error instanceof Error\n ) {\n omitFocusManagementRef.current = true\n switchContainerMode?.('edit')\n }\n },\n [containerMode, initialContainerMode, switchContainerMode]\n )\n\n return (\n <FieldBoundaryProvider\n showErrors={validateInitially}\n onPathError={onPathError}\n >\n <SectionContainer\n mode=\"edit\"\n ariaLabel={ariaLabel}\n omitFocusManagementRef={omitFocusManagementRef}\n className={classnames('dnb-forms-section-edit-block', className)}\n {...restProps}\n >\n <Flex.Stack>\n {title && <Lead size=\"basis\">{title}</Lead>}\n {children}\n <Toolbar>\n <EditToolbarTools />\n </Toolbar>\n </Flex.Stack>\n </SectionContainer>\n </FieldBoundaryProvider>\n )\n}\n\nEditContainer._supportsSpacingProps = true\nexport default EditContainer\n"],"mappings":";;;;;;AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,UAAU,EAAEC,OAAO,EAAEC,MAAM,QAAQ,OAAO;AACvE,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,kBAAkB,QAAQ,wCAAwC;AAC3E,SAASC,IAAI,QAAQ,2BAA2B;AAEhD,SAASC,IAAI,QAAQ,yBAAyB;AAC9C,OAAOC,qBAAqB,MAAM,0DAA0D;AAC5F,OAAOC,uBAAuB,MAAM,uCAAuC;AAC3E,OAAOC,gBAAgB,MAAM,oBAAoB;AACjD,OAAOC,gBAAgB,MAEhB,gCAAgC;AACvC,OAAOC,OAAO,MAAM,uBAAuB;AAS3C,SAASC,aAAaA,CAACC,KAAe,EAAE;EACtC,MAAAC,IAAA,GAAqDD,KAAK,IAAI,CAAC,CAAC;IAA1D;MAAEE,QAAQ;MAAEC,SAAS;MAAEC;IAAoB,CAAC,GAAAH,IAAA;IAAXI,SAAS,GAAAC,wBAAA,CAAAL,IAAA,EAAAM,SAAA;EAChD,MAAMC,SAAS,GAAGpB,OAAO,CAAC,MAAMG,kBAAkB,CAACa,KAAK,CAAC,EAAE,CAACA,KAAK,CAAC,CAAC;EACnE,MAAM;IACJK,aAAa;IACbC,oBAAoB;IACpBC,iBAAiB;IACjBC;EACF,CAAC,GAAGzB,UAAU,CAACQ,uBAAuB,CAAC,IAAI,CAAC,CAAC;EAC7C,MAAMkB,sBAAsB,GAAGxB,MAAM,CAAC,KAAK,CAAC;EAE5C,MAAMyB,WAAW,GAAG5B,WAAW,CAC7B,CAAC6B,IAAU,EAAEC,KAAY,KAAK;IAC5B,IACEN,oBAAoB,KAAK,MAAM,IAC/BD,aAAa,KAAK,MAAM,IACxBO,KAAK,YAAYC,KAAK,EACtB;MACAJ,sBAAsB,CAACK,OAAO,GAAG,IAAI;MACrCN,mBAAmB,aAAnBA,mBAAmB,uBAAnBA,mBAAmB,CAAG,MAAM,CAAC;IAC/B;EACF,CAAC,EACD,CAACH,aAAa,EAAEC,oBAAoB,EAAEE,mBAAmB,CAC3D,CAAC;EAED,OACE3B,KAAA,CAAAkC,aAAA,CAACzB,qBAAqB;IACpB0B,UAAU,EAAET,iBAAkB;IAC9BG,WAAW,EAAEA;EAAY,GAEzB7B,KAAA,CAAAkC,aAAA,CAACtB,gBAAgB,EAAAwB,QAAA;IACfC,IAAI,EAAC,MAAM;IACXd,SAAS,EAAEA,SAAU;IACrBK,sBAAsB,EAAEA,sBAAuB;IAC/CV,SAAS,EAAEb,UAAU,CAAC,8BAA8B,EAAEa,SAAS;EAAE,GAC7DE,SAAS,GAEbpB,KAAA,CAAAkC,aAAA,CAAC3B,IAAI,CAAC+B,KAAK,QACRnB,KAAK,IAAInB,KAAA,CAAAkC,aAAA,CAAC1B,IAAI;IAAC+B,IAAI,EAAC;EAAO,GAAEpB,KAAY,CAAC,EAC1CF,QAAQ,EAAAuB,QAAA,KAAAA,QAAA,GACTxC,KAAA,CAAAkC,aAAA,CAACrB,OAAO,QACNb,KAAA,CAAAkC,aAAA,CAACvB,gBAAgB,MAAE,CACZ,CAAC,CACA,CACI,CACG,CAAC;AAE5B;AAEAG,aAAa,CAAC2B,qBAAqB,GAAG,IAAI;AAC1C,eAAe3B,aAAa"}
@@ -14,7 +14,8 @@ export default function EditToolbarTools() {
14
14
  restoreOriginalData
15
15
  } = useContainerDataStore();
16
16
  const {
17
- switchContainerMode
17
+ switchContainerMode,
18
+ initialContainerMode
18
19
  } = useContext(SectionContainerContext) || {};
19
20
  const {
20
21
  hasVisibleError,
@@ -25,19 +26,21 @@ export default function EditToolbarTools() {
25
26
  const translation = useTranslation().SectionEditContainer;
26
27
  const [showError, setShowError] = useState(false);
27
28
  const cancelHandler = useCallback(() => {
28
- if (hasSubmitError) {
29
- setShowError(true);
30
- setShowBoundaryErrors === null || setShowBoundaryErrors === void 0 ? void 0 : setShowBoundaryErrors(true);
29
+ if (hasSubmitError || initialContainerMode === 'auto' && hasError) {
30
+ setShowBoundaryErrors === null || setShowBoundaryErrors === void 0 ? void 0 : setShowBoundaryErrors(Date.now());
31
+ if (hasVisibleError) {
32
+ setShowError(true);
33
+ }
31
34
  } else {
32
35
  setShowError(false);
33
36
  setShowBoundaryErrors === null || setShowBoundaryErrors === void 0 ? void 0 : setShowBoundaryErrors(false);
34
37
  restoreOriginalData();
35
38
  switchContainerMode === null || switchContainerMode === void 0 ? void 0 : switchContainerMode('view');
36
39
  }
37
- }, [hasSubmitError, restoreOriginalData, setShowBoundaryErrors, switchContainerMode]);
40
+ }, [hasSubmitError, initialContainerMode, hasError, setShowBoundaryErrors, hasVisibleError, restoreOriginalData, switchContainerMode]);
38
41
  const doneHandler = useCallback(() => {
39
42
  if (hasError) {
40
- setShowBoundaryErrors === null || setShowBoundaryErrors === void 0 ? void 0 : setShowBoundaryErrors(true);
43
+ setShowBoundaryErrors === null || setShowBoundaryErrors === void 0 ? void 0 : setShowBoundaryErrors(Date.now());
41
44
  if (hasVisibleError) {
42
45
  setShowError(true);
43
46
  }
@@ -47,10 +50,7 @@ export default function EditToolbarTools() {
47
50
  switchContainerMode === null || switchContainerMode === void 0 ? void 0 : switchContainerMode('view');
48
51
  }
49
52
  }, [hasVisibleError, hasError, setShowBoundaryErrors, switchContainerMode]);
50
- return React.createElement(React.Fragment, null, React.createElement(FormStatus, {
51
- show: showError && hasVisibleError,
52
- no_animation: false
53
- }, translation.errorInSection), React.createElement(Flex.Horizontal, {
53
+ return React.createElement(React.Fragment, null, React.createElement(Flex.Horizontal, {
54
54
  gap: "large"
55
55
  }, React.createElement(Button, {
56
56
  variant: "tertiary",
@@ -62,6 +62,12 @@ export default function EditToolbarTools() {
62
62
  icon: close,
63
63
  icon_position: "left",
64
64
  on_click: cancelHandler
65
- }, translation.cancelButton)));
65
+ }, translation.cancelButton)), React.createElement(FormStatus, {
66
+ show: showError && hasVisibleError,
67
+ shellSpace: {
68
+ top: 'x-small'
69
+ },
70
+ no_animation: false
71
+ }, translation.errorInSection));
66
72
  }
67
73
  //# sourceMappingURL=EditToolbarTools.js.map