@dnb/eufemia 10.28.0 → 10.29.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 (651) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/cjs/components/aria-live/useAriaLive.d.ts +1 -1
  3. package/cjs/components/autocomplete/Autocomplete.d.ts +19 -5
  4. package/cjs/components/dropdown/Dropdown.d.ts +22 -5
  5. package/cjs/components/height-animation/HeightAnimationInstance.js +5 -0
  6. package/cjs/components/height-animation/HeightAnimationInstance.js.map +1 -1
  7. package/cjs/components/icon/style/dnb-icon.css +1 -0
  8. package/cjs/components/icon/style/dnb-icon.min.css +1 -1
  9. package/cjs/components/icon/style/dnb-icon.scss +1 -0
  10. package/cjs/components/progress-indicator/ProgressIndicator.d.ts +2 -52
  11. package/cjs/components/progress-indicator/ProgressIndicator.js +27 -14
  12. package/cjs/components/progress-indicator/ProgressIndicator.js.map +1 -1
  13. package/cjs/components/progress-indicator/ProgressIndicatorCircular.d.ts +2 -23
  14. package/cjs/components/progress-indicator/ProgressIndicatorCircular.js +63 -27
  15. package/cjs/components/progress-indicator/ProgressIndicatorCircular.js.map +1 -1
  16. package/cjs/components/progress-indicator/ProgressIndicatorDocs.d.ts +1 -0
  17. package/cjs/components/progress-indicator/ProgressIndicatorDocs.js +45 -11
  18. package/cjs/components/progress-indicator/ProgressIndicatorDocs.js.map +1 -1
  19. package/cjs/components/progress-indicator/ProgressIndicatorLinear.d.ts +2 -22
  20. package/cjs/components/progress-indicator/ProgressIndicatorLinear.js +18 -10
  21. package/cjs/components/progress-indicator/ProgressIndicatorLinear.js.map +1 -1
  22. package/cjs/components/progress-indicator/style/dnb-progress-indicator.css +52 -55
  23. package/cjs/components/progress-indicator/style/dnb-progress-indicator.min.css +1 -1
  24. package/cjs/components/progress-indicator/style/dnb-progress-indicator.scss +65 -69
  25. package/cjs/components/progress-indicator/types.d.ts +95 -0
  26. package/cjs/components/progress-indicator/types.js +11 -0
  27. package/cjs/components/progress-indicator/types.js.map +1 -0
  28. package/cjs/extensions/forms/DataContext/Context.d.ts +5 -1
  29. package/cjs/extensions/forms/DataContext/Context.js +0 -1
  30. package/cjs/extensions/forms/DataContext/Context.js.map +1 -1
  31. package/cjs/extensions/forms/DataContext/Provider/Provider.d.ts +17 -5
  32. package/cjs/extensions/forms/DataContext/Provider/Provider.js +60 -30
  33. package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  34. package/cjs/extensions/forms/DataContext/Provider/ProviderDocs.js +12 -2
  35. package/cjs/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
  36. package/cjs/extensions/forms/Field/ArraySelection/ArraySelection.js +1 -1
  37. package/cjs/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
  38. package/cjs/extensions/forms/Field/ArraySelection/style/dnb-array-selection.css +5 -2
  39. package/cjs/extensions/forms/Field/ArraySelection/style/dnb-array-selection.min.css +1 -1
  40. package/cjs/extensions/forms/Field/ArraySelection/style/dnb-array-selection.scss +5 -2
  41. package/cjs/extensions/forms/Field/Name/Name.d.ts +10 -0
  42. package/cjs/extensions/forms/Field/Name/Name.js +73 -0
  43. package/cjs/extensions/forms/Field/Name/Name.js.map +1 -0
  44. package/cjs/extensions/forms/Field/Name/NameDocs.d.ts +2 -0
  45. package/cjs/extensions/forms/Field/Name/NameDocs.js +15 -0
  46. package/cjs/extensions/forms/Field/Name/NameDocs.js.map +1 -0
  47. package/cjs/extensions/forms/Field/Name/index.d.ts +2 -0
  48. package/cjs/extensions/forms/Field/Name/index.js +27 -0
  49. package/cjs/extensions/forms/Field/Name/index.js.map +1 -0
  50. package/cjs/extensions/forms/Field/Number/Number.d.ts +2 -2
  51. package/cjs/extensions/forms/Field/Number/Number.js.map +1 -1
  52. package/cjs/extensions/forms/Field/Option/Option.d.ts +2 -0
  53. package/cjs/extensions/forms/Field/Option/Option.js +21 -0
  54. package/cjs/extensions/forms/Field/Option/Option.js.map +1 -1
  55. package/cjs/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCityDocs.d.ts +2 -0
  56. package/cjs/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCityDocs.js +25 -0
  57. package/cjs/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCityDocs.js.map +1 -0
  58. package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.d.ts +2 -2
  59. package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
  60. package/cjs/extensions/forms/Field/Selection/Selection.d.ts +11 -4
  61. package/cjs/extensions/forms/Field/Selection/Selection.js +20 -32
  62. package/cjs/extensions/forms/Field/Selection/Selection.js.map +1 -1
  63. package/cjs/extensions/forms/Field/Selection/SelectionDocs.d.ts +2 -0
  64. package/cjs/extensions/forms/Field/Selection/SelectionDocs.js +45 -0
  65. package/cjs/extensions/forms/Field/Selection/SelectionDocs.js.map +1 -0
  66. package/cjs/extensions/forms/Field/String/String.d.ts +2 -2
  67. package/cjs/extensions/forms/Field/String/String.js.map +1 -1
  68. package/cjs/extensions/forms/Field/index.d.ts +1 -0
  69. package/cjs/extensions/forms/Field/index.js +7 -0
  70. package/cjs/extensions/forms/Field/index.js.map +1 -1
  71. package/cjs/extensions/forms/FieldBlock/FieldBlock.d.ts +3 -3
  72. package/cjs/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  73. package/cjs/extensions/forms/Form/Handler/Handler.d.ts +1 -1
  74. package/cjs/extensions/forms/Form/Handler/Handler.js +8 -2
  75. package/cjs/extensions/forms/Form/Handler/Handler.js.map +1 -1
  76. package/cjs/extensions/forms/Form/MainHeading/MainHeading.js +1 -1
  77. package/cjs/extensions/forms/Form/MainHeading/MainHeading.js.map +1 -1
  78. package/cjs/extensions/forms/Form/MainHeading/style/dnb-form-main-heading.css +3 -3
  79. package/cjs/extensions/forms/Form/MainHeading/style/dnb-form-main-heading.min.css +1 -1
  80. package/cjs/extensions/forms/Form/MainHeading/style/dnb-form-main-heading.scss +1 -1
  81. package/cjs/extensions/forms/Form/SubHeading/SubHeading.js +1 -1
  82. package/cjs/extensions/forms/Form/SubHeading/SubHeading.js.map +1 -1
  83. package/cjs/extensions/forms/Form/SubHeading/style/dnb-form-sub-heading.css +2 -2
  84. package/cjs/extensions/forms/Form/SubHeading/style/dnb-form-sub-heading.min.css +1 -1
  85. package/cjs/extensions/forms/Form/SubHeading/style/dnb-form-sub-heading.scss +1 -1
  86. package/cjs/extensions/forms/Form/SubmitIndicator/SubmitIndicator.js +2 -2
  87. package/cjs/extensions/forms/Form/SubmitIndicator/SubmitIndicator.js.map +1 -1
  88. package/cjs/extensions/forms/Form/SubmitIndicator/style/dnb-form-submit-indicator.css +13 -13
  89. package/cjs/extensions/forms/Form/SubmitIndicator/style/dnb-form-submit-indicator.min.css +1 -1
  90. package/cjs/extensions/forms/Form/SubmitIndicator/style/dnb-form-submit-indicator.scss +1 -1
  91. package/cjs/extensions/forms/Iterate/AnimatedContainer/ElementBlock.js +4 -4
  92. package/cjs/extensions/forms/Iterate/AnimatedContainer/ElementBlock.js.map +1 -1
  93. package/cjs/extensions/forms/Iterate/Array/Array.js +2 -2
  94. package/cjs/extensions/forms/Iterate/Array/Array.js.map +1 -1
  95. package/cjs/extensions/forms/Iterate/EditContainer/EditContainer.js +1 -1
  96. package/cjs/extensions/forms/Iterate/EditContainer/EditContainer.js.map +1 -1
  97. package/cjs/extensions/forms/Iterate/PushButton/PushButton.js +1 -1
  98. package/cjs/extensions/forms/Iterate/PushButton/PushButton.js.map +1 -1
  99. package/cjs/extensions/forms/Iterate/RemoveButton/RemoveButton.js +1 -1
  100. package/cjs/extensions/forms/Iterate/RemoveButton/RemoveButton.js.map +1 -1
  101. package/cjs/extensions/forms/Iterate/Toolbar/Toolbar.js +1 -1
  102. package/cjs/extensions/forms/Iterate/Toolbar/Toolbar.js.map +1 -1
  103. package/cjs/extensions/forms/Iterate/ViewContainer/ViewContainer.js +1 -1
  104. package/cjs/extensions/forms/Iterate/ViewContainer/ViewContainer.js.map +1 -1
  105. package/cjs/extensions/forms/Iterate/style/dnb-form-iterate.css +14 -14
  106. package/cjs/extensions/forms/Iterate/style/dnb-form-iterate.min.css +1 -1
  107. package/cjs/extensions/forms/Iterate/style/dnb-form-iterate.scss +1 -1
  108. package/cjs/extensions/forms/Value/Boolean/Boolean.js +8 -3
  109. package/cjs/extensions/forms/Value/Boolean/Boolean.js.map +1 -1
  110. package/cjs/extensions/forms/Value/Name/Name.d.ts +10 -0
  111. package/cjs/extensions/forms/Value/Name/Name.js +50 -0
  112. package/cjs/extensions/forms/Value/Name/Name.js.map +1 -0
  113. package/cjs/extensions/forms/Value/Name/index.d.ts +2 -0
  114. package/cjs/extensions/forms/Value/Name/index.js +27 -0
  115. package/cjs/extensions/forms/Value/Name/index.js.map +1 -0
  116. package/cjs/extensions/forms/Value/OrganizationNumber/OrganizationNumber.d.ts +7 -0
  117. package/cjs/extensions/forms/Value/OrganizationNumber/OrganizationNumber.js +36 -0
  118. package/cjs/extensions/forms/Value/OrganizationNumber/OrganizationNumber.js.map +1 -0
  119. package/cjs/extensions/forms/Value/OrganizationNumber/index.d.ts +2 -0
  120. package/cjs/extensions/forms/Value/OrganizationNumber/index.js +27 -0
  121. package/cjs/extensions/forms/Value/OrganizationNumber/index.js.map +1 -0
  122. package/cjs/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCity.d.ts +7 -0
  123. package/cjs/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCity.js +41 -0
  124. package/cjs/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCity.js.map +1 -0
  125. package/cjs/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCityDocs.d.ts +2 -0
  126. package/cjs/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCityDocs.js +20 -0
  127. package/cjs/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCityDocs.js.map +1 -0
  128. package/cjs/extensions/forms/Value/PostalCodeAndCity/index.d.ts +2 -0
  129. package/cjs/extensions/forms/Value/PostalCodeAndCity/index.js +27 -0
  130. package/cjs/extensions/forms/Value/PostalCodeAndCity/index.js.map +1 -0
  131. package/cjs/extensions/forms/Value/String/String.js +8 -3
  132. package/cjs/extensions/forms/Value/String/String.js.map +1 -1
  133. package/cjs/extensions/forms/Value/SummaryList/SummaryList.js +1 -1
  134. package/cjs/extensions/forms/Value/SummaryList/SummaryList.js.map +1 -1
  135. package/cjs/extensions/forms/Value/ValueDocs.js +6 -1
  136. package/cjs/extensions/forms/Value/ValueDocs.js.map +1 -1
  137. package/cjs/extensions/forms/Value/index.d.ts +3 -0
  138. package/cjs/extensions/forms/Value/index.js +21 -0
  139. package/cjs/extensions/forms/Value/index.js.map +1 -1
  140. package/cjs/extensions/forms/ValueBlock/ValueBlock.js +2 -1
  141. package/cjs/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
  142. package/cjs/extensions/forms/ValueBlock/style/dnb-value-block.css +11 -6
  143. package/cjs/extensions/forms/ValueBlock/style/dnb-value-block.min.css +1 -1
  144. package/cjs/extensions/forms/ValueBlock/style/dnb-value-block.scss +11 -3
  145. package/cjs/extensions/forms/Wizard/Container/WizardContainer.js +17 -52
  146. package/cjs/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  147. package/cjs/extensions/forms/Wizard/Container/useHandleLayoutEffect.d.ts +9 -0
  148. package/cjs/extensions/forms/Wizard/Container/useHandleLayoutEffect.js +53 -0
  149. package/cjs/extensions/forms/Wizard/Container/useHandleLayoutEffect.js.map +1 -0
  150. package/cjs/extensions/forms/Wizard/Container/useStepAnimation.d.ts +4 -0
  151. package/cjs/extensions/forms/Wizard/Container/useStepAnimation.js +37 -0
  152. package/cjs/extensions/forms/Wizard/Container/useStepAnimation.js.map +1 -0
  153. package/cjs/extensions/forms/Wizard/Step/Step.js +13 -1
  154. package/cjs/extensions/forms/Wizard/Step/Step.js.map +1 -1
  155. package/cjs/extensions/forms/Wizard/hooks/useStep.js +5 -2
  156. package/cjs/extensions/forms/Wizard/hooks/useStep.js.map +1 -1
  157. package/cjs/extensions/forms/Wizard/style/dnb-wizard-layout.css +29 -2
  158. package/cjs/extensions/forms/Wizard/style/dnb-wizard-layout.min.css +1 -1
  159. package/cjs/extensions/forms/Wizard/style/dnb-wizard-layout.scss +35 -2
  160. package/cjs/extensions/forms/constants/locales/en-GB.d.ts +9 -0
  161. package/cjs/extensions/forms/constants/locales/en-GB.js +12 -3
  162. package/cjs/extensions/forms/constants/locales/en-GB.js.map +1 -1
  163. package/cjs/extensions/forms/constants/locales/en-US.d.ts +9 -0
  164. package/cjs/extensions/forms/constants/locales/index.d.ts +18 -0
  165. package/cjs/extensions/forms/constants/locales/nb-NO.d.ts +9 -0
  166. package/cjs/extensions/forms/constants/locales/nb-NO.js +11 -2
  167. package/cjs/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  168. package/cjs/extensions/forms/style/dnb-forms.css +77 -43
  169. package/cjs/extensions/forms/style/dnb-forms.min.css +1 -1
  170. package/cjs/extensions/forms/types.d.ts +3 -2
  171. package/cjs/extensions/forms/types.js.map +1 -1
  172. package/cjs/fragments/drawer-list/DrawerList.d.ts +8 -4
  173. package/cjs/shared/Context.d.ts +2 -4
  174. package/cjs/shared/Context.js.map +1 -1
  175. package/cjs/shared/Eufemia.d.ts +1 -1
  176. package/cjs/shared/Eufemia.js +2 -2
  177. package/cjs/shared/Eufemia.js.map +1 -1
  178. package/cjs/shared/component-helper.js +1 -1
  179. package/cjs/shared/component-helper.js.map +1 -1
  180. package/cjs/style/core/scopes.scss +1 -1
  181. package/cjs/style/dnb-ui-basis.css +1 -1
  182. package/cjs/style/dnb-ui-basis.min.css +1 -1
  183. package/cjs/style/dnb-ui-body.css +1 -1
  184. package/cjs/style/dnb-ui-body.min.css +1 -1
  185. package/cjs/style/dnb-ui-components.css +129 -98
  186. package/cjs/style/dnb-ui-components.min.css +2 -2
  187. package/cjs/style/dnb-ui-core.css +1 -1
  188. package/cjs/style/dnb-ui-core.min.css +1 -1
  189. package/cjs/style/dnb-ui-extensions.css +77 -43
  190. package/cjs/style/dnb-ui-extensions.min.css +1 -1
  191. package/cjs/style/dnb-ui-forms.css +77 -43
  192. package/cjs/style/dnb-ui-forms.min.css +1 -1
  193. package/cjs/style/dnb-ui-forms.scss +1 -1
  194. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +205 -141
  195. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  196. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.css +77 -43
  197. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  198. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.css +77 -43
  199. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  200. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +205 -141
  201. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  202. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.css +77 -43
  203. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  204. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.css +77 -43
  205. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  206. package/cjs/style/themes/theme-ui/ui-theme-components.css +205 -141
  207. package/cjs/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  208. package/cjs/style/themes/theme-ui/ui-theme-extensions.css +77 -43
  209. package/cjs/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  210. package/cjs/style/themes/theme-ui/ui-theme-forms.css +77 -43
  211. package/cjs/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  212. package/components/aria-live/useAriaLive.d.ts +1 -1
  213. package/components/autocomplete/Autocomplete.d.ts +19 -5
  214. package/components/dropdown/Dropdown.d.ts +22 -5
  215. package/components/height-animation/HeightAnimationInstance.js +5 -0
  216. package/components/height-animation/HeightAnimationInstance.js.map +1 -1
  217. package/components/icon/style/dnb-icon.css +1 -0
  218. package/components/icon/style/dnb-icon.min.css +1 -1
  219. package/components/icon/style/dnb-icon.scss +1 -0
  220. package/components/progress-indicator/ProgressIndicator.d.ts +2 -52
  221. package/components/progress-indicator/ProgressIndicator.js +27 -14
  222. package/components/progress-indicator/ProgressIndicator.js.map +1 -1
  223. package/components/progress-indicator/ProgressIndicatorCircular.d.ts +2 -23
  224. package/components/progress-indicator/ProgressIndicatorCircular.js +63 -27
  225. package/components/progress-indicator/ProgressIndicatorCircular.js.map +1 -1
  226. package/components/progress-indicator/ProgressIndicatorDocs.d.ts +1 -0
  227. package/components/progress-indicator/ProgressIndicatorDocs.js +43 -10
  228. package/components/progress-indicator/ProgressIndicatorDocs.js.map +1 -1
  229. package/components/progress-indicator/ProgressIndicatorLinear.d.ts +2 -22
  230. package/components/progress-indicator/ProgressIndicatorLinear.js +18 -10
  231. package/components/progress-indicator/ProgressIndicatorLinear.js.map +1 -1
  232. package/components/progress-indicator/style/dnb-progress-indicator.css +52 -55
  233. package/components/progress-indicator/style/dnb-progress-indicator.min.css +1 -1
  234. package/components/progress-indicator/style/dnb-progress-indicator.scss +65 -69
  235. package/components/progress-indicator/types.d.ts +95 -0
  236. package/components/progress-indicator/types.js +5 -0
  237. package/components/progress-indicator/types.js.map +1 -0
  238. package/es/components/aria-live/useAriaLive.d.ts +1 -1
  239. package/es/components/autocomplete/Autocomplete.d.ts +19 -5
  240. package/es/components/dropdown/Dropdown.d.ts +22 -5
  241. package/es/components/height-animation/HeightAnimationInstance.js +5 -0
  242. package/es/components/height-animation/HeightAnimationInstance.js.map +1 -1
  243. package/es/components/icon/style/dnb-icon.css +1 -0
  244. package/es/components/icon/style/dnb-icon.min.css +1 -1
  245. package/es/components/icon/style/dnb-icon.scss +1 -0
  246. package/es/components/progress-indicator/ProgressIndicator.d.ts +2 -52
  247. package/es/components/progress-indicator/ProgressIndicator.js +27 -14
  248. package/es/components/progress-indicator/ProgressIndicator.js.map +1 -1
  249. package/es/components/progress-indicator/ProgressIndicatorCircular.d.ts +2 -23
  250. package/es/components/progress-indicator/ProgressIndicatorCircular.js +62 -27
  251. package/es/components/progress-indicator/ProgressIndicatorCircular.js.map +1 -1
  252. package/es/components/progress-indicator/ProgressIndicatorDocs.d.ts +1 -0
  253. package/es/components/progress-indicator/ProgressIndicatorDocs.js +43 -10
  254. package/es/components/progress-indicator/ProgressIndicatorDocs.js.map +1 -1
  255. package/es/components/progress-indicator/ProgressIndicatorLinear.d.ts +2 -22
  256. package/es/components/progress-indicator/ProgressIndicatorLinear.js +18 -10
  257. package/es/components/progress-indicator/ProgressIndicatorLinear.js.map +1 -1
  258. package/es/components/progress-indicator/style/dnb-progress-indicator.css +52 -55
  259. package/es/components/progress-indicator/style/dnb-progress-indicator.min.css +1 -1
  260. package/es/components/progress-indicator/style/dnb-progress-indicator.scss +65 -69
  261. package/es/components/progress-indicator/types.d.ts +95 -0
  262. package/es/components/progress-indicator/types.js +5 -0
  263. package/es/components/progress-indicator/types.js.map +1 -0
  264. package/es/extensions/forms/DataContext/Context.d.ts +5 -1
  265. package/es/extensions/forms/DataContext/Context.js +0 -1
  266. package/es/extensions/forms/DataContext/Context.js.map +1 -1
  267. package/es/extensions/forms/DataContext/Provider/Provider.d.ts +17 -5
  268. package/es/extensions/forms/DataContext/Provider/Provider.js +58 -29
  269. package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  270. package/es/extensions/forms/DataContext/Provider/ProviderDocs.js +12 -2
  271. package/es/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
  272. package/es/extensions/forms/Field/ArraySelection/ArraySelection.js +1 -1
  273. package/es/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
  274. package/es/extensions/forms/Field/ArraySelection/style/dnb-array-selection.css +5 -2
  275. package/es/extensions/forms/Field/ArraySelection/style/dnb-array-selection.min.css +1 -1
  276. package/es/extensions/forms/Field/ArraySelection/style/dnb-array-selection.scss +5 -2
  277. package/es/extensions/forms/Field/Name/Name.d.ts +10 -0
  278. package/es/extensions/forms/Field/Name/Name.js +63 -0
  279. package/es/extensions/forms/Field/Name/Name.js.map +1 -0
  280. package/es/extensions/forms/Field/Name/NameDocs.d.ts +2 -0
  281. package/es/extensions/forms/Field/Name/NameDocs.js +8 -0
  282. package/es/extensions/forms/Field/Name/NameDocs.js.map +1 -0
  283. package/es/extensions/forms/Field/Name/index.d.ts +2 -0
  284. package/es/extensions/forms/Field/Name/index.js +3 -0
  285. package/es/extensions/forms/Field/Name/index.js.map +1 -0
  286. package/es/extensions/forms/Field/Number/Number.d.ts +2 -2
  287. package/es/extensions/forms/Field/Number/Number.js.map +1 -1
  288. package/es/extensions/forms/Field/Option/Option.d.ts +2 -0
  289. package/es/extensions/forms/Field/Option/Option.js +20 -0
  290. package/es/extensions/forms/Field/Option/Option.js.map +1 -1
  291. package/es/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCityDocs.d.ts +2 -0
  292. package/es/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCityDocs.js +18 -0
  293. package/es/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCityDocs.js.map +1 -0
  294. package/es/extensions/forms/Field/SelectCountry/SelectCountry.d.ts +2 -2
  295. package/es/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
  296. package/es/extensions/forms/Field/Selection/Selection.d.ts +11 -4
  297. package/es/extensions/forms/Field/Selection/Selection.js +20 -32
  298. package/es/extensions/forms/Field/Selection/Selection.js.map +1 -1
  299. package/es/extensions/forms/Field/Selection/SelectionDocs.d.ts +2 -0
  300. package/es/extensions/forms/Field/Selection/SelectionDocs.js +38 -0
  301. package/es/extensions/forms/Field/Selection/SelectionDocs.js.map +1 -0
  302. package/es/extensions/forms/Field/String/String.d.ts +2 -2
  303. package/es/extensions/forms/Field/String/String.js.map +1 -1
  304. package/es/extensions/forms/Field/index.d.ts +1 -0
  305. package/es/extensions/forms/Field/index.js +1 -0
  306. package/es/extensions/forms/Field/index.js.map +1 -1
  307. package/es/extensions/forms/FieldBlock/FieldBlock.d.ts +3 -3
  308. package/es/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  309. package/es/extensions/forms/Form/Handler/Handler.d.ts +1 -1
  310. package/es/extensions/forms/Form/Handler/Handler.js +8 -2
  311. package/es/extensions/forms/Form/Handler/Handler.js.map +1 -1
  312. package/es/extensions/forms/Form/MainHeading/MainHeading.js +1 -1
  313. package/es/extensions/forms/Form/MainHeading/MainHeading.js.map +1 -1
  314. package/es/extensions/forms/Form/MainHeading/style/dnb-form-main-heading.css +3 -3
  315. package/es/extensions/forms/Form/MainHeading/style/dnb-form-main-heading.min.css +1 -1
  316. package/es/extensions/forms/Form/MainHeading/style/dnb-form-main-heading.scss +1 -1
  317. package/es/extensions/forms/Form/SubHeading/SubHeading.js +1 -1
  318. package/es/extensions/forms/Form/SubHeading/SubHeading.js.map +1 -1
  319. package/es/extensions/forms/Form/SubHeading/style/dnb-form-sub-heading.css +2 -2
  320. package/es/extensions/forms/Form/SubHeading/style/dnb-form-sub-heading.min.css +1 -1
  321. package/es/extensions/forms/Form/SubHeading/style/dnb-form-sub-heading.scss +1 -1
  322. package/es/extensions/forms/Form/SubmitIndicator/SubmitIndicator.js +2 -2
  323. package/es/extensions/forms/Form/SubmitIndicator/SubmitIndicator.js.map +1 -1
  324. package/es/extensions/forms/Form/SubmitIndicator/style/dnb-form-submit-indicator.css +13 -13
  325. package/es/extensions/forms/Form/SubmitIndicator/style/dnb-form-submit-indicator.min.css +1 -1
  326. package/es/extensions/forms/Form/SubmitIndicator/style/dnb-form-submit-indicator.scss +1 -1
  327. package/es/extensions/forms/Iterate/AnimatedContainer/ElementBlock.js +4 -4
  328. package/es/extensions/forms/Iterate/AnimatedContainer/ElementBlock.js.map +1 -1
  329. package/es/extensions/forms/Iterate/Array/Array.js +2 -2
  330. package/es/extensions/forms/Iterate/Array/Array.js.map +1 -1
  331. package/es/extensions/forms/Iterate/EditContainer/EditContainer.js +1 -1
  332. package/es/extensions/forms/Iterate/EditContainer/EditContainer.js.map +1 -1
  333. package/es/extensions/forms/Iterate/PushButton/PushButton.js +1 -1
  334. package/es/extensions/forms/Iterate/PushButton/PushButton.js.map +1 -1
  335. package/es/extensions/forms/Iterate/RemoveButton/RemoveButton.js +1 -1
  336. package/es/extensions/forms/Iterate/RemoveButton/RemoveButton.js.map +1 -1
  337. package/es/extensions/forms/Iterate/Toolbar/Toolbar.js +1 -1
  338. package/es/extensions/forms/Iterate/Toolbar/Toolbar.js.map +1 -1
  339. package/es/extensions/forms/Iterate/ViewContainer/ViewContainer.js +1 -1
  340. package/es/extensions/forms/Iterate/ViewContainer/ViewContainer.js.map +1 -1
  341. package/es/extensions/forms/Iterate/style/dnb-form-iterate.css +14 -14
  342. package/es/extensions/forms/Iterate/style/dnb-form-iterate.min.css +1 -1
  343. package/es/extensions/forms/Iterate/style/dnb-form-iterate.scss +1 -1
  344. package/es/extensions/forms/Value/Boolean/Boolean.js +8 -3
  345. package/es/extensions/forms/Value/Boolean/Boolean.js.map +1 -1
  346. package/es/extensions/forms/Value/Name/Name.d.ts +10 -0
  347. package/es/extensions/forms/Value/Name/Name.js +40 -0
  348. package/es/extensions/forms/Value/Name/Name.js.map +1 -0
  349. package/es/extensions/forms/Value/Name/index.d.ts +2 -0
  350. package/es/extensions/forms/Value/Name/index.js +3 -0
  351. package/es/extensions/forms/Value/Name/index.js.map +1 -0
  352. package/es/extensions/forms/Value/OrganizationNumber/OrganizationNumber.d.ts +7 -0
  353. package/es/extensions/forms/Value/OrganizationNumber/OrganizationNumber.js +24 -0
  354. package/es/extensions/forms/Value/OrganizationNumber/OrganizationNumber.js.map +1 -0
  355. package/es/extensions/forms/Value/OrganizationNumber/index.d.ts +2 -0
  356. package/es/extensions/forms/Value/OrganizationNumber/index.js +3 -0
  357. package/es/extensions/forms/Value/OrganizationNumber/index.js.map +1 -0
  358. package/es/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCity.d.ts +7 -0
  359. package/es/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCity.js +31 -0
  360. package/es/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCity.js.map +1 -0
  361. package/es/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCityDocs.d.ts +2 -0
  362. package/es/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCityDocs.js +13 -0
  363. package/es/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCityDocs.js.map +1 -0
  364. package/es/extensions/forms/Value/PostalCodeAndCity/index.d.ts +2 -0
  365. package/es/extensions/forms/Value/PostalCodeAndCity/index.js +3 -0
  366. package/es/extensions/forms/Value/PostalCodeAndCity/index.js.map +1 -0
  367. package/es/extensions/forms/Value/String/String.js +8 -3
  368. package/es/extensions/forms/Value/String/String.js.map +1 -1
  369. package/es/extensions/forms/Value/SummaryList/SummaryList.js +1 -1
  370. package/es/extensions/forms/Value/SummaryList/SummaryList.js.map +1 -1
  371. package/es/extensions/forms/Value/ValueDocs.js +6 -1
  372. package/es/extensions/forms/Value/ValueDocs.js.map +1 -1
  373. package/es/extensions/forms/Value/index.d.ts +3 -0
  374. package/es/extensions/forms/Value/index.js +3 -0
  375. package/es/extensions/forms/Value/index.js.map +1 -1
  376. package/es/extensions/forms/ValueBlock/ValueBlock.js +2 -1
  377. package/es/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
  378. package/es/extensions/forms/ValueBlock/style/dnb-value-block.css +11 -6
  379. package/es/extensions/forms/ValueBlock/style/dnb-value-block.min.css +1 -1
  380. package/es/extensions/forms/ValueBlock/style/dnb-value-block.scss +11 -3
  381. package/es/extensions/forms/Wizard/Container/WizardContainer.js +17 -51
  382. package/es/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  383. package/es/extensions/forms/Wizard/Container/useHandleLayoutEffect.d.ts +9 -0
  384. package/es/extensions/forms/Wizard/Container/useHandleLayoutEffect.js +46 -0
  385. package/es/extensions/forms/Wizard/Container/useHandleLayoutEffect.js.map +1 -0
  386. package/es/extensions/forms/Wizard/Container/useStepAnimation.d.ts +4 -0
  387. package/es/extensions/forms/Wizard/Container/useStepAnimation.js +29 -0
  388. package/es/extensions/forms/Wizard/Container/useStepAnimation.js.map +1 -0
  389. package/es/extensions/forms/Wizard/Step/Step.js +14 -2
  390. package/es/extensions/forms/Wizard/Step/Step.js.map +1 -1
  391. package/es/extensions/forms/Wizard/hooks/useStep.js +3 -2
  392. package/es/extensions/forms/Wizard/hooks/useStep.js.map +1 -1
  393. package/es/extensions/forms/Wizard/style/dnb-wizard-layout.css +29 -2
  394. package/es/extensions/forms/Wizard/style/dnb-wizard-layout.min.css +1 -1
  395. package/es/extensions/forms/Wizard/style/dnb-wizard-layout.scss +35 -2
  396. package/es/extensions/forms/constants/locales/en-GB.d.ts +9 -0
  397. package/es/extensions/forms/constants/locales/en-GB.js +12 -3
  398. package/es/extensions/forms/constants/locales/en-GB.js.map +1 -1
  399. package/es/extensions/forms/constants/locales/en-US.d.ts +9 -0
  400. package/es/extensions/forms/constants/locales/index.d.ts +18 -0
  401. package/es/extensions/forms/constants/locales/nb-NO.d.ts +9 -0
  402. package/es/extensions/forms/constants/locales/nb-NO.js +11 -2
  403. package/es/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  404. package/es/extensions/forms/style/dnb-forms.css +77 -43
  405. package/es/extensions/forms/style/dnb-forms.min.css +1 -1
  406. package/es/extensions/forms/types.d.ts +3 -2
  407. package/es/extensions/forms/types.js.map +1 -1
  408. package/es/fragments/drawer-list/DrawerList.d.ts +8 -4
  409. package/es/shared/Context.d.ts +2 -4
  410. package/es/shared/Context.js.map +1 -1
  411. package/es/shared/Eufemia.d.ts +1 -1
  412. package/es/shared/Eufemia.js +2 -2
  413. package/es/shared/Eufemia.js.map +1 -1
  414. package/es/shared/component-helper.js +1 -1
  415. package/es/shared/component-helper.js.map +1 -1
  416. package/es/style/core/scopes.scss +1 -1
  417. package/es/style/dnb-ui-basis.css +1 -1
  418. package/es/style/dnb-ui-basis.min.css +1 -1
  419. package/es/style/dnb-ui-body.css +1 -1
  420. package/es/style/dnb-ui-body.min.css +1 -1
  421. package/es/style/dnb-ui-components.css +129 -98
  422. package/es/style/dnb-ui-components.min.css +2 -2
  423. package/es/style/dnb-ui-core.css +1 -1
  424. package/es/style/dnb-ui-core.min.css +1 -1
  425. package/es/style/dnb-ui-extensions.css +77 -43
  426. package/es/style/dnb-ui-extensions.min.css +1 -1
  427. package/es/style/dnb-ui-forms.css +77 -43
  428. package/es/style/dnb-ui-forms.min.css +1 -1
  429. package/es/style/dnb-ui-forms.scss +1 -1
  430. package/es/style/themes/theme-eiendom/eiendom-theme-components.css +205 -141
  431. package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  432. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.css +77 -43
  433. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  434. package/es/style/themes/theme-eiendom/eiendom-theme-forms.css +77 -43
  435. package/es/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  436. package/es/style/themes/theme-sbanken/sbanken-theme-components.css +205 -141
  437. package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  438. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.css +77 -43
  439. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  440. package/es/style/themes/theme-sbanken/sbanken-theme-forms.css +77 -43
  441. package/es/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  442. package/es/style/themes/theme-ui/ui-theme-components.css +205 -141
  443. package/es/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  444. package/es/style/themes/theme-ui/ui-theme-extensions.css +77 -43
  445. package/es/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  446. package/es/style/themes/theme-ui/ui-theme-forms.css +77 -43
  447. package/es/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  448. package/esm/dnb-ui-basis.min.mjs +1 -1
  449. package/esm/dnb-ui-components.min.mjs +1 -1
  450. package/esm/dnb-ui-elements.min.mjs +1 -1
  451. package/esm/dnb-ui-extensions.min.mjs +3 -3
  452. package/esm/dnb-ui-lib.min.mjs +1 -1
  453. package/extensions/forms/DataContext/Context.d.ts +5 -1
  454. package/extensions/forms/DataContext/Context.js +0 -1
  455. package/extensions/forms/DataContext/Context.js.map +1 -1
  456. package/extensions/forms/DataContext/Provider/Provider.d.ts +17 -5
  457. package/extensions/forms/DataContext/Provider/Provider.js +60 -30
  458. package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  459. package/extensions/forms/DataContext/Provider/ProviderDocs.js +12 -2
  460. package/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
  461. package/extensions/forms/Field/ArraySelection/ArraySelection.js +1 -1
  462. package/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
  463. package/extensions/forms/Field/ArraySelection/style/dnb-array-selection.css +5 -2
  464. package/extensions/forms/Field/ArraySelection/style/dnb-array-selection.min.css +1 -1
  465. package/extensions/forms/Field/ArraySelection/style/dnb-array-selection.scss +5 -2
  466. package/extensions/forms/Field/Name/Name.d.ts +10 -0
  467. package/extensions/forms/Field/Name/Name.js +63 -0
  468. package/extensions/forms/Field/Name/Name.js.map +1 -0
  469. package/extensions/forms/Field/Name/NameDocs.d.ts +2 -0
  470. package/extensions/forms/Field/Name/NameDocs.js +8 -0
  471. package/extensions/forms/Field/Name/NameDocs.js.map +1 -0
  472. package/extensions/forms/Field/Name/index.d.ts +2 -0
  473. package/extensions/forms/Field/Name/index.js +3 -0
  474. package/extensions/forms/Field/Name/index.js.map +1 -0
  475. package/extensions/forms/Field/Number/Number.d.ts +2 -2
  476. package/extensions/forms/Field/Number/Number.js.map +1 -1
  477. package/extensions/forms/Field/Option/Option.d.ts +2 -0
  478. package/extensions/forms/Field/Option/Option.js +20 -0
  479. package/extensions/forms/Field/Option/Option.js.map +1 -1
  480. package/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCityDocs.d.ts +2 -0
  481. package/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCityDocs.js +18 -0
  482. package/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCityDocs.js.map +1 -0
  483. package/extensions/forms/Field/SelectCountry/SelectCountry.d.ts +2 -2
  484. package/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
  485. package/extensions/forms/Field/Selection/Selection.d.ts +11 -4
  486. package/extensions/forms/Field/Selection/Selection.js +20 -32
  487. package/extensions/forms/Field/Selection/Selection.js.map +1 -1
  488. package/extensions/forms/Field/Selection/SelectionDocs.d.ts +2 -0
  489. package/extensions/forms/Field/Selection/SelectionDocs.js +38 -0
  490. package/extensions/forms/Field/Selection/SelectionDocs.js.map +1 -0
  491. package/extensions/forms/Field/String/String.d.ts +2 -2
  492. package/extensions/forms/Field/String/String.js.map +1 -1
  493. package/extensions/forms/Field/index.d.ts +1 -0
  494. package/extensions/forms/Field/index.js +1 -0
  495. package/extensions/forms/Field/index.js.map +1 -1
  496. package/extensions/forms/FieldBlock/FieldBlock.d.ts +3 -3
  497. package/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  498. package/extensions/forms/Form/Handler/Handler.d.ts +1 -1
  499. package/extensions/forms/Form/Handler/Handler.js +8 -2
  500. package/extensions/forms/Form/Handler/Handler.js.map +1 -1
  501. package/extensions/forms/Form/MainHeading/MainHeading.js +1 -1
  502. package/extensions/forms/Form/MainHeading/MainHeading.js.map +1 -1
  503. package/extensions/forms/Form/MainHeading/style/dnb-form-main-heading.css +3 -3
  504. package/extensions/forms/Form/MainHeading/style/dnb-form-main-heading.min.css +1 -1
  505. package/extensions/forms/Form/MainHeading/style/dnb-form-main-heading.scss +1 -1
  506. package/extensions/forms/Form/SubHeading/SubHeading.js +1 -1
  507. package/extensions/forms/Form/SubHeading/SubHeading.js.map +1 -1
  508. package/extensions/forms/Form/SubHeading/style/dnb-form-sub-heading.css +2 -2
  509. package/extensions/forms/Form/SubHeading/style/dnb-form-sub-heading.min.css +1 -1
  510. package/extensions/forms/Form/SubHeading/style/dnb-form-sub-heading.scss +1 -1
  511. package/extensions/forms/Form/SubmitIndicator/SubmitIndicator.js +2 -2
  512. package/extensions/forms/Form/SubmitIndicator/SubmitIndicator.js.map +1 -1
  513. package/extensions/forms/Form/SubmitIndicator/style/dnb-form-submit-indicator.css +13 -13
  514. package/extensions/forms/Form/SubmitIndicator/style/dnb-form-submit-indicator.min.css +1 -1
  515. package/extensions/forms/Form/SubmitIndicator/style/dnb-form-submit-indicator.scss +1 -1
  516. package/extensions/forms/Iterate/AnimatedContainer/ElementBlock.js +4 -4
  517. package/extensions/forms/Iterate/AnimatedContainer/ElementBlock.js.map +1 -1
  518. package/extensions/forms/Iterate/Array/Array.js +2 -2
  519. package/extensions/forms/Iterate/Array/Array.js.map +1 -1
  520. package/extensions/forms/Iterate/EditContainer/EditContainer.js +1 -1
  521. package/extensions/forms/Iterate/EditContainer/EditContainer.js.map +1 -1
  522. package/extensions/forms/Iterate/PushButton/PushButton.js +1 -1
  523. package/extensions/forms/Iterate/PushButton/PushButton.js.map +1 -1
  524. package/extensions/forms/Iterate/RemoveButton/RemoveButton.js +1 -1
  525. package/extensions/forms/Iterate/RemoveButton/RemoveButton.js.map +1 -1
  526. package/extensions/forms/Iterate/Toolbar/Toolbar.js +1 -1
  527. package/extensions/forms/Iterate/Toolbar/Toolbar.js.map +1 -1
  528. package/extensions/forms/Iterate/ViewContainer/ViewContainer.js +1 -1
  529. package/extensions/forms/Iterate/ViewContainer/ViewContainer.js.map +1 -1
  530. package/extensions/forms/Iterate/style/dnb-form-iterate.css +14 -14
  531. package/extensions/forms/Iterate/style/dnb-form-iterate.min.css +1 -1
  532. package/extensions/forms/Iterate/style/dnb-form-iterate.scss +1 -1
  533. package/extensions/forms/Value/Boolean/Boolean.js +8 -3
  534. package/extensions/forms/Value/Boolean/Boolean.js.map +1 -1
  535. package/extensions/forms/Value/Name/Name.d.ts +10 -0
  536. package/extensions/forms/Value/Name/Name.js +40 -0
  537. package/extensions/forms/Value/Name/Name.js.map +1 -0
  538. package/extensions/forms/Value/Name/index.d.ts +2 -0
  539. package/extensions/forms/Value/Name/index.js +3 -0
  540. package/extensions/forms/Value/Name/index.js.map +1 -0
  541. package/extensions/forms/Value/OrganizationNumber/OrganizationNumber.d.ts +7 -0
  542. package/extensions/forms/Value/OrganizationNumber/OrganizationNumber.js +24 -0
  543. package/extensions/forms/Value/OrganizationNumber/OrganizationNumber.js.map +1 -0
  544. package/extensions/forms/Value/OrganizationNumber/index.d.ts +2 -0
  545. package/extensions/forms/Value/OrganizationNumber/index.js +3 -0
  546. package/extensions/forms/Value/OrganizationNumber/index.js.map +1 -0
  547. package/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCity.d.ts +7 -0
  548. package/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCity.js +31 -0
  549. package/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCity.js.map +1 -0
  550. package/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCityDocs.d.ts +2 -0
  551. package/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCityDocs.js +13 -0
  552. package/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCityDocs.js.map +1 -0
  553. package/extensions/forms/Value/PostalCodeAndCity/index.d.ts +2 -0
  554. package/extensions/forms/Value/PostalCodeAndCity/index.js +3 -0
  555. package/extensions/forms/Value/PostalCodeAndCity/index.js.map +1 -0
  556. package/extensions/forms/Value/String/String.js +8 -3
  557. package/extensions/forms/Value/String/String.js.map +1 -1
  558. package/extensions/forms/Value/SummaryList/SummaryList.js +1 -1
  559. package/extensions/forms/Value/SummaryList/SummaryList.js.map +1 -1
  560. package/extensions/forms/Value/ValueDocs.js +6 -1
  561. package/extensions/forms/Value/ValueDocs.js.map +1 -1
  562. package/extensions/forms/Value/index.d.ts +3 -0
  563. package/extensions/forms/Value/index.js +3 -0
  564. package/extensions/forms/Value/index.js.map +1 -1
  565. package/extensions/forms/ValueBlock/ValueBlock.js +2 -1
  566. package/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
  567. package/extensions/forms/ValueBlock/style/dnb-value-block.css +11 -6
  568. package/extensions/forms/ValueBlock/style/dnb-value-block.min.css +1 -1
  569. package/extensions/forms/ValueBlock/style/dnb-value-block.scss +11 -3
  570. package/extensions/forms/Wizard/Container/WizardContainer.js +17 -52
  571. package/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  572. package/extensions/forms/Wizard/Container/useHandleLayoutEffect.d.ts +9 -0
  573. package/extensions/forms/Wizard/Container/useHandleLayoutEffect.js +47 -0
  574. package/extensions/forms/Wizard/Container/useHandleLayoutEffect.js.map +1 -0
  575. package/extensions/forms/Wizard/Container/useStepAnimation.d.ts +4 -0
  576. package/extensions/forms/Wizard/Container/useStepAnimation.js +30 -0
  577. package/extensions/forms/Wizard/Container/useStepAnimation.js.map +1 -0
  578. package/extensions/forms/Wizard/Step/Step.js +14 -2
  579. package/extensions/forms/Wizard/Step/Step.js.map +1 -1
  580. package/extensions/forms/Wizard/hooks/useStep.js +3 -2
  581. package/extensions/forms/Wizard/hooks/useStep.js.map +1 -1
  582. package/extensions/forms/Wizard/style/dnb-wizard-layout.css +29 -2
  583. package/extensions/forms/Wizard/style/dnb-wizard-layout.min.css +1 -1
  584. package/extensions/forms/Wizard/style/dnb-wizard-layout.scss +35 -2
  585. package/extensions/forms/constants/locales/en-GB.d.ts +9 -0
  586. package/extensions/forms/constants/locales/en-GB.js +12 -3
  587. package/extensions/forms/constants/locales/en-GB.js.map +1 -1
  588. package/extensions/forms/constants/locales/en-US.d.ts +9 -0
  589. package/extensions/forms/constants/locales/index.d.ts +18 -0
  590. package/extensions/forms/constants/locales/nb-NO.d.ts +9 -0
  591. package/extensions/forms/constants/locales/nb-NO.js +11 -2
  592. package/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  593. package/extensions/forms/style/dnb-forms.css +77 -43
  594. package/extensions/forms/style/dnb-forms.min.css +1 -1
  595. package/extensions/forms/types.d.ts +3 -2
  596. package/extensions/forms/types.js.map +1 -1
  597. package/fragments/drawer-list/DrawerList.d.ts +8 -4
  598. package/package.json +1 -1
  599. package/shared/Context.d.ts +2 -4
  600. package/shared/Context.js.map +1 -1
  601. package/shared/Eufemia.d.ts +1 -1
  602. package/shared/Eufemia.js +2 -2
  603. package/shared/Eufemia.js.map +1 -1
  604. package/shared/component-helper.js +1 -1
  605. package/shared/component-helper.js.map +1 -1
  606. package/style/core/scopes.scss +1 -1
  607. package/style/dnb-ui-basis.css +1 -1
  608. package/style/dnb-ui-basis.min.css +1 -1
  609. package/style/dnb-ui-body.css +1 -1
  610. package/style/dnb-ui-body.min.css +1 -1
  611. package/style/dnb-ui-components.css +129 -98
  612. package/style/dnb-ui-components.min.css +2 -2
  613. package/style/dnb-ui-core.css +1 -1
  614. package/style/dnb-ui-core.min.css +1 -1
  615. package/style/dnb-ui-extensions.css +77 -43
  616. package/style/dnb-ui-extensions.min.css +1 -1
  617. package/style/dnb-ui-forms.css +77 -43
  618. package/style/dnb-ui-forms.min.css +1 -1
  619. package/style/dnb-ui-forms.scss +1 -1
  620. package/style/themes/theme-eiendom/eiendom-theme-components.css +205 -141
  621. package/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  622. package/style/themes/theme-eiendom/eiendom-theme-extensions.css +77 -43
  623. package/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  624. package/style/themes/theme-eiendom/eiendom-theme-forms.css +77 -43
  625. package/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  626. package/style/themes/theme-sbanken/sbanken-theme-components.css +205 -141
  627. package/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  628. package/style/themes/theme-sbanken/sbanken-theme-extensions.css +77 -43
  629. package/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  630. package/style/themes/theme-sbanken/sbanken-theme-forms.css +77 -43
  631. package/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  632. package/style/themes/theme-ui/ui-theme-components.css +205 -141
  633. package/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  634. package/style/themes/theme-ui/ui-theme-extensions.css +77 -43
  635. package/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  636. package/style/themes/theme-ui/ui-theme-forms.css +77 -43
  637. package/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  638. package/umd/dnb-ui-basis.min.js +1 -1
  639. package/umd/dnb-ui-components.min.js +1 -1
  640. package/umd/dnb-ui-elements.min.js +1 -1
  641. package/umd/dnb-ui-extensions.min.js +3 -3
  642. package/umd/dnb-ui-lib.min.js +1 -1
  643. /package/cjs/extensions/forms/Form/Element/style/{dnb-forms-element.css → dnb-form-element.css} +0 -0
  644. /package/cjs/extensions/forms/Form/Element/style/{dnb-forms-element.min.css → dnb-form-element.min.css} +0 -0
  645. /package/cjs/extensions/forms/Form/Element/style/{dnb-forms-element.scss → dnb-form-element.scss} +0 -0
  646. /package/es/extensions/forms/Form/Element/style/{dnb-forms-element.css → dnb-form-element.css} +0 -0
  647. /package/es/extensions/forms/Form/Element/style/{dnb-forms-element.min.css → dnb-form-element.min.css} +0 -0
  648. /package/es/extensions/forms/Form/Element/style/{dnb-forms-element.scss → dnb-form-element.scss} +0 -0
  649. /package/extensions/forms/Form/Element/style/{dnb-forms-element.css → dnb-form-element.css} +0 -0
  650. /package/extensions/forms/Form/Element/style/{dnb-forms-element.min.css → dnb-form-element.min.css} +0 -0
  651. /package/extensions/forms/Form/Element/style/{dnb-forms-element.scss → dnb-form-element.scss} +0 -0
@@ -14,6 +14,9 @@ export type FilterDataHandler<Data> = (data: Data, filter: FilterData) => Partia
14
14
  export type FilterData = (path: Path, value: any, props: FieldProps, internal: {
15
15
  error: Error | undefined;
16
16
  }) => boolean | undefined;
17
+ export type TransformData = (path: Path, value: any, props: FieldProps, internal: {
18
+ error: Error | undefined;
19
+ }) => any;
17
20
  export interface ContextState {
18
21
  id?: Identifier;
19
22
  hasContext: boolean;
@@ -27,7 +30,8 @@ export interface ContextState {
27
30
  handlePathChangeUnvalidated: (path: Path, value: any) => void;
28
31
  updateDataValue: (path: Path, value: any) => void;
29
32
  setData: (data: any) => void;
30
- filterDataHandler: (data: any, filter: FilterData) => any;
33
+ mutateDataHandler?: (data: any, mutate: TransformData) => any;
34
+ filterDataHandler?: (data: any, filter: FilterData) => any;
31
35
  validateData: () => void;
32
36
  handleSubmit: (props?: HandleSubmitProps) => any;
33
37
  scrollToTop: () => void;
@@ -10,7 +10,6 @@ export const defaultContextState = {
10
10
  handlePathChangeUnvalidated: () => null,
11
11
  updateDataValue: () => null,
12
12
  setData: () => null,
13
- filterDataHandler: () => null,
14
13
  validateData: () => null,
15
14
  handleSubmit: () => null,
16
15
  scrollToTop: () => null,
@@ -1 +1 @@
1
- {"version":3,"file":"Context.js","names":["React","makeAjvInstance","defaultContextState","hasContext","data","undefined","schema","disabled","submitState","handlePathChange","handlePathChangeUnvalidated","updateDataValue","setData","filterDataHandler","validateData","handleSubmit","scrollToTop","showAllErrors","formState","setFormState","setSubmitState","setFieldEventListener","handleSubmitCall","setShowAllErrors","mountedFieldPaths","handleMountField","handleUnMountField","hasErrors","hasFieldState","checkFieldStateFor","setFieldState","setFieldError","setProps","ajvInstance","contextErrorMessages","_isInsideFormElement","props","Context","createContext"],"sources":["../../../../../src/extensions/forms/DataContext/Context.ts"],"sourcesContent":["import React from 'react'\nimport { Ajv, makeAjvInstance } from '../utils/ajv'\nimport {\n AllJSONSchemaVersions,\n CustomErrorMessagesWithPaths,\n SubmitState,\n Path,\n EventStateObject,\n EventReturnWithStateObject,\n Identifier,\n FieldProps,\n FormError,\n} from '../types'\nimport { Props as ProviderProps } from './Provider'\n\ntype HandleSubmitProps = {\n formElement?: HTMLFormElement\n}\n\nexport type EventListenerCall = {\n path: Path\n type: 'onSubmit'\n callback: () => any\n}\n\nexport type FilterDataHandler<Data> = (\n data: Data,\n filter: FilterData\n) => Partial<Data>\nexport type FilterData = (\n path: Path,\n value: any,\n props: FieldProps,\n internal: {\n error: Error | undefined\n }\n) => boolean | undefined\n\nexport interface ContextState {\n id?: Identifier\n hasContext: boolean\n /** The dataset for the form / form wizard */\n data: any\n /** Should the form validate data before submitting? */\n errors?: Record<string, Error>\n /** Will set autoComplete=\"on\" on each nested Field.String and Field.Number */\n autoComplete?: boolean\n handlePathChange: (\n path: Path,\n value?: any\n ) =>\n | EventReturnWithStateObject\n | unknown\n | Promise<EventReturnWithStateObject | unknown>\n handlePathChangeUnvalidated: (path: Path, value: any) => void\n updateDataValue: (path: Path, value: any) => void\n setData: (data: any) => void\n filterDataHandler: (data: any, filter: FilterData) => any\n validateData: () => void\n handleSubmit: (props?: HandleSubmitProps) => any\n scrollToTop: () => void\n // Error status\n showAllErrors: boolean\n setShowAllErrors: (showAllErrors: boolean) => void\n hasErrors: () => boolean\n hasFieldState: (state: SubmitState) => boolean\n checkFieldStateFor: (path: Path, state: SubmitState) => boolean\n setFieldState: (path: Path, fieldState: SubmitState) => void\n setFieldError: (path: Path, error: Error | FormError) => void\n // Mounted fields - Components telling the provider what fields is on screen at any time\n mountedFieldPaths: string[]\n handleMountField: (path: Path) => void\n handleUnMountField: (path: Path) => void\n formState: SubmitState\n setFormState?: (state: SubmitState) => void\n setSubmitState?: (state: EventStateObject) => void\n handleSubmitCall: ({\n onSubmit,\n enableAsyncBehaviour,\n skipFieldValidation,\n skipErrorCheck,\n }: {\n onSubmit: () =>\n | EventReturnWithStateObject\n | void\n | Promise<EventReturnWithStateObject | void>\n enableAsyncBehaviour: boolean\n skipFieldValidation?: boolean\n skipErrorCheck?: boolean\n }) => void\n setFieldEventListener: (\n path: EventListenerCall['path'],\n type: EventListenerCall['type'],\n callback: EventListenerCall['callback']\n ) => void\n setProps: (path: Path, props: any) => void\n ajvInstance: Ajv\n contextErrorMessages: CustomErrorMessagesWithPaths\n schema: AllJSONSchemaVersions\n disabled: boolean\n submitState: Partial<EventStateObject>\n _isInsideFormElement?: boolean\n props: ProviderProps<unknown>\n}\n\nexport const defaultContextState: ContextState = {\n hasContext: false,\n data: undefined,\n schema: undefined,\n disabled: undefined,\n submitState: undefined,\n handlePathChange: () => null,\n handlePathChangeUnvalidated: () => null,\n updateDataValue: () => null,\n setData: () => null,\n filterDataHandler: () => null,\n validateData: () => null,\n handleSubmit: () => null,\n scrollToTop: () => null,\n showAllErrors: false,\n formState: undefined,\n setFormState: () => null,\n setSubmitState: () => null,\n setFieldEventListener: () => null,\n handleSubmitCall: () => null,\n setShowAllErrors: () => null,\n mountedFieldPaths: [],\n handleMountField: () => null,\n handleUnMountField: () => null,\n hasErrors: () => false,\n hasFieldState: () => false,\n checkFieldStateFor: () => false,\n setFieldState: () => null,\n setFieldError: () => null,\n setProps: () => null,\n ajvInstance: makeAjvInstance(),\n contextErrorMessages: undefined,\n _isInsideFormElement: false,\n props: null,\n}\n\nconst Context = React.createContext<ContextState>(defaultContextState)\n\nexport default Context\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAAcC,eAAe,QAAQ,cAAc;AAwGnD,OAAO,MAAMC,mBAAiC,GAAG;EAC/CC,UAAU,EAAE,KAAK;EACjBC,IAAI,EAAEC,SAAS;EACfC,MAAM,EAAED,SAAS;EACjBE,QAAQ,EAAEF,SAAS;EACnBG,WAAW,EAAEH,SAAS;EACtBI,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,2BAA2B,EAAEA,CAAA,KAAM,IAAI;EACvCC,eAAe,EAAEA,CAAA,KAAM,IAAI;EAC3BC,OAAO,EAAEA,CAAA,KAAM,IAAI;EACnBC,iBAAiB,EAAEA,CAAA,KAAM,IAAI;EAC7BC,YAAY,EAAEA,CAAA,KAAM,IAAI;EACxBC,YAAY,EAAEA,CAAA,KAAM,IAAI;EACxBC,WAAW,EAAEA,CAAA,KAAM,IAAI;EACvBC,aAAa,EAAE,KAAK;EACpBC,SAAS,EAAEb,SAAS;EACpBc,YAAY,EAAEA,CAAA,KAAM,IAAI;EACxBC,cAAc,EAAEA,CAAA,KAAM,IAAI;EAC1BC,qBAAqB,EAAEA,CAAA,KAAM,IAAI;EACjCC,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,iBAAiB,EAAE,EAAE;EACrBC,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,kBAAkB,EAAEA,CAAA,KAAM,IAAI;EAC9BC,SAAS,EAAEA,CAAA,KAAM,KAAK;EACtBC,aAAa,EAAEA,CAAA,KAAM,KAAK;EAC1BC,kBAAkB,EAAEA,CAAA,KAAM,KAAK;EAC/BC,aAAa,EAAEA,CAAA,KAAM,IAAI;EACzBC,aAAa,EAAEA,CAAA,KAAM,IAAI;EACzBC,QAAQ,EAAEA,CAAA,KAAM,IAAI;EACpBC,WAAW,EAAEhC,eAAe,CAAC,CAAC;EAC9BiC,oBAAoB,EAAE7B,SAAS;EAC/B8B,oBAAoB,EAAE,KAAK;EAC3BC,KAAK,EAAE;AACT,CAAC;AAED,MAAMC,OAAO,GAAGrC,KAAK,CAACsC,aAAa,CAAepC,mBAAmB,CAAC;AAEtE,eAAemC,OAAO"}
1
+ {"version":3,"file":"Context.js","names":["React","makeAjvInstance","defaultContextState","hasContext","data","undefined","schema","disabled","submitState","handlePathChange","handlePathChangeUnvalidated","updateDataValue","setData","validateData","handleSubmit","scrollToTop","showAllErrors","formState","setFormState","setSubmitState","setFieldEventListener","handleSubmitCall","setShowAllErrors","mountedFieldPaths","handleMountField","handleUnMountField","hasErrors","hasFieldState","checkFieldStateFor","setFieldState","setFieldError","setProps","ajvInstance","contextErrorMessages","_isInsideFormElement","props","Context","createContext"],"sources":["../../../../../src/extensions/forms/DataContext/Context.ts"],"sourcesContent":["import React from 'react'\nimport { Ajv, makeAjvInstance } from '../utils/ajv'\nimport {\n AllJSONSchemaVersions,\n CustomErrorMessagesWithPaths,\n SubmitState,\n Path,\n EventStateObject,\n EventReturnWithStateObject,\n Identifier,\n FieldProps,\n FormError,\n} from '../types'\nimport { Props as ProviderProps } from './Provider'\n\ntype HandleSubmitProps = {\n formElement?: HTMLFormElement\n}\n\nexport type EventListenerCall = {\n path: Path\n type: 'onSubmit'\n callback: () => any\n}\n\nexport type FilterDataHandler<Data> = (\n data: Data,\n filter: FilterData\n) => Partial<Data>\nexport type FilterData = (\n path: Path,\n value: any,\n props: FieldProps,\n internal: {\n error: Error | undefined\n }\n) => boolean | undefined\nexport type TransformData = (\n path: Path,\n value: any,\n props: FieldProps,\n internal: {\n error: Error | undefined\n }\n) => any\n\nexport interface ContextState {\n id?: Identifier\n hasContext: boolean\n /** The dataset for the form / form wizard */\n data: any\n /** Should the form validate data before submitting? */\n errors?: Record<string, Error>\n /** Will set autoComplete=\"on\" on each nested Field.String and Field.Number */\n autoComplete?: boolean\n handlePathChange: (\n path: Path,\n value?: any\n ) =>\n | EventReturnWithStateObject\n | unknown\n | Promise<EventReturnWithStateObject | unknown>\n handlePathChangeUnvalidated: (path: Path, value: any) => void\n updateDataValue: (path: Path, value: any) => void\n setData: (data: any) => void\n mutateDataHandler?: (data: any, mutate: TransformData) => any\n filterDataHandler?: (data: any, filter: FilterData) => any\n validateData: () => void\n handleSubmit: (props?: HandleSubmitProps) => any\n scrollToTop: () => void\n // Error status\n showAllErrors: boolean\n setShowAllErrors: (showAllErrors: boolean) => void\n hasErrors: () => boolean\n hasFieldState: (state: SubmitState) => boolean\n checkFieldStateFor: (path: Path, state: SubmitState) => boolean\n setFieldState: (path: Path, fieldState: SubmitState) => void\n setFieldError: (path: Path, error: Error | FormError) => void\n // Mounted fields - Components telling the provider what fields is on screen at any time\n mountedFieldPaths: string[]\n handleMountField: (path: Path) => void\n handleUnMountField: (path: Path) => void\n formState: SubmitState\n setFormState?: (state: SubmitState) => void\n setSubmitState?: (state: EventStateObject) => void\n handleSubmitCall: ({\n onSubmit,\n enableAsyncBehaviour,\n skipFieldValidation,\n skipErrorCheck,\n }: {\n onSubmit: () =>\n | EventReturnWithStateObject\n | void\n | Promise<EventReturnWithStateObject | void>\n enableAsyncBehaviour: boolean\n skipFieldValidation?: boolean\n skipErrorCheck?: boolean\n }) => void\n setFieldEventListener: (\n path: EventListenerCall['path'],\n type: EventListenerCall['type'],\n callback: EventListenerCall['callback']\n ) => void\n setProps: (path: Path, props: any) => void\n ajvInstance: Ajv\n contextErrorMessages: CustomErrorMessagesWithPaths\n schema: AllJSONSchemaVersions\n disabled: boolean\n submitState: Partial<EventStateObject>\n _isInsideFormElement?: boolean\n props: ProviderProps<unknown>\n}\n\nexport const defaultContextState: ContextState = {\n hasContext: false,\n data: undefined,\n schema: undefined,\n disabled: undefined,\n submitState: undefined,\n handlePathChange: () => null,\n handlePathChangeUnvalidated: () => null,\n updateDataValue: () => null,\n setData: () => null,\n validateData: () => null,\n handleSubmit: () => null,\n scrollToTop: () => null,\n showAllErrors: false,\n formState: undefined,\n setFormState: () => null,\n setSubmitState: () => null,\n setFieldEventListener: () => null,\n handleSubmitCall: () => null,\n setShowAllErrors: () => null,\n mountedFieldPaths: [],\n handleMountField: () => null,\n handleUnMountField: () => null,\n hasErrors: () => false,\n hasFieldState: () => false,\n checkFieldStateFor: () => false,\n setFieldState: () => null,\n setFieldError: () => null,\n setProps: () => null,\n ajvInstance: makeAjvInstance(),\n contextErrorMessages: undefined,\n _isInsideFormElement: false,\n props: null,\n}\n\nconst Context = React.createContext<ContextState>(defaultContextState)\n\nexport default Context\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAAcC,eAAe,QAAQ,cAAc;AAiHnD,OAAO,MAAMC,mBAAiC,GAAG;EAC/CC,UAAU,EAAE,KAAK;EACjBC,IAAI,EAAEC,SAAS;EACfC,MAAM,EAAED,SAAS;EACjBE,QAAQ,EAAEF,SAAS;EACnBG,WAAW,EAAEH,SAAS;EACtBI,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,2BAA2B,EAAEA,CAAA,KAAM,IAAI;EACvCC,eAAe,EAAEA,CAAA,KAAM,IAAI;EAC3BC,OAAO,EAAEA,CAAA,KAAM,IAAI;EACnBC,YAAY,EAAEA,CAAA,KAAM,IAAI;EACxBC,YAAY,EAAEA,CAAA,KAAM,IAAI;EACxBC,WAAW,EAAEA,CAAA,KAAM,IAAI;EACvBC,aAAa,EAAE,KAAK;EACpBC,SAAS,EAAEZ,SAAS;EACpBa,YAAY,EAAEA,CAAA,KAAM,IAAI;EACxBC,cAAc,EAAEA,CAAA,KAAM,IAAI;EAC1BC,qBAAqB,EAAEA,CAAA,KAAM,IAAI;EACjCC,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,iBAAiB,EAAE,EAAE;EACrBC,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,kBAAkB,EAAEA,CAAA,KAAM,IAAI;EAC9BC,SAAS,EAAEA,CAAA,KAAM,KAAK;EACtBC,aAAa,EAAEA,CAAA,KAAM,KAAK;EAC1BC,kBAAkB,EAAEA,CAAA,KAAM,KAAK;EAC/BC,aAAa,EAAEA,CAAA,KAAM,IAAI;EACzBC,aAAa,EAAEA,CAAA,KAAM,IAAI;EACzBC,QAAQ,EAAEA,CAAA,KAAM,IAAI;EACpBC,WAAW,EAAE/B,eAAe,CAAC,CAAC;EAC9BgC,oBAAoB,EAAE5B,SAAS;EAC/B6B,oBAAoB,EAAE,KAAK;EAC3BC,KAAK,EAAE;AACT,CAAC;AAED,MAAMC,OAAO,GAAGpC,KAAK,CAACqC,aAAa,CAAenC,mBAAmB,CAAC;AAEtE,eAAekC,OAAO"}
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import { JsonObject } from 'json-pointer';
3
3
  import { Ajv } from '../../utils/ajv';
4
4
  import { CustomErrorMessagesWithPaths, AllJSONSchemaVersions, Path, OnSubmit, OnChange, EventReturnWithStateObject } from '../../types';
5
- import { FilterData } from '../Context';
5
+ import { FilterData, TransformData } from '../Context';
6
6
  export interface Props<Data extends JsonObject> {
7
7
  /**
8
8
  * Unique ID to communicate with the hook Form.useData
@@ -15,11 +15,11 @@ export interface Props<Data extends JsonObject> {
15
15
  /**
16
16
  * Default source data, only used if no other source is available, and not leading to updates if changed after mount
17
17
  */
18
- defaultData?: Partial<Data>;
18
+ defaultData?: Data;
19
19
  /**
20
20
  * Source data, will be used instead of defaultData, and leading to updates if changed after mount
21
21
  */
22
- data?: Partial<Data>;
22
+ data?: Data;
23
23
  /**
24
24
  * JSON Schema to validate the data against.
25
25
  */
@@ -33,9 +33,21 @@ export interface Props<Data extends JsonObject> {
33
33
  */
34
34
  errorMessages?: CustomErrorMessagesWithPaths;
35
35
  /**
36
- * Filter the internal data context based on your criteria: `(path, value, props) => !props?.disabled`. It will iterate on each data entry.
36
+ * Filter the `onSubmit` output data, based on your criteria: `(path, value, props, internal) => !props?.disabled`. It will iterate on each data entry (/path). Return false to exclude the entry.
37
+ */
38
+ filterSubmitData?: FilterData;
39
+ /**
40
+ * @deprecated Use `filterSubmitData` instead
37
41
  */
38
42
  filterData?: FilterData;
43
+ /**
44
+ * Transform the data context (internally as well) based on your criteria: `(path, value, props, internal) => 'new value'`. It will iterate on each data entry (/path).
45
+ */
46
+ transformIn?: TransformData;
47
+ /**
48
+ * Mutate the data before it enters onSubmit or onChange based on your criteria: `(path, value, props, internal) => 'new value'`. It will iterate on each data entry (/path).
49
+ */
50
+ transformOut?: TransformData;
39
51
  /**
40
52
  * Change handler for the whole data set.
41
53
  * You can provide an async function to show an indicator on the current label during a field change.
@@ -49,7 +61,7 @@ export interface Props<Data extends JsonObject> {
49
61
  * Will emit on a form submit – if validation has passed.
50
62
  * You can provide an async function to shows a submit indicator during submit. All form elements will be disabled during the submit.
51
63
  */
52
- onSubmit?: OnSubmit;
64
+ onSubmit?: OnSubmit<Data>;
53
65
  /**
54
66
  * Submit was requested, but data was invalid
55
67
  */
@@ -2,12 +2,13 @@
2
2
 
3
3
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
4
4
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
5
- const _excluded = ["id", "globalStatusId", "defaultData", "data", "schema", "onChange", "onPathChange", "onSubmit", "onSubmitRequest", "onSubmitComplete", "scrollTopOnSubmit", "minimumAsyncBehaviorTime", "asyncSubmitTimeout", "sessionStorageId", "ajvInstance", "filterData", "errorMessages", "children"];
5
+ const _excluded = ["id", "globalStatusId", "defaultData", "data", "schema", "onChange", "onPathChange", "onSubmit", "onSubmitRequest", "onSubmitComplete", "scrollTopOnSubmit", "minimumAsyncBehaviorTime", "asyncSubmitTimeout", "sessionStorageId", "ajvInstance", "transformIn", "transformOut", "filterSubmitData", "filterData", "errorMessages", "children"];
6
6
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
7
7
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
8
8
  import React, { useRef, useMemo, useCallback, useReducer, useEffect } from 'react';
9
9
  import pointer from 'json-pointer';
10
10
  import { makeAjvInstance, ajvErrorsToFormErrors } from '../../utils/ajv';
11
+ import { debounce } from '../../../../shared/helpers';
11
12
  import SharedProvider from '../../../../shared/Provider';
12
13
  import useMountEffect from '../../../../shared/helpers/useMountEffect';
13
14
  import useUpdateEffect from '../../../../shared/helpers/useUpdateEffect';
@@ -19,7 +20,7 @@ import structuredClone from '@ungap/structured-clone';
19
20
  const useLayoutEffect = typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect;
20
21
  const isArrayJsonPointer = /^\/\d+(\/|$)/;
21
22
  export default function Provider(props) {
22
- var _sharedAttachments$da, _rest$disabled;
23
+ var _sharedAttachments$da;
23
24
  const [, forceUpdate] = useReducer(() => ({}), {});
24
25
  const {
25
26
  id,
@@ -37,6 +38,9 @@ export default function Provider(props) {
37
38
  asyncSubmitTimeout,
38
39
  sessionStorageId,
39
40
  ajvInstance,
41
+ transformIn,
42
+ transformOut,
43
+ filterSubmitData,
40
44
  filterData,
41
45
  errorMessages: contextErrorMessages,
42
46
  children
@@ -117,25 +121,41 @@ export default function Provider(props) {
117
121
  forceUpdate();
118
122
  }
119
123
  }, []);
120
- const filterDataHandler = useCallback(function (data) {
121
- let filter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : filterData;
122
- if (filter) {
123
- const filtered = _objectSpread({}, data);
124
+ const mutateDataHandler = useCallback(function (data, fn) {
125
+ let remove = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
126
+ if (fn) {
124
127
  Object.entries(fieldPropsRef.current).forEach(_ref => {
125
- var _fieldErrorRef$curren;
126
128
  let [path, props] = _ref;
127
129
  const exists = pointer.has(data, path);
128
- const result = filter(path, exists ? pointer.get(data, path) : undefined, props, {
129
- error: (_fieldErrorRef$curren = fieldErrorRef.current) === null || _fieldErrorRef$curren === void 0 ? void 0 : _fieldErrorRef$curren[path]
130
- });
131
- if (result === false && exists) {
132
- pointer.remove(filtered, path);
130
+ if (exists) {
131
+ var _fieldErrorRef$curren;
132
+ const result = fn(path, pointer.get(data, path), props, {
133
+ error: (_fieldErrorRef$curren = fieldErrorRef.current) === null || _fieldErrorRef$curren === void 0 ? void 0 : _fieldErrorRef$curren[path]
134
+ });
135
+ if (remove) {
136
+ if (result === false) {
137
+ data = structuredClone(data);
138
+ pointer.remove(data, path);
139
+ }
140
+ } else {
141
+ if (typeof result !== 'undefined') {
142
+ data = structuredClone(data);
143
+ pointer.set(data, path, result);
144
+ }
145
+ }
133
146
  }
134
147
  });
135
- return filtered;
148
+ return data;
136
149
  }
137
150
  return data;
138
- }, [filterData]);
151
+ }, []);
152
+ const filterDataHandler = useCallback(function (data) {
153
+ let filter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : filterData || filterSubmitData;
154
+ if (filter) {
155
+ return mutateDataHandler(data, filter, true);
156
+ }
157
+ return data;
158
+ }, [filterData, filterSubmitData, mutateDataHandler]);
139
159
  const fieldPropsRef = useRef({});
140
160
  const setProps = useCallback((path, props) => {
141
161
  fieldPropsRef.current[path] = _objectSpread(_objectSpread({}, fieldPropsRef.current[path]), props);
@@ -197,11 +217,17 @@ export default function Provider(props) {
197
217
  setShowAllErrors,
198
218
  setSubmitState
199
219
  });
200
- if (filterData) {
220
+ if (filterData || filterSubmitData) {
201
221
  rerenderUseDataHook === null || rerenderUseDataHook === void 0 ? void 0 : rerenderUseDataHook();
202
222
  }
203
223
  }
204
- }, [extendAttachment, filterData, filterDataHandler, hasErrors, id, rerenderUseDataHook, setShowAllErrors, setSubmitState]);
224
+ }, [extendAttachment, filterData, filterDataHandler, filterSubmitData, hasErrors, id, rerenderUseDataHook, setShowAllErrors, setSubmitState]);
225
+ const storeInSession = useMemo(() => {
226
+ return debounce(() => {
227
+ var _window$sessionStorag2;
228
+ (_window$sessionStorag2 = window.sessionStorage) === null || _window$sessionStorag2 === void 0 ? void 0 : _window$sessionStorag2.setItem(sessionStorageId, JSON.stringify(internalDataRef.current));
229
+ }, process.env.NODE_ENV === 'test' ? 1 : 800);
230
+ }, [sessionStorageId]);
205
231
  const updateDataValue = useCallback((path, value) => {
206
232
  var _internalDataRef$curr;
207
233
  if (!path) {
@@ -217,20 +243,21 @@ export default function Provider(props) {
217
243
  if (path !== '/') {
218
244
  pointer.set(newData, path, value);
219
245
  }
246
+ if (transformIn) {
247
+ newData = mutateDataHandler(newData, transformIn);
248
+ }
220
249
  internalDataRef.current = newData;
221
250
  if (id) {
222
251
  extendSharedData === null || extendSharedData === void 0 ? void 0 : extendSharedData(newData);
223
- if (filterData) {
252
+ if (filterData || filterSubmitData) {
224
253
  rerenderUseDataHook === null || rerenderUseDataHook === void 0 ? void 0 : rerenderUseDataHook();
225
254
  }
226
255
  }
227
256
  if (sessionStorageId && typeof window !== 'undefined') {
228
- var _window$sessionStorag2;
229
- (_window$sessionStorag2 = window.sessionStorage) === null || _window$sessionStorag2 === void 0 ? void 0 : _window$sessionStorag2.setItem(sessionStorageId, JSON.stringify(newData));
257
+ storeInSession();
230
258
  }
231
259
  forceUpdate();
232
- return newData;
233
- }, [id, sessionStorageId, extendSharedData, filterData, rerenderUseDataHook]);
260
+ }, [extendSharedData, filterData, filterSubmitData, id, mutateDataHandler, rerenderUseDataHook, sessionStorageId, storeInSession, transformIn]);
234
261
  const setData = useCallback(newData => {
235
262
  internalDataRef.current = newData;
236
263
  forceUpdate();
@@ -256,11 +283,13 @@ export default function Provider(props) {
256
283
  }
257
284
  showAllErrorsRef.current = false;
258
285
  validateData();
286
+ const data = internalDataRef.current;
287
+ const transformedData = transformOut ? mutateDataHandler(data, transformOut) : data;
259
288
  if (isAsync(onChange)) {
260
- return await onChange(internalDataRef.current);
289
+ return await onChange(transformedData);
261
290
  }
262
- return onChange === null || onChange === void 0 ? void 0 : onChange(internalDataRef.current);
263
- }, [handlePathChangeUnvalidated, onChange, validateData]);
291
+ return onChange === null || onChange === void 0 ? void 0 : onChange(transformedData);
292
+ }, [handlePathChangeUnvalidated, mutateDataHandler, onChange, transformOut, validateData]);
264
293
  const handleMountField = useCallback(path => {
265
294
  mountedFieldPathsRef.current = addListPath(mountedFieldPathsRef.current, path);
266
295
  }, []);
@@ -358,7 +387,8 @@ export default function Provider(props) {
358
387
  handleSubmitCall({
359
388
  enableAsyncBehaviour: isAsync(onSubmit),
360
389
  onSubmit: async () => {
361
- const args = filterDataHandler(internalDataRef.current);
390
+ const data = internalDataRef.current;
391
+ const filteredData = filterDataHandler(transformOut ? mutateDataHandler(data, transformOut) : data);
362
392
  const opts = {
363
393
  resetForm: () => {
364
394
  var _formElement$reset;
@@ -381,11 +411,11 @@ export default function Provider(props) {
381
411
  };
382
412
  let result = undefined;
383
413
  if (isAsync(onSubmit)) {
384
- result = await onSubmit(args, opts);
414
+ result = await onSubmit(filteredData, opts);
385
415
  } else {
386
- result = onSubmit === null || onSubmit === void 0 ? void 0 : onSubmit(args, opts);
416
+ result = onSubmit === null || onSubmit === void 0 ? void 0 : onSubmit(filteredData, opts);
387
417
  }
388
- const completeResult = await (onSubmitComplete === null || onSubmitComplete === void 0 ? void 0 : onSubmitComplete(args, result));
418
+ const completeResult = await (onSubmitComplete === null || onSubmitComplete === void 0 ? void 0 : onSubmitComplete(filteredData, result));
389
419
  if (completeResult) {
390
420
  result = Object.keys(result).length > 0 ? _objectSpread(_objectSpread({}, result), completeResult) : completeResult;
391
421
  }
@@ -395,7 +425,7 @@ export default function Provider(props) {
395
425
  return result;
396
426
  }
397
427
  });
398
- }, [filterDataHandler, handleSubmitCall, id, onSubmit, onSubmitComplete, scrollToTop, scrollTopOnSubmit, sessionStorageId, setSharedData]);
428
+ }, [filterDataHandler, handleSubmitCall, id, mutateDataHandler, onSubmit, onSubmitComplete, scrollToTop, scrollTopOnSubmit, sessionStorageId, setSharedData, transformOut]);
399
429
  const fieldEventListenersRef = useRef([]);
400
430
  const setFieldEventListener = useCallback((path, type, callback) => {
401
431
  fieldEventListenersRef.current = fieldEventListenersRef.current.filter(_ref2 => {
@@ -451,7 +481,7 @@ export default function Provider(props) {
451
481
  onTimeout
452
482
  });
453
483
  const submitState = submitStateRef.current;
454
- const disabled = (_rest$disabled = rest === null || rest === void 0 ? void 0 : rest['disabled']) !== null && _rest$disabled !== void 0 ? _rest$disabled : formState === 'pending';
484
+ const disabled = typeof (rest === null || rest === void 0 ? void 0 : rest['disabled']) === 'boolean' ? rest === null || rest === void 0 ? void 0 : rest['disabled'] : formState === 'pending' === true ? true : undefined;
455
485
  return React.createElement(Context.Provider, {
456
486
  value: _objectSpread({
457
487
  handlePathChange,
@@ -1 +1 @@
1
- {"version":3,"file":"Provider.js","names":["React","useRef","useMemo","useCallback","useReducer","useEffect","pointer","makeAjvInstance","ajvErrorsToFormErrors","SharedProvider","useMountEffect","useUpdateEffect","isAsync","useSharedState","useTranslation","Context","structuredClone","useLayoutEffect","window","isArrayJsonPointer","Provider","props","_sharedAttachments$da","_rest$disabled","forceUpdate","id","globalStatusId","defaultData","data","schema","onChange","onPathChange","onSubmit","onSubmitRequest","onSubmitComplete","scrollTopOnSubmit","minimumAsyncBehaviorTime","asyncSubmitTimeout","sessionStorageId","ajvInstance","filterData","errorMessages","contextErrorMessages","children","rest","_objectWithoutProperties","_excluded","undefined","console","error","translation","Form","ajvRef","mountedFieldPathsRef","errorsRef","showAllErrorsRef","setShowAllErrors","showAllErrors","current","submitStateRef","setSubmitState","state","Object","assign","formStateRef","setFormState","formState","fieldErrorRef","fieldStateRef","initialData","_window$sessionStorag","sessionDataJSON","sessionStorage","getItem","JSON","parse","internalDataRef","ajvValidatorRef","executeAjvValidator","_ajvValidatorRef$curr","call","errors","validateData","checkFieldStateFor","path","_errorsRef$current","Boolean","Error","hasFieldState","some","hasErrors","setFieldError","setFieldState","fieldState","filterDataHandler","filter","arguments","length","filtered","_objectSpread","entries","fieldPropsRef","forEach","_ref","_fieldErrorRef$curren","exists","has","result","get","remove","setProps","hasFieldWithAsyncValidator","validator","onBlurValidator","sharedData","sharedAttachments","setSharedData","set","extendSharedData","extend","extendAttachment","rerenderUseDataHook","cacheRef","shared","hasUsedInitialData","update","updateDataValue","value","_internalDataRef$curr","givenData","match","newData","e","_window$sessionStorag2","setItem","stringify","setData","handlePathChangeUnvalidated","handlePathChange","handleMountField","addListPath","handleUnMountField","_fieldPropsRef$curren","removeListPath","scrollToTop","_window","_window$scrollTo","scrollTo","top","behavior","handleSubmitCall","args","enableAsyncBehaviour","skipFieldValidation","skipErrorCheck","asyncBehaviorIsEnabled","type","callback","fieldEventListenersRef","includes","warning","info","requestAnimationFrame","onSubmitContinueRef","handleSubmit","formElement","opts","resetForm","_formElement$reset","reset","removeItem","clearData","completeResult","keys","setFieldEventListener","_ref2","p","t","push","_onSubmitContinueRef$","_ajvRef$current","compile","_ajvRef$current2","onTimeout","bufferedFormState","useFormStatusBuffer","waitFor","submitState","disabled","createElement","hasContext","mountedFieldPaths","FormStatus","globalStatus","title","errorSummaryTitle","show","paths","concat","thisPath","stateRef","nowRef","timeoutRef","setState","clear","key","clearTimeout","hadCompleteRef","isTest","process","env","NODE_ENV","minimum","setTimeout","Date","now","offset","Math","max","delay","complete","timeout"],"sources":["../../../../../../src/extensions/forms/DataContext/Provider/Provider.tsx"],"sourcesContent":["import React, {\n useRef,\n useMemo,\n useCallback,\n useReducer,\n useEffect,\n} from 'react'\nimport pointer, { JsonObject } from 'json-pointer'\nimport { ValidateFunction } from 'ajv/dist/2020'\nimport {\n Ajv,\n makeAjvInstance,\n ajvErrorsToFormErrors,\n} from '../../utils/ajv'\nimport {\n FormError,\n CustomErrorMessagesWithPaths,\n AllJSONSchemaVersions,\n FieldProps,\n SubmitState,\n Path,\n EventStateObject,\n OnSubmit,\n OnChange,\n EventReturnWithStateObject,\n} from '../../types'\nimport SharedProvider from '../../../../shared/Provider'\nimport useMountEffect from '../../../../shared/helpers/useMountEffect'\nimport useUpdateEffect from '../../../../shared/helpers/useUpdateEffect'\nimport { isAsync } from '../../../../shared/helpers/isAsync'\nimport { useSharedState } from '../../../../shared/helpers/useSharedState'\nimport useTranslation from '../../hooks/useTranslation'\nimport Context, {\n ContextState,\n EventListenerCall,\n FilterData,\n} from '../Context'\n\n/**\n * Deprecated, as it is supported by all major browsers and Node.js >=v18\n * So its a question of time, when we will remove this polyfill\n */\nimport structuredClone from '@ungap/structured-clone'\n\n// SSR warning fix: https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\nconst useLayoutEffect =\n typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect\n\nexport interface Props<Data extends JsonObject> {\n /**\n * Unique ID to communicate with the hook Form.useData\n */\n id?: string\n /**\n * Unique ID to connect with a GlobalStatus\n */\n globalStatusId?: string\n /**\n * Default source data, only used if no other source is available, and not leading to updates if changed after mount\n */\n defaultData?: Partial<Data>\n /**\n * Source data, will be used instead of defaultData, and leading to updates if changed after mount\n */\n data?: Partial<Data>\n /**\n * JSON Schema to validate the data against.\n */\n schema?: AllJSONSchemaVersions\n /**\n * Custom Ajv instance, if you want to use your own\n */\n ajvInstance?: Ajv\n /**\n * Custom error messages for the whole data set\n */\n errorMessages?: CustomErrorMessagesWithPaths\n /**\n * Filter the internal data context based on your criteria: `(path, value, props) => !props?.disabled`. It will iterate on each data entry.\n */\n filterData?: FilterData\n /**\n * Change handler for the whole data set.\n * You can provide an async function to show an indicator on the current label during a field change.\n */\n onChange?: OnChange<Data>\n /**\n * Change handler for each value\n */\n onPathChange?: (\n path: Path,\n value: any\n ) =>\n | EventReturnWithStateObject\n | void\n | Promise<EventReturnWithStateObject | void>\n /**\n * Will emit on a form submit – if validation has passed.\n * You can provide an async function to shows a submit indicator during submit. All form elements will be disabled during the submit.\n */\n onSubmit?: OnSubmit\n /**\n * Submit was requested, but data was invalid\n */\n onSubmitRequest?: () => void\n /**\n * Will be called when the onSubmit is finished and had not errors\n */\n onSubmitComplete?: (\n data: Data,\n /**\n * The result of the onSubmit function\n */\n result: unknown\n ) =>\n | EventReturnWithStateObject\n | void\n | Promise<EventReturnWithStateObject | void>\n /**\n * Minimum time to display the submit indicator.\n */\n minimumAsyncBehaviorTime?: number\n /**\n * The maximum time to display the submit indicator before it changes back to normal. In case something went wrong during submission.\n */\n asyncSubmitTimeout?: number\n /**\n * Scroll to top on submit\n */\n scrollTopOnSubmit?: boolean\n /**\n * Key for caching the data in session storage\n */\n sessionStorageId?: string\n children: React.ReactNode\n}\n\nconst isArrayJsonPointer = /^\\/\\d+(\\/|$)/\n\nexport default function Provider<Data extends JsonObject>(\n props: Props<Data>\n) {\n const [, forceUpdate] = useReducer(() => ({}), {})\n\n const {\n id,\n globalStatusId = 'main',\n defaultData,\n data,\n schema,\n onChange,\n onPathChange,\n onSubmit,\n onSubmitRequest,\n onSubmitComplete,\n scrollTopOnSubmit,\n minimumAsyncBehaviorTime,\n asyncSubmitTimeout,\n sessionStorageId,\n ajvInstance,\n filterData,\n errorMessages: contextErrorMessages,\n children,\n ...rest\n } = props\n\n // Prop error handling\n if (data !== undefined && sessionStorageId !== undefined) {\n console.error(\n 'Providing both data and sessionStorageId could lead to competing data sources. To provide default data to use only before anything is changed in the interface, use defaultData.'\n )\n }\n\n // - Locale\n const translation = useTranslation().Form\n\n // - Ajv\n const ajvRef = useRef<Ajv>(makeAjvInstance(ajvInstance))\n\n // - Paths\n const mountedFieldPathsRef = useRef<Path[]>([])\n\n // - Errors from provider validation (the whole data set)\n const errorsRef = useRef<Record<Path, FormError> | undefined>()\n const showAllErrorsRef = useRef<boolean>(false)\n const setShowAllErrors = useCallback((showAllErrors: boolean) => {\n showAllErrorsRef.current = showAllErrors\n forceUpdate()\n }, [])\n const submitStateRef = useRef<Partial<EventStateObject>>({})\n const setSubmitState = useCallback((state: EventStateObject) => {\n Object.assign(submitStateRef.current, state)\n forceUpdate()\n }, [])\n\n // - Progress\n const formStateRef = useRef<SubmitState>()\n const setFormState = useCallback((formState: SubmitState) => {\n formStateRef.current = formState\n forceUpdate()\n }, [])\n\n // - States (e.g. error) reported by fields, based on their direct validation rules\n const fieldErrorRef = useRef<Record<Path, Error>>({})\n const fieldStateRef = useRef<Record<Path, SubmitState>>({})\n\n // - Data\n const initialData = useMemo<Data>(() => {\n if (sessionStorageId && typeof window !== 'undefined') {\n const sessionDataJSON =\n window.sessionStorage?.getItem(sessionStorageId)\n if (sessionDataJSON) {\n return JSON.parse(sessionDataJSON)\n }\n }\n return data ?? defaultData\n // eslint-disable-next-line react-hooks/exhaustive-deps -- Avoid triggering code that should only run initially\n }, [])\n const internalDataRef = useRef<Partial<Data>>(initialData)\n\n // - Validator\n const ajvValidatorRef = useRef<ValidateFunction>()\n const executeAjvValidator = useCallback(() => {\n if (!ajvValidatorRef.current) {\n // No schema-based validator. Assume data is valid.\n return\n }\n\n if (!ajvValidatorRef.current?.(internalDataRef.current)) {\n // Errors found\n errorsRef.current = ajvErrorsToFormErrors(\n ajvValidatorRef.current.errors,\n internalDataRef.current\n )\n } else {\n errorsRef.current = undefined\n }\n }, [])\n const validateData = useCallback(() => {\n if (!ajvValidatorRef.current) {\n // No schema-based validator. Assume data is valid.\n return\n }\n\n executeAjvValidator()\n forceUpdate()\n }, [executeAjvValidator])\n\n // - Error handling\n const checkFieldStateFor = useCallback(\n (path: Path, state: SubmitState) => {\n return Boolean(\n state === 'error'\n ? errorsRef.current?.[path] instanceof Error ||\n fieldErrorRef.current[path] instanceof Error\n : fieldStateRef.current[path] === state\n )\n },\n []\n )\n const hasFieldState = useCallback(\n (state: SubmitState) => {\n return mountedFieldPathsRef.current.some((path) => {\n return checkFieldStateFor(path, state)\n })\n },\n [checkFieldStateFor]\n )\n const hasErrors = useCallback(() => {\n return hasFieldState('error')\n }, [hasFieldState])\n\n /**\n * Sets the error state for a specific path\n */\n const setFieldError = useCallback(\n (path: Path, error: Error | FormError) => {\n fieldErrorRef.current[path] = error\n },\n []\n )\n\n /**\n * Sets the field state for a specific path\n */\n const setFieldState = useCallback(\n (path: Path, fieldState: SubmitState) => {\n if (fieldState !== fieldStateRef.current[path]) {\n // The state for the target value was changed\n fieldStateRef.current[path] = fieldState\n forceUpdate()\n }\n },\n []\n )\n\n /**\n * Filter the data set based on the filterData function\n */\n const filterDataHandler = useCallback(\n (data: Data, filter = filterData) => {\n if (filter) {\n const filtered = { ...data }\n Object.entries(fieldPropsRef.current).forEach(([path, props]) => {\n const exists = pointer.has(data, path)\n const result = filter(\n path,\n exists ? pointer.get(data, path) : undefined,\n props,\n {\n error: fieldErrorRef.current?.[path],\n }\n )\n if (result === false && exists) {\n pointer.remove(filtered, path)\n }\n })\n\n return filtered\n }\n\n return data\n },\n [filterData]\n )\n const fieldPropsRef = useRef<Record<Path, FieldProps>>({})\n const setProps = useCallback(\n (path: Path, props: Record<string, unknown>) => {\n fieldPropsRef.current[path] = {\n ...fieldPropsRef.current[path],\n ...props,\n }\n },\n []\n )\n const hasFieldWithAsyncValidator = useCallback(() => {\n for (const path in fieldPropsRef.current) {\n const props = fieldPropsRef.current[path]\n if (isAsync(props.validator) || isAsync(props.onBlurValidator)) {\n return true\n }\n }\n\n return false\n }, [])\n\n // - Shared state\n const sharedData = useSharedState<Data>(id)\n const sharedAttachments = useSharedState<{\n filterDataHandler?: Props<Data>['filterData']\n hasErrors?: ContextState['hasErrors']\n setShowAllErrors?: ContextState['setShowAllErrors']\n setSubmitState?: ContextState['setSubmitState']\n rerenderUseDataHook?: () => void\n }>(id + '-attachments')\n\n const setSharedData = sharedData.set\n const extendSharedData = sharedData.extend\n const extendAttachment = sharedAttachments.extend\n const rerenderUseDataHook = sharedAttachments.data?.rerenderUseDataHook\n\n const cacheRef = useRef({\n data,\n schema,\n shared: sharedData.data,\n hasUsedInitialData: false,\n })\n\n internalDataRef.current = useMemo(() => {\n // NB: \"sharedData.data\" is only available on a rerender.\n // Update the shared state, if initialData is given and no shared state is available.\n // We do almost the same later in a useLayoutEffect, but we need to do it here as well, so we set the data as early as possible.\n if (id && initialData && !sharedData.data) {\n sharedData.update(initialData)\n }\n\n // Merge both internal data and the shared state, if it both where given\n if (\n id &&\n initialData &&\n sharedData.data &&\n cacheRef.current.shared === sharedData.data &&\n internalDataRef.current === initialData\n ) {\n return {\n ...internalDataRef.current,\n ...sharedData.data,\n }\n }\n\n // Use shared state if no initial and initial data, and the shared state exists\n if (\n id &&\n !initialData &&\n !internalDataRef.current &&\n sharedData.data &&\n cacheRef.current.shared === sharedData.data\n ) {\n return sharedData.data\n }\n\n // Merge the internal data with the shared state, if the shared was updated and not the same as internal data\n if (\n id &&\n sharedData.data &&\n cacheRef.current.shared !== sharedData.data &&\n sharedData.data !== internalDataRef.current\n ) {\n cacheRef.current.shared = sharedData.data\n return {\n ...internalDataRef.current,\n ...sharedData.data,\n }\n }\n\n // When external data has changed, update the internal data\n if (data !== cacheRef.current.data) {\n cacheRef.current.data = data\n return data\n }\n\n return internalDataRef.current\n }, [data, id, initialData, sharedData])\n\n useLayoutEffect(() => {\n // Set the shared state, if initialData was given\n if (id && initialData && !sharedData.data) {\n extendSharedData?.(initialData)\n }\n }, [id, initialData, extendSharedData, sharedData.data])\n\n useMemo(() => {\n executeAjvValidator()\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [internalDataRef.current]) // run validation when internal data has changed\n\n useLayoutEffect(() => {\n if (id) {\n extendAttachment?.({\n filterDataHandler,\n hasErrors,\n setShowAllErrors,\n setSubmitState,\n })\n if (filterData) {\n rerenderUseDataHook?.()\n }\n }\n }, [\n extendAttachment,\n filterData,\n filterDataHandler,\n hasErrors,\n id,\n rerenderUseDataHook,\n setShowAllErrors,\n setSubmitState,\n ])\n\n /**\n * Update the data set\n */\n const updateDataValue: ContextState['updateDataValue'] = useCallback(\n (path, value) => {\n if (!path) {\n return\n }\n\n const givenData = (\n path === '/'\n ? // When setting the root of the data, the whole data set should be the new value\n value\n : // For sub paths, use the the existing data set (or empty array/object), but modify it below (since pointer.set is not immutable)\n internalDataRef.current ??\n (path.match(isArrayJsonPointer) ? [] : {})\n ) as Data\n\n let newData: Data = null\n try {\n // Update the data even if it contains errors. Submit/SubmitRequest will be called accordingly\n newData = structuredClone(givenData)\n } catch (e) {\n newData = givenData\n }\n\n if (path !== '/') {\n pointer.set(newData, path, value)\n }\n\n internalDataRef.current = newData\n\n if (id) {\n // Will ensure that Form.getData() gets the correct data\n extendSharedData?.(newData)\n if (filterData) {\n rerenderUseDataHook?.()\n }\n }\n\n if (sessionStorageId && typeof window !== 'undefined') {\n window.sessionStorage?.setItem(\n sessionStorageId,\n JSON.stringify(newData)\n )\n }\n\n forceUpdate()\n\n return newData\n },\n [\n id,\n sessionStorageId,\n extendSharedData,\n filterData,\n rerenderUseDataHook,\n ]\n )\n\n const setData = useCallback((newData: Data) => {\n internalDataRef.current = newData\n forceUpdate()\n }, [])\n\n /**\n * Update the data set on user interaction (unvalidated)\n */\n const handlePathChangeUnvalidated: ContextState['handlePathChange'] =\n useCallback(\n async (path, value) => {\n if (!path) {\n return null\n }\n\n updateDataValue(path, value)\n\n if (isAsync(onPathChange)) {\n await onPathChange?.(path, value)\n } else {\n onPathChange?.(path, value)\n }\n },\n [onPathChange, updateDataValue]\n )\n\n /**\n * Update the data set on user interaction\n */\n const handlePathChange: ContextState['handlePathChange'] = useCallback(\n async (path, value = '_undefined_') => {\n if (!path) {\n return null\n }\n\n if (value !== '_undefined_') {\n handlePathChangeUnvalidated(path, value)\n }\n\n showAllErrorsRef.current = false\n\n validateData()\n\n if (isAsync(onChange)) {\n return await onChange(internalDataRef.current as Data)\n }\n\n return onChange?.(internalDataRef.current as Data)\n },\n [handlePathChangeUnvalidated, onChange, validateData]\n )\n\n // - Mounted fields\n const handleMountField = useCallback((path: Path) => {\n mountedFieldPathsRef.current = addListPath(\n mountedFieldPathsRef.current,\n path\n )\n }, [])\n\n const handleUnMountField = useCallback((path: Path) => {\n mountedFieldPathsRef.current = removeListPath(\n mountedFieldPathsRef.current,\n path\n )\n if (fieldPropsRef.current?.[path]) {\n delete fieldPropsRef.current[path]\n }\n }, [])\n\n // - Features\n const scrollToTop = useCallback(() => {\n if (typeof window !== 'undefined') {\n window?.scrollTo?.({ top: 0, behavior: 'smooth' })\n }\n }, [])\n\n /**\n * Shared logic dedicated to submit the whole form\n */\n const handleSubmitCall = useCallback<ContextState['handleSubmitCall']>(\n async (args) => {\n const {\n onSubmit,\n enableAsyncBehaviour,\n skipFieldValidation,\n skipErrorCheck,\n } = args\n\n setSubmitState({ error: undefined })\n\n const asyncBehaviorIsEnabled =\n (skipErrorCheck\n ? true\n : // Don't enable async behaviour if we have errors, but when we have a pending state\n !hasErrors() || hasFieldState('pending')) &&\n (enableAsyncBehaviour || hasFieldWithAsyncValidator())\n\n if (asyncBehaviorIsEnabled) {\n setFormState('pending')\n }\n\n // Just call the submit listeners \"once\", and not on the retry/recall\n if (!skipFieldValidation) {\n for (const {\n path,\n type,\n callback,\n } of fieldEventListenersRef.current) {\n if (\n type === 'onSubmit' &&\n mountedFieldPathsRef.current.includes(path)\n ) {\n // Call all submit listener callbacks (e.g. to validate fields)\n if (asyncBehaviorIsEnabled) {\n await callback()\n } else {\n callback()\n }\n }\n }\n }\n\n if (\n !(skipErrorCheck ? false : hasErrors()) &&\n !hasFieldState('pending') &&\n (skipFieldValidation ? true : !hasFieldState('error'))\n ) {\n let result: EventStateObject | unknown\n\n try {\n result = await onSubmit()\n\n if (result instanceof Error) {\n throw result\n }\n } catch (error) {\n result = { error }\n }\n\n const state = result as EventStateObject\n\n if (asyncBehaviorIsEnabled) {\n setFormState(state?.error ? 'abort' : 'complete')\n }\n\n // Force the state to be set by a custom status\n if (state?.['status']) {\n setFormState(state?.['status'])\n }\n\n if (state?.error || state?.warning || state?.info) {\n setSubmitState(state)\n }\n } else {\n if (asyncBehaviorIsEnabled) {\n window.requestAnimationFrame(() => {\n setFormState(undefined)\n })\n\n if (!skipFieldValidation) {\n // Add a event listener to continue the submit after the pending state is resolved\n onSubmitContinueRef.current = () => {\n window.requestAnimationFrame(() => {\n // Do not call the validators again,\n // because we already did it in the first call\n // If they are async, we wait for them to finish anyway\n handleSubmitCall({ ...args, skipFieldValidation: true })\n })\n }\n }\n }\n\n onSubmitRequest?.()\n\n setShowAllErrors(true)\n }\n\n return internalDataRef.current\n },\n [\n setSubmitState,\n hasErrors,\n hasFieldWithAsyncValidator,\n hasFieldState,\n setFormState,\n onSubmitRequest,\n setShowAllErrors,\n ]\n )\n\n /**\n * Request to submit the whole form\n */\n const handleSubmit = useCallback<ContextState['handleSubmit']>(\n async ({ formElement = null } = {}) => {\n handleSubmitCall({\n enableAsyncBehaviour: isAsync(onSubmit),\n onSubmit: async () => {\n const args = filterDataHandler(internalDataRef.current as Data)\n const opts = {\n resetForm: () => {\n formElement?.reset?.()\n\n if (typeof window !== 'undefined') {\n if (sessionStorageId) {\n window.sessionStorage.removeItem(sessionStorageId)\n }\n }\n\n forceUpdate() // in order to fill \"empty fields\" again with their internal states\n },\n clearData: () => {\n internalDataRef.current = {}\n if (id) {\n setSharedData?.({} as Data)\n } else {\n forceUpdate()\n }\n },\n }\n\n let result = undefined\n\n if (isAsync(onSubmit)) {\n result = await onSubmit(args, opts)\n } else {\n result = onSubmit?.(args, opts)\n }\n\n const completeResult = await onSubmitComplete?.(args, result)\n if (completeResult) {\n result =\n Object.keys(result).length > 0\n ? { ...result, ...completeResult }\n : completeResult\n }\n\n if (scrollTopOnSubmit) {\n scrollToTop()\n }\n\n return result\n },\n })\n },\n [\n filterDataHandler,\n handleSubmitCall,\n id,\n onSubmit,\n onSubmitComplete,\n scrollToTop,\n scrollTopOnSubmit,\n sessionStorageId,\n setSharedData,\n ]\n )\n\n // Collect listeners to be called during form submit\n const fieldEventListenersRef = useRef<Array<EventListenerCall>>([])\n const setFieldEventListener = useCallback(\n (\n path: EventListenerCall['path'],\n type: EventListenerCall['type'],\n callback: EventListenerCall['callback']\n ) => {\n fieldEventListenersRef.current =\n fieldEventListenersRef.current.filter(({ path: p, type: t }) => {\n return !(p === path && t === type)\n })\n fieldEventListenersRef.current.push({ path, type, callback })\n },\n []\n )\n\n // Handle unresolved field states during async submit\n const onSubmitContinueRef = useRef<() => void>(null)\n if (!hasFieldState('pending')) {\n onSubmitContinueRef.current?.()\n onSubmitContinueRef.current = null\n }\n\n // - ajv validator routines\n useMountEffect(() => {\n if (schema) {\n ajvValidatorRef.current = ajvRef.current?.compile(schema)\n }\n\n // Validate the initial data\n validateData()\n })\n useUpdateEffect(() => {\n if (schema && schema !== cacheRef.current.schema) {\n cacheRef.current.schema = schema\n ajvValidatorRef.current = ajvRef.current?.compile(schema)\n\n validateData()\n forceUpdate()\n }\n }, [schema, validateData, forceUpdate])\n\n const onTimeout = useCallback(() => {\n setFormState(undefined)\n setSubmitState({\n info: undefined,\n warning: undefined,\n error: undefined,\n })\n }, [setFormState, setSubmitState])\n\n const { bufferedFormState: formState } = useFormStatusBuffer({\n formState: formStateRef.current,\n waitFor: hasFieldState('pending'),\n minimumAsyncBehaviorTime,\n asyncSubmitTimeout,\n onTimeout,\n })\n\n const submitState = submitStateRef.current\n const disabled = rest?.['disabled'] ?? formState === 'pending'\n\n return (\n <Context.Provider\n value={{\n /** Method */\n handlePathChange,\n handlePathChangeUnvalidated,\n handleSubmit,\n handleMountField,\n handleUnMountField,\n handleSubmitCall,\n setFormState,\n setSubmitState,\n setShowAllErrors,\n setFieldEventListener,\n setFieldState,\n setFieldError,\n setProps,\n hasErrors,\n hasFieldState,\n checkFieldStateFor,\n validateData,\n updateDataValue,\n setData,\n filterDataHandler,\n scrollToTop,\n\n /** State handling */\n schema,\n disabled,\n formState,\n submitState,\n contextErrorMessages,\n hasContext: true,\n errors: errorsRef.current,\n showAllErrors: showAllErrorsRef.current,\n mountedFieldPaths: mountedFieldPathsRef.current,\n ajvInstance: ajvRef.current,\n\n /** Additional */\n id,\n data: internalDataRef.current,\n props,\n ...rest,\n }}\n >\n <SharedProvider\n FormStatus={\n globalStatusId\n ? {\n globalStatus: {\n id: globalStatusId,\n title: translation.errorSummaryTitle,\n show: showAllErrorsRef.current,\n },\n }\n : undefined\n }\n formElement={{ disabled }}\n >\n {children}\n </SharedProvider>\n </Context.Provider>\n )\n}\n\ntype PathList = string[]\n\nexport function addListPath(paths: PathList, path: Path): PathList {\n return paths.includes(path) ? paths : paths.concat(path)\n}\n\nexport function removeListPath(paths: PathList, path: Path): PathList {\n return paths.filter((thisPath) => thisPath !== path)\n}\n\ntype FormStatusBufferProps = {\n minimumAsyncBehaviorTime?: Props<unknown>['minimumAsyncBehaviorTime']\n asyncSubmitTimeout?: Props<unknown>['asyncSubmitTimeout']\n formState: ContextState['formState']\n waitFor: boolean\n onTimeout: () => void\n}\n\nfunction useFormStatusBuffer(props: FormStatusBufferProps) {\n const {\n formState,\n waitFor,\n minimumAsyncBehaviorTime,\n asyncSubmitTimeout,\n onTimeout,\n } = props || {}\n\n const [, forceUpdate] = useReducer(() => ({}), {})\n const stateRef = useRef<SubmitState>()\n const nowRef = useRef<number | null>(null)\n const timeoutRef = useRef<{\n complete?: NodeJS.Timeout | null\n reset?: NodeJS.Timeout | null\n timeout?: NodeJS.Timeout | null\n }>({})\n\n const setState = useCallback(\n (state: SubmitState) => {\n stateRef.current = state\n forceUpdate()\n },\n [forceUpdate]\n )\n\n const clear = useCallback(() => {\n for (const key in timeoutRef.current) {\n clearTimeout(timeoutRef.current[key])\n }\n }, [])\n\n const hadCompleteRef = useRef(false)\n\n useEffect(() => {\n // This offset is used to calculate the delay,\n // which ensures that the form state is displayed for at least minimumAsyncBehaviorTime duration.\n // If the form was 'pending' for less than minimumAsyncBehaviorTime,\n // the delay will be the remaining time to reach minimumAsyncBehaviorTime.\n const isTest = process.env.NODE_ENV === 'test'\n const minimum =\n minimumAsyncBehaviorTime ??\n // make it testable\n (isTest ? 1 : 1000)\n\n if (stateRef.current && formState === 'error') {\n clear()\n setState(undefined)\n return\n }\n\n if (formState === 'abort') {\n clear()\n setState('abort')\n\n timeoutRef.current.reset = setTimeout(() => {\n nowRef.current = 0\n setState(undefined)\n }, minimum)\n return\n }\n\n if (formState === 'complete') {\n hadCompleteRef.current = true\n }\n\n if (formState === 'pending' && stateRef.current !== 'pending') {\n clear()\n nowRef.current = Date.now()\n hadCompleteRef.current = false\n setState('pending')\n } else if (stateRef.current === 'pending') {\n const offset = Math.max(Date.now() - nowRef.current)\n const delay = isTest ? minimum : Math.max(minimum - offset, 0)\n\n if (!waitFor) {\n timeoutRef.current.complete = setTimeout(() => {\n if (hadCompleteRef.current) {\n setState('complete')\n }\n }, delay)\n\n timeoutRef.current.reset = setTimeout(() => {\n nowRef.current = 0\n setState(undefined)\n clear()\n }, delay + minimum)\n }\n }\n\n if (stateRef.current === 'pending') {\n timeoutRef.current.timeout = setTimeout(() => {\n clear()\n setState(undefined)\n onTimeout?.()\n }, asyncSubmitTimeout ?? 30000)\n }\n\n return clear\n }, [\n clear,\n minimumAsyncBehaviorTime,\n formState,\n setState,\n waitFor,\n asyncSubmitTimeout,\n onTimeout,\n ])\n\n return { bufferedFormState: stateRef.current }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Provider.js","names":["React","useRef","useMemo","useCallback","useReducer","useEffect","pointer","makeAjvInstance","ajvErrorsToFormErrors","debounce","SharedProvider","useMountEffect","useUpdateEffect","isAsync","useSharedState","useTranslation","Context","structuredClone","useLayoutEffect","window","isArrayJsonPointer","Provider","props","_sharedAttachments$da","forceUpdate","id","globalStatusId","defaultData","data","schema","onChange","onPathChange","onSubmit","onSubmitRequest","onSubmitComplete","scrollTopOnSubmit","minimumAsyncBehaviorTime","asyncSubmitTimeout","sessionStorageId","ajvInstance","transformIn","transformOut","filterSubmitData","filterData","errorMessages","contextErrorMessages","children","rest","_objectWithoutProperties","_excluded","undefined","console","error","translation","Form","ajvRef","mountedFieldPathsRef","errorsRef","showAllErrorsRef","setShowAllErrors","showAllErrors","current","submitStateRef","setSubmitState","state","Object","assign","formStateRef","setFormState","formState","fieldErrorRef","fieldStateRef","initialData","_window$sessionStorag","sessionDataJSON","sessionStorage","getItem","JSON","parse","internalDataRef","ajvValidatorRef","executeAjvValidator","_ajvValidatorRef$curr","call","errors","validateData","checkFieldStateFor","path","_errorsRef$current","Boolean","Error","hasFieldState","some","hasErrors","setFieldError","setFieldState","fieldState","mutateDataHandler","fn","remove","arguments","length","entries","fieldPropsRef","forEach","_ref","exists","has","_fieldErrorRef$curren","result","get","set","filterDataHandler","filter","setProps","_objectSpread","hasFieldWithAsyncValidator","validator","onBlurValidator","sharedData","sharedAttachments","setSharedData","extendSharedData","extend","extendAttachment","rerenderUseDataHook","cacheRef","shared","hasUsedInitialData","update","storeInSession","_window$sessionStorag2","setItem","stringify","process","env","NODE_ENV","updateDataValue","value","_internalDataRef$curr","givenData","match","newData","e","setData","handlePathChangeUnvalidated","handlePathChange","transformedData","handleMountField","addListPath","handleUnMountField","_fieldPropsRef$curren","removeListPath","scrollToTop","_window","_window$scrollTo","scrollTo","top","behavior","handleSubmitCall","args","enableAsyncBehaviour","skipFieldValidation","skipErrorCheck","asyncBehaviorIsEnabled","type","callback","fieldEventListenersRef","includes","warning","info","requestAnimationFrame","onSubmitContinueRef","handleSubmit","formElement","filteredData","opts","resetForm","_formElement$reset","reset","removeItem","clearData","completeResult","keys","setFieldEventListener","_ref2","p","t","push","_onSubmitContinueRef$","_ajvRef$current","compile","_ajvRef$current2","onTimeout","bufferedFormState","useFormStatusBuffer","waitFor","submitState","disabled","createElement","hasContext","mountedFieldPaths","FormStatus","globalStatus","title","errorSummaryTitle","show","paths","concat","thisPath","stateRef","nowRef","timeoutRef","setState","clear","key","clearTimeout","hadCompleteRef","isTest","minimum","setTimeout","Date","now","offset","Math","max","delay","complete","timeout"],"sources":["../../../../../../src/extensions/forms/DataContext/Provider/Provider.tsx"],"sourcesContent":["import React, {\n useRef,\n useMemo,\n useCallback,\n useReducer,\n useEffect,\n} from 'react'\nimport pointer, { JsonObject } from 'json-pointer'\nimport { ValidateFunction } from 'ajv/dist/2020'\nimport {\n Ajv,\n makeAjvInstance,\n ajvErrorsToFormErrors,\n} from '../../utils/ajv'\nimport {\n FormError,\n CustomErrorMessagesWithPaths,\n AllJSONSchemaVersions,\n FieldProps,\n SubmitState,\n Path,\n EventStateObject,\n OnSubmit,\n OnChange,\n EventReturnWithStateObject,\n} from '../../types'\nimport { debounce } from '../../../../shared/helpers'\nimport SharedProvider from '../../../../shared/Provider'\nimport useMountEffect from '../../../../shared/helpers/useMountEffect'\nimport useUpdateEffect from '../../../../shared/helpers/useUpdateEffect'\nimport { isAsync } from '../../../../shared/helpers/isAsync'\nimport { useSharedState } from '../../../../shared/helpers/useSharedState'\nimport useTranslation from '../../hooks/useTranslation'\nimport Context, {\n ContextState,\n EventListenerCall,\n FilterData,\n TransformData,\n} from '../Context'\n\n/**\n * Deprecated, as it is supported by all major browsers and Node.js >=v18\n * So its a question of time, when we will remove this polyfill\n */\nimport structuredClone from '@ungap/structured-clone'\n\n// SSR warning fix: https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\nconst useLayoutEffect =\n typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect\n\nexport interface Props<Data extends JsonObject> {\n /**\n * Unique ID to communicate with the hook Form.useData\n */\n id?: string\n /**\n * Unique ID to connect with a GlobalStatus\n */\n globalStatusId?: string\n /**\n * Default source data, only used if no other source is available, and not leading to updates if changed after mount\n */\n defaultData?: Data\n /**\n * Source data, will be used instead of defaultData, and leading to updates if changed after mount\n */\n data?: Data\n /**\n * JSON Schema to validate the data against.\n */\n schema?: AllJSONSchemaVersions\n /**\n * Custom Ajv instance, if you want to use your own\n */\n ajvInstance?: Ajv\n /**\n * Custom error messages for the whole data set\n */\n errorMessages?: CustomErrorMessagesWithPaths\n /**\n * Filter the `onSubmit` output data, based on your criteria: `(path, value, props, internal) => !props?.disabled`. It will iterate on each data entry (/path). Return false to exclude the entry.\n */\n filterSubmitData?: FilterData\n /**\n * @deprecated Use `filterSubmitData` instead\n */\n filterData?: FilterData\n /**\n * Transform the data context (internally as well) based on your criteria: `(path, value, props, internal) => 'new value'`. It will iterate on each data entry (/path).\n */\n transformIn?: TransformData\n /**\n * Mutate the data before it enters onSubmit or onChange based on your criteria: `(path, value, props, internal) => 'new value'`. It will iterate on each data entry (/path).\n */\n transformOut?: TransformData\n /**\n * Change handler for the whole data set.\n * You can provide an async function to show an indicator on the current label during a field change.\n */\n onChange?: OnChange<Data>\n /**\n * Change handler for each value\n */\n onPathChange?: (\n path: Path,\n value: any\n ) =>\n | EventReturnWithStateObject\n | void\n | Promise<EventReturnWithStateObject | void>\n /**\n * Will emit on a form submit – if validation has passed.\n * You can provide an async function to shows a submit indicator during submit. All form elements will be disabled during the submit.\n */\n onSubmit?: OnSubmit<Data>\n /**\n * Submit was requested, but data was invalid\n */\n onSubmitRequest?: () => void\n /**\n * Will be called when the onSubmit is finished and had not errors\n */\n onSubmitComplete?: (\n data: Data,\n /**\n * The result of the onSubmit function\n */\n result: unknown\n ) =>\n | EventReturnWithStateObject\n | void\n | Promise<EventReturnWithStateObject | void>\n /**\n * Minimum time to display the submit indicator.\n */\n minimumAsyncBehaviorTime?: number\n /**\n * The maximum time to display the submit indicator before it changes back to normal. In case something went wrong during submission.\n */\n asyncSubmitTimeout?: number\n /**\n * Scroll to top on submit\n */\n scrollTopOnSubmit?: boolean\n /**\n * Key for caching the data in session storage\n */\n sessionStorageId?: string\n children: React.ReactNode\n}\n\nconst isArrayJsonPointer = /^\\/\\d+(\\/|$)/\n\nexport default function Provider<Data extends JsonObject>(\n props: Props<Data>\n) {\n const [, forceUpdate] = useReducer(() => ({}), {})\n\n const {\n id,\n globalStatusId = 'main',\n defaultData,\n data,\n schema,\n onChange,\n onPathChange,\n onSubmit,\n onSubmitRequest,\n onSubmitComplete,\n scrollTopOnSubmit,\n minimumAsyncBehaviorTime,\n asyncSubmitTimeout,\n sessionStorageId,\n ajvInstance,\n transformIn,\n transformOut,\n filterSubmitData,\n filterData,\n errorMessages: contextErrorMessages,\n children,\n ...rest\n } = props\n\n // Prop error handling\n if (data !== undefined && sessionStorageId !== undefined) {\n console.error(\n 'Providing both data and sessionStorageId could lead to competing data sources. To provide default data to use only before anything is changed in the interface, use defaultData.'\n )\n }\n\n // - Locale\n const translation = useTranslation().Form\n\n // - Ajv\n const ajvRef = useRef<Ajv>(makeAjvInstance(ajvInstance))\n\n // - Paths\n const mountedFieldPathsRef = useRef<Path[]>([])\n\n // - Errors from provider validation (the whole data set)\n const errorsRef = useRef<Record<Path, FormError> | undefined>()\n const showAllErrorsRef = useRef<boolean>(false)\n const setShowAllErrors = useCallback((showAllErrors: boolean) => {\n showAllErrorsRef.current = showAllErrors\n forceUpdate()\n }, [])\n const submitStateRef = useRef<Partial<EventStateObject>>({})\n const setSubmitState = useCallback((state: EventStateObject) => {\n Object.assign(submitStateRef.current, state)\n forceUpdate()\n }, [])\n\n // - Progress\n const formStateRef = useRef<SubmitState>()\n const setFormState = useCallback((formState: SubmitState) => {\n formStateRef.current = formState\n forceUpdate()\n }, [])\n\n // - States (e.g. error) reported by fields, based on their direct validation rules\n const fieldErrorRef = useRef<Record<Path, Error>>({})\n const fieldStateRef = useRef<Record<Path, SubmitState>>({})\n\n // - Data\n const initialData = useMemo<Data>(() => {\n if (sessionStorageId && typeof window !== 'undefined') {\n const sessionDataJSON =\n window.sessionStorage?.getItem(sessionStorageId)\n if (sessionDataJSON) {\n return JSON.parse(sessionDataJSON)\n }\n }\n return data ?? defaultData\n // eslint-disable-next-line react-hooks/exhaustive-deps -- Avoid triggering code that should only run initially\n }, [])\n const internalDataRef = useRef<Data>(initialData)\n\n // - Validator\n const ajvValidatorRef = useRef<ValidateFunction>()\n const executeAjvValidator = useCallback(() => {\n if (!ajvValidatorRef.current) {\n // No schema-based validator. Assume data is valid.\n return\n }\n\n if (!ajvValidatorRef.current?.(internalDataRef.current)) {\n // Errors found\n errorsRef.current = ajvErrorsToFormErrors(\n ajvValidatorRef.current.errors,\n internalDataRef.current\n )\n } else {\n errorsRef.current = undefined\n }\n }, [])\n const validateData = useCallback(() => {\n if (!ajvValidatorRef.current) {\n // No schema-based validator. Assume data is valid.\n return\n }\n\n executeAjvValidator()\n forceUpdate()\n }, [executeAjvValidator])\n\n // - Error handling\n const checkFieldStateFor = useCallback(\n (path: Path, state: SubmitState) => {\n return Boolean(\n state === 'error'\n ? errorsRef.current?.[path] instanceof Error ||\n fieldErrorRef.current[path] instanceof Error\n : fieldStateRef.current[path] === state\n )\n },\n []\n )\n const hasFieldState = useCallback(\n (state: SubmitState) => {\n return mountedFieldPathsRef.current.some((path) => {\n return checkFieldStateFor(path, state)\n })\n },\n [checkFieldStateFor]\n )\n const hasErrors = useCallback(() => {\n return hasFieldState('error')\n }, [hasFieldState])\n\n /**\n * Sets the error state for a specific path\n */\n const setFieldError = useCallback(\n (path: Path, error: Error | FormError) => {\n fieldErrorRef.current[path] = error\n },\n []\n )\n\n /**\n * Sets the field state for a specific path\n */\n const setFieldState = useCallback(\n (path: Path, fieldState: SubmitState) => {\n if (fieldState !== fieldStateRef.current[path]) {\n // The state for the target value was changed\n fieldStateRef.current[path] = fieldState\n forceUpdate()\n }\n },\n []\n )\n\n /**\n * Mutate the data set based on the filterData function\n */\n const mutateDataHandler = useCallback(\n (data: Data, fn: TransformData, remove = false) => {\n if (fn) {\n Object.entries(fieldPropsRef.current).forEach(([path, props]) => {\n const exists = pointer.has(data, path)\n if (exists) {\n const result = fn(path, pointer.get(data, path), props, {\n error: fieldErrorRef.current?.[path],\n })\n if (remove) {\n if (result === false) {\n data = structuredClone(data)\n pointer.remove(data, path)\n }\n } else {\n if (typeof result !== 'undefined') {\n data = structuredClone(data)\n pointer.set(data, path, result)\n }\n }\n }\n })\n\n return data\n }\n\n return data\n },\n []\n )\n\n /**\n * Filter the data set based on the filterData function\n */\n const filterDataHandler = useCallback(\n (data: Data, filter = filterData || filterSubmitData) => {\n if (filter) {\n return mutateDataHandler(data, filter, true)\n }\n\n return data\n },\n [filterData, filterSubmitData, mutateDataHandler]\n )\n\n const fieldPropsRef = useRef<Record<Path, FieldProps>>({})\n const setProps = useCallback(\n (path: Path, props: Record<string, unknown>) => {\n fieldPropsRef.current[path] = {\n ...fieldPropsRef.current[path],\n ...props,\n }\n },\n []\n )\n const hasFieldWithAsyncValidator = useCallback(() => {\n for (const path in fieldPropsRef.current) {\n const props = fieldPropsRef.current[path]\n if (isAsync(props.validator) || isAsync(props.onBlurValidator)) {\n return true\n }\n }\n\n return false\n }, [])\n\n // - Shared state\n const sharedData = useSharedState<Data>(id)\n const sharedAttachments = useSharedState<{\n filterDataHandler?: Props<Data>['filterSubmitData']\n hasErrors?: ContextState['hasErrors']\n setShowAllErrors?: ContextState['setShowAllErrors']\n setSubmitState?: ContextState['setSubmitState']\n rerenderUseDataHook?: () => void\n }>(id + '-attachments')\n\n const setSharedData = sharedData.set\n const extendSharedData = sharedData.extend\n const extendAttachment = sharedAttachments.extend\n const rerenderUseDataHook = sharedAttachments.data?.rerenderUseDataHook\n\n const cacheRef = useRef({\n data,\n schema,\n shared: sharedData.data,\n hasUsedInitialData: false,\n })\n\n internalDataRef.current = useMemo(() => {\n // NB: \"sharedData.data\" is only available on a rerender.\n // Update the shared state, if initialData is given and no shared state is available.\n // We do almost the same later in a useLayoutEffect, but we need to do it here as well, so we set the data as early as possible.\n if (id && initialData && !sharedData.data) {\n sharedData.update(initialData)\n }\n\n // Merge both internal data and the shared state, if it both where given\n if (\n id &&\n initialData &&\n sharedData.data &&\n cacheRef.current.shared === sharedData.data &&\n internalDataRef.current === initialData\n ) {\n return {\n ...internalDataRef.current,\n ...sharedData.data,\n }\n }\n\n // Use shared state if no initial and initial data, and the shared state exists\n if (\n id &&\n !initialData &&\n !internalDataRef.current &&\n sharedData.data &&\n cacheRef.current.shared === sharedData.data\n ) {\n return sharedData.data\n }\n\n // Merge the internal data with the shared state, if the shared was updated and not the same as internal data\n if (\n id &&\n sharedData.data &&\n cacheRef.current.shared !== sharedData.data &&\n sharedData.data !== internalDataRef.current\n ) {\n cacheRef.current.shared = sharedData.data\n return {\n ...internalDataRef.current,\n ...sharedData.data,\n }\n }\n\n // When external data has changed, update the internal data\n if (data !== cacheRef.current.data) {\n cacheRef.current.data = data\n return data\n }\n\n return internalDataRef.current\n }, [data, id, initialData, sharedData])\n\n useLayoutEffect(() => {\n // Set the shared state, if initialData was given\n if (id && initialData && !sharedData.data) {\n extendSharedData?.(initialData)\n }\n }, [id, initialData, extendSharedData, sharedData.data])\n\n useMemo(() => {\n executeAjvValidator()\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [internalDataRef.current]) // run validation when internal data has changed\n\n useLayoutEffect(() => {\n if (id) {\n extendAttachment?.({\n filterDataHandler,\n hasErrors,\n setShowAllErrors,\n setSubmitState,\n })\n if (filterData || filterSubmitData) {\n rerenderUseDataHook?.()\n }\n }\n }, [\n extendAttachment,\n filterData,\n filterDataHandler,\n filterSubmitData,\n hasErrors,\n id,\n rerenderUseDataHook,\n setShowAllErrors,\n setSubmitState,\n ])\n\n const storeInSession = useMemo(() => {\n return debounce(\n () => {\n window.sessionStorage?.setItem(\n sessionStorageId,\n JSON.stringify(internalDataRef.current)\n )\n },\n process.env.NODE_ENV === 'test' ? 1 : 800\n )\n }, [sessionStorageId])\n\n /**\n * Update the data set\n */\n const updateDataValue: ContextState['updateDataValue'] = useCallback(\n (path, value) => {\n if (!path) {\n return\n }\n\n const givenData = (\n path === '/'\n ? // When setting the root of the data, the whole data set should be the new value\n value\n : // For sub paths, use the the existing data set (or empty array/object), but modify it below (since pointer.set is not immutable)\n internalDataRef.current ??\n (path.match(isArrayJsonPointer) ? [] : {})\n ) as Data\n\n let newData: Data = null\n try {\n // Update the data even if it contains errors. Submit/SubmitRequest will be called accordingly\n newData = structuredClone(givenData)\n } catch (e) {\n newData = givenData\n }\n\n if (path !== '/') {\n pointer.set(newData, path, value)\n }\n\n // - Mutate the data context\n if (transformIn) {\n newData = mutateDataHandler(newData, transformIn)\n }\n\n internalDataRef.current = newData\n\n if (id) {\n // Will ensure that Form.getData() gets the correct data\n extendSharedData?.(newData)\n if (filterData || filterSubmitData) {\n rerenderUseDataHook?.()\n }\n }\n\n if (sessionStorageId && typeof window !== 'undefined') {\n storeInSession()\n }\n\n forceUpdate()\n },\n [\n extendSharedData,\n filterData,\n filterSubmitData,\n id,\n mutateDataHandler,\n rerenderUseDataHook,\n sessionStorageId,\n storeInSession,\n transformIn,\n ]\n )\n\n const setData = useCallback((newData: Data) => {\n internalDataRef.current = newData\n forceUpdate()\n }, [])\n\n /**\n * Update the data set on user interaction (unvalidated)\n */\n const handlePathChangeUnvalidated: ContextState['handlePathChange'] =\n useCallback(\n async (path, value) => {\n if (!path) {\n return null\n }\n\n updateDataValue(path, value)\n\n if (isAsync(onPathChange)) {\n await onPathChange?.(path, value)\n } else {\n onPathChange?.(path, value)\n }\n },\n [onPathChange, updateDataValue]\n )\n\n /**\n * Update the data set on user interaction\n */\n const handlePathChange: ContextState['handlePathChange'] = useCallback(\n async (path, value = '_undefined_') => {\n if (!path) {\n return null\n }\n\n if (value !== '_undefined_') {\n handlePathChangeUnvalidated(path, value)\n }\n\n showAllErrorsRef.current = false\n\n validateData()\n\n const data = internalDataRef.current as Data\n const transformedData = transformOut\n ? mutateDataHandler(data, transformOut)\n : data\n\n if (isAsync(onChange)) {\n return await onChange(transformedData)\n }\n\n return onChange?.(transformedData)\n },\n [\n handlePathChangeUnvalidated,\n mutateDataHandler,\n onChange,\n transformOut,\n validateData,\n ]\n )\n\n // - Mounted fields\n const handleMountField = useCallback((path: Path) => {\n mountedFieldPathsRef.current = addListPath(\n mountedFieldPathsRef.current,\n path\n )\n }, [])\n\n const handleUnMountField = useCallback((path: Path) => {\n mountedFieldPathsRef.current = removeListPath(\n mountedFieldPathsRef.current,\n path\n )\n if (fieldPropsRef.current?.[path]) {\n delete fieldPropsRef.current[path]\n }\n }, [])\n\n // - Features\n const scrollToTop = useCallback(() => {\n if (typeof window !== 'undefined') {\n window?.scrollTo?.({ top: 0, behavior: 'smooth' })\n }\n }, [])\n\n /**\n * Shared logic dedicated to submit the whole form\n */\n const handleSubmitCall = useCallback<ContextState['handleSubmitCall']>(\n async (args) => {\n const {\n onSubmit,\n enableAsyncBehaviour,\n skipFieldValidation,\n skipErrorCheck,\n } = args\n\n setSubmitState({ error: undefined })\n\n const asyncBehaviorIsEnabled =\n (skipErrorCheck\n ? true\n : // Don't enable async behaviour if we have errors, but when we have a pending state\n !hasErrors() || hasFieldState('pending')) &&\n (enableAsyncBehaviour || hasFieldWithAsyncValidator())\n\n if (asyncBehaviorIsEnabled) {\n setFormState('pending')\n }\n\n // Just call the submit listeners \"once\", and not on the retry/recall\n if (!skipFieldValidation) {\n for (const {\n path,\n type,\n callback,\n } of fieldEventListenersRef.current) {\n if (\n type === 'onSubmit' &&\n mountedFieldPathsRef.current.includes(path)\n ) {\n // Call all submit listener callbacks (e.g. to validate fields)\n if (asyncBehaviorIsEnabled) {\n await callback()\n } else {\n callback()\n }\n }\n }\n }\n\n if (\n !(skipErrorCheck ? false : hasErrors()) &&\n !hasFieldState('pending') &&\n (skipFieldValidation ? true : !hasFieldState('error'))\n ) {\n let result: EventStateObject | unknown\n\n try {\n result = await onSubmit()\n\n if (result instanceof Error) {\n throw result\n }\n } catch (error) {\n result = { error }\n }\n\n const state = result as EventStateObject\n\n if (asyncBehaviorIsEnabled) {\n setFormState(state?.error ? 'abort' : 'complete')\n }\n\n // Force the state to be set by a custom status\n if (state?.['status']) {\n setFormState(state?.['status'])\n }\n\n if (state?.error || state?.warning || state?.info) {\n setSubmitState(state)\n }\n } else {\n if (asyncBehaviorIsEnabled) {\n window.requestAnimationFrame(() => {\n setFormState(undefined)\n })\n\n if (!skipFieldValidation) {\n // Add a event listener to continue the submit after the pending state is resolved\n onSubmitContinueRef.current = () => {\n window.requestAnimationFrame(() => {\n // Do not call the validators again,\n // because we already did it in the first call\n // If they are async, we wait for them to finish anyway\n handleSubmitCall({ ...args, skipFieldValidation: true })\n })\n }\n }\n }\n\n onSubmitRequest?.()\n\n setShowAllErrors(true)\n }\n\n return internalDataRef.current\n },\n [\n setSubmitState,\n hasErrors,\n hasFieldWithAsyncValidator,\n hasFieldState,\n setFormState,\n onSubmitRequest,\n setShowAllErrors,\n ]\n )\n\n /**\n * Request to submit the whole form\n */\n const handleSubmit = useCallback<ContextState['handleSubmit']>(\n async ({ formElement = null } = {}) => {\n handleSubmitCall({\n enableAsyncBehaviour: isAsync(onSubmit),\n onSubmit: async () => {\n // - Mutate the data context\n const data = internalDataRef.current\n const filteredData = filterDataHandler(\n transformOut ? mutateDataHandler(data, transformOut) : data\n )\n const opts = {\n resetForm: () => {\n formElement?.reset?.()\n\n if (typeof window !== 'undefined') {\n if (sessionStorageId) {\n window.sessionStorage.removeItem(sessionStorageId)\n }\n }\n\n forceUpdate() // in order to fill \"empty fields\" again with their internal states\n },\n clearData: () => {\n internalDataRef.current = {} as Data\n if (id) {\n setSharedData?.({} as Data)\n } else {\n forceUpdate()\n }\n },\n }\n\n let result = undefined\n\n if (isAsync(onSubmit)) {\n result = await onSubmit(filteredData, opts)\n } else {\n result = onSubmit?.(filteredData, opts)\n }\n\n const completeResult = await onSubmitComplete?.(\n filteredData,\n result\n )\n if (completeResult) {\n result =\n Object.keys(result).length > 0\n ? { ...result, ...completeResult }\n : completeResult\n }\n\n if (scrollTopOnSubmit) {\n scrollToTop()\n }\n\n return result\n },\n })\n },\n [\n filterDataHandler,\n handleSubmitCall,\n id,\n mutateDataHandler,\n onSubmit,\n onSubmitComplete,\n scrollToTop,\n scrollTopOnSubmit,\n sessionStorageId,\n setSharedData,\n transformOut,\n ]\n )\n\n // Collect listeners to be called during form submit\n const fieldEventListenersRef = useRef<Array<EventListenerCall>>([])\n const setFieldEventListener = useCallback(\n (\n path: EventListenerCall['path'],\n type: EventListenerCall['type'],\n callback: EventListenerCall['callback']\n ) => {\n fieldEventListenersRef.current =\n fieldEventListenersRef.current.filter(({ path: p, type: t }) => {\n return !(p === path && t === type)\n })\n fieldEventListenersRef.current.push({ path, type, callback })\n },\n []\n )\n\n // Handle unresolved field states during async submit\n const onSubmitContinueRef = useRef<() => void>(null)\n if (!hasFieldState('pending')) {\n onSubmitContinueRef.current?.()\n onSubmitContinueRef.current = null\n }\n\n // - ajv validator routines\n useMountEffect(() => {\n if (schema) {\n ajvValidatorRef.current = ajvRef.current?.compile(schema)\n }\n\n // Validate the initial data\n validateData()\n })\n useUpdateEffect(() => {\n if (schema && schema !== cacheRef.current.schema) {\n cacheRef.current.schema = schema\n ajvValidatorRef.current = ajvRef.current?.compile(schema)\n\n validateData()\n forceUpdate()\n }\n }, [schema, validateData, forceUpdate])\n\n const onTimeout = useCallback(() => {\n setFormState(undefined)\n setSubmitState({\n info: undefined,\n warning: undefined,\n error: undefined,\n })\n }, [setFormState, setSubmitState])\n\n const { bufferedFormState: formState } = useFormStatusBuffer({\n formState: formStateRef.current,\n waitFor: hasFieldState('pending'),\n minimumAsyncBehaviorTime,\n asyncSubmitTimeout,\n onTimeout,\n })\n\n const submitState = submitStateRef.current\n const disabled =\n typeof rest?.['disabled'] === 'boolean'\n ? rest?.['disabled']\n : (formState === 'pending') === true\n ? true\n : undefined\n\n return (\n <Context.Provider\n value={{\n /** Method */\n handlePathChange,\n handlePathChangeUnvalidated,\n handleSubmit,\n handleMountField,\n handleUnMountField,\n handleSubmitCall,\n setFormState,\n setSubmitState,\n setShowAllErrors,\n setFieldEventListener,\n setFieldState,\n setFieldError,\n setProps,\n hasErrors,\n hasFieldState,\n checkFieldStateFor,\n validateData,\n updateDataValue,\n setData,\n filterDataHandler,\n scrollToTop,\n\n /** State handling */\n schema,\n disabled,\n formState,\n submitState,\n contextErrorMessages,\n hasContext: true,\n errors: errorsRef.current,\n showAllErrors: showAllErrorsRef.current,\n mountedFieldPaths: mountedFieldPathsRef.current,\n ajvInstance: ajvRef.current,\n\n /** Additional */\n id,\n data: internalDataRef.current,\n props,\n ...rest,\n }}\n >\n <SharedProvider\n FormStatus={\n globalStatusId\n ? {\n globalStatus: {\n id: globalStatusId,\n title: translation.errorSummaryTitle,\n show: showAllErrorsRef.current,\n },\n }\n : undefined\n }\n formElement={{ disabled }}\n >\n {children}\n </SharedProvider>\n </Context.Provider>\n )\n}\n\ntype PathList = string[]\n\nexport function addListPath(paths: PathList, path: Path): PathList {\n return paths.includes(path) ? paths : paths.concat(path)\n}\n\nexport function removeListPath(paths: PathList, path: Path): PathList {\n return paths.filter((thisPath) => thisPath !== path)\n}\n\ntype FormStatusBufferProps = {\n minimumAsyncBehaviorTime?: Props<unknown>['minimumAsyncBehaviorTime']\n asyncSubmitTimeout?: Props<unknown>['asyncSubmitTimeout']\n formState: ContextState['formState']\n waitFor: boolean\n onTimeout: () => void\n}\n\nfunction useFormStatusBuffer(props: FormStatusBufferProps) {\n const {\n formState,\n waitFor,\n minimumAsyncBehaviorTime,\n asyncSubmitTimeout,\n onTimeout,\n } = props || {}\n\n const [, forceUpdate] = useReducer(() => ({}), {})\n const stateRef = useRef<SubmitState>()\n const nowRef = useRef<number | null>(null)\n const timeoutRef = useRef<{\n complete?: NodeJS.Timeout | null\n reset?: NodeJS.Timeout | null\n timeout?: NodeJS.Timeout | null\n }>({})\n\n const setState = useCallback(\n (state: SubmitState) => {\n stateRef.current = state\n forceUpdate()\n },\n [forceUpdate]\n )\n\n const clear = useCallback(() => {\n for (const key in timeoutRef.current) {\n clearTimeout(timeoutRef.current[key])\n }\n }, [])\n\n const hadCompleteRef = useRef(false)\n\n useEffect(() => {\n // This offset is used to calculate the delay,\n // which ensures that the form state is displayed for at least minimumAsyncBehaviorTime duration.\n // If the form was 'pending' for less than minimumAsyncBehaviorTime,\n // the delay will be the remaining time to reach minimumAsyncBehaviorTime.\n const isTest = process.env.NODE_ENV === 'test'\n const minimum =\n minimumAsyncBehaviorTime ??\n // make it testable\n (isTest ? 1 : 1000)\n\n if (stateRef.current && formState === 'error') {\n clear()\n setState(undefined)\n return\n }\n\n if (formState === 'abort') {\n clear()\n setState('abort')\n\n timeoutRef.current.reset = setTimeout(() => {\n nowRef.current = 0\n setState(undefined)\n }, minimum)\n return\n }\n\n if (formState === 'complete') {\n hadCompleteRef.current = true\n }\n\n if (formState === 'pending' && stateRef.current !== 'pending') {\n clear()\n nowRef.current = Date.now()\n hadCompleteRef.current = false\n setState('pending')\n } else if (stateRef.current === 'pending') {\n const offset = Math.max(Date.now() - nowRef.current)\n const delay = isTest ? minimum : Math.max(minimum - offset, 0)\n\n if (!waitFor) {\n timeoutRef.current.complete = setTimeout(() => {\n if (hadCompleteRef.current) {\n setState('complete')\n }\n }, delay)\n\n timeoutRef.current.reset = setTimeout(() => {\n nowRef.current = 0\n setState(undefined)\n clear()\n }, delay + minimum)\n }\n }\n\n if (stateRef.current === 'pending') {\n timeoutRef.current.timeout = setTimeout(() => {\n clear()\n setState(undefined)\n onTimeout?.()\n }, asyncSubmitTimeout ?? 30000)\n }\n\n return clear\n }, [\n clear,\n minimumAsyncBehaviorTime,\n formState,\n setState,\n waitFor,\n asyncSubmitTimeout,\n onTimeout,\n ])\n\n return { bufferedFormState: stateRef.current }\n}\n"],"mappings":"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"}
@@ -44,8 +44,18 @@ export const ProviderProperties = {
44
44
  type: 'ajv',
45
45
  status: 'optional'
46
46
  },
47
- filterData: {
48
- doc: 'Filter the internal data context based on your criteria: `(path, value, props, internal) => !props?.disabled`. It will iterate on each data entry.',
47
+ transformIn: {
48
+ doc: "Mutate the data context (internally as well) based on your criteria: `(path, value, props, internal) => 'new value'`. It will iterate on each data entry (/path).",
49
+ type: 'function',
50
+ status: 'optional'
51
+ },
52
+ transformOut: {
53
+ doc: "Mutate the data before it enters onSubmit or onChange based on your criteria: `(path, value, props, internal) => 'new value'`. It will iterate on each data entry (/path).",
54
+ type: 'function',
55
+ status: 'optional'
56
+ },
57
+ filterSubmitData: {
58
+ doc: 'Filter the `onSubmit` output data, based on your criteria: `(path, value, props, internal) => !props?.disabled`. It will iterate on each data entry (/path). Return false to exclude the entry.',
49
59
  type: 'function',
50
60
  status: 'optional'
51
61
  },