@dnb/eufemia 10.57.0 → 10.58.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 (826) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/assets/flags/1x1/ad.svg +148 -0
  3. package/assets/flags/1x1/ae.svg +6 -0
  4. package/assets/flags/1x1/af.svg +81 -0
  5. package/assets/flags/1x1/ag.svg +14 -0
  6. package/assets/flags/1x1/ai.svg +29 -0
  7. package/assets/flags/1x1/al.svg +5 -0
  8. package/assets/flags/1x1/am.svg +5 -0
  9. package/assets/flags/1x1/ao.svg +13 -0
  10. package/assets/flags/1x1/aq.svg +5 -0
  11. package/assets/flags/1x1/ar.svg +32 -0
  12. package/assets/flags/1x1/arab.svg +109 -0
  13. package/assets/flags/1x1/as.svg +73 -0
  14. package/assets/flags/1x1/at.svg +4 -0
  15. package/assets/flags/1x1/au.svg +8 -0
  16. package/assets/flags/1x1/aw.svg +186 -0
  17. package/assets/flags/1x1/ax.svg +18 -0
  18. package/assets/flags/1x1/az.svg +8 -0
  19. package/assets/flags/1x1/ba.svg +12 -0
  20. package/assets/flags/1x1/bb.svg +6 -0
  21. package/assets/flags/1x1/bd.svg +4 -0
  22. package/assets/flags/1x1/be.svg +7 -0
  23. package/assets/flags/1x1/bf.svg +7 -0
  24. package/assets/flags/1x1/bg.svg +5 -0
  25. package/assets/flags/1x1/bh.svg +4 -0
  26. package/assets/flags/1x1/bi.svg +15 -0
  27. package/assets/flags/1x1/bj.svg +14 -0
  28. package/assets/flags/1x1/bl.svg +7 -0
  29. package/assets/flags/1x1/bm.svg +97 -0
  30. package/assets/flags/1x1/bn.svg +36 -0
  31. package/assets/flags/1x1/bo.svg +674 -0
  32. package/assets/flags/1x1/bq.svg +5 -0
  33. package/assets/flags/1x1/br.svg +45 -0
  34. package/assets/flags/1x1/bs.svg +13 -0
  35. package/assets/flags/1x1/bt.svg +89 -0
  36. package/assets/flags/1x1/bv.svg +13 -0
  37. package/assets/flags/1x1/bw.svg +7 -0
  38. package/assets/flags/1x1/by.svg +18 -0
  39. package/assets/flags/1x1/bz.svg +145 -0
  40. package/assets/flags/1x1/ca.svg +4 -0
  41. package/assets/flags/1x1/cc.svg +19 -0
  42. package/assets/flags/1x1/cd.svg +12 -0
  43. package/assets/flags/1x1/cefta.svg +13 -0
  44. package/assets/flags/1x1/cf.svg +15 -0
  45. package/assets/flags/1x1/cg.svg +12 -0
  46. package/assets/flags/1x1/ch.svg +9 -0
  47. package/assets/flags/1x1/ci.svg +7 -0
  48. package/assets/flags/1x1/ck.svg +9 -0
  49. package/assets/flags/1x1/cl.svg +13 -0
  50. package/assets/flags/1x1/cm.svg +15 -0
  51. package/assets/flags/1x1/cn.svg +11 -0
  52. package/assets/flags/1x1/co.svg +7 -0
  53. package/assets/flags/1x1/cp.svg +7 -0
  54. package/assets/flags/1x1/cr.svg +7 -0
  55. package/assets/flags/1x1/cu.svg +13 -0
  56. package/assets/flags/1x1/cv.svg +13 -0
  57. package/assets/flags/1x1/cw.svg +14 -0
  58. package/assets/flags/1x1/cx.svg +15 -0
  59. package/assets/flags/1x1/cy.svg +6 -0
  60. package/assets/flags/1x1/cz.svg +5 -0
  61. package/assets/flags/1x1/de.svg +5 -0
  62. package/assets/flags/1x1/dg.svg +130 -0
  63. package/assets/flags/1x1/dj.svg +13 -0
  64. package/assets/flags/1x1/dk.svg +5 -0
  65. package/assets/flags/1x1/dm.svg +152 -0
  66. package/assets/flags/1x1/do.svg +123 -0
  67. package/assets/flags/1x1/dz.svg +5 -0
  68. package/assets/flags/1x1/eac.svg +48 -0
  69. package/assets/flags/1x1/ec.svg +138 -0
  70. package/assets/flags/1x1/ee.svg +5 -0
  71. package/assets/flags/1x1/eg.svg +38 -0
  72. package/assets/flags/1x1/eh.svg +11 -0
  73. package/assets/flags/1x1/er.svg +13 -0
  74. package/assets/flags/1x1/es-ct.svg +4 -0
  75. package/assets/flags/1x1/es-ga.svg +187 -0
  76. package/assets/flags/1x1/es-pv.svg +5 -0
  77. package/assets/flags/1x1/es.svg +547 -0
  78. package/assets/flags/1x1/et.svg +14 -0
  79. package/assets/flags/1x1/eu.svg +28 -0
  80. package/assets/flags/1x1/fi.svg +5 -0
  81. package/assets/flags/1x1/fj.svg +123 -0
  82. package/assets/flags/1x1/fk.svg +89 -0
  83. package/assets/flags/1x1/fm.svg +11 -0
  84. package/assets/flags/1x1/fo.svg +12 -0
  85. package/assets/flags/1x1/fr.svg +5 -0
  86. package/assets/flags/1x1/ga.svg +7 -0
  87. package/assets/flags/1x1/gb-eng.svg +5 -0
  88. package/assets/flags/1x1/gb-nir.svg +131 -0
  89. package/assets/flags/1x1/gb-sct.svg +4 -0
  90. package/assets/flags/1x1/gb-wls.svg +9 -0
  91. package/assets/flags/1x1/gb.svg +7 -0
  92. package/assets/flags/1x1/gd.svg +27 -0
  93. package/assets/flags/1x1/ge.svg +6 -0
  94. package/assets/flags/1x1/gf.svg +5 -0
  95. package/assets/flags/1x1/gg.svg +9 -0
  96. package/assets/flags/1x1/gh.svg +6 -0
  97. package/assets/flags/1x1/gi.svg +32 -0
  98. package/assets/flags/1x1/gl.svg +4 -0
  99. package/assets/flags/1x1/gm.svg +9 -0
  100. package/assets/flags/1x1/gn.svg +7 -0
  101. package/assets/flags/1x1/gp.svg +5 -0
  102. package/assets/flags/1x1/gq.svg +23 -0
  103. package/assets/flags/1x1/gr.svg +16 -0
  104. package/assets/flags/1x1/gs.svg +132 -0
  105. package/assets/flags/1x1/gt.svg +204 -0
  106. package/assets/flags/1x1/gu.svg +23 -0
  107. package/assets/flags/1x1/gw.svg +15 -0
  108. package/assets/flags/1x1/gy.svg +9 -0
  109. package/assets/flags/1x1/hk.svg +8 -0
  110. package/assets/flags/1x1/hm.svg +8 -0
  111. package/assets/flags/1x1/hn.svg +18 -0
  112. package/assets/flags/1x1/hr.svg +56 -0
  113. package/assets/flags/1x1/ht.svg +116 -0
  114. package/assets/flags/1x1/hu.svg +7 -0
  115. package/assets/flags/1x1/ic.svg +7 -0
  116. package/assets/flags/1x1/id.svg +4 -0
  117. package/assets/flags/1x1/ie.svg +7 -0
  118. package/assets/flags/1x1/il.svg +14 -0
  119. package/assets/flags/1x1/im.svg +36 -0
  120. package/assets/flags/1x1/in.svg +25 -0
  121. package/assets/flags/1x1/io.svg +130 -0
  122. package/assets/flags/1x1/iq.svg +10 -0
  123. package/assets/flags/1x1/ir.svg +219 -0
  124. package/assets/flags/1x1/is.svg +12 -0
  125. package/assets/flags/1x1/it.svg +7 -0
  126. package/assets/flags/1x1/je.svg +62 -0
  127. package/assets/flags/1x1/jm.svg +8 -0
  128. package/assets/flags/1x1/jo.svg +16 -0
  129. package/assets/flags/1x1/jp.svg +11 -0
  130. package/assets/flags/1x1/ke.svg +23 -0
  131. package/assets/flags/1x1/kg.svg +15 -0
  132. package/assets/flags/1x1/kh.svg +61 -0
  133. package/assets/flags/1x1/ki.svg +36 -0
  134. package/assets/flags/1x1/km.svg +16 -0
  135. package/assets/flags/1x1/kn.svg +14 -0
  136. package/assets/flags/1x1/kp.svg +15 -0
  137. package/assets/flags/1x1/kr.svg +17 -0
  138. package/assets/flags/1x1/kw.svg +13 -0
  139. package/assets/flags/1x1/ky.svg +103 -0
  140. package/assets/flags/1x1/kz.svg +36 -0
  141. package/assets/flags/1x1/la.svg +12 -0
  142. package/assets/flags/1x1/lb.svg +15 -0
  143. package/assets/flags/1x1/lc.svg +8 -0
  144. package/assets/flags/1x1/li.svg +43 -0
  145. package/assets/flags/1x1/lk.svg +22 -0
  146. package/assets/flags/1x1/lr.svg +14 -0
  147. package/assets/flags/1x1/ls.svg +8 -0
  148. package/assets/flags/1x1/lt.svg +7 -0
  149. package/assets/flags/1x1/lu.svg +5 -0
  150. package/assets/flags/1x1/lv.svg +6 -0
  151. package/assets/flags/1x1/ly.svg +13 -0
  152. package/assets/flags/1x1/ma.svg +4 -0
  153. package/assets/flags/1x1/mc.svg +6 -0
  154. package/assets/flags/1x1/md.svg +71 -0
  155. package/assets/flags/1x1/me.svg +118 -0
  156. package/assets/flags/1x1/mf.svg +5 -0
  157. package/assets/flags/1x1/mg.svg +7 -0
  158. package/assets/flags/1x1/mh.svg +8 -0
  159. package/assets/flags/1x1/mk.svg +5 -0
  160. package/assets/flags/1x1/ml.svg +7 -0
  161. package/assets/flags/1x1/mm.svg +10 -0
  162. package/assets/flags/1x1/mn.svg +14 -0
  163. package/assets/flags/1x1/mo.svg +9 -0
  164. package/assets/flags/1x1/mp.svg +86 -0
  165. package/assets/flags/1x1/mq.svg +5 -0
  166. package/assets/flags/1x1/mr.svg +6 -0
  167. package/assets/flags/1x1/ms.svg +25 -0
  168. package/assets/flags/1x1/mt.svg +56 -0
  169. package/assets/flags/1x1/mu.svg +8 -0
  170. package/assets/flags/1x1/mv.svg +6 -0
  171. package/assets/flags/1x1/mw.svg +15 -0
  172. package/assets/flags/1x1/mx.svg +377 -0
  173. package/assets/flags/1x1/my.svg +18 -0
  174. package/assets/flags/1x1/mz.svg +21 -0
  175. package/assets/flags/1x1/na.svg +16 -0
  176. package/assets/flags/1x1/nc.svg +12 -0
  177. package/assets/flags/1x1/ne.svg +6 -0
  178. package/assets/flags/1x1/nf.svg +11 -0
  179. package/assets/flags/1x1/ng.svg +6 -0
  180. package/assets/flags/1x1/ni.svg +129 -0
  181. package/assets/flags/1x1/nl.svg +5 -0
  182. package/assets/flags/1x1/no.svg +7 -0
  183. package/assets/flags/1x1/np.svg +18 -0
  184. package/assets/flags/1x1/nr.svg +12 -0
  185. package/assets/flags/1x1/nu.svg +10 -0
  186. package/assets/flags/1x1/nz.svg +36 -0
  187. package/assets/flags/1x1/om.svg +115 -0
  188. package/assets/flags/1x1/pa.svg +13 -0
  189. package/assets/flags/1x1/pc.svg +33 -0
  190. package/assets/flags/1x1/pe.svg +4 -0
  191. package/assets/flags/1x1/pf.svg +18 -0
  192. package/assets/flags/1x1/pg.svg +16 -0
  193. package/assets/flags/1x1/ph.svg +6 -0
  194. package/assets/flags/1x1/pk.svg +15 -0
  195. package/assets/flags/1x1/pl.svg +6 -0
  196. package/assets/flags/1x1/pm.svg +5 -0
  197. package/assets/flags/1x1/pn.svg +53 -0
  198. package/assets/flags/1x1/pr.svg +13 -0
  199. package/assets/flags/1x1/ps.svg +15 -0
  200. package/assets/flags/1x1/pt.svg +57 -0
  201. package/assets/flags/1x1/pw.svg +11 -0
  202. package/assets/flags/1x1/py.svg +156 -0
  203. package/assets/flags/1x1/qa.svg +4 -0
  204. package/assets/flags/1x1/re.svg +7 -0
  205. package/assets/flags/1x1/ro.svg +7 -0
  206. package/assets/flags/1x1/rs.svg +296 -0
  207. package/assets/flags/1x1/ru.svg +5 -0
  208. package/assets/flags/1x1/rw.svg +13 -0
  209. package/assets/flags/1x1/sa.svg +25 -0
  210. package/assets/flags/1x1/sb.svg +13 -0
  211. package/assets/flags/1x1/sc.svg +7 -0
  212. package/assets/flags/1x1/sd.svg +13 -0
  213. package/assets/flags/1x1/se.svg +4 -0
  214. package/assets/flags/1x1/sg.svg +13 -0
  215. package/assets/flags/1x1/sh-ac.svg +690 -0
  216. package/assets/flags/1x1/sh-hl.svg +164 -0
  217. package/assets/flags/1x1/sh-ta.svg +76 -0
  218. package/assets/flags/1x1/sh.svg +7 -0
  219. package/assets/flags/1x1/si.svg +18 -0
  220. package/assets/flags/1x1/sj.svg +7 -0
  221. package/assets/flags/1x1/sk.svg +9 -0
  222. package/assets/flags/1x1/sl.svg +12 -0
  223. package/assets/flags/1x1/sm.svg +73 -0
  224. package/assets/flags/1x1/sn.svg +8 -0
  225. package/assets/flags/1x1/so.svg +11 -0
  226. package/assets/flags/1x1/sr.svg +6 -0
  227. package/assets/flags/1x1/ss.svg +8 -0
  228. package/assets/flags/1x1/st.svg +16 -0
  229. package/assets/flags/1x1/sv.svg +594 -0
  230. package/assets/flags/1x1/sx.svg +56 -0
  231. package/assets/flags/1x1/sy.svg +6 -0
  232. package/assets/flags/1x1/sz.svg +34 -0
  233. package/assets/flags/1x1/tc.svg +50 -0
  234. package/assets/flags/1x1/td.svg +7 -0
  235. package/assets/flags/1x1/tf.svg +15 -0
  236. package/assets/flags/1x1/tg.svg +14 -0
  237. package/assets/flags/1x1/th.svg +7 -0
  238. package/assets/flags/1x1/tj.svg +26 -0
  239. package/assets/flags/1x1/tk.svg +5 -0
  240. package/assets/flags/1x1/tl.svg +13 -0
  241. package/assets/flags/1x1/tm.svg +205 -0
  242. package/assets/flags/1x1/tn.svg +4 -0
  243. package/assets/flags/1x1/to.svg +10 -0
  244. package/assets/flags/1x1/tr.svg +8 -0
  245. package/assets/flags/1x1/tt.svg +7 -0
  246. package/assets/flags/1x1/tv.svg +9 -0
  247. package/assets/flags/1x1/tw.svg +32 -0
  248. package/assets/flags/1x1/tz.svg +15 -0
  249. package/assets/flags/1x1/ua.svg +6 -0
  250. package/assets/flags/1x1/ug.svg +30 -0
  251. package/assets/flags/1x1/um.svg +9 -0
  252. package/assets/flags/1x1/un.svg +16 -0
  253. package/assets/flags/1x1/us.svg +9 -0
  254. package/assets/flags/1x1/uy.svg +28 -0
  255. package/assets/flags/1x1/uz.svg +30 -0
  256. package/assets/flags/1x1/va.svg +190 -0
  257. package/assets/flags/1x1/vc.svg +8 -0
  258. package/assets/flags/1x1/ve.svg +26 -0
  259. package/assets/flags/1x1/vg.svg +59 -0
  260. package/assets/flags/1x1/vi.svg +28 -0
  261. package/assets/flags/1x1/vn.svg +11 -0
  262. package/assets/flags/1x1/vu.svg +21 -0
  263. package/assets/flags/1x1/wf.svg +5 -0
  264. package/assets/flags/1x1/ws.svg +7 -0
  265. package/assets/flags/1x1/xk.svg +5 -0
  266. package/assets/flags/1x1/xx.svg +4 -0
  267. package/assets/flags/1x1/ye.svg +7 -0
  268. package/assets/flags/1x1/yt.svg +5 -0
  269. package/assets/flags/1x1/za.svg +17 -0
  270. package/assets/flags/1x1/zm.svg +27 -0
  271. package/assets/flags/1x1/zw.svg +21 -0
  272. package/assets/flags/LICENSE +23 -0
  273. package/cjs/components/card/style/dnb-card.css +1 -0
  274. package/cjs/components/card/style/dnb-card.min.css +1 -1
  275. package/cjs/components/card/style/dnb-card.scss +1 -0
  276. package/cjs/components/country-flag/style/dnb-country-flag-icons.css +280 -272
  277. package/cjs/components/country-flag/style/dnb-country-flag-icons.min.css +1 -1
  278. package/cjs/components/country-flag/style/dnb-country-flag-icons.scss +280 -272
  279. package/cjs/components/date-picker/DatePickerContext.d.ts +1 -1
  280. package/cjs/components/date-picker/DatePickerContext.js.map +1 -1
  281. package/cjs/components/date-picker/DatePickerFooter.js +5 -5
  282. package/cjs/components/date-picker/DatePickerFooter.js.map +1 -1
  283. package/cjs/components/date-picker/DatePickerProvider.js +2 -2
  284. package/cjs/components/date-picker/DatePickerProvider.js.map +1 -1
  285. package/cjs/components/date-picker/hooks/useDates.d.ts +1 -1
  286. package/cjs/components/date-picker/hooks/useDates.js +94 -23
  287. package/cjs/components/date-picker/hooks/useDates.js.map +1 -1
  288. package/cjs/components/dialog/parts/DialogAction.js +18 -16
  289. package/cjs/components/dialog/parts/DialogAction.js.map +1 -1
  290. package/cjs/components/number-format/NumberUtils.js +15 -15
  291. package/cjs/components/number-format/NumberUtils.js.map +1 -1
  292. package/cjs/extensions/forms/DataContext/Context.d.ts +8 -5
  293. package/cjs/extensions/forms/DataContext/Context.js +0 -1
  294. package/cjs/extensions/forms/DataContext/Context.js.map +1 -1
  295. package/cjs/extensions/forms/DataContext/Provider/Provider.d.ts +4 -3
  296. package/cjs/extensions/forms/DataContext/Provider/Provider.js +2 -2
  297. package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  298. package/cjs/extensions/forms/DataContext/Provider/ProviderDocs.js +1 -1
  299. package/cjs/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
  300. package/cjs/extensions/forms/Field/Date/Date.js +2 -2
  301. package/cjs/extensions/forms/Field/Date/Date.js.map +1 -1
  302. package/cjs/extensions/forms/Field/Provider/FieldProvider.d.ts +3 -2
  303. package/cjs/extensions/forms/Field/Provider/FieldProvider.js.map +1 -1
  304. package/cjs/extensions/forms/Field/Upload/Upload.js +11 -3
  305. package/cjs/extensions/forms/Field/Upload/Upload.js.map +1 -1
  306. package/cjs/extensions/forms/Form/Card/Card.d.ts +3 -0
  307. package/cjs/extensions/forms/Form/Card/Card.js +1 -0
  308. package/cjs/extensions/forms/Form/Card/Card.js.map +1 -1
  309. package/cjs/extensions/forms/Form/Element/Element.d.ts +2 -2
  310. package/cjs/extensions/forms/Form/Element/Element.js +50 -11
  311. package/cjs/extensions/forms/Form/Element/Element.js.map +1 -1
  312. package/cjs/extensions/forms/Form/Handler/Handler.d.ts +7 -3
  313. package/cjs/extensions/forms/Form/Handler/Handler.js +23 -97
  314. package/cjs/extensions/forms/Form/Handler/Handler.js.map +1 -1
  315. package/cjs/extensions/forms/Form/Isolation/Isolation.d.ts +3 -3
  316. package/cjs/extensions/forms/Form/Isolation/Isolation.js.map +1 -1
  317. package/cjs/extensions/forms/Form/Section/EditContainer/EditContainerDocs.js +1 -1
  318. package/cjs/extensions/forms/Form/Section/EditContainer/EditContainerDocs.js.map +1 -1
  319. package/cjs/extensions/forms/Form/Section/Section.d.ts +4 -4
  320. package/cjs/extensions/forms/Form/Section/Section.js +2 -1
  321. package/cjs/extensions/forms/Form/Section/Section.js.map +1 -1
  322. package/cjs/extensions/forms/Form/Section/ViewContainer/ViewContainerDocs.js +1 -1
  323. package/cjs/extensions/forms/Form/Section/ViewContainer/ViewContainerDocs.js.map +1 -1
  324. package/cjs/extensions/forms/Form/Section/containers/SectionContainer.d.ts +1 -1
  325. package/cjs/extensions/forms/Form/Section/containers/SectionContainer.js +1 -0
  326. package/cjs/extensions/forms/Form/Section/containers/SectionContainer.js.map +1 -1
  327. package/cjs/extensions/forms/Form/Section/style/dnb-form-section.css +10 -6
  328. package/cjs/extensions/forms/Form/Section/style/dnb-form-section.min.css +1 -1
  329. package/cjs/extensions/forms/Form/Section/style/dnb-form-section.scss +13 -7
  330. package/cjs/extensions/forms/Form/Section/style/themes/dnb-section-theme-sbanken.css +3 -0
  331. package/cjs/extensions/forms/Form/Section/style/themes/dnb-section-theme-sbanken.min.css +1 -0
  332. package/cjs/extensions/forms/Form/Section/style/themes/dnb-section-theme-sbanken.scss +7 -0
  333. package/cjs/extensions/forms/Form/Section/style/themes/dnb-section-theme-ui.css +4 -0
  334. package/cjs/extensions/forms/Form/Section/style/themes/dnb-section-theme-ui.min.css +1 -0
  335. package/cjs/extensions/forms/Form/Section/style/themes/dnb-section-theme-ui.scss +8 -0
  336. package/cjs/extensions/forms/Form/Section/style/themes/ui.d.ts +1 -0
  337. package/cjs/extensions/forms/Form/Section/style/themes/ui.js +4 -0
  338. package/cjs/extensions/forms/Form/Section/style/themes/ui.js.map +1 -0
  339. package/cjs/extensions/forms/Form/SubmitButton/SubmitButton.js +3 -3
  340. package/cjs/extensions/forms/Form/SubmitButton/SubmitButton.js.map +1 -1
  341. package/cjs/extensions/forms/Form/data-context/clearData.d.ts +2 -1
  342. package/cjs/extensions/forms/Form/data-context/clearData.js +1 -1
  343. package/cjs/extensions/forms/Form/data-context/clearData.js.map +1 -1
  344. package/cjs/extensions/forms/Form/data-context/getData.js +1 -1
  345. package/cjs/extensions/forms/Form/data-context/getData.js.map +1 -1
  346. package/cjs/extensions/forms/Form/data-context/useData.js +1 -1
  347. package/cjs/extensions/forms/Form/data-context/useData.js.map +1 -1
  348. package/cjs/extensions/forms/Form/data-context/useValidation.js +2 -2
  349. package/cjs/extensions/forms/Form/data-context/useValidation.js.map +1 -1
  350. package/cjs/extensions/forms/Iterate/Array/ArrayItemArea.d.ts +3 -2
  351. package/cjs/extensions/forms/Iterate/Array/ArrayItemArea.js +9 -5
  352. package/cjs/extensions/forms/Iterate/Array/ArrayItemArea.js.map +1 -1
  353. package/cjs/extensions/forms/Iterate/Array/ArrayItemAreaContext.d.ts +3 -0
  354. package/cjs/extensions/forms/Iterate/Array/ArrayItemAreaContext.js.map +1 -1
  355. package/cjs/extensions/forms/Iterate/Count/Count.d.ts +4 -3
  356. package/cjs/extensions/forms/Iterate/Count/Count.js.map +1 -1
  357. package/cjs/extensions/forms/Iterate/EditContainer/EditContainer.d.ts +1 -1
  358. package/cjs/extensions/forms/Iterate/EditContainer/EditContainer.js +7 -4
  359. package/cjs/extensions/forms/Iterate/EditContainer/EditContainer.js.map +1 -1
  360. package/cjs/extensions/forms/Iterate/EditContainer/EditContainerDocs.js +2 -2
  361. package/cjs/extensions/forms/Iterate/EditContainer/EditContainerDocs.js.map +1 -1
  362. package/cjs/extensions/forms/Iterate/PushContainer/PushContainerDocs.js +1 -1
  363. package/cjs/extensions/forms/Iterate/PushContainer/PushContainerDocs.js.map +1 -1
  364. package/cjs/extensions/forms/Iterate/RemoveButton/RemoveButton.d.ts +3 -1
  365. package/cjs/extensions/forms/Iterate/RemoveButton/RemoveButton.js +27 -6
  366. package/cjs/extensions/forms/Iterate/RemoveButton/RemoveButton.js.map +1 -1
  367. package/cjs/extensions/forms/Iterate/RemoveButton/RemoveButtonDocs.js +5 -0
  368. package/cjs/extensions/forms/Iterate/RemoveButton/RemoveButtonDocs.js.map +1 -1
  369. package/cjs/extensions/forms/Iterate/Toolbar/Toolbar.js +8 -4
  370. package/cjs/extensions/forms/Iterate/Toolbar/Toolbar.js.map +1 -1
  371. package/cjs/extensions/forms/Iterate/ViewContainer/RemoveButton.d.ts +2 -1
  372. package/cjs/extensions/forms/Iterate/ViewContainer/RemoveButton.js +4 -3
  373. package/cjs/extensions/forms/Iterate/ViewContainer/RemoveButton.js.map +1 -1
  374. package/cjs/extensions/forms/Iterate/ViewContainer/ViewContainer.d.ts +1 -1
  375. package/cjs/extensions/forms/Iterate/ViewContainer/ViewContainer.js +3 -2
  376. package/cjs/extensions/forms/Iterate/ViewContainer/ViewContainer.js.map +1 -1
  377. package/cjs/extensions/forms/Iterate/ViewContainer/ViewContainerDocs.js +2 -2
  378. package/cjs/extensions/forms/Iterate/ViewContainer/ViewContainerDocs.js.map +1 -1
  379. package/cjs/extensions/forms/Iterate/hooks/useItem.d.ts +5 -1
  380. package/cjs/extensions/forms/Iterate/hooks/useItem.js.map +1 -1
  381. package/cjs/extensions/forms/Tools/ListAllProps.d.ts +7 -7
  382. package/cjs/extensions/forms/Tools/ListAllProps.js.map +1 -1
  383. package/cjs/extensions/forms/Value/PhoneNumber/PhoneNumber.js +1 -1
  384. package/cjs/extensions/forms/Value/PhoneNumber/PhoneNumber.js.map +1 -1
  385. package/cjs/extensions/forms/Wizard/Container/WizardContainer.js +1 -1
  386. package/cjs/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  387. package/cjs/extensions/forms/Wizard/hooks/useStep.d.ts +2 -2
  388. package/cjs/extensions/forms/Wizard/hooks/useStep.js +1 -1
  389. package/cjs/extensions/forms/Wizard/hooks/useStep.js.map +1 -1
  390. package/cjs/extensions/forms/Wizard/style/themes/dnb-wizard-layout-theme-ui.scss +2 -0
  391. package/cjs/extensions/forms/constants/countries.js +1 -1
  392. package/cjs/extensions/forms/constants/countries.js.map +1 -1
  393. package/cjs/extensions/forms/constants/locales/en-GB.d.ts +1 -0
  394. package/cjs/extensions/forms/constants/locales/en-GB.js +2 -1
  395. package/cjs/extensions/forms/constants/locales/en-GB.js.map +1 -1
  396. package/cjs/extensions/forms/constants/locales/en-US.d.ts +1 -0
  397. package/cjs/extensions/forms/constants/locales/index.d.ts +2 -0
  398. package/cjs/extensions/forms/constants/locales/nb-NO.d.ts +1 -0
  399. package/cjs/extensions/forms/constants/locales/nb-NO.js +2 -1
  400. package/cjs/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  401. package/cjs/extensions/forms/hooks/useDataContext.js +1 -1
  402. package/cjs/extensions/forms/hooks/useDataContext.js.map +1 -1
  403. package/cjs/extensions/forms/hooks/useSnapshot.d.ts +3 -2
  404. package/cjs/extensions/forms/hooks/useSnapshot.js.map +1 -1
  405. package/cjs/extensions/forms/style/dnb-forms.css +10 -6
  406. package/cjs/extensions/forms/style/dnb-forms.min.css +1 -1
  407. package/cjs/extensions/forms/types.d.ts +4 -4
  408. package/cjs/extensions/forms/types.js.map +1 -1
  409. package/cjs/extensions/forms/utils/json-pointer/json-pointer.d.ts +2 -2
  410. package/cjs/extensions/forms/utils/json-pointer/json-pointer.js.map +1 -1
  411. package/cjs/shared/Eufemia.d.ts +1 -1
  412. package/cjs/shared/Eufemia.js +2 -2
  413. package/cjs/shared/Eufemia.js.map +1 -1
  414. package/cjs/shared/helpers/useSharedState.d.ts +19 -13
  415. package/cjs/shared/helpers/useSharedState.js +23 -11
  416. package/cjs/shared/helpers/useSharedState.js.map +1 -1
  417. package/cjs/style/core/scopes.scss +1 -1
  418. package/cjs/style/dnb-ui-basis.css +1 -1
  419. package/cjs/style/dnb-ui-basis.min.css +1 -1
  420. package/cjs/style/dnb-ui-body.css +1 -1
  421. package/cjs/style/dnb-ui-body.min.css +1 -1
  422. package/cjs/style/dnb-ui-components.css +291 -278
  423. package/cjs/style/dnb-ui-components.min.css +2 -2
  424. package/cjs/style/dnb-ui-core.css +1 -1
  425. package/cjs/style/dnb-ui-core.min.css +1 -1
  426. package/cjs/style/dnb-ui-extensions.css +10 -6
  427. package/cjs/style/dnb-ui-extensions.min.css +1 -1
  428. package/cjs/style/dnb-ui-forms.css +10 -6
  429. package/cjs/style/dnb-ui-forms.min.css +1 -1
  430. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +306 -284
  431. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +3 -3
  432. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.css +15 -6
  433. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +2 -2
  434. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.scss +1 -0
  435. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.css +15 -6
  436. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.min.css +2 -2
  437. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.scss +1 -0
  438. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +305 -284
  439. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +3 -3
  440. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.css +14 -6
  441. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +2 -2
  442. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.scss +1 -0
  443. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.css +14 -6
  444. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.min.css +2 -2
  445. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.scss +1 -0
  446. package/cjs/style/themes/theme-ui/ui-theme-components.css +306 -284
  447. package/cjs/style/themes/theme-ui/ui-theme-components.min.css +3 -3
  448. package/cjs/style/themes/theme-ui/ui-theme-extensions.css +15 -6
  449. package/cjs/style/themes/theme-ui/ui-theme-extensions.min.css +2 -2
  450. package/cjs/style/themes/theme-ui/ui-theme-extensions.scss +1 -0
  451. package/cjs/style/themes/theme-ui/ui-theme-forms.css +15 -6
  452. package/cjs/style/themes/theme-ui/ui-theme-forms.min.css +2 -2
  453. package/cjs/style/themes/theme-ui/ui-theme-forms.scss +1 -0
  454. package/components/card/style/dnb-card.css +1 -0
  455. package/components/card/style/dnb-card.min.css +1 -1
  456. package/components/card/style/dnb-card.scss +1 -0
  457. package/components/country-flag/style/dnb-country-flag-icons.css +280 -272
  458. package/components/country-flag/style/dnb-country-flag-icons.min.css +1 -1
  459. package/components/country-flag/style/dnb-country-flag-icons.scss +280 -272
  460. package/components/date-picker/DatePickerContext.d.ts +1 -1
  461. package/components/date-picker/DatePickerContext.js.map +1 -1
  462. package/components/date-picker/DatePickerFooter.js +5 -5
  463. package/components/date-picker/DatePickerFooter.js.map +1 -1
  464. package/components/date-picker/DatePickerProvider.js +2 -2
  465. package/components/date-picker/DatePickerProvider.js.map +1 -1
  466. package/components/date-picker/hooks/useDates.d.ts +1 -1
  467. package/components/date-picker/hooks/useDates.js +95 -24
  468. package/components/date-picker/hooks/useDates.js.map +1 -1
  469. package/components/dialog/parts/DialogAction.js +19 -17
  470. package/components/dialog/parts/DialogAction.js.map +1 -1
  471. package/components/number-format/NumberUtils.js +15 -15
  472. package/components/number-format/NumberUtils.js.map +1 -1
  473. package/es/components/card/style/dnb-card.css +1 -0
  474. package/es/components/card/style/dnb-card.min.css +1 -1
  475. package/es/components/card/style/dnb-card.scss +1 -0
  476. package/es/components/country-flag/style/dnb-country-flag-icons.css +280 -272
  477. package/es/components/country-flag/style/dnb-country-flag-icons.min.css +1 -1
  478. package/es/components/country-flag/style/dnb-country-flag-icons.scss +280 -272
  479. package/es/components/date-picker/DatePickerContext.d.ts +1 -1
  480. package/es/components/date-picker/DatePickerContext.js.map +1 -1
  481. package/es/components/date-picker/DatePickerFooter.js +5 -5
  482. package/es/components/date-picker/DatePickerFooter.js.map +1 -1
  483. package/es/components/date-picker/DatePickerProvider.js +2 -2
  484. package/es/components/date-picker/DatePickerProvider.js.map +1 -1
  485. package/es/components/date-picker/hooks/useDates.d.ts +1 -1
  486. package/es/components/date-picker/hooks/useDates.js +87 -17
  487. package/es/components/date-picker/hooks/useDates.js.map +1 -1
  488. package/es/components/dialog/parts/DialogAction.js +19 -17
  489. package/es/components/dialog/parts/DialogAction.js.map +1 -1
  490. package/es/components/number-format/NumberUtils.js +15 -15
  491. package/es/components/number-format/NumberUtils.js.map +1 -1
  492. package/es/extensions/forms/DataContext/Context.d.ts +8 -5
  493. package/es/extensions/forms/DataContext/Context.js +0 -1
  494. package/es/extensions/forms/DataContext/Context.js.map +1 -1
  495. package/es/extensions/forms/DataContext/Provider/Provider.d.ts +4 -3
  496. package/es/extensions/forms/DataContext/Provider/Provider.js +3 -3
  497. package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  498. package/es/extensions/forms/DataContext/Provider/ProviderDocs.js +1 -1
  499. package/es/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
  500. package/es/extensions/forms/Field/Date/Date.js +2 -2
  501. package/es/extensions/forms/Field/Date/Date.js.map +1 -1
  502. package/es/extensions/forms/Field/Provider/FieldProvider.d.ts +3 -2
  503. package/es/extensions/forms/Field/Provider/FieldProvider.js.map +1 -1
  504. package/es/extensions/forms/Field/Upload/Upload.js +6 -1
  505. package/es/extensions/forms/Field/Upload/Upload.js.map +1 -1
  506. package/es/extensions/forms/Form/Card/Card.d.ts +3 -0
  507. package/es/extensions/forms/Form/Card/Card.js +1 -0
  508. package/es/extensions/forms/Form/Card/Card.js.map +1 -1
  509. package/es/extensions/forms/Form/Element/Element.d.ts +2 -2
  510. package/es/extensions/forms/Form/Element/Element.js +45 -12
  511. package/es/extensions/forms/Form/Element/Element.js.map +1 -1
  512. package/es/extensions/forms/Form/Handler/Handler.d.ts +7 -3
  513. package/es/extensions/forms/Form/Handler/Handler.js +24 -93
  514. package/es/extensions/forms/Form/Handler/Handler.js.map +1 -1
  515. package/es/extensions/forms/Form/Isolation/Isolation.d.ts +3 -3
  516. package/es/extensions/forms/Form/Isolation/Isolation.js.map +1 -1
  517. package/es/extensions/forms/Form/Section/EditContainer/EditContainerDocs.js +1 -1
  518. package/es/extensions/forms/Form/Section/EditContainer/EditContainerDocs.js.map +1 -1
  519. package/es/extensions/forms/Form/Section/Section.d.ts +4 -4
  520. package/es/extensions/forms/Form/Section/Section.js +2 -1
  521. package/es/extensions/forms/Form/Section/Section.js.map +1 -1
  522. package/es/extensions/forms/Form/Section/ViewContainer/ViewContainerDocs.js +1 -1
  523. package/es/extensions/forms/Form/Section/ViewContainer/ViewContainerDocs.js.map +1 -1
  524. package/es/extensions/forms/Form/Section/containers/SectionContainer.d.ts +1 -1
  525. package/es/extensions/forms/Form/Section/containers/SectionContainer.js +1 -0
  526. package/es/extensions/forms/Form/Section/containers/SectionContainer.js.map +1 -1
  527. package/es/extensions/forms/Form/Section/style/dnb-form-section.css +10 -6
  528. package/es/extensions/forms/Form/Section/style/dnb-form-section.min.css +1 -1
  529. package/es/extensions/forms/Form/Section/style/dnb-form-section.scss +13 -7
  530. package/es/extensions/forms/Form/Section/style/themes/dnb-section-theme-sbanken.css +3 -0
  531. package/es/extensions/forms/Form/Section/style/themes/dnb-section-theme-sbanken.min.css +1 -0
  532. package/es/extensions/forms/Form/Section/style/themes/dnb-section-theme-sbanken.scss +7 -0
  533. package/es/extensions/forms/Form/Section/style/themes/dnb-section-theme-ui.css +4 -0
  534. package/es/extensions/forms/Form/Section/style/themes/dnb-section-theme-ui.min.css +1 -0
  535. package/es/extensions/forms/Form/Section/style/themes/dnb-section-theme-ui.scss +8 -0
  536. package/es/extensions/forms/Form/Section/style/themes/ui.d.ts +1 -0
  537. package/es/extensions/forms/Form/Section/style/themes/ui.js +1 -0
  538. package/es/extensions/forms/Form/Section/style/themes/ui.js.map +1 -0
  539. package/es/extensions/forms/Form/SubmitButton/SubmitButton.js +3 -3
  540. package/es/extensions/forms/Form/SubmitButton/SubmitButton.js.map +1 -1
  541. package/es/extensions/forms/Form/data-context/clearData.d.ts +2 -1
  542. package/es/extensions/forms/Form/data-context/clearData.js +2 -2
  543. package/es/extensions/forms/Form/data-context/clearData.js.map +1 -1
  544. package/es/extensions/forms/Form/data-context/getData.js +2 -2
  545. package/es/extensions/forms/Form/data-context/getData.js.map +1 -1
  546. package/es/extensions/forms/Form/data-context/useData.js +2 -2
  547. package/es/extensions/forms/Form/data-context/useData.js.map +1 -1
  548. package/es/extensions/forms/Form/data-context/useValidation.js +3 -3
  549. package/es/extensions/forms/Form/data-context/useValidation.js.map +1 -1
  550. package/es/extensions/forms/Iterate/Array/ArrayItemArea.d.ts +3 -2
  551. package/es/extensions/forms/Iterate/Array/ArrayItemArea.js +9 -5
  552. package/es/extensions/forms/Iterate/Array/ArrayItemArea.js.map +1 -1
  553. package/es/extensions/forms/Iterate/Array/ArrayItemAreaContext.d.ts +3 -0
  554. package/es/extensions/forms/Iterate/Array/ArrayItemAreaContext.js.map +1 -1
  555. package/es/extensions/forms/Iterate/Count/Count.d.ts +4 -3
  556. package/es/extensions/forms/Iterate/Count/Count.js.map +1 -1
  557. package/es/extensions/forms/Iterate/EditContainer/EditContainer.d.ts +1 -1
  558. package/es/extensions/forms/Iterate/EditContainer/EditContainer.js +7 -4
  559. package/es/extensions/forms/Iterate/EditContainer/EditContainer.js.map +1 -1
  560. package/es/extensions/forms/Iterate/EditContainer/EditContainerDocs.js +2 -2
  561. package/es/extensions/forms/Iterate/EditContainer/EditContainerDocs.js.map +1 -1
  562. package/es/extensions/forms/Iterate/PushContainer/PushContainerDocs.js +1 -1
  563. package/es/extensions/forms/Iterate/PushContainer/PushContainerDocs.js.map +1 -1
  564. package/es/extensions/forms/Iterate/RemoveButton/RemoveButton.d.ts +3 -1
  565. package/es/extensions/forms/Iterate/RemoveButton/RemoveButton.js +25 -7
  566. package/es/extensions/forms/Iterate/RemoveButton/RemoveButton.js.map +1 -1
  567. package/es/extensions/forms/Iterate/RemoveButton/RemoveButtonDocs.js +5 -0
  568. package/es/extensions/forms/Iterate/RemoveButton/RemoveButtonDocs.js.map +1 -1
  569. package/es/extensions/forms/Iterate/Toolbar/Toolbar.js +8 -4
  570. package/es/extensions/forms/Iterate/Toolbar/Toolbar.js.map +1 -1
  571. package/es/extensions/forms/Iterate/ViewContainer/RemoveButton.d.ts +2 -1
  572. package/es/extensions/forms/Iterate/ViewContainer/RemoveButton.js +4 -3
  573. package/es/extensions/forms/Iterate/ViewContainer/RemoveButton.js.map +1 -1
  574. package/es/extensions/forms/Iterate/ViewContainer/ViewContainer.d.ts +1 -1
  575. package/es/extensions/forms/Iterate/ViewContainer/ViewContainer.js +3 -2
  576. package/es/extensions/forms/Iterate/ViewContainer/ViewContainer.js.map +1 -1
  577. package/es/extensions/forms/Iterate/ViewContainer/ViewContainerDocs.js +2 -2
  578. package/es/extensions/forms/Iterate/ViewContainer/ViewContainerDocs.js.map +1 -1
  579. package/es/extensions/forms/Iterate/hooks/useItem.d.ts +5 -1
  580. package/es/extensions/forms/Iterate/hooks/useItem.js.map +1 -1
  581. package/es/extensions/forms/Tools/ListAllProps.d.ts +7 -7
  582. package/es/extensions/forms/Tools/ListAllProps.js.map +1 -1
  583. package/es/extensions/forms/Value/PhoneNumber/PhoneNumber.js +2 -2
  584. package/es/extensions/forms/Value/PhoneNumber/PhoneNumber.js.map +1 -1
  585. package/es/extensions/forms/Wizard/Container/WizardContainer.js +2 -2
  586. package/es/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  587. package/es/extensions/forms/Wizard/hooks/useStep.d.ts +2 -2
  588. package/es/extensions/forms/Wizard/hooks/useStep.js +2 -2
  589. package/es/extensions/forms/Wizard/hooks/useStep.js.map +1 -1
  590. package/es/extensions/forms/Wizard/style/themes/dnb-wizard-layout-theme-ui.scss +2 -0
  591. package/es/extensions/forms/constants/countries.js +1 -1
  592. package/es/extensions/forms/constants/countries.js.map +1 -1
  593. package/es/extensions/forms/constants/locales/en-GB.d.ts +1 -0
  594. package/es/extensions/forms/constants/locales/en-GB.js +2 -1
  595. package/es/extensions/forms/constants/locales/en-GB.js.map +1 -1
  596. package/es/extensions/forms/constants/locales/en-US.d.ts +1 -0
  597. package/es/extensions/forms/constants/locales/index.d.ts +2 -0
  598. package/es/extensions/forms/constants/locales/nb-NO.d.ts +1 -0
  599. package/es/extensions/forms/constants/locales/nb-NO.js +2 -1
  600. package/es/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  601. package/es/extensions/forms/hooks/useDataContext.js +2 -2
  602. package/es/extensions/forms/hooks/useDataContext.js.map +1 -1
  603. package/es/extensions/forms/hooks/useSnapshot.d.ts +3 -2
  604. package/es/extensions/forms/hooks/useSnapshot.js.map +1 -1
  605. package/es/extensions/forms/style/dnb-forms.css +10 -6
  606. package/es/extensions/forms/style/dnb-forms.min.css +1 -1
  607. package/es/extensions/forms/types.d.ts +4 -4
  608. package/es/extensions/forms/types.js.map +1 -1
  609. package/es/extensions/forms/utils/json-pointer/json-pointer.d.ts +2 -2
  610. package/es/extensions/forms/utils/json-pointer/json-pointer.js.map +1 -1
  611. package/es/shared/Eufemia.d.ts +1 -1
  612. package/es/shared/Eufemia.js +2 -2
  613. package/es/shared/Eufemia.js.map +1 -1
  614. package/es/shared/helpers/useSharedState.d.ts +19 -13
  615. package/es/shared/helpers/useSharedState.js +22 -11
  616. package/es/shared/helpers/useSharedState.js.map +1 -1
  617. package/es/style/core/scopes.scss +1 -1
  618. package/es/style/dnb-ui-basis.css +1 -1
  619. package/es/style/dnb-ui-basis.min.css +1 -1
  620. package/es/style/dnb-ui-body.css +1 -1
  621. package/es/style/dnb-ui-body.min.css +1 -1
  622. package/es/style/dnb-ui-components.css +291 -278
  623. package/es/style/dnb-ui-components.min.css +2 -2
  624. package/es/style/dnb-ui-core.css +1 -1
  625. package/es/style/dnb-ui-core.min.css +1 -1
  626. package/es/style/dnb-ui-extensions.css +10 -6
  627. package/es/style/dnb-ui-extensions.min.css +1 -1
  628. package/es/style/dnb-ui-forms.css +10 -6
  629. package/es/style/dnb-ui-forms.min.css +1 -1
  630. package/es/style/themes/theme-eiendom/eiendom-theme-components.css +306 -284
  631. package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +3 -3
  632. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.css +15 -6
  633. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +2 -2
  634. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.scss +1 -0
  635. package/es/style/themes/theme-eiendom/eiendom-theme-forms.css +15 -6
  636. package/es/style/themes/theme-eiendom/eiendom-theme-forms.min.css +2 -2
  637. package/es/style/themes/theme-eiendom/eiendom-theme-forms.scss +1 -0
  638. package/es/style/themes/theme-sbanken/sbanken-theme-components.css +305 -284
  639. package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +3 -3
  640. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.css +14 -6
  641. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +2 -2
  642. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.scss +1 -0
  643. package/es/style/themes/theme-sbanken/sbanken-theme-forms.css +14 -6
  644. package/es/style/themes/theme-sbanken/sbanken-theme-forms.min.css +2 -2
  645. package/es/style/themes/theme-sbanken/sbanken-theme-forms.scss +1 -0
  646. package/es/style/themes/theme-ui/ui-theme-components.css +306 -284
  647. package/es/style/themes/theme-ui/ui-theme-components.min.css +3 -3
  648. package/es/style/themes/theme-ui/ui-theme-extensions.css +15 -6
  649. package/es/style/themes/theme-ui/ui-theme-extensions.min.css +2 -2
  650. package/es/style/themes/theme-ui/ui-theme-extensions.scss +1 -0
  651. package/es/style/themes/theme-ui/ui-theme-forms.css +15 -6
  652. package/es/style/themes/theme-ui/ui-theme-forms.min.css +2 -2
  653. package/es/style/themes/theme-ui/ui-theme-forms.scss +1 -0
  654. package/esm/dnb-ui-basis.min.mjs +1 -1
  655. package/esm/dnb-ui-components.min.mjs +1 -1
  656. package/esm/dnb-ui-elements.min.mjs +1 -1
  657. package/esm/dnb-ui-extensions.min.mjs +1 -1
  658. package/esm/dnb-ui-lib.min.mjs +1 -1
  659. package/extensions/forms/DataContext/Context.d.ts +8 -5
  660. package/extensions/forms/DataContext/Context.js +0 -1
  661. package/extensions/forms/DataContext/Context.js.map +1 -1
  662. package/extensions/forms/DataContext/Provider/Provider.d.ts +4 -3
  663. package/extensions/forms/DataContext/Provider/Provider.js +3 -3
  664. package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  665. package/extensions/forms/DataContext/Provider/ProviderDocs.js +1 -1
  666. package/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
  667. package/extensions/forms/Field/Date/Date.js +2 -2
  668. package/extensions/forms/Field/Date/Date.js.map +1 -1
  669. package/extensions/forms/Field/Provider/FieldProvider.d.ts +3 -2
  670. package/extensions/forms/Field/Provider/FieldProvider.js.map +1 -1
  671. package/extensions/forms/Field/Upload/Upload.js +11 -3
  672. package/extensions/forms/Field/Upload/Upload.js.map +1 -1
  673. package/extensions/forms/Form/Card/Card.d.ts +3 -0
  674. package/extensions/forms/Form/Card/Card.js +1 -0
  675. package/extensions/forms/Form/Card/Card.js.map +1 -1
  676. package/extensions/forms/Form/Element/Element.d.ts +2 -2
  677. package/extensions/forms/Form/Element/Element.js +50 -13
  678. package/extensions/forms/Form/Element/Element.js.map +1 -1
  679. package/extensions/forms/Form/Handler/Handler.d.ts +7 -3
  680. package/extensions/forms/Form/Handler/Handler.js +24 -97
  681. package/extensions/forms/Form/Handler/Handler.js.map +1 -1
  682. package/extensions/forms/Form/Isolation/Isolation.d.ts +3 -3
  683. package/extensions/forms/Form/Isolation/Isolation.js.map +1 -1
  684. package/extensions/forms/Form/Section/EditContainer/EditContainerDocs.js +1 -1
  685. package/extensions/forms/Form/Section/EditContainer/EditContainerDocs.js.map +1 -1
  686. package/extensions/forms/Form/Section/Section.d.ts +4 -4
  687. package/extensions/forms/Form/Section/Section.js +2 -1
  688. package/extensions/forms/Form/Section/Section.js.map +1 -1
  689. package/extensions/forms/Form/Section/ViewContainer/ViewContainerDocs.js +1 -1
  690. package/extensions/forms/Form/Section/ViewContainer/ViewContainerDocs.js.map +1 -1
  691. package/extensions/forms/Form/Section/containers/SectionContainer.d.ts +1 -1
  692. package/extensions/forms/Form/Section/containers/SectionContainer.js +1 -0
  693. package/extensions/forms/Form/Section/containers/SectionContainer.js.map +1 -1
  694. package/extensions/forms/Form/Section/style/dnb-form-section.css +10 -6
  695. package/extensions/forms/Form/Section/style/dnb-form-section.min.css +1 -1
  696. package/extensions/forms/Form/Section/style/dnb-form-section.scss +13 -7
  697. package/extensions/forms/Form/Section/style/themes/dnb-section-theme-sbanken.css +3 -0
  698. package/extensions/forms/Form/Section/style/themes/dnb-section-theme-sbanken.min.css +1 -0
  699. package/extensions/forms/Form/Section/style/themes/dnb-section-theme-sbanken.scss +7 -0
  700. package/extensions/forms/Form/Section/style/themes/dnb-section-theme-ui.css +4 -0
  701. package/extensions/forms/Form/Section/style/themes/dnb-section-theme-ui.min.css +1 -0
  702. package/extensions/forms/Form/Section/style/themes/dnb-section-theme-ui.scss +8 -0
  703. package/extensions/forms/Form/Section/style/themes/ui.d.ts +1 -0
  704. package/extensions/forms/Form/Section/style/themes/ui.js +1 -0
  705. package/extensions/forms/Form/Section/style/themes/ui.js.map +1 -0
  706. package/extensions/forms/Form/SubmitButton/SubmitButton.js +3 -3
  707. package/extensions/forms/Form/SubmitButton/SubmitButton.js.map +1 -1
  708. package/extensions/forms/Form/data-context/clearData.d.ts +2 -1
  709. package/extensions/forms/Form/data-context/clearData.js +2 -2
  710. package/extensions/forms/Form/data-context/clearData.js.map +1 -1
  711. package/extensions/forms/Form/data-context/getData.js +2 -2
  712. package/extensions/forms/Form/data-context/getData.js.map +1 -1
  713. package/extensions/forms/Form/data-context/useData.js +2 -2
  714. package/extensions/forms/Form/data-context/useData.js.map +1 -1
  715. package/extensions/forms/Form/data-context/useValidation.js +3 -3
  716. package/extensions/forms/Form/data-context/useValidation.js.map +1 -1
  717. package/extensions/forms/Iterate/Array/ArrayItemArea.d.ts +3 -2
  718. package/extensions/forms/Iterate/Array/ArrayItemArea.js +9 -5
  719. package/extensions/forms/Iterate/Array/ArrayItemArea.js.map +1 -1
  720. package/extensions/forms/Iterate/Array/ArrayItemAreaContext.d.ts +3 -0
  721. package/extensions/forms/Iterate/Array/ArrayItemAreaContext.js.map +1 -1
  722. package/extensions/forms/Iterate/Count/Count.d.ts +4 -3
  723. package/extensions/forms/Iterate/Count/Count.js.map +1 -1
  724. package/extensions/forms/Iterate/EditContainer/EditContainer.d.ts +1 -1
  725. package/extensions/forms/Iterate/EditContainer/EditContainer.js +7 -4
  726. package/extensions/forms/Iterate/EditContainer/EditContainer.js.map +1 -1
  727. package/extensions/forms/Iterate/EditContainer/EditContainerDocs.js +2 -2
  728. package/extensions/forms/Iterate/EditContainer/EditContainerDocs.js.map +1 -1
  729. package/extensions/forms/Iterate/PushContainer/PushContainerDocs.js +1 -1
  730. package/extensions/forms/Iterate/PushContainer/PushContainerDocs.js.map +1 -1
  731. package/extensions/forms/Iterate/RemoveButton/RemoveButton.d.ts +3 -1
  732. package/extensions/forms/Iterate/RemoveButton/RemoveButton.js +26 -7
  733. package/extensions/forms/Iterate/RemoveButton/RemoveButton.js.map +1 -1
  734. package/extensions/forms/Iterate/RemoveButton/RemoveButtonDocs.js +5 -0
  735. package/extensions/forms/Iterate/RemoveButton/RemoveButtonDocs.js.map +1 -1
  736. package/extensions/forms/Iterate/Toolbar/Toolbar.js +8 -4
  737. package/extensions/forms/Iterate/Toolbar/Toolbar.js.map +1 -1
  738. package/extensions/forms/Iterate/ViewContainer/RemoveButton.d.ts +2 -1
  739. package/extensions/forms/Iterate/ViewContainer/RemoveButton.js +4 -3
  740. package/extensions/forms/Iterate/ViewContainer/RemoveButton.js.map +1 -1
  741. package/extensions/forms/Iterate/ViewContainer/ViewContainer.d.ts +1 -1
  742. package/extensions/forms/Iterate/ViewContainer/ViewContainer.js +3 -2
  743. package/extensions/forms/Iterate/ViewContainer/ViewContainer.js.map +1 -1
  744. package/extensions/forms/Iterate/ViewContainer/ViewContainerDocs.js +2 -2
  745. package/extensions/forms/Iterate/ViewContainer/ViewContainerDocs.js.map +1 -1
  746. package/extensions/forms/Iterate/hooks/useItem.d.ts +5 -1
  747. package/extensions/forms/Iterate/hooks/useItem.js.map +1 -1
  748. package/extensions/forms/Tools/ListAllProps.d.ts +7 -7
  749. package/extensions/forms/Tools/ListAllProps.js.map +1 -1
  750. package/extensions/forms/Value/PhoneNumber/PhoneNumber.js +2 -2
  751. package/extensions/forms/Value/PhoneNumber/PhoneNumber.js.map +1 -1
  752. package/extensions/forms/Wizard/Container/WizardContainer.js +2 -2
  753. package/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  754. package/extensions/forms/Wizard/hooks/useStep.d.ts +2 -2
  755. package/extensions/forms/Wizard/hooks/useStep.js +2 -2
  756. package/extensions/forms/Wizard/hooks/useStep.js.map +1 -1
  757. package/extensions/forms/Wizard/style/themes/dnb-wizard-layout-theme-ui.scss +2 -0
  758. package/extensions/forms/constants/countries.js +1 -1
  759. package/extensions/forms/constants/countries.js.map +1 -1
  760. package/extensions/forms/constants/locales/en-GB.d.ts +1 -0
  761. package/extensions/forms/constants/locales/en-GB.js +2 -1
  762. package/extensions/forms/constants/locales/en-GB.js.map +1 -1
  763. package/extensions/forms/constants/locales/en-US.d.ts +1 -0
  764. package/extensions/forms/constants/locales/index.d.ts +2 -0
  765. package/extensions/forms/constants/locales/nb-NO.d.ts +1 -0
  766. package/extensions/forms/constants/locales/nb-NO.js +2 -1
  767. package/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  768. package/extensions/forms/hooks/useDataContext.js +2 -2
  769. package/extensions/forms/hooks/useDataContext.js.map +1 -1
  770. package/extensions/forms/hooks/useSnapshot.d.ts +3 -2
  771. package/extensions/forms/hooks/useSnapshot.js.map +1 -1
  772. package/extensions/forms/style/dnb-forms.css +10 -6
  773. package/extensions/forms/style/dnb-forms.min.css +1 -1
  774. package/extensions/forms/types.d.ts +4 -4
  775. package/extensions/forms/types.js.map +1 -1
  776. package/extensions/forms/utils/json-pointer/json-pointer.d.ts +2 -2
  777. package/extensions/forms/utils/json-pointer/json-pointer.js.map +1 -1
  778. package/package.json +1 -2
  779. package/shared/Eufemia.d.ts +1 -1
  780. package/shared/Eufemia.js +2 -2
  781. package/shared/Eufemia.js.map +1 -1
  782. package/shared/helpers/useSharedState.d.ts +19 -13
  783. package/shared/helpers/useSharedState.js +22 -11
  784. package/shared/helpers/useSharedState.js.map +1 -1
  785. package/style/core/scopes.scss +1 -1
  786. package/style/dnb-ui-basis.css +1 -1
  787. package/style/dnb-ui-basis.min.css +1 -1
  788. package/style/dnb-ui-body.css +1 -1
  789. package/style/dnb-ui-body.min.css +1 -1
  790. package/style/dnb-ui-components.css +291 -278
  791. package/style/dnb-ui-components.min.css +2 -2
  792. package/style/dnb-ui-core.css +1 -1
  793. package/style/dnb-ui-core.min.css +1 -1
  794. package/style/dnb-ui-extensions.css +10 -6
  795. package/style/dnb-ui-extensions.min.css +1 -1
  796. package/style/dnb-ui-forms.css +10 -6
  797. package/style/dnb-ui-forms.min.css +1 -1
  798. package/style/themes/theme-eiendom/eiendom-theme-components.css +306 -284
  799. package/style/themes/theme-eiendom/eiendom-theme-components.min.css +3 -3
  800. package/style/themes/theme-eiendom/eiendom-theme-extensions.css +15 -6
  801. package/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +2 -2
  802. package/style/themes/theme-eiendom/eiendom-theme-extensions.scss +1 -0
  803. package/style/themes/theme-eiendom/eiendom-theme-forms.css +15 -6
  804. package/style/themes/theme-eiendom/eiendom-theme-forms.min.css +2 -2
  805. package/style/themes/theme-eiendom/eiendom-theme-forms.scss +1 -0
  806. package/style/themes/theme-sbanken/sbanken-theme-components.css +305 -284
  807. package/style/themes/theme-sbanken/sbanken-theme-components.min.css +3 -3
  808. package/style/themes/theme-sbanken/sbanken-theme-extensions.css +14 -6
  809. package/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +2 -2
  810. package/style/themes/theme-sbanken/sbanken-theme-extensions.scss +1 -0
  811. package/style/themes/theme-sbanken/sbanken-theme-forms.css +14 -6
  812. package/style/themes/theme-sbanken/sbanken-theme-forms.min.css +2 -2
  813. package/style/themes/theme-sbanken/sbanken-theme-forms.scss +1 -0
  814. package/style/themes/theme-ui/ui-theme-components.css +306 -284
  815. package/style/themes/theme-ui/ui-theme-components.min.css +3 -3
  816. package/style/themes/theme-ui/ui-theme-extensions.css +15 -6
  817. package/style/themes/theme-ui/ui-theme-extensions.min.css +2 -2
  818. package/style/themes/theme-ui/ui-theme-extensions.scss +1 -0
  819. package/style/themes/theme-ui/ui-theme-forms.css +15 -6
  820. package/style/themes/theme-ui/ui-theme-forms.min.css +2 -2
  821. package/style/themes/theme-ui/ui-theme-forms.scss +1 -0
  822. package/umd/dnb-ui-basis.min.js +1 -1
  823. package/umd/dnb-ui-components.min.js +1 -1
  824. package/umd/dnb-ui-elements.min.js +1 -1
  825. package/umd/dnb-ui-extensions.min.js +1 -1
  826. package/umd/dnb-ui-lib.min.js +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Upload.js","names":["React","useCallback","useEffect","useMemo","classnames","FieldBlock","useFieldProps","useTranslation","useFormsTranslation","Upload","useUpload","pickSpacingProps","HelpButtonInline","HelpButtonInlineContent","useSharedTranslation","FormError","validateRequired","value","required","isChanged","error","hasError","some","file","errorMessage","hasFiles","length","undefined","updateFileLoadingState","files","isLoading","map","_objectSpread","UploadComponent","props","sharedTr","formsTr","errorMessages","errorRequired","preparedProps","_useFieldProps","executeOnChangeRegardlessOfError","id","className","width","widthProp","label","labelDescription","help","htmlAttributes","handleChange","handleFocus","handleBlur","fileHandler","rest","_objectWithoutProperties","_excluded","title","text","acceptedFileTypes","filesAmountLimit","fileMaxSize","skeleton","onFileDelete","fileContext","setFiles","handleChangeAsync","existingFileIds","newFiles","filter","includes","uploadedFiles","changeHandler","fieldBlockProps","forId","labelSrOnly","createElement","_extends","onChange","Fragment","contentId","left","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Upload/Upload.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo } from 'react'\nimport classnames from 'classnames'\nimport FieldBlock, {\n Props as FieldBlockProps,\n FieldBlockWidth,\n} from '../../FieldBlock'\nimport {\n useFieldProps,\n useTranslation as useFormsTranslation,\n} from '../../hooks'\nimport { FieldProps } from '../../types'\nimport Upload, {\n UploadFile,\n UploadFileNative,\n UploadProps,\n} from '../../../../components/Upload'\nimport useUpload from '../../../../components/upload/useUpload'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport HelpButtonInline, {\n HelpButtonInlineContent,\n} from '../../../../components/help-button/HelpButtonInline'\nimport { useTranslation as useSharedTranslation } from '../../../../shared'\nimport { SpacingProps } from '../../../../shared/types'\nimport { FormError } from '../../utils'\n\nexport type UploadValue = Array<UploadFile | UploadFileNative>\nexport type Props = Omit<\n FieldProps<UploadValue, UploadValue | undefined>,\n 'name'\n> &\n SpacingProps & {\n width?: Omit<FieldBlockWidth, 'medium' | 'small'>\n } & Pick<\n Partial<UploadProps>,\n | 'title'\n | 'text'\n | 'acceptedFileTypes'\n | 'filesAmountLimit'\n | 'fileMaxSize'\n | 'onFileDelete'\n | 'skeleton'\n > & {\n fileHandler?: (\n newFiles: UploadValue\n ) => UploadValue | Promise<UploadValue>\n }\n\nconst validateRequired = (\n value: UploadValue,\n { required, isChanged, error }\n) => {\n const hasError = value?.some((file) => file.errorMessage)\n if (hasError) {\n return new FormError('Upload.errorInvalidFiles')\n }\n\n const hasFiles = value?.length > 0\n if (required && ((!isChanged && !hasFiles) || !hasFiles)) {\n return error\n }\n\n return undefined\n}\n\nconst updateFileLoadingState = (\n files: UploadValue,\n { isLoading } = { isLoading: false }\n) => {\n return files.map((file) => ({ ...file, isLoading }))\n}\n\nfunction UploadComponent(props: Props) {\n const sharedTr = useSharedTranslation().Upload\n const formsTr = useFormsTranslation().Upload\n\n const errorMessages = useMemo(\n () => ({\n 'Field.errorRequired': formsTr.errorRequired,\n }),\n [formsTr.errorRequired]\n )\n\n const preparedProps = {\n errorMessages,\n validateRequired,\n ...props,\n }\n\n const {\n id,\n className,\n width: widthProp = 'stretch',\n value,\n label,\n labelDescription,\n help,\n htmlAttributes,\n handleChange,\n handleFocus,\n handleBlur,\n fileHandler,\n ...rest\n } = useFieldProps(preparedProps, {\n executeOnChangeRegardlessOfError: true,\n })\n\n // Upload props\n const {\n title = sharedTr.title,\n text = sharedTr.text,\n acceptedFileTypes = ['pdf', 'png', 'jpg', 'jpeg'],\n filesAmountLimit = 100,\n fileMaxSize = 5,\n skeleton,\n onFileDelete,\n } = rest\n\n const { files: fileContext, setFiles } = useUpload(id)\n\n useEffect(() => {\n setFiles(value)\n }, [setFiles, value])\n\n const handleChangeAsync = useCallback(\n async (files: UploadValue) => {\n // Filter out existing files\n const existingFileIds = fileContext?.map((file) => file.id) || []\n const newFiles = files.filter(\n (file) => !existingFileIds.includes(file.id)\n )\n\n if (newFiles.length > 0) {\n // Set loading\n setFiles([\n ...fileContext,\n ...updateFileLoadingState(newFiles, { isLoading: true }),\n ])\n\n const uploadedFiles = updateFileLoadingState(\n await fileHandler(newFiles),\n { isLoading: false }\n )\n\n // Set error, if any\n handleChange([...fileContext, ...uploadedFiles])\n } else {\n handleChange(files)\n }\n },\n [fileContext, setFiles, fileHandler, handleChange]\n )\n\n const changeHandler = useCallback(\n ({ files }: { files: UploadValue }) => {\n // Prevents the form-status from showing up\n handleBlur()\n handleFocus()\n\n if (fileHandler) {\n handleChangeAsync(files)\n } else {\n handleChange(files)\n }\n },\n [handleBlur, handleFocus, fileHandler, handleChangeAsync, handleChange]\n )\n\n const width = widthProp as FieldBlockWidth\n const fieldBlockProps: FieldBlockProps = {\n id,\n forId: `${id}-input`,\n labelSrOnly: true,\n className: classnames('dnb-forms-field-upload', className),\n width,\n help: undefined,\n ...pickSpacingProps(props),\n }\n\n return (\n <FieldBlock {...fieldBlockProps}>\n <Upload\n id={id}\n acceptedFileTypes={acceptedFileTypes}\n filesAmountLimit={filesAmountLimit}\n fileMaxSize={fileMaxSize}\n skeleton={skeleton}\n onChange={changeHandler}\n onFileDelete={onFileDelete}\n title={label ?? title}\n text={\n help ? (\n <>\n {labelDescription ?? text}\n <HelpButtonInline\n contentId={`${id}-help`}\n left={text ? 'x-small' : false}\n help={help}\n />\n </>\n ) : (\n labelDescription ?? text\n )\n }\n {...htmlAttributes}\n >\n {help && (\n <HelpButtonInlineContent contentId={`${id}-help`} help={help} />\n )}\n </Upload>\n </FieldBlock>\n )\n}\n\nexport default UploadComponent\n\nUploadComponent._supportsSpacingProps = true\n"],"mappings":"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"}
1
+ {"version":3,"file":"Upload.js","names":["React","useCallback","useEffect","useMemo","classnames","FieldBlock","useFieldProps","useTranslation","useFormsTranslation","Upload","useUpload","pickSpacingProps","HelpButtonInline","HelpButtonInlineContent","useSharedTranslation","FormError","validateRequired","value","required","isChanged","error","hasError","some","file","errorMessage","hasFiles","length","undefined","updateFileLoadingState","files","isLoading","map","_objectSpread","UploadComponent","props","sharedTr","formsTr","errorMessages","errorRequired","preparedProps","_useFieldProps","executeOnChangeRegardlessOfError","id","className","width","widthProp","label","labelDescription","help","htmlAttributes","handleChange","handleFocus","handleBlur","fileHandler","rest","_objectWithoutProperties","_excluded","title","text","acceptedFileTypes","filesAmountLimit","fileMaxSize","skeleton","onFileDelete","fileContext","setFiles","hasInvalidFiles","name","handleChangeAsync","existingFileIds","newFiles","filter","includes","uploadedFiles","changeHandler","fieldBlockProps","forId","labelSrOnly","createElement","_extends","onChange","Fragment","contentId","left","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Upload/Upload.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo } from 'react'\nimport classnames from 'classnames'\nimport FieldBlock, {\n Props as FieldBlockProps,\n FieldBlockWidth,\n} from '../../FieldBlock'\nimport {\n useFieldProps,\n useTranslation as useFormsTranslation,\n} from '../../hooks'\nimport { FieldProps } from '../../types'\nimport Upload, {\n UploadFile,\n UploadFileNative,\n UploadProps,\n} from '../../../../components/Upload'\nimport useUpload from '../../../../components/upload/useUpload'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport HelpButtonInline, {\n HelpButtonInlineContent,\n} from '../../../../components/help-button/HelpButtonInline'\nimport { useTranslation as useSharedTranslation } from '../../../../shared'\nimport { SpacingProps } from '../../../../shared/types'\nimport { FormError } from '../../utils'\n\nexport type UploadValue = Array<UploadFile | UploadFileNative>\nexport type Props = Omit<\n FieldProps<UploadValue, UploadValue | undefined>,\n 'name'\n> &\n SpacingProps & {\n width?: Omit<FieldBlockWidth, 'medium' | 'small'>\n } & Pick<\n Partial<UploadProps>,\n | 'title'\n | 'text'\n | 'acceptedFileTypes'\n | 'filesAmountLimit'\n | 'fileMaxSize'\n | 'onFileDelete'\n | 'skeleton'\n > & {\n fileHandler?: (\n newFiles: UploadValue\n ) => UploadValue | Promise<UploadValue>\n }\n\nconst validateRequired = (\n value: UploadValue,\n { required, isChanged, error }\n) => {\n const hasError = value?.some((file) => file.errorMessage)\n if (hasError) {\n return new FormError('Upload.errorInvalidFiles')\n }\n\n const hasFiles = value?.length > 0\n if (required && ((!isChanged && !hasFiles) || !hasFiles)) {\n return error\n }\n\n return undefined\n}\n\nconst updateFileLoadingState = (\n files: UploadValue,\n { isLoading } = { isLoading: false }\n) => {\n return files.map((file) => ({ ...file, isLoading }))\n}\n\nfunction UploadComponent(props: Props) {\n const sharedTr = useSharedTranslation().Upload\n const formsTr = useFormsTranslation().Upload\n\n const errorMessages = useMemo(\n () => ({\n 'Field.errorRequired': formsTr.errorRequired,\n }),\n [formsTr.errorRequired]\n )\n\n const preparedProps = {\n errorMessages,\n validateRequired,\n ...props,\n }\n\n const {\n id,\n className,\n width: widthProp = 'stretch',\n value,\n label,\n labelDescription,\n help,\n htmlAttributes,\n handleChange,\n handleFocus,\n handleBlur,\n fileHandler,\n ...rest\n } = useFieldProps(preparedProps, {\n executeOnChangeRegardlessOfError: true,\n })\n\n // Upload props\n const {\n title = sharedTr.title,\n text = sharedTr.text,\n acceptedFileTypes = ['pdf', 'png', 'jpg', 'jpeg'],\n filesAmountLimit = 100,\n fileMaxSize = 5,\n skeleton,\n onFileDelete,\n } = rest\n\n const { files: fileContext, setFiles } = useUpload(id)\n\n useEffect(() => {\n // Files stored in session storage will not have a property (due to serialization).\n const hasInvalidFiles = value?.some(({ file }) => !file?.name)\n if (!hasInvalidFiles) {\n setFiles(value)\n }\n }, [setFiles, value])\n\n const handleChangeAsync = useCallback(\n async (files: UploadValue) => {\n // Filter out existing files\n const existingFileIds = fileContext?.map((file) => file.id) || []\n const newFiles = files.filter(\n (file) => !existingFileIds.includes(file.id)\n )\n\n if (newFiles.length > 0) {\n // Set loading\n setFiles([\n ...fileContext,\n ...updateFileLoadingState(newFiles, { isLoading: true }),\n ])\n\n const uploadedFiles = updateFileLoadingState(\n await fileHandler(newFiles),\n { isLoading: false }\n )\n\n // Set error, if any\n handleChange([...fileContext, ...uploadedFiles])\n } else {\n handleChange(files)\n }\n },\n [fileContext, setFiles, fileHandler, handleChange]\n )\n\n const changeHandler = useCallback(\n ({ files }: { files: UploadValue }) => {\n // Prevents the form-status from showing up\n handleBlur()\n handleFocus()\n\n if (fileHandler) {\n handleChangeAsync(files)\n } else {\n handleChange(files)\n }\n },\n [handleBlur, handleFocus, fileHandler, handleChangeAsync, handleChange]\n )\n\n const width = widthProp as FieldBlockWidth\n const fieldBlockProps: FieldBlockProps = {\n id,\n forId: `${id}-input`,\n labelSrOnly: true,\n className: classnames('dnb-forms-field-upload', className),\n width,\n help: undefined,\n ...pickSpacingProps(props),\n }\n\n return (\n <FieldBlock {...fieldBlockProps}>\n <Upload\n id={id}\n acceptedFileTypes={acceptedFileTypes}\n filesAmountLimit={filesAmountLimit}\n fileMaxSize={fileMaxSize}\n skeleton={skeleton}\n onChange={changeHandler}\n onFileDelete={onFileDelete}\n title={label ?? title}\n text={\n help ? (\n <>\n {labelDescription ?? text}\n <HelpButtonInline\n contentId={`${id}-help`}\n left={text ? 'x-small' : false}\n help={help}\n />\n </>\n ) : (\n labelDescription ?? text\n )\n }\n {...htmlAttributes}\n >\n {help && (\n <HelpButtonInlineContent contentId={`${id}-help`} help={help} />\n )}\n </Upload>\n </FieldBlock>\n )\n}\n\nexport default UploadComponent\n\nUploadComponent._supportsSpacingProps = true\n"],"mappings":"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"}
@@ -1,3 +1,6 @@
1
1
  import { Props as CardProps } from '../../../../components/card/Card';
2
2
  declare function Card(props: CardProps): import("react/jsx-runtime").JSX.Element;
3
+ declare namespace Card {
4
+ var _supportsSpacingProps: boolean;
5
+ }
3
6
  export default Card;
@@ -7,5 +7,6 @@ function Card(props) {
7
7
  outset: true
8
8
  }, props));
9
9
  }
10
+ Card._supportsSpacingProps = true;
10
11
  export default Card;
11
12
  //# sourceMappingURL=Card.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Card.js","names":["React","CardInstance","Card","props","createElement","_extends","stack","outset"],"sources":["../../../../../../src/extensions/forms/Form/Card/Card.tsx"],"sourcesContent":["import React from 'react'\nimport CardInstance, {\n Props as CardProps,\n} from '../../../../components/card/Card'\n\nfunction Card(props: CardProps) {\n return <CardInstance stack outset {...props} />\n}\n\nexport default Card\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,YAAY,MAEZ,kCAAkC;AAEzC,SAASC,IAAIA,CAACC,KAAgB,EAAE;EAC9B,OAAOH,KAAA,CAAAI,aAAA,CAACH,YAAY,EAAAI,QAAA;IAACC,KAAK;IAACC,MAAM;EAAA,GAAKJ,KAAK,CAAG,CAAC;AACjD;AAEA,eAAeD,IAAI"}
1
+ {"version":3,"file":"Card.js","names":["React","CardInstance","Card","props","createElement","_extends","stack","outset","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Form/Card/Card.tsx"],"sourcesContent":["import React from 'react'\nimport CardInstance, {\n Props as CardProps,\n} from '../../../../components/card/Card'\n\nfunction Card(props: CardProps) {\n return <CardInstance stack outset {...props} />\n}\n\nCard._supportsSpacingProps = true\n\nexport default Card\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,YAAY,MAEZ,kCAAkC;AAEzC,SAASC,IAAIA,CAACC,KAAgB,EAAE;EAC9B,OAAOH,KAAA,CAAAI,aAAA,CAACH,YAAY,EAAAI,QAAA;IAACC,KAAK;IAACC,MAAM;EAAA,GAAKJ,KAAK,CAAG,CAAC;AACjD;AAEAD,IAAI,CAACM,qBAAqB,GAAG,IAAI;AAEjC,eAAeN,IAAI"}
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
2
  import type { SpacingProps } from '../../../../shared/types';
3
- export type Props = React.HTMLAttributes<HTMLFormElement> & SpacingProps;
4
- export default function FormElement({ children, className, onSubmit, ...rest }: Props): import("react/jsx-runtime").JSX.Element;
3
+ export type Props = Omit<React.HTMLProps<HTMLFormElement>, 'ref' | 'autoComplete'> & SpacingProps;
4
+ export default function FormElement(props: Props): import("react/jsx-runtime").JSX.Element;
@@ -1,21 +1,38 @@
1
1
  "use client";
2
2
 
3
3
  import _extends from "@babel/runtime/helpers/esm/extends";
4
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
4
5
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
5
6
  const _excluded = ["children", "className", "onSubmit"];
6
- import React, { useCallback, useContext } from 'react';
7
- import Context from '../../DataContext/Context';
8
- import Space from '../../../../components/space/Space';
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
+ 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
+ import React, { useCallback, useContext, useRef } from 'react';
9
10
  import classnames from 'classnames';
10
- export default function FormElement(_ref) {
11
- let {
11
+ import DataContext from '../../DataContext/Context';
12
+ import Space from '../../../../components/space/Space';
13
+ import useId from '../../../../shared/helpers/useId';
14
+ import { FormStatus } from '../../../../components';
15
+ import { combineLabelledBy } from '../../../../shared/component-helper';
16
+ export default function FormElement(props) {
17
+ const id = useId();
18
+ const dataContext = useContext(DataContext);
19
+ const {
20
+ submitState,
21
+ restHandlerProps
22
+ } = dataContext || {};
23
+ const states = Object.entries(submitState || {}).filter(([, value]) => value);
24
+ const _ref = _objectSpread(_objectSpread({}, restHandlerProps), props),
25
+ {
12
26
  children,
13
- className = null,
14
- onSubmit = null
27
+ className,
28
+ onSubmit
15
29
  } = _ref,
16
- rest = _objectWithoutProperties(_ref, _excluded);
17
- const dataContext = useContext(Context);
18
- dataContext.isInsideFormElement = true;
30
+ restProps = _objectWithoutProperties(_ref, _excluded);
31
+ const hasElementRef = useRef(false);
32
+ if (!dataContext.hasElementRef) {
33
+ dataContext.hasElementRef = hasElementRef;
34
+ }
35
+ dataContext.hasElementRef.current = true;
19
36
  const onSubmitHandler = useCallback(event => {
20
37
  event === null || event === void 0 ? void 0 : event.preventDefault();
21
38
  const formElement = event.target;
@@ -30,7 +47,23 @@ export default function FormElement(_ref) {
30
47
  return React.createElement(Space, _extends({
31
48
  element: "form",
32
49
  className: classnames('dnb-forms-form', className),
33
- onSubmit: onSubmitHandler
34
- }, rest), children);
50
+ onSubmit: onSubmitHandler,
51
+ "aria-labelledby": combineLabelledBy(restProps, states.map(([key]) => {
52
+ return `${id}-form-status-${key}`;
53
+ })) || undefined
54
+ }, restProps), children, ['error', 'warning', 'info'].map(key => {
55
+ const value = submitState === null || submitState === void 0 ? void 0 : submitState[key];
56
+ return React.createElement(FormStatus, {
57
+ key: key,
58
+ state: key,
59
+ id: `${id}-form-status-${key}`,
60
+ className: "dnb-forms-status",
61
+ show: Boolean(value),
62
+ no_animation: false,
63
+ shellSpace: {
64
+ top: 'small'
65
+ }
66
+ }, String((value === null || value === void 0 ? void 0 : value['message']) || value || ''));
67
+ }));
35
68
  }
36
69
  //# sourceMappingURL=Element.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Element.js","names":["React","useCallback","useContext","Context","Space","classnames","FormElement","_ref","children","className","onSubmit","rest","_objectWithoutProperties","_excluded","dataContext","isInsideFormElement","onSubmitHandler","event","preventDefault","formElement","target","hasContext","formElementRef","current","handleSubmit","createElement","_extends","element"],"sources":["../../../../../../src/extensions/forms/Form/Element/Element.tsx"],"sourcesContent":["import React, { useCallback, useContext } from 'react'\nimport Context from '../../DataContext/Context'\nimport Space from '../../../../components/space/Space'\nimport classnames from 'classnames'\nimport type { SpacingProps } from '../../../../shared/types'\n\nexport type Props = React.HTMLAttributes<HTMLFormElement> & SpacingProps\n\nexport default function FormElement({\n children,\n className = null,\n onSubmit = null,\n ...rest\n}: Props) {\n const dataContext = useContext(Context)\n\n /**\n * Set to true,\n * this way we prevent \"handleSubmit\" to be called twice when the SubmitButton is pressed.\n */\n dataContext.isInsideFormElement = true\n\n const onSubmitHandler = useCallback(\n (event: React.SyntheticEvent<HTMLFormElement>) => {\n event?.preventDefault()\n\n const formElement = event.target as HTMLFormElement\n\n if (dataContext.hasContext) {\n dataContext.formElementRef.current = formElement\n dataContext.handleSubmit()\n }\n\n if (typeof onSubmit === 'function') {\n onSubmit(event)\n }\n },\n [dataContext, onSubmit]\n )\n\n return (\n <Space\n element=\"form\"\n className={classnames('dnb-forms-form', className)}\n onSubmit={onSubmitHandler}\n {...rest}\n >\n {children}\n </Space>\n )\n}\n"],"mappings":";;;;;AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,UAAU,QAAQ,OAAO;AACtD,OAAOC,OAAO,MAAM,2BAA2B;AAC/C,OAAOC,KAAK,MAAM,oCAAoC;AACtD,OAAOC,UAAU,MAAM,YAAY;AAKnC,eAAe,SAASC,WAAWA,CAAAC,IAAA,EAKzB;EAAA,IAL0B;MAClCC,QAAQ;MACRC,SAAS,GAAG,IAAI;MAChBC,QAAQ,GAAG;IAEN,CAAC,GAAAH,IAAA;IADHI,IAAI,GAAAC,wBAAA,CAAAL,IAAA,EAAAM,SAAA;EAEP,MAAMC,WAAW,GAAGZ,UAAU,CAACC,OAAO,CAAC;EAMvCW,WAAW,CAACC,mBAAmB,GAAG,IAAI;EAEtC,MAAMC,eAAe,GAAGf,WAAW,CAChCgB,KAA4C,IAAK;IAChDA,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEC,cAAc,CAAC,CAAC;IAEvB,MAAMC,WAAW,GAAGF,KAAK,CAACG,MAAyB;IAEnD,IAAIN,WAAW,CAACO,UAAU,EAAE;MAC1BP,WAAW,CAACQ,cAAc,CAACC,OAAO,GAAGJ,WAAW;MAChDL,WAAW,CAACU,YAAY,CAAC,CAAC;IAC5B;IAEA,IAAI,OAAOd,QAAQ,KAAK,UAAU,EAAE;MAClCA,QAAQ,CAACO,KAAK,CAAC;IACjB;EACF,CAAC,EACD,CAACH,WAAW,EAAEJ,QAAQ,CACxB,CAAC;EAED,OACEV,KAAA,CAAAyB,aAAA,CAACrB,KAAK,EAAAsB,QAAA;IACJC,OAAO,EAAC,MAAM;IACdlB,SAAS,EAAEJ,UAAU,CAAC,gBAAgB,EAAEI,SAAS,CAAE;IACnDC,QAAQ,EAAEM;EAAgB,GACtBL,IAAI,GAEPH,QACI,CAAC;AAEZ"}
1
+ {"version":3,"file":"Element.js","names":["React","useCallback","useContext","useRef","classnames","DataContext","Space","useId","FormStatus","combineLabelledBy","FormElement","props","id","dataContext","submitState","restHandlerProps","states","Object","entries","filter","value","_ref","_objectSpread","children","className","onSubmit","restProps","_objectWithoutProperties","_excluded","hasElementRef","current","onSubmitHandler","event","preventDefault","formElement","target","hasContext","formElementRef","handleSubmit","createElement","_extends","element","map","key","undefined","state","show","Boolean","no_animation","shellSpace","top","String"],"sources":["../../../../../../src/extensions/forms/Form/Element/Element.tsx"],"sourcesContent":["import React, { useCallback, useContext, useRef } from 'react'\nimport classnames from 'classnames'\nimport DataContext from '../../DataContext/Context'\nimport Space from '../../../../components/space/Space'\nimport useId from '../../../../shared/helpers/useId'\nimport type { SpacingProps } from '../../../../shared/types'\nimport { FormStatus } from '../../../../components'\nimport { combineLabelledBy } from '../../../../shared/component-helper'\n\nexport type Props = Omit<\n React.HTMLProps<HTMLFormElement>,\n 'ref' | 'autoComplete'\n> &\n SpacingProps\n\nexport default function FormElement(props: Props) {\n const id = useId()\n const dataContext = useContext(DataContext)\n const { submitState, restHandlerProps } = dataContext || {}\n const states = Object.entries(submitState || {}).filter(\n ([, value]) => value\n )\n\n const { children, className, onSubmit, ...restProps } = {\n ...restHandlerProps,\n ...props,\n } as Props\n\n /**\n * Set to true,\n * this way we prevent \"handleSubmit\" to be called twice when the SubmitButton is pressed.\n */\n const hasElementRef = useRef(false)\n if (!dataContext.hasElementRef) {\n dataContext.hasElementRef = hasElementRef\n }\n dataContext.hasElementRef.current = true\n\n const onSubmitHandler = useCallback(\n (event: React.SyntheticEvent<HTMLFormElement>) => {\n event?.preventDefault()\n\n const formElement = event.target as HTMLFormElement\n\n if (dataContext.hasContext) {\n dataContext.formElementRef.current = formElement\n dataContext.handleSubmit()\n }\n\n if (typeof onSubmit === 'function') {\n onSubmit(event)\n }\n },\n [dataContext, onSubmit]\n )\n\n return (\n <Space\n element=\"form\"\n className={classnames('dnb-forms-form', className)}\n onSubmit={onSubmitHandler}\n aria-labelledby={\n combineLabelledBy(\n restProps,\n states.map(([key]) => {\n return `${id}-form-status-${key}`\n })\n ) || undefined\n }\n {...restProps}\n >\n {children}\n\n {['error', 'warning', 'info'].map((key) => {\n const value = submitState?.[key]\n return (\n <FormStatus\n key={key}\n state={key}\n id={`${id}-form-status-${key}`}\n className=\"dnb-forms-status\"\n show={Boolean(value)}\n no_animation={false}\n shellSpace={{ top: 'small' }}\n >\n {String(value?.['message'] || value || '')}\n </FormStatus>\n )\n })}\n </Space>\n )\n}\n"],"mappings":"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"}
@@ -1,10 +1,14 @@
1
1
  import { JsonObject } from '../../utils/json-pointer';
2
2
  import { Props as ProviderProps } from '../../DataContext/Provider';
3
- import type { ElementAllProps } from '../../../../elements/Element';
4
- export type Props = Omit<ElementAllProps, 'data' | 'as' | 'autoComplete'> & {
3
+ import { Props as FormElementProps } from '../Element';
4
+ export type Props = FormElementProps & {
5
5
  /**
6
6
  * Will enable autoComplete for all nested Field.String fields
7
7
  */
8
8
  autoComplete?: boolean;
9
+ /**
10
+ * Will decouple the form element from rendering
11
+ */
12
+ decoupleForm?: boolean;
9
13
  };
10
- export default function FormHandler<Data extends JsonObject>({ children, defaultData, data, schema, ajvInstance, errorMessages, globalStatusId, filterSubmitData, transformIn, transformOut, onChange, onPathChange, onSubmit, onSubmitRequest, onSubmitComplete, onClear, minimumAsyncBehaviorTime, asyncSubmitTimeout, scrollTopOnSubmit, sessionStorageId, autoComplete, locale, translations, disabled, required, ...rest }: ProviderProps<Data> & Omit<Props, keyof ProviderProps<Data>>): import("react/jsx-runtime").JSX.Element;
14
+ export default function FormHandler<Data extends JsonObject>(props: ProviderProps<Data> & Omit<Props, keyof ProviderProps<Data>>): import("react/jsx-runtime").JSX.Element;
@@ -1,101 +1,32 @@
1
1
  "use client";
2
2
 
3
- import _extends from "@babel/runtime/helpers/esm/extends";
4
- import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
5
- const _excluded = ["children", "defaultData", "data", "schema", "ajvInstance", "errorMessages", "globalStatusId", "filterSubmitData", "transformIn", "transformOut", "onChange", "onPathChange", "onSubmit", "onSubmitRequest", "onSubmitComplete", "onClear", "minimumAsyncBehaviorTime", "asyncSubmitTimeout", "scrollTopOnSubmit", "sessionStorageId", "autoComplete", "locale", "translations", "disabled", "required"],
6
- _excluded2 = ["children"];
7
- import React, { useContext } from 'react';
3
+ import React, { useEffect, useRef } from 'react';
4
+ import { warn } from '../../../../shared/helpers';
8
5
  import DataContextProvider from '../../DataContext/Provider';
9
- import DataContext from '../../DataContext/Context';
10
6
  import FormElement from '../Element';
11
- import FormStatus from '../../../../components/FormStatus';
12
- import useId from '../../../../shared/helpers/useId';
13
- import { combineLabelledBy } from '../../../../shared/component-helper';
14
- export default function FormHandler(_ref) {
15
- let {
16
- children,
17
- defaultData,
18
- data,
19
- schema,
20
- ajvInstance,
21
- errorMessages,
22
- globalStatusId,
23
- filterSubmitData,
24
- transformIn,
25
- transformOut,
26
- onChange,
27
- onPathChange,
28
- onSubmit,
29
- onSubmitRequest,
30
- onSubmitComplete,
31
- onClear,
32
- minimumAsyncBehaviorTime,
33
- asyncSubmitTimeout,
34
- scrollTopOnSubmit,
35
- sessionStorageId,
36
- autoComplete,
37
- locale,
38
- translations,
39
- disabled,
40
- required
41
- } = _ref,
42
- rest = _objectWithoutProperties(_ref, _excluded);
7
+ const allowedProviderContextProps = ['id', 'defaultData', 'data', 'schema', 'ajvInstance', 'errorMessages', 'globalStatusId', 'filterSubmitData', 'transformIn', 'transformOut', 'onChange', 'onPathChange', 'onSubmit', 'onSubmitRequest', 'onSubmitComplete', 'onClear', 'minimumAsyncBehaviorTime', 'asyncSubmitTimeout', 'scrollTopOnSubmit', 'sessionStorageId', 'locale', 'translations', 'autoComplete', 'disabled', 'required', 'decoupleForm', 'restHandlerProps'];
8
+ export default function FormHandler(props) {
9
+ const {
10
+ decoupleForm,
11
+ children
12
+ } = props;
13
+ const hasElementRef = useRef(false);
14
+ useEffect(() => {
15
+ if (decoupleForm && !hasElementRef.current) {
16
+ warn('Please include a Form.Element when using decoupleForm!');
17
+ }
18
+ }, [decoupleForm]);
43
19
  const providerProps = {
44
- id: rest.id,
45
- defaultData,
46
- data,
47
- schema,
48
- ajvInstance,
49
- errorMessages,
50
- globalStatusId,
51
- filterSubmitData,
52
- transformIn,
53
- transformOut,
54
- onChange,
55
- onPathChange,
56
- onSubmit,
57
- onSubmitRequest,
58
- onSubmitComplete,
59
- onClear,
60
- minimumAsyncBehaviorTime,
61
- asyncSubmitTimeout,
62
- scrollTopOnSubmit,
63
- sessionStorageId,
64
- autoComplete,
65
- locale,
66
- translations,
67
- disabled,
68
- required
20
+ hasElementRef,
21
+ restHandlerProps: {}
69
22
  };
70
- return React.createElement(DataContextProvider, providerProps, React.createElement(FormElementWithState, rest, children));
71
- }
72
- function FormElementWithState(_ref2) {
73
- let {
74
- children
75
- } = _ref2,
76
- rest = _objectWithoutProperties(_ref2, _excluded2);
77
- const id = useId();
78
- const {
79
- submitState
80
- } = useContext(DataContext) || {};
81
- const states = Object.entries(submitState || {}).filter(([, value]) => value);
82
- return React.createElement(FormElement, _extends({}, rest, {
83
- "aria-labelledby": combineLabelledBy(rest, states.map(([key]) => {
84
- return `${id}-form-status-${key}`;
85
- })) || undefined
86
- }), children, ['error', 'warning', 'info'].map(key => {
87
- const value = submitState === null || submitState === void 0 ? void 0 : submitState[key];
88
- return React.createElement(FormStatus, {
89
- key: key,
90
- state: key,
91
- id: `${id}-form-status-${key}`,
92
- className: "dnb-forms-status",
93
- show: Boolean(value),
94
- no_animation: false,
95
- shellSpace: {
96
- top: 'small'
97
- }
98
- }, String((value === null || value === void 0 ? void 0 : value['message']) || value || ''));
99
- }));
23
+ for (const key in props) {
24
+ if (allowedProviderContextProps.includes(key)) {
25
+ providerProps[key] = props[key];
26
+ } else if (key !== 'children') {
27
+ providerProps.restHandlerProps[key] = props[key];
28
+ }
29
+ }
30
+ return React.createElement(DataContextProvider, providerProps, decoupleForm ? children : React.createElement(FormElement, null, children));
100
31
  }
101
32
  //# sourceMappingURL=Handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Handler.js","names":["React","useContext","DataContextProvider","DataContext","FormElement","FormStatus","useId","combineLabelledBy","FormHandler","_ref","children","defaultData","data","schema","ajvInstance","errorMessages","globalStatusId","filterSubmitData","transformIn","transformOut","onChange","onPathChange","onSubmit","onSubmitRequest","onSubmitComplete","onClear","minimumAsyncBehaviorTime","asyncSubmitTimeout","scrollTopOnSubmit","sessionStorageId","autoComplete","locale","translations","disabled","required","rest","_objectWithoutProperties","_excluded","providerProps","id","createElement","FormElementWithState","_ref2","_excluded2","submitState","states","Object","entries","filter","value","_extends","map","key","undefined","state","className","show","Boolean","no_animation","shellSpace","top","String"],"sources":["../../../../../../src/extensions/forms/Form/Handler/Handler.tsx"],"sourcesContent":["import React, { useContext } from 'react'\nimport { JsonObject } from '../../utils/json-pointer'\nimport DataContextProvider, {\n Props as ProviderProps,\n} from '../../DataContext/Provider'\nimport DataContext from '../../DataContext/Context'\nimport FormElement from '../Element'\nimport type { ElementAllProps } from '../../../../elements/Element'\nimport FormStatus from '../../../../components/FormStatus'\nimport useId from '../../../../shared/helpers/useId'\nimport { combineLabelledBy } from '../../../../shared/component-helper'\n\nexport type Props = Omit<\n ElementAllProps,\n 'data' | 'as' | 'autoComplete'\n> & {\n /**\n * Will enable autoComplete for all nested Field.String fields\n */\n autoComplete?: boolean\n}\n\nexport default function FormHandler<Data extends JsonObject>({\n children,\n defaultData,\n data,\n schema,\n ajvInstance,\n errorMessages,\n globalStatusId,\n filterSubmitData,\n transformIn,\n transformOut,\n onChange,\n onPathChange,\n onSubmit,\n onSubmitRequest,\n onSubmitComplete,\n onClear,\n minimumAsyncBehaviorTime,\n asyncSubmitTimeout,\n scrollTopOnSubmit,\n sessionStorageId,\n autoComplete,\n locale,\n translations,\n disabled,\n required,\n ...rest\n}: ProviderProps<Data> & Omit<Props, keyof ProviderProps<Data>>) {\n const providerProps = {\n id: rest.id,\n defaultData,\n data,\n schema,\n ajvInstance,\n errorMessages,\n globalStatusId,\n filterSubmitData,\n transformIn,\n transformOut,\n onChange,\n onPathChange,\n onSubmit,\n onSubmitRequest,\n onSubmitComplete,\n onClear,\n minimumAsyncBehaviorTime,\n asyncSubmitTimeout,\n scrollTopOnSubmit,\n sessionStorageId,\n autoComplete,\n locale,\n translations,\n disabled,\n required,\n }\n\n return (\n <DataContextProvider {...providerProps}>\n <FormElementWithState {...rest}>{children}</FormElementWithState>\n </DataContextProvider>\n )\n}\n\nfunction FormElementWithState({ children, ...rest }) {\n const id = useId()\n const { submitState } = useContext(DataContext) || {}\n const states = Object.entries(submitState || {}).filter(\n ([, value]) => value\n )\n\n return (\n <FormElement\n {...rest}\n aria-labelledby={\n combineLabelledBy(\n rest,\n states.map(([key]) => {\n return `${id}-form-status-${key}`\n })\n ) || undefined\n }\n >\n {children}\n\n {['error', 'warning', 'info'].map((key) => {\n const value = submitState?.[key]\n return (\n <FormStatus\n key={key}\n state={key}\n id={`${id}-form-status-${key}`}\n className=\"dnb-forms-status\"\n show={Boolean(value)}\n no_animation={false}\n shellSpace={{ top: 'small' }}\n >\n {String(value?.['message'] || value || '')}\n </FormStatus>\n )\n })}\n </FormElement>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Handler.js","names":["React","useEffect","useRef","warn","DataContextProvider","FormElement","allowedProviderContextProps","FormHandler","props","decoupleForm","children","hasElementRef","current","providerProps","restHandlerProps","key","includes","createElement"],"sources":["../../../../../../src/extensions/forms/Form/Handler/Handler.tsx"],"sourcesContent":["import React, { useEffect, useRef } from 'react'\nimport { JsonObject } from '../../utils/json-pointer'\nimport { warn } from '../../../../shared/helpers'\nimport DataContextProvider, {\n Props as ProviderProps,\n} from '../../DataContext/Provider'\nimport FormElement, { Props as FormElementProps } from '../Element'\nimport { ContextState } from '../../DataContext'\n\nexport type Props = FormElementProps & {\n /**\n * Will enable autoComplete for all nested Field.String fields\n */\n autoComplete?: boolean\n\n /**\n * Will decouple the form element from rendering\n */\n decoupleForm?: boolean\n}\n\ntype AllowedProviderContextProps = ProviderProps<JsonObject> &\n Pick<Props, 'decoupleForm' | 'autoComplete' | 'disabled'> &\n Pick<ContextState, 'restHandlerProps' | 'hasElementRef'>\n\nconst allowedProviderContextProps: Array<\n keyof AllowedProviderContextProps\n> = [\n 'id',\n 'defaultData',\n 'data',\n 'schema',\n 'ajvInstance',\n 'errorMessages',\n 'globalStatusId',\n 'filterSubmitData',\n 'transformIn',\n 'transformOut',\n 'onChange',\n 'onPathChange',\n 'onSubmit',\n 'onSubmitRequest',\n 'onSubmitComplete',\n 'onClear',\n 'minimumAsyncBehaviorTime',\n 'asyncSubmitTimeout',\n 'scrollTopOnSubmit',\n 'sessionStorageId',\n 'locale',\n 'translations',\n 'autoComplete',\n 'disabled',\n 'required',\n 'decoupleForm',\n 'restHandlerProps',\n]\n\nexport default function FormHandler<Data extends JsonObject>(\n props: ProviderProps<Data> & Omit<Props, keyof ProviderProps<Data>>\n) {\n const { decoupleForm, children } = props\n\n const hasElementRef = useRef(false)\n useEffect(() => {\n if (decoupleForm && !hasElementRef.current) {\n warn('Please include a Form.Element when using decoupleForm!')\n }\n }, [decoupleForm])\n\n const providerProps = {\n hasElementRef,\n restHandlerProps: {},\n } as AllowedProviderContextProps\n\n for (const key in props) {\n if (\n allowedProviderContextProps.includes(\n key as keyof AllowedProviderContextProps\n )\n ) {\n providerProps[key] = props[key]\n } else if (key !== 'children') {\n providerProps.restHandlerProps[key] = props[key]\n }\n }\n\n return (\n <DataContextProvider {...providerProps}>\n {decoupleForm ? children : <FormElement>{children}</FormElement>}\n </DataContextProvider>\n )\n}\n"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,MAAM,QAAQ,OAAO;AAEhD,SAASC,IAAI,QAAQ,4BAA4B;AACjD,OAAOC,mBAAmB,MAEnB,4BAA4B;AACnC,OAAOC,WAAW,MAAqC,YAAY;AAmBnE,MAAMC,2BAEL,GAAG,CACF,IAAI,EACJ,aAAa,EACb,MAAM,EACN,QAAQ,EACR,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,UAAU,EACV,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,SAAS,EACT,0BAA0B,EAC1B,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,QAAQ,EACR,cAAc,EACd,cAAc,EACd,UAAU,EACV,UAAU,EACV,cAAc,EACd,kBAAkB,CACnB;AAED,eAAe,SAASC,WAAWA,CACjCC,KAAmE,EACnE;EACA,MAAM;IAAEC,YAAY;IAAEC;EAAS,CAAC,GAAGF,KAAK;EAExC,MAAMG,aAAa,GAAGT,MAAM,CAAC,KAAK,CAAC;EACnCD,SAAS,CAAC,MAAM;IACd,IAAIQ,YAAY,IAAI,CAACE,aAAa,CAACC,OAAO,EAAE;MAC1CT,IAAI,CAAC,wDAAwD,CAAC;IAChE;EACF,CAAC,EAAE,CAACM,YAAY,CAAC,CAAC;EAElB,MAAMI,aAAa,GAAG;IACpBF,aAAa;IACbG,gBAAgB,EAAE,CAAC;EACrB,CAAgC;EAEhC,KAAK,MAAMC,GAAG,IAAIP,KAAK,EAAE;IACvB,IACEF,2BAA2B,CAACU,QAAQ,CAClCD,GACF,CAAC,EACD;MACAF,aAAa,CAACE,GAAG,CAAC,GAAGP,KAAK,CAACO,GAAG,CAAC;IACjC,CAAC,MAAM,IAAIA,GAAG,KAAK,UAAU,EAAE;MAC7BF,aAAa,CAACC,gBAAgB,CAACC,GAAG,CAAC,GAAGP,KAAK,CAACO,GAAG,CAAC;IAClD;EACF;EAEA,OACEf,KAAA,CAAAiB,aAAA,CAACb,mBAAmB,EAAKS,aAAa,EACnCJ,YAAY,GAAGC,QAAQ,GAAGV,KAAA,CAAAiB,aAAA,CAACZ,WAAW,QAAEK,QAAsB,CAC5C,CAAC;AAE1B"}
@@ -3,7 +3,7 @@ import { JsonObject } from '../../utils/json-pointer';
3
3
  import IsolationCommitButton from './IsolationCommitButton';
4
4
  import { type Props as ProviderProps } from '../../DataContext/Provider';
5
5
  import type { OnCommit, Path } from '../../types';
6
- export type IsolationProviderProps<Data> = {
6
+ export type IsolationProviderProps<Data extends JsonObject> = {
7
7
  /**
8
8
  * Form.Isolation: Will be called when the isolated context is committed.
9
9
  */
@@ -17,7 +17,7 @@ export type IsolationProviderProps<Data> = {
17
17
  * It will receive the data from the isolated context and the data from the outer context.
18
18
  * You can use this to transform the data before it is committed.
19
19
  */
20
- transformOnCommit?: (isolatedData: JsonObject, handlerData: JsonObject) => unknown;
20
+ transformOnCommit?: (isolatedData: Data, handlerData: Data) => JsonObject;
21
21
  /**
22
22
  * Prevent the form from being submitted when there are fields with errors inside the Form.Isolation.
23
23
  */
@@ -31,7 +31,7 @@ export type IsolationProviderProps<Data> = {
31
31
  */
32
32
  isolate?: boolean;
33
33
  };
34
- export type IsolationProps<Data> = Omit<ProviderProps<Data>, 'onSubmit' | 'onSubmitRequest' | 'onSubmitComplete' | 'minimumAsyncBehaviorTime' | 'asyncSubmitTimeout' | 'scrollTopOnSubmit' | 'sessionStorageId' | 'globalStatusId'> & {
34
+ export type IsolationProps<Data extends JsonObject> = Omit<ProviderProps<Data>, 'onSubmit' | 'onSubmitRequest' | 'onSubmitComplete' | 'minimumAsyncBehaviorTime' | 'asyncSubmitTimeout' | 'scrollTopOnSubmit' | 'sessionStorageId' | 'globalStatusId'> & {
35
35
  /**
36
36
  * A ref (function) that you can call in order to commit the data programmatically to the outer context.
37
37
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Isolation.js","names":["React","useCallback","useContext","useEffect","useMemo","useReducer","useRef","pointer","extendDeep","isAsync","useId","useDataValue","Context","DataContext","Provider","SectionContext","IsolationCommitButton","clearedData","structuredClone","IsolationProvider","props","children","onPathChange","onCommit","onCommitProp","onClear","onClearProp","transformOnCommit","transformOnCommitProp","commitHandleRef","bubbleValidation","data","defaultData","forceUpdate","internalDataRef","localDataRef","dataContextRef","outerContext","path","pathSection","handlePathChange","handlePathChangeOuter","dataOuter","moveValueToPath","onPathChangeHandler","value","current","set","replace","removeSectionPath","has","get","getMountedData","mounterData","_dataContextRef$curre","mountedFieldsRef","field","isMounted","localData","Object","assign","additionalArgs","_props$path","mountedData","outerData","isolatedData","stop","preventCommit","commitData","result","Array","isArray","providerProps","_objectSpread","isolate","createElement","Consumer","dataContext","handleSubmit","BubbleValidation","setMountedFieldState","setFieldError","id","errors","hasErrors","Error","undefined","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 '../../utils/json-pointer'\nimport { extendDeep } from '../../../../shared/component-helper'\nimport { isAsync } from '../../../../shared/helpers/isAsync'\nimport useId from '../../../../shared/helpers/useId'\nimport useDataValue from '../../hooks/useDataValue'\nimport {\n Context as DataContext,\n ContextState,\n Provider,\n} 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 it's 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?: (\n isolatedData: JsonObject,\n handlerData: JsonObject\n ) => unknown\n /**\n * Prevent the form from being submitted when there are fields with errors inside the Form.Isolation.\n */\n bubbleValidation?: boolean\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 bubbleValidation,\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(DataContext)\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 for (const path in dataContextRef.current?.mountedFieldsRef.current) {\n const field = dataContextRef.current.mountedFieldsRef.current[path]\n if (field.isMounted && pointer.has(data, path)) {\n pointer.set(mounterData, path, pointer.get(data, path))\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)\n\n if (typeof transformOnCommitProp === 'function') {\n isolatedData = transformOnCommitProp(isolatedData, outerData)\n }\n\n let stop = false\n additionalArgs.preventCommit = () => (stop = true)\n\n const commitData = removeSectionPath(isolatedData)\n const result = isAsync(onCommitProp)\n ? await onCommitProp?.(commitData, additionalArgs)\n : onCommitProp?.(commitData, additionalArgs)\n\n if (stop) {\n return // stop here\n }\n\n // Commit the internal data to the nested context data\n await handlePathChangeOuter?.(\n path,\n Array.isArray(isolatedData)\n ? isolatedData\n : extendDeep({}, outerData, isolatedData)\n )\n\n return result\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 <DataContext.Consumer>\n {(dataContext) => {\n dataContextRef.current = dataContext\n\n if (commitHandleRef) {\n commitHandleRef.current = dataContext?.handleSubmit\n }\n\n return children\n }}\n </DataContext.Consumer>\n\n {bubbleValidation && (\n <BubbleValidation outerContext={outerContext} />\n )}\n </Provider>\n )\n}\n\nfunction BubbleValidation({ outerContext }) {\n const { setMountedFieldState, setFieldError } = outerContext || {}\n const dataContext = useContext(DataContext)\n\n const id = useId()\n useEffect(() => {\n const path = `/${id}`\n const errors = dataContext.hasErrors()\n if (errors) {\n setMountedFieldState?.(path, {\n isMounted: true,\n })\n }\n setFieldError?.(path, errors ? new Error('Form.Isolation') : undefined)\n }, [dataContext, id, setFieldError, setMountedFieldState])\n\n return null\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","isAsync","useId","useDataValue","Context","DataContext","Provider","SectionContext","IsolationCommitButton","clearedData","structuredClone","IsolationProvider","props","children","onPathChange","onCommit","onCommitProp","onClear","onClearProp","transformOnCommit","transformOnCommitProp","commitHandleRef","bubbleValidation","data","defaultData","forceUpdate","internalDataRef","localDataRef","dataContextRef","outerContext","path","pathSection","handlePathChange","handlePathChangeOuter","dataOuter","moveValueToPath","onPathChangeHandler","value","current","set","replace","removeSectionPath","has","get","getMountedData","mounterData","_dataContextRef$curre","mountedFieldsRef","field","isMounted","localData","Object","assign","additionalArgs","_props$path","mountedData","outerData","isolatedData","stop","preventCommit","commitData","result","Array","isArray","providerProps","_objectSpread","isolate","createElement","Consumer","dataContext","handleSubmit","BubbleValidation","setMountedFieldState","setFieldError","id","errors","hasErrors","Error","undefined","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 '../../utils/json-pointer'\nimport { extendDeep } from '../../../../shared/component-helper'\nimport { isAsync } from '../../../../shared/helpers/isAsync'\nimport useId from '../../../../shared/helpers/useId'\nimport useDataValue from '../../hooks/useDataValue'\nimport {\n Context as DataContext,\n ContextState,\n Provider,\n} 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 it's a question of time, when we will remove this polyfill\n */\nimport structuredClone from '@ungap/structured-clone'\n\nexport type IsolationProviderProps<Data extends JsonObject> = {\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) => JsonObject\n /**\n * Prevent the form from being submitted when there are fields with errors inside the Form.Isolation.\n */\n bubbleValidation?: boolean\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 extends JsonObject> = 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 bubbleValidation,\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(DataContext)\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 for (const path in dataContextRef.current?.mountedFieldsRef.current) {\n const field = dataContextRef.current.mountedFieldsRef.current[path]\n if (field.isMounted && pointer.has(data, path)) {\n pointer.set(mounterData, path, pointer.get(data, path))\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)\n\n if (typeof transformOnCommitProp === 'function') {\n isolatedData = transformOnCommitProp(isolatedData, outerData)\n }\n\n let stop = false\n additionalArgs.preventCommit = () => (stop = true)\n\n const commitData = removeSectionPath(isolatedData)\n const result = isAsync(onCommitProp)\n ? await onCommitProp?.(commitData, additionalArgs)\n : onCommitProp?.(commitData, additionalArgs)\n\n if (stop) {\n return // stop here\n }\n\n // Commit the internal data to the nested context data\n await handlePathChangeOuter?.(\n path,\n Array.isArray(isolatedData)\n ? isolatedData\n : extendDeep({}, outerData, isolatedData)\n )\n\n return result\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 <DataContext.Consumer>\n {(dataContext) => {\n dataContextRef.current = dataContext\n\n if (commitHandleRef) {\n commitHandleRef.current = dataContext?.handleSubmit\n }\n\n return children\n }}\n </DataContext.Consumer>\n\n {bubbleValidation && (\n <BubbleValidation outerContext={outerContext} />\n )}\n </Provider>\n )\n}\n\nfunction BubbleValidation({ outerContext }) {\n const { setMountedFieldState, setFieldError } = outerContext || {}\n const dataContext = useContext(DataContext)\n\n const id = useId()\n useEffect(() => {\n const path = `/${id}`\n const errors = dataContext.hasErrors()\n if (errors) {\n setMountedFieldState?.(path, {\n isMounted: true,\n })\n }\n setFieldError?.(path, errors ? new Error('Form.Isolation') : undefined)\n }, [dataContext, id, setFieldError, setMountedFieldState])\n\n return null\n}\n\nIsolationProvider.CommitButton = IsolationCommitButton\nIsolationProvider._supportsSpacingProps = undefined\n\nexport default IsolationProvider\n"],"mappings":"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"}
@@ -5,7 +5,7 @@ export const EditContainerProperties = {
5
5
  status: 'optional'
6
6
  },
7
7
  variant: {
8
- doc: 'Defines the variant of the container. Can be `outline` or `basic`. Defaults to `outline`.',
8
+ doc: 'Defines the variant of the container. Can be `outline`, `filled` or `basic`. Defaults to `outline`.',
9
9
  type: 'string',
10
10
  status: 'optional'
11
11
  },
@@ -1 +1 @@
1
- {"version":3,"file":"EditContainerDocs.js","names":["EditContainerProperties","title","doc","type","status","variant","EditContainerEvents","onDone","onCancel"],"sources":["../../../../../../../src/extensions/forms/Form/Section/EditContainer/EditContainerDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../../../../shared/types'\n\nexport const EditContainerProperties: PropertiesTableProps = {\n title: {\n doc: 'The title of the container.',\n type: 'React.Node',\n status: 'optional',\n },\n variant: {\n doc: 'Defines the variant of the container. Can be `outline` or `basic`. Defaults to `outline`.',\n type: 'string',\n status: 'optional',\n },\n\n '[FlexVertical](/uilib/layout/flex/container/properties)': {\n doc: 'All Flex.Vertical properties.',\n type: 'Various',\n status: 'optional',\n },\n}\n\nexport const EditContainerEvents: PropertiesTableProps = {\n onDone: {\n doc: 'Callback for the done button.',\n type: 'Function',\n status: 'optional',\n },\n onCancel: {\n doc: 'Callback for the cancel button.',\n type: 'Function',\n status: 'optional',\n },\n}\n"],"mappings":"AAEA,OAAO,MAAMA,uBAA6C,GAAG;EAC3DC,KAAK,EAAE;IACLC,GAAG,EAAE,6BAA6B;IAClCC,IAAI,EAAE,YAAY;IAClBC,MAAM,EAAE;EACV,CAAC;EACDC,OAAO,EAAE;IACPH,GAAG,EAAE,2FAA2F;IAChGC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EAED,yDAAyD,EAAE;IACzDF,GAAG,EAAE,+BAA+B;IACpCC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV;AACF,CAAC;AAED,OAAO,MAAME,mBAAyC,GAAG;EACvDC,MAAM,EAAE;IACNL,GAAG,EAAE,+BAA+B;IACpCC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV,CAAC;EACDI,QAAQ,EAAE;IACRN,GAAG,EAAE,iCAAiC;IACtCC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV;AACF,CAAC"}
1
+ {"version":3,"file":"EditContainerDocs.js","names":["EditContainerProperties","title","doc","type","status","variant","EditContainerEvents","onDone","onCancel"],"sources":["../../../../../../../src/extensions/forms/Form/Section/EditContainer/EditContainerDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../../../../shared/types'\n\nexport const EditContainerProperties: PropertiesTableProps = {\n title: {\n doc: 'The title of the container.',\n type: 'React.Node',\n status: 'optional',\n },\n variant: {\n doc: 'Defines the variant of the container. Can be `outline`, `filled` or `basic`. Defaults to `outline`.',\n type: 'string',\n status: 'optional',\n },\n\n '[FlexVertical](/uilib/layout/flex/container/properties)': {\n doc: 'All Flex.Vertical properties.',\n type: 'Various',\n status: 'optional',\n },\n}\n\nexport const EditContainerEvents: PropertiesTableProps = {\n onDone: {\n doc: 'Callback for the done button.',\n type: 'Function',\n status: 'optional',\n },\n onCancel: {\n doc: 'Callback for the cancel button.',\n type: 'Function',\n status: 'optional',\n },\n}\n"],"mappings":"AAEA,OAAO,MAAMA,uBAA6C,GAAG;EAC3DC,KAAK,EAAE;IACLC,GAAG,EAAE,6BAA6B;IAClCC,IAAI,EAAE,YAAY;IAClBC,MAAM,EAAE;EACV,CAAC;EACDC,OAAO,EAAE;IACPH,GAAG,EAAE,qGAAqG;IAC1GC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EAED,yDAAyD,EAAE;IACzDF,GAAG,EAAE,+BAA+B;IACpCC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV;AACF,CAAC;AAED,OAAO,MAAME,mBAAyC,GAAG;EACvDC,MAAM,EAAE;IACNL,GAAG,EAAE,+BAA+B;IACpCC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV,CAAC;EACDI,QAAQ,EAAE;IACRN,GAAG,EAAE,iCAAiC;IACtCC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV;AACF,CAAC"}
@@ -8,7 +8,7 @@ import type { SharedFieldBlockProps } from '../../FieldBlock';
8
8
  export type OverwritePropsDefaults = {
9
9
  [key: Path]: (FieldProps & SharedFieldBlockProps) | OverwritePropsDefaults;
10
10
  };
11
- export type SectionProps<overwriteProps = OverwritePropsDefaults> = {
11
+ export type SectionProps<overwriteProps = OverwritePropsDefaults, Data extends JsonObject = JsonObject> = {
12
12
  /**
13
13
  * Path to the section.
14
14
  * When defined, fields inside the section will get this path as a prefix of their own path.
@@ -38,11 +38,11 @@ export type SectionProps<overwriteProps = OverwritePropsDefaults> = {
38
38
  * Can be `fieldSchema`, `sectionSchema` or `contextSchema.
39
39
  */
40
40
  errorPrioritization?: SectionContextState['errorPrioritization'];
41
- } & Pick<DataContextProps<JsonObject>, 'data' | 'defaultData' | 'onChange' | 'translations'>;
42
- export type LocalProps = SectionProps & {
41
+ } & Pick<DataContextProps<Data>, 'data' | 'defaultData' | 'onChange' | 'translations'>;
42
+ export type LocalProps<overwriteProps = OverwritePropsDefaults> = SectionProps<overwriteProps> & {
43
43
  children: React.ReactNode;
44
44
  };
45
- declare function SectionComponent(props: LocalProps): import("react/jsx-runtime").JSX.Element;
45
+ declare function SectionComponent<overwriteProps = OverwritePropsDefaults>(props: LocalProps<overwriteProps>): import("react/jsx-runtime").JSX.Element;
46
46
  declare namespace SectionComponent {
47
47
  var Toolbar: typeof import("./Toolbar").default;
48
48
  var ViewContainer: typeof import("./ViewContainer/ViewContainer").default;
@@ -53,11 +53,12 @@ function SectionComponent(props) {
53
53
  defaultData: defaultData
54
54
  }, React.createElement(SectionComponent, props));
55
55
  }
56
+ const sectionProps = props;
56
57
  return React.createElement(SectionContext.Provider, {
57
58
  value: {
58
59
  path: identifier,
59
60
  errorPrioritization,
60
- props
61
+ props: sectionProps
61
62
  }
62
63
  }, React.createElement(SectionContainerProvider, {
63
64
  validateInitially: validateInitially,
@@ -1 +1 @@
1
- {"version":3,"file":"Section.js","names":["React","useCallback","useContext","useMemo","SectionContext","DataContext","Provider","FieldPropsProvider","SectionContainerProvider","ViewContainer","EditContainer","Toolbar","SectionComponent","props","_path$startsWith","_nestedProps$overwrit","path","overwriteProps","translations","required","data","defaultData","validateInitially","containerMode","onChange","errorPrioritization","children","startsWith","call","Error","hasContext","addOnChangeHandler","nestedPath","nestedProps","handleChange","args","identifier","fieldProps","undefined","createElement","value","_extends","_objectSpread","substring","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Form/Section/Section.tsx"],"sourcesContent":["import React, { useCallback, useContext, useMemo } from 'react'\nimport SectionContext, { SectionContextState } from './SectionContext'\nimport DataContext from '../../DataContext/Context'\nimport Provider from '../../DataContext/Provider/Provider'\nimport FieldPropsProvider from '../../Field/Provider'\nimport SectionContainerProvider from './containers/SectionContainerProvider'\nimport ViewContainer from './ViewContainer'\nimport EditContainer from './EditContainer'\n\nimport type { Props as DataContextProps } from '../../DataContext/Provider'\nimport type { ContainerMode } from './containers/SectionContainer'\nimport type { Path, FieldProps, OnChange } from '../../types'\nimport type { JsonObject } from '../../utils/json-pointer'\nimport type { SharedFieldBlockProps } from '../../FieldBlock'\nimport Toolbar from './Toolbar'\n\nexport type OverwritePropsDefaults = {\n [key: Path]:\n | (FieldProps & SharedFieldBlockProps)\n | OverwritePropsDefaults\n}\nexport type SectionProps<overwriteProps = OverwritePropsDefaults> = {\n /**\n * Path to the section.\n * When defined, fields inside the section will get this path as a prefix of their own path.\n */\n path?: Path\n\n /**\n * Overwrite field props for the section.\n */\n overwriteProps?: overwriteProps | OverwritePropsDefaults\n\n /**\n * Makes all fields inside it required.\n */\n required?: boolean\n\n /**\n * If set to `true`, the whole section will be validated initially. All fields will then automatically get `validateInitially` and show their error messages. Can be useful in combination with `containerMode=\"auto\"`.\n */\n validateInitially?: boolean\n\n /**\n * Defines the container mode. Can be `view`, `edit` or `auto`.\n * When set to `auto`, the mode will initially be \"edit\" if fields contain errors.\n * Defaults to `auto`.\n */\n containerMode?: ContainerMode\n\n /**\n * Only for internal use and undocumented for now.\n * Prioritize error techniques for the section.\n * Can be `fieldSchema`, `sectionSchema` or `contextSchema.\n */\n errorPrioritization?: SectionContextState['errorPrioritization']\n} & Pick<\n DataContextProps<JsonObject>,\n 'data' | 'defaultData' | 'onChange' | 'translations'\n>\n\nexport type LocalProps = SectionProps & {\n children: React.ReactNode\n}\n\nfunction SectionComponent(props: LocalProps) {\n const {\n path,\n overwriteProps,\n translations,\n required,\n data,\n defaultData,\n validateInitially,\n containerMode = 'auto',\n onChange,\n errorPrioritization = ['contextSchema'],\n children,\n } = props\n\n if (path && !path.startsWith?.('/')) {\n throw new Error(`path=\"${path}\" must start with a slash`)\n }\n\n const { hasContext, addOnChangeHandler } = useContext(DataContext)\n\n const { path: nestedPath, props: nestedProps } =\n useContext(SectionContext) || {}\n\n const handleChange = useCallback<OnChange>(\n (...args) => onChange?.(...args),\n [onChange]\n )\n addOnChangeHandler?.(handleChange)\n\n const identifier = useMemo(() => {\n return `${nestedPath && nestedPath !== '/' ? nestedPath : ''}${\n path || ''\n }`\n }, [path, nestedPath])\n const fieldProps = required ? { required: true } : undefined\n\n if (!hasContext) {\n return (\n <Provider data={data} defaultData={defaultData}>\n <SectionComponent {...props} />\n </Provider>\n )\n }\n\n return (\n <SectionContext.Provider\n value={{\n path: identifier,\n errorPrioritization,\n props,\n }}\n >\n <SectionContainerProvider\n validateInitially={validateInitially}\n containerMode={containerMode}\n >\n <FieldPropsProvider\n overwriteProps={{\n ...overwriteProps,\n ...(nestedProps?.overwriteProps?.[\n path.substring(1)\n ] as OverwritePropsDefaults),\n }}\n translations={translations}\n {...fieldProps}\n >\n {children}\n </FieldPropsProvider>\n </SectionContainerProvider>\n </SectionContext.Provider>\n )\n}\n\nSectionComponent.Toolbar = Toolbar\nSectionComponent.ViewContainer = ViewContainer\nSectionComponent.EditContainer = EditContainer\n\nSectionComponent._supportsSpacingProps = undefined\nexport default SectionComponent\n"],"mappings":";;;;;;AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,UAAU,EAAEC,OAAO,QAAQ,OAAO;AAC/D,OAAOC,cAAc,MAA+B,kBAAkB;AACtE,OAAOC,WAAW,MAAM,2BAA2B;AACnD,OAAOC,QAAQ,MAAM,qCAAqC;AAC1D,OAAOC,kBAAkB,MAAM,sBAAsB;AACrD,OAAOC,wBAAwB,MAAM,uCAAuC;AAC5E,OAAOC,aAAa,MAAM,iBAAiB;AAC3C,OAAOC,aAAa,MAAM,iBAAiB;AAO3C,OAAOC,OAAO,MAAM,WAAW;AAmD/B,SAASC,gBAAgBA,CAACC,KAAiB,EAAE;EAAA,IAAAC,gBAAA,EAAAC,qBAAA;EAC3C,MAAM;IACJC,IAAI;IACJC,cAAc;IACdC,YAAY;IACZC,QAAQ;IACRC,IAAI;IACJC,WAAW;IACXC,iBAAiB;IACjBC,aAAa,GAAG,MAAM;IACtBC,QAAQ;IACRC,mBAAmB,GAAG,CAAC,eAAe,CAAC;IACvCC;EACF,CAAC,GAAGb,KAAK;EAET,IAAIG,IAAI,IAAI,GAAAF,gBAAA,GAACE,IAAI,CAACW,UAAU,cAAAb,gBAAA,eAAfA,gBAAA,CAAAc,IAAA,CAAAZ,IAAI,EAAc,GAAG,CAAC,GAAE;IACnC,MAAM,IAAIa,KAAK,CAAE,SAAQb,IAAK,2BAA0B,CAAC;EAC3D;EAEA,MAAM;IAAEc,UAAU;IAAEC;EAAmB,CAAC,GAAG7B,UAAU,CAACG,WAAW,CAAC;EAElE,MAAM;IAAEW,IAAI,EAAEgB,UAAU;IAAEnB,KAAK,EAAEoB;EAAY,CAAC,GAC5C/B,UAAU,CAACE,cAAc,CAAC,IAAI,CAAC,CAAC;EAElC,MAAM8B,YAAY,GAAGjC,WAAW,CAC9B,CAAC,GAAGkC,IAAI,KAAKX,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAG,GAAGW,IAAI,CAAC,EAChC,CAACX,QAAQ,CACX,CAAC;EACDO,kBAAkB,aAAlBA,kBAAkB,uBAAlBA,kBAAkB,CAAGG,YAAY,CAAC;EAElC,MAAME,UAAU,GAAGjC,OAAO,CAAC,MAAM;IAC/B,OAAQ,GAAE6B,UAAU,IAAIA,UAAU,KAAK,GAAG,GAAGA,UAAU,GAAG,EAAG,GAC3DhB,IAAI,IAAI,EACT,EAAC;EACJ,CAAC,EAAE,CAACA,IAAI,EAAEgB,UAAU,CAAC,CAAC;EACtB,MAAMK,UAAU,GAAGlB,QAAQ,GAAG;IAAEA,QAAQ,EAAE;EAAK,CAAC,GAAGmB,SAAS;EAE5D,IAAI,CAACR,UAAU,EAAE;IACf,OACE9B,KAAA,CAAAuC,aAAA,CAACjC,QAAQ;MAACc,IAAI,EAAEA,IAAK;MAACC,WAAW,EAAEA;IAAY,GAC7CrB,KAAA,CAAAuC,aAAA,CAAC3B,gBAAgB,EAAKC,KAAQ,CACtB,CAAC;EAEf;EAEA,OACEb,KAAA,CAAAuC,aAAA,CAACnC,cAAc,CAACE,QAAQ;IACtBkC,KAAK,EAAE;MACLxB,IAAI,EAAEoB,UAAU;MAChBX,mBAAmB;MACnBZ;IACF;EAAE,GAEFb,KAAA,CAAAuC,aAAA,CAAC/B,wBAAwB;IACvBc,iBAAiB,EAAEA,iBAAkB;IACrCC,aAAa,EAAEA;EAAc,GAE7BvB,KAAA,CAAAuC,aAAA,CAAChC,kBAAkB,EAAAkC,QAAA;IACjBxB,cAAc,EAAAyB,aAAA,CAAAA,aAAA,KACTzB,cAAc,GACbgB,WAAW,aAAXA,WAAW,wBAAAlB,qBAAA,GAAXkB,WAAW,CAAEhB,cAAc,cAAAF,qBAAA,uBAA3BA,qBAAA,CACFC,IAAI,CAAC2B,SAAS,CAAC,CAAC,CAAC,CAClB,CACD;IACFzB,YAAY,EAAEA;EAAa,GACvBmB,UAAU,GAEbX,QACiB,CACI,CACH,CAAC;AAE9B;AAEAd,gBAAgB,CAACD,OAAO,GAAGA,OAAO;AAClCC,gBAAgB,CAACH,aAAa,GAAGA,aAAa;AAC9CG,gBAAgB,CAACF,aAAa,GAAGA,aAAa;AAE9CE,gBAAgB,CAACgC,qBAAqB,GAAGN,SAAS;AAClD,eAAe1B,gBAAgB"}
1
+ {"version":3,"file":"Section.js","names":["React","useCallback","useContext","useMemo","SectionContext","DataContext","Provider","FieldPropsProvider","SectionContainerProvider","ViewContainer","EditContainer","Toolbar","SectionComponent","props","_path$startsWith","_nestedProps$overwrit","path","overwriteProps","translations","required","data","defaultData","validateInitially","containerMode","onChange","errorPrioritization","children","startsWith","call","Error","hasContext","addOnChangeHandler","nestedPath","nestedProps","handleChange","args","identifier","fieldProps","undefined","createElement","sectionProps","value","_extends","_objectSpread","substring","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Form/Section/Section.tsx"],"sourcesContent":["import React, { useCallback, useContext, useMemo } from 'react'\nimport SectionContext, { SectionContextState } from './SectionContext'\nimport DataContext from '../../DataContext/Context'\nimport Provider from '../../DataContext/Provider/Provider'\nimport FieldPropsProvider from '../../Field/Provider'\nimport SectionContainerProvider from './containers/SectionContainerProvider'\nimport ViewContainer from './ViewContainer'\nimport EditContainer from './EditContainer'\n\nimport type { Props as DataContextProps } from '../../DataContext/Provider'\nimport type { ContainerMode } from './containers/SectionContainer'\nimport type { Path, FieldProps, OnChange } from '../../types'\nimport type { JsonObject } from '../../utils/json-pointer'\nimport type { SharedFieldBlockProps } from '../../FieldBlock'\nimport Toolbar from './Toolbar'\n\nexport type OverwritePropsDefaults = {\n [key: Path]:\n | (FieldProps & SharedFieldBlockProps)\n | OverwritePropsDefaults\n}\nexport type SectionProps<\n overwriteProps = OverwritePropsDefaults,\n Data extends JsonObject = JsonObject,\n> = {\n /**\n * Path to the section.\n * When defined, fields inside the section will get this path as a prefix of their own path.\n */\n path?: Path\n\n /**\n * Overwrite field props for the section.\n */\n overwriteProps?: overwriteProps | OverwritePropsDefaults\n\n /**\n * Makes all fields inside it required.\n */\n required?: boolean\n\n /**\n * If set to `true`, the whole section will be validated initially. All fields will then automatically get `validateInitially` and show their error messages. Can be useful in combination with `containerMode=\"auto\"`.\n */\n validateInitially?: boolean\n\n /**\n * Defines the container mode. Can be `view`, `edit` or `auto`.\n * When set to `auto`, the mode will initially be \"edit\" if fields contain errors.\n * Defaults to `auto`.\n */\n containerMode?: ContainerMode\n\n /**\n * Only for internal use and undocumented for now.\n * Prioritize error techniques for the section.\n * Can be `fieldSchema`, `sectionSchema` or `contextSchema.\n */\n errorPrioritization?: SectionContextState['errorPrioritization']\n} & Pick<\n DataContextProps<Data>,\n 'data' | 'defaultData' | 'onChange' | 'translations'\n>\n\nexport type LocalProps<overwriteProps = OverwritePropsDefaults> =\n SectionProps<overwriteProps> & {\n children: React.ReactNode\n }\n\nfunction SectionComponent<overwriteProps = OverwritePropsDefaults>(\n props: LocalProps<overwriteProps>\n) {\n const {\n path,\n overwriteProps,\n translations,\n required,\n data,\n defaultData,\n validateInitially,\n containerMode = 'auto',\n onChange,\n errorPrioritization = ['contextSchema'],\n children,\n } = props\n\n if (path && !path.startsWith?.('/')) {\n throw new Error(`path=\"${path}\" must start with a slash`)\n }\n\n const { hasContext, addOnChangeHandler } = useContext(DataContext)\n\n const { path: nestedPath, props: nestedProps } =\n useContext(SectionContext) || {}\n\n const handleChange = useCallback<OnChange>(\n (...args) => onChange?.(...args),\n [onChange]\n )\n addOnChangeHandler?.(handleChange)\n\n const identifier = useMemo(() => {\n return `${nestedPath && nestedPath !== '/' ? nestedPath : ''}${\n path || ''\n }`\n }, [path, nestedPath])\n const fieldProps = required ? { required: true } : undefined\n\n if (!hasContext) {\n return (\n <Provider data={data} defaultData={defaultData}>\n <SectionComponent {...props} />\n </Provider>\n )\n }\n\n const sectionProps = props as SectionProps\n\n return (\n <SectionContext.Provider\n value={{\n path: identifier,\n errorPrioritization,\n props: sectionProps,\n }}\n >\n <SectionContainerProvider\n validateInitially={validateInitially}\n containerMode={containerMode}\n >\n <FieldPropsProvider\n overwriteProps={{\n ...overwriteProps,\n ...(nestedProps?.overwriteProps?.[\n path.substring(1)\n ] as OverwritePropsDefaults),\n }}\n translations={translations}\n {...fieldProps}\n >\n {children}\n </FieldPropsProvider>\n </SectionContainerProvider>\n </SectionContext.Provider>\n )\n}\n\nSectionComponent.Toolbar = Toolbar\nSectionComponent.ViewContainer = ViewContainer\nSectionComponent.EditContainer = EditContainer\n\nSectionComponent._supportsSpacingProps = undefined\nexport default SectionComponent\n"],"mappings":"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"}