@dnb/eufemia 10.46.0 → 10.47.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 (510) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/cjs/components/accordion/Accordion.d.ts +17 -1
  3. package/cjs/components/accordion/Accordion.js +4 -2
  4. package/cjs/components/accordion/Accordion.js.map +1 -1
  5. package/cjs/components/accordion/AccordionContext.d.ts +4 -0
  6. package/cjs/components/accordion/AccordionContext.js.map +1 -1
  7. package/cjs/components/accordion/AccordionDocs.js +6 -1
  8. package/cjs/components/accordion/AccordionDocs.js.map +1 -1
  9. package/cjs/components/accordion/AccordionGroup.js +5 -3
  10. package/cjs/components/accordion/AccordionGroup.js.map +1 -1
  11. package/cjs/components/accordion/AccordionProviderContext.d.ts +4 -0
  12. package/cjs/components/accordion/AccordionProviderContext.js.map +1 -1
  13. package/cjs/components/accordion/AccordionStore.js +2 -1
  14. package/cjs/components/accordion/AccordionStore.js.map +1 -1
  15. package/cjs/components/accordion/style/dnb-accordion.css +3 -3
  16. package/cjs/components/accordion/style/dnb-accordion.min.css +1 -1
  17. package/cjs/components/autocomplete/style/dnb-autocomplete.css +1 -1
  18. package/cjs/components/autocomplete/style/dnb-autocomplete.min.css +1 -1
  19. package/cjs/components/breadcrumb/style/dnb-breadcrumb.css +1 -1
  20. package/cjs/components/breadcrumb/style/dnb-breadcrumb.min.css +1 -1
  21. package/cjs/components/button/Button.d.ts +1 -1
  22. package/cjs/components/button/Button.js +5 -2
  23. package/cjs/components/button/Button.js.map +1 -1
  24. package/cjs/components/card/style/dnb-card.css +1 -1
  25. package/cjs/components/card/style/dnb-card.min.css +1 -1
  26. package/cjs/components/copy-on-click/CopyOnClick.d.ts +1 -1
  27. package/cjs/components/copy-on-click/CopyOnClick.js +5 -4
  28. package/cjs/components/copy-on-click/CopyOnClick.js.map +1 -1
  29. package/cjs/components/copy-on-click/CopyOnClickDocs.js +5 -0
  30. package/cjs/components/copy-on-click/CopyOnClickDocs.js.map +1 -1
  31. package/cjs/components/copy-on-click/types.d.ts +5 -0
  32. package/cjs/components/copy-on-click/types.js.map +1 -1
  33. package/cjs/components/drawer/style/dnb-drawer.css +3 -3
  34. package/cjs/components/drawer/style/dnb-drawer.min.css +1 -1
  35. package/cjs/components/dropdown/style/dnb-dropdown.css +1 -1
  36. package/cjs/components/dropdown/style/dnb-dropdown.min.css +1 -1
  37. package/cjs/components/flex/Container.js +9 -1
  38. package/cjs/components/flex/Container.js.map +1 -1
  39. package/cjs/components/flex/utils.d.ts +1 -1
  40. package/cjs/components/flex/utils.js +1 -1
  41. package/cjs/components/flex/utils.js.map +1 -1
  42. package/cjs/components/form-row/style/dnb-form-row.css +1 -1
  43. package/cjs/components/form-row/style/dnb-form-row.min.css +1 -1
  44. package/cjs/components/grid/style/dnb-grid.css +6 -6
  45. package/cjs/components/grid/style/dnb-grid.min.css +1 -1
  46. package/cjs/components/lib.d.ts +1 -1
  47. package/cjs/components/progress-indicator/ProgressIndicator.js +2 -2
  48. package/cjs/components/progress-indicator/ProgressIndicator.js.map +1 -1
  49. package/cjs/components/section/style/dnb-section.css +2 -2
  50. package/cjs/components/section/style/dnb-section.min.css +2 -2
  51. package/cjs/components/space/style/dnb-space.css +2 -2
  52. package/cjs/components/space/style/dnb-space.min.css +1 -1
  53. package/cjs/components/tabs/Tabs.js +2 -2
  54. package/cjs/components/tabs/Tabs.js.map +1 -1
  55. package/cjs/components/tag/Tag.js +2 -2
  56. package/cjs/components/tag/Tag.js.map +1 -1
  57. package/cjs/components/toggle-button/style/dnb-toggle-button.css +1 -1
  58. package/cjs/components/toggle-button/style/dnb-toggle-button.min.css +1 -1
  59. package/cjs/extensions/forms/DataContext/Context.d.ts +8 -5
  60. package/cjs/extensions/forms/DataContext/Context.js +0 -1
  61. package/cjs/extensions/forms/DataContext/Context.js.map +1 -1
  62. package/cjs/extensions/forms/DataContext/Provider/Provider.d.ts +6 -2
  63. package/cjs/extensions/forms/DataContext/Provider/Provider.js +35 -16
  64. package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  65. package/cjs/extensions/forms/Field/ArraySelection/style/dnb-array-selection.css +1 -1
  66. package/cjs/extensions/forms/Field/ArraySelection/style/dnb-array-selection.min.css +1 -1
  67. package/cjs/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js +21 -12
  68. package/cjs/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js.map +1 -1
  69. package/cjs/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumberDocs.d.ts +2 -0
  70. package/cjs/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumberDocs.js +20 -0
  71. package/cjs/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumberDocs.js.map +1 -0
  72. package/cjs/extensions/forms/Field/Slider/Slider.js +7 -7
  73. package/cjs/extensions/forms/Field/Slider/Slider.js.map +1 -1
  74. package/cjs/extensions/forms/FieldBlock/FieldBlock.js +3 -4
  75. package/cjs/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  76. package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.css +3 -3
  77. package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
  78. package/cjs/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.css +1 -1
  79. package/cjs/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.min.css +1 -1
  80. package/cjs/extensions/forms/Form/MainHeading/style/dnb-form-main-heading.css +1 -1
  81. package/cjs/extensions/forms/Form/MainHeading/style/dnb-form-main-heading.min.css +1 -1
  82. package/cjs/extensions/forms/Form/SubmitIndicator/SubmitIndicator.js +9 -5
  83. package/cjs/extensions/forms/Form/SubmitIndicator/SubmitIndicator.js.map +1 -1
  84. package/cjs/extensions/forms/Iterate/Array/Array.js +4 -4
  85. package/cjs/extensions/forms/Iterate/Array/Array.js.map +1 -1
  86. package/cjs/extensions/forms/Value/Date/Date.d.ts +1 -1
  87. package/cjs/extensions/forms/Value/Date/Date.js +15 -5
  88. package/cjs/extensions/forms/Value/Date/Date.js.map +1 -1
  89. package/cjs/extensions/forms/Value/Date/DateDocs.js +1 -1
  90. package/cjs/extensions/forms/Value/Date/DateDocs.js.map +1 -1
  91. package/cjs/extensions/forms/ValueBlock/style/dnb-value-block.css +2 -2
  92. package/cjs/extensions/forms/ValueBlock/style/dnb-value-block.min.css +1 -1
  93. package/cjs/extensions/forms/Wizard/Container/WizardContainer.js +1 -1
  94. package/cjs/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  95. package/cjs/extensions/forms/Wizard/style/dnb-wizard-layout.css +2 -2
  96. package/cjs/extensions/forms/Wizard/style/dnb-wizard-layout.min.css +1 -1
  97. package/cjs/extensions/forms/constants/countries.d.ts +5 -2
  98. package/cjs/extensions/forms/constants/countries.js +72 -0
  99. package/cjs/extensions/forms/constants/countries.js.map +1 -1
  100. package/cjs/extensions/forms/hooks/DataValueDocs.js +4 -4
  101. package/cjs/extensions/forms/hooks/DataValueDocs.js.map +1 -1
  102. package/cjs/extensions/forms/hooks/useDataValue.d.ts +2 -1
  103. package/cjs/extensions/forms/hooks/useDataValue.js +7 -7
  104. package/cjs/extensions/forms/hooks/useDataValue.js.map +1 -1
  105. package/cjs/extensions/forms/hooks/useFieldProps.d.ts +1 -1
  106. package/cjs/extensions/forms/hooks/useFieldProps.js +296 -115
  107. package/cjs/extensions/forms/hooks/useFieldProps.js.map +1 -1
  108. package/cjs/extensions/forms/style/dnb-forms.css +10 -10
  109. package/cjs/extensions/forms/style/dnb-forms.min.css +1 -1
  110. package/cjs/extensions/forms/types.d.ts +28 -2
  111. package/cjs/extensions/forms/types.js.map +1 -1
  112. package/cjs/shared/Eufemia.d.ts +1 -1
  113. package/cjs/shared/Eufemia.js +2 -2
  114. package/cjs/shared/Eufemia.js.map +1 -1
  115. package/cjs/style/core/scopes.scss +1 -1
  116. package/cjs/style/core/utilities.scss +3 -6
  117. package/cjs/style/dnb-ui-basis.css +1 -1
  118. package/cjs/style/dnb-ui-basis.min.css +1 -1
  119. package/cjs/style/dnb-ui-body.css +1 -1
  120. package/cjs/style/dnb-ui-body.min.css +1 -1
  121. package/cjs/style/dnb-ui-components.css +34 -34
  122. package/cjs/style/dnb-ui-components.min.css +5 -5
  123. package/cjs/style/dnb-ui-core.css +1 -1
  124. package/cjs/style/dnb-ui-core.min.css +1 -1
  125. package/cjs/style/dnb-ui-elements.css +1 -1
  126. package/cjs/style/dnb-ui-elements.min.css +1 -1
  127. package/cjs/style/dnb-ui-extensions.css +10 -10
  128. package/cjs/style/dnb-ui-extensions.min.css +1 -1
  129. package/cjs/style/dnb-ui-forms.css +10 -10
  130. package/cjs/style/dnb-ui-forms.min.css +1 -1
  131. package/cjs/style/dnb-ui-fragments.css +2 -2
  132. package/cjs/style/dnb-ui-fragments.min.css +1 -1
  133. package/cjs/style/themes/theme-eiendom/eiendom-theme-basis.css +1 -1
  134. package/cjs/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  135. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +45 -45
  136. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +6 -6
  137. package/cjs/style/themes/theme-eiendom/eiendom-theme-elements.css +1 -1
  138. package/cjs/style/themes/theme-eiendom/eiendom-theme-elements.min.css +1 -1
  139. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.css +10 -10
  140. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  141. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.css +10 -10
  142. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  143. package/cjs/style/themes/theme-sbanken/sbanken-theme-basis.css +1 -1
  144. package/cjs/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
  145. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +45 -45
  146. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +7 -7
  147. package/cjs/style/themes/theme-sbanken/sbanken-theme-elements.css +1 -1
  148. package/cjs/style/themes/theme-sbanken/sbanken-theme-elements.min.css +1 -1
  149. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.css +10 -10
  150. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  151. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.css +10 -10
  152. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  153. package/cjs/style/themes/theme-ui/ui-theme-basis.css +1 -1
  154. package/cjs/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  155. package/cjs/style/themes/theme-ui/ui-theme-components.css +45 -45
  156. package/cjs/style/themes/theme-ui/ui-theme-components.min.css +6 -6
  157. package/cjs/style/themes/theme-ui/ui-theme-elements.css +1 -1
  158. package/cjs/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
  159. package/cjs/style/themes/theme-ui/ui-theme-extensions.css +10 -10
  160. package/cjs/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  161. package/cjs/style/themes/theme-ui/ui-theme-forms.css +10 -10
  162. package/cjs/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  163. package/cjs/style/themes/theme-ui/ui-theme-tags.css +1 -1
  164. package/cjs/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  165. package/components/accordion/Accordion.d.ts +17 -1
  166. package/components/accordion/Accordion.js +4 -2
  167. package/components/accordion/Accordion.js.map +1 -1
  168. package/components/accordion/AccordionContext.d.ts +4 -0
  169. package/components/accordion/AccordionContext.js.map +1 -1
  170. package/components/accordion/AccordionDocs.js +6 -1
  171. package/components/accordion/AccordionDocs.js.map +1 -1
  172. package/components/accordion/AccordionGroup.js +5 -3
  173. package/components/accordion/AccordionGroup.js.map +1 -1
  174. package/components/accordion/AccordionProviderContext.d.ts +4 -0
  175. package/components/accordion/AccordionProviderContext.js.map +1 -1
  176. package/components/accordion/AccordionStore.js +2 -1
  177. package/components/accordion/AccordionStore.js.map +1 -1
  178. package/components/accordion/style/dnb-accordion.css +3 -3
  179. package/components/accordion/style/dnb-accordion.min.css +1 -1
  180. package/components/autocomplete/style/dnb-autocomplete.css +1 -1
  181. package/components/autocomplete/style/dnb-autocomplete.min.css +1 -1
  182. package/components/breadcrumb/style/dnb-breadcrumb.css +1 -1
  183. package/components/breadcrumb/style/dnb-breadcrumb.min.css +1 -1
  184. package/components/button/Button.d.ts +1 -1
  185. package/components/button/Button.js +5 -2
  186. package/components/button/Button.js.map +1 -1
  187. package/components/card/style/dnb-card.css +1 -1
  188. package/components/card/style/dnb-card.min.css +1 -1
  189. package/components/copy-on-click/CopyOnClick.d.ts +1 -1
  190. package/components/copy-on-click/CopyOnClick.js +5 -4
  191. package/components/copy-on-click/CopyOnClick.js.map +1 -1
  192. package/components/copy-on-click/CopyOnClickDocs.js +5 -0
  193. package/components/copy-on-click/CopyOnClickDocs.js.map +1 -1
  194. package/components/copy-on-click/types.d.ts +5 -0
  195. package/components/copy-on-click/types.js.map +1 -1
  196. package/components/drawer/style/dnb-drawer.css +3 -3
  197. package/components/drawer/style/dnb-drawer.min.css +1 -1
  198. package/components/dropdown/style/dnb-dropdown.css +1 -1
  199. package/components/dropdown/style/dnb-dropdown.min.css +1 -1
  200. package/components/flex/Container.js +10 -2
  201. package/components/flex/Container.js.map +1 -1
  202. package/components/flex/utils.d.ts +1 -1
  203. package/components/flex/utils.js +1 -1
  204. package/components/flex/utils.js.map +1 -1
  205. package/components/form-row/style/dnb-form-row.css +1 -1
  206. package/components/form-row/style/dnb-form-row.min.css +1 -1
  207. package/components/grid/style/dnb-grid.css +6 -6
  208. package/components/grid/style/dnb-grid.min.css +1 -1
  209. package/components/lib.d.ts +1 -1
  210. package/components/progress-indicator/ProgressIndicator.js +2 -2
  211. package/components/progress-indicator/ProgressIndicator.js.map +1 -1
  212. package/components/section/style/dnb-section.css +2 -2
  213. package/components/section/style/dnb-section.min.css +2 -2
  214. package/components/space/style/dnb-space.css +2 -2
  215. package/components/space/style/dnb-space.min.css +1 -1
  216. package/components/tabs/Tabs.js +2 -2
  217. package/components/tabs/Tabs.js.map +1 -1
  218. package/components/tag/Tag.js +2 -2
  219. package/components/tag/Tag.js.map +1 -1
  220. package/components/toggle-button/style/dnb-toggle-button.css +1 -1
  221. package/components/toggle-button/style/dnb-toggle-button.min.css +1 -1
  222. package/es/components/accordion/Accordion.d.ts +17 -1
  223. package/es/components/accordion/Accordion.js +4 -2
  224. package/es/components/accordion/Accordion.js.map +1 -1
  225. package/es/components/accordion/AccordionContext.d.ts +4 -0
  226. package/es/components/accordion/AccordionContext.js.map +1 -1
  227. package/es/components/accordion/AccordionDocs.js +6 -1
  228. package/es/components/accordion/AccordionDocs.js.map +1 -1
  229. package/es/components/accordion/AccordionGroup.js +5 -3
  230. package/es/components/accordion/AccordionGroup.js.map +1 -1
  231. package/es/components/accordion/AccordionProviderContext.d.ts +4 -0
  232. package/es/components/accordion/AccordionProviderContext.js.map +1 -1
  233. package/es/components/accordion/AccordionStore.js +2 -1
  234. package/es/components/accordion/AccordionStore.js.map +1 -1
  235. package/es/components/accordion/style/dnb-accordion.css +3 -3
  236. package/es/components/accordion/style/dnb-accordion.min.css +1 -1
  237. package/es/components/autocomplete/style/dnb-autocomplete.css +1 -1
  238. package/es/components/autocomplete/style/dnb-autocomplete.min.css +1 -1
  239. package/es/components/breadcrumb/style/dnb-breadcrumb.css +1 -1
  240. package/es/components/breadcrumb/style/dnb-breadcrumb.min.css +1 -1
  241. package/es/components/button/Button.d.ts +1 -1
  242. package/es/components/button/Button.js +5 -2
  243. package/es/components/button/Button.js.map +1 -1
  244. package/es/components/card/style/dnb-card.css +1 -1
  245. package/es/components/card/style/dnb-card.min.css +1 -1
  246. package/es/components/copy-on-click/CopyOnClick.d.ts +1 -1
  247. package/es/components/copy-on-click/CopyOnClick.js +5 -4
  248. package/es/components/copy-on-click/CopyOnClick.js.map +1 -1
  249. package/es/components/copy-on-click/CopyOnClickDocs.js +5 -0
  250. package/es/components/copy-on-click/CopyOnClickDocs.js.map +1 -1
  251. package/es/components/copy-on-click/types.d.ts +5 -0
  252. package/es/components/copy-on-click/types.js.map +1 -1
  253. package/es/components/drawer/style/dnb-drawer.css +3 -3
  254. package/es/components/drawer/style/dnb-drawer.min.css +1 -1
  255. package/es/components/dropdown/style/dnb-dropdown.css +1 -1
  256. package/es/components/dropdown/style/dnb-dropdown.min.css +1 -1
  257. package/es/components/flex/Container.js +10 -2
  258. package/es/components/flex/Container.js.map +1 -1
  259. package/es/components/flex/utils.d.ts +1 -1
  260. package/es/components/flex/utils.js +1 -1
  261. package/es/components/flex/utils.js.map +1 -1
  262. package/es/components/form-row/style/dnb-form-row.css +1 -1
  263. package/es/components/form-row/style/dnb-form-row.min.css +1 -1
  264. package/es/components/grid/style/dnb-grid.css +6 -6
  265. package/es/components/grid/style/dnb-grid.min.css +1 -1
  266. package/es/components/lib.d.ts +1 -1
  267. package/es/components/progress-indicator/ProgressIndicator.js +2 -2
  268. package/es/components/progress-indicator/ProgressIndicator.js.map +1 -1
  269. package/es/components/section/style/dnb-section.css +2 -2
  270. package/es/components/section/style/dnb-section.min.css +2 -2
  271. package/es/components/space/style/dnb-space.css +2 -2
  272. package/es/components/space/style/dnb-space.min.css +1 -1
  273. package/es/components/tabs/Tabs.js +2 -2
  274. package/es/components/tabs/Tabs.js.map +1 -1
  275. package/es/components/tag/Tag.js +2 -2
  276. package/es/components/tag/Tag.js.map +1 -1
  277. package/es/components/toggle-button/style/dnb-toggle-button.css +1 -1
  278. package/es/components/toggle-button/style/dnb-toggle-button.min.css +1 -1
  279. package/es/extensions/forms/DataContext/Context.d.ts +8 -5
  280. package/es/extensions/forms/DataContext/Context.js +0 -1
  281. package/es/extensions/forms/DataContext/Context.js.map +1 -1
  282. package/es/extensions/forms/DataContext/Provider/Provider.d.ts +6 -2
  283. package/es/extensions/forms/DataContext/Provider/Provider.js +35 -16
  284. package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  285. package/es/extensions/forms/Field/ArraySelection/style/dnb-array-selection.css +1 -1
  286. package/es/extensions/forms/Field/ArraySelection/style/dnb-array-selection.min.css +1 -1
  287. package/es/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js +21 -12
  288. package/es/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js.map +1 -1
  289. package/es/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumberDocs.d.ts +2 -0
  290. package/es/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumberDocs.js +13 -0
  291. package/es/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumberDocs.js.map +1 -0
  292. package/es/extensions/forms/Field/Slider/Slider.js +7 -7
  293. package/es/extensions/forms/Field/Slider/Slider.js.map +1 -1
  294. package/es/extensions/forms/FieldBlock/FieldBlock.js +3 -4
  295. package/es/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  296. package/es/extensions/forms/FieldBlock/style/dnb-field-block.css +3 -3
  297. package/es/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
  298. package/es/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.css +1 -1
  299. package/es/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.min.css +1 -1
  300. package/es/extensions/forms/Form/MainHeading/style/dnb-form-main-heading.css +1 -1
  301. package/es/extensions/forms/Form/MainHeading/style/dnb-form-main-heading.min.css +1 -1
  302. package/es/extensions/forms/Form/SubmitIndicator/SubmitIndicator.js +9 -5
  303. package/es/extensions/forms/Form/SubmitIndicator/SubmitIndicator.js.map +1 -1
  304. package/es/extensions/forms/Iterate/Array/Array.js +4 -4
  305. package/es/extensions/forms/Iterate/Array/Array.js.map +1 -1
  306. package/es/extensions/forms/Value/Date/Date.d.ts +1 -1
  307. package/es/extensions/forms/Value/Date/Date.js +15 -5
  308. package/es/extensions/forms/Value/Date/Date.js.map +1 -1
  309. package/es/extensions/forms/Value/Date/DateDocs.js +1 -1
  310. package/es/extensions/forms/Value/Date/DateDocs.js.map +1 -1
  311. package/es/extensions/forms/ValueBlock/style/dnb-value-block.css +2 -2
  312. package/es/extensions/forms/ValueBlock/style/dnb-value-block.min.css +1 -1
  313. package/es/extensions/forms/Wizard/Container/WizardContainer.js +1 -1
  314. package/es/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  315. package/es/extensions/forms/Wizard/style/dnb-wizard-layout.css +2 -2
  316. package/es/extensions/forms/Wizard/style/dnb-wizard-layout.min.css +1 -1
  317. package/es/extensions/forms/constants/countries.d.ts +5 -2
  318. package/es/extensions/forms/constants/countries.js +72 -0
  319. package/es/extensions/forms/constants/countries.js.map +1 -1
  320. package/es/extensions/forms/hooks/DataValueDocs.js +4 -4
  321. package/es/extensions/forms/hooks/DataValueDocs.js.map +1 -1
  322. package/es/extensions/forms/hooks/useDataValue.d.ts +2 -1
  323. package/es/extensions/forms/hooks/useDataValue.js +7 -7
  324. package/es/extensions/forms/hooks/useDataValue.js.map +1 -1
  325. package/es/extensions/forms/hooks/useFieldProps.d.ts +1 -1
  326. package/es/extensions/forms/hooks/useFieldProps.js +288 -112
  327. package/es/extensions/forms/hooks/useFieldProps.js.map +1 -1
  328. package/es/extensions/forms/style/dnb-forms.css +10 -10
  329. package/es/extensions/forms/style/dnb-forms.min.css +1 -1
  330. package/es/extensions/forms/types.d.ts +28 -2
  331. package/es/extensions/forms/types.js.map +1 -1
  332. package/es/shared/Eufemia.d.ts +1 -1
  333. package/es/shared/Eufemia.js +2 -2
  334. package/es/shared/Eufemia.js.map +1 -1
  335. package/es/style/core/scopes.scss +1 -1
  336. package/es/style/core/utilities.scss +3 -6
  337. package/es/style/dnb-ui-basis.css +1 -1
  338. package/es/style/dnb-ui-basis.min.css +1 -1
  339. package/es/style/dnb-ui-body.css +1 -1
  340. package/es/style/dnb-ui-body.min.css +1 -1
  341. package/es/style/dnb-ui-components.css +34 -34
  342. package/es/style/dnb-ui-components.min.css +5 -5
  343. package/es/style/dnb-ui-core.css +1 -1
  344. package/es/style/dnb-ui-core.min.css +1 -1
  345. package/es/style/dnb-ui-elements.css +1 -1
  346. package/es/style/dnb-ui-elements.min.css +1 -1
  347. package/es/style/dnb-ui-extensions.css +10 -10
  348. package/es/style/dnb-ui-extensions.min.css +1 -1
  349. package/es/style/dnb-ui-forms.css +10 -10
  350. package/es/style/dnb-ui-forms.min.css +1 -1
  351. package/es/style/dnb-ui-fragments.css +2 -2
  352. package/es/style/dnb-ui-fragments.min.css +1 -1
  353. package/es/style/themes/theme-eiendom/eiendom-theme-basis.css +1 -1
  354. package/es/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  355. package/es/style/themes/theme-eiendom/eiendom-theme-components.css +45 -45
  356. package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +6 -6
  357. package/es/style/themes/theme-eiendom/eiendom-theme-elements.css +1 -1
  358. package/es/style/themes/theme-eiendom/eiendom-theme-elements.min.css +1 -1
  359. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.css +10 -10
  360. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  361. package/es/style/themes/theme-eiendom/eiendom-theme-forms.css +10 -10
  362. package/es/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  363. package/es/style/themes/theme-sbanken/sbanken-theme-basis.css +1 -1
  364. package/es/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
  365. package/es/style/themes/theme-sbanken/sbanken-theme-components.css +45 -45
  366. package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +7 -7
  367. package/es/style/themes/theme-sbanken/sbanken-theme-elements.css +1 -1
  368. package/es/style/themes/theme-sbanken/sbanken-theme-elements.min.css +1 -1
  369. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.css +10 -10
  370. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  371. package/es/style/themes/theme-sbanken/sbanken-theme-forms.css +10 -10
  372. package/es/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  373. package/es/style/themes/theme-ui/ui-theme-basis.css +1 -1
  374. package/es/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  375. package/es/style/themes/theme-ui/ui-theme-components.css +45 -45
  376. package/es/style/themes/theme-ui/ui-theme-components.min.css +6 -6
  377. package/es/style/themes/theme-ui/ui-theme-elements.css +1 -1
  378. package/es/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
  379. package/es/style/themes/theme-ui/ui-theme-extensions.css +10 -10
  380. package/es/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  381. package/es/style/themes/theme-ui/ui-theme-forms.css +10 -10
  382. package/es/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  383. package/es/style/themes/theme-ui/ui-theme-tags.css +1 -1
  384. package/es/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  385. package/esm/dnb-ui-basis.min.mjs +1 -1
  386. package/esm/dnb-ui-components.min.mjs +1 -1
  387. package/esm/dnb-ui-elements.min.mjs +1 -1
  388. package/esm/dnb-ui-extensions.min.mjs +5 -5
  389. package/esm/dnb-ui-lib.min.mjs +1 -1
  390. package/extensions/forms/DataContext/Context.d.ts +8 -5
  391. package/extensions/forms/DataContext/Context.js +0 -1
  392. package/extensions/forms/DataContext/Context.js.map +1 -1
  393. package/extensions/forms/DataContext/Provider/Provider.d.ts +6 -2
  394. package/extensions/forms/DataContext/Provider/Provider.js +35 -16
  395. package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  396. package/extensions/forms/Field/ArraySelection/style/dnb-array-selection.css +1 -1
  397. package/extensions/forms/Field/ArraySelection/style/dnb-array-selection.min.css +1 -1
  398. package/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js +21 -12
  399. package/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js.map +1 -1
  400. package/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumberDocs.d.ts +2 -0
  401. package/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumberDocs.js +13 -0
  402. package/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumberDocs.js.map +1 -0
  403. package/extensions/forms/Field/Slider/Slider.js +7 -7
  404. package/extensions/forms/Field/Slider/Slider.js.map +1 -1
  405. package/extensions/forms/FieldBlock/FieldBlock.js +3 -4
  406. package/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  407. package/extensions/forms/FieldBlock/style/dnb-field-block.css +3 -3
  408. package/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
  409. package/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.css +1 -1
  410. package/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.min.css +1 -1
  411. package/extensions/forms/Form/MainHeading/style/dnb-form-main-heading.css +1 -1
  412. package/extensions/forms/Form/MainHeading/style/dnb-form-main-heading.min.css +1 -1
  413. package/extensions/forms/Form/SubmitIndicator/SubmitIndicator.js +9 -5
  414. package/extensions/forms/Form/SubmitIndicator/SubmitIndicator.js.map +1 -1
  415. package/extensions/forms/Iterate/Array/Array.js +4 -4
  416. package/extensions/forms/Iterate/Array/Array.js.map +1 -1
  417. package/extensions/forms/Value/Date/Date.d.ts +1 -1
  418. package/extensions/forms/Value/Date/Date.js +15 -5
  419. package/extensions/forms/Value/Date/Date.js.map +1 -1
  420. package/extensions/forms/Value/Date/DateDocs.js +1 -1
  421. package/extensions/forms/Value/Date/DateDocs.js.map +1 -1
  422. package/extensions/forms/ValueBlock/style/dnb-value-block.css +2 -2
  423. package/extensions/forms/ValueBlock/style/dnb-value-block.min.css +1 -1
  424. package/extensions/forms/Wizard/Container/WizardContainer.js +1 -1
  425. package/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  426. package/extensions/forms/Wizard/style/dnb-wizard-layout.css +2 -2
  427. package/extensions/forms/Wizard/style/dnb-wizard-layout.min.css +1 -1
  428. package/extensions/forms/constants/countries.d.ts +5 -2
  429. package/extensions/forms/constants/countries.js +72 -0
  430. package/extensions/forms/constants/countries.js.map +1 -1
  431. package/extensions/forms/hooks/DataValueDocs.js +4 -4
  432. package/extensions/forms/hooks/DataValueDocs.js.map +1 -1
  433. package/extensions/forms/hooks/useDataValue.d.ts +2 -1
  434. package/extensions/forms/hooks/useDataValue.js +7 -7
  435. package/extensions/forms/hooks/useDataValue.js.map +1 -1
  436. package/extensions/forms/hooks/useFieldProps.d.ts +1 -1
  437. package/extensions/forms/hooks/useFieldProps.js +297 -116
  438. package/extensions/forms/hooks/useFieldProps.js.map +1 -1
  439. package/extensions/forms/style/dnb-forms.css +10 -10
  440. package/extensions/forms/style/dnb-forms.min.css +1 -1
  441. package/extensions/forms/types.d.ts +28 -2
  442. package/extensions/forms/types.js.map +1 -1
  443. package/package.json +1 -1
  444. package/shared/Eufemia.d.ts +1 -1
  445. package/shared/Eufemia.js +2 -2
  446. package/shared/Eufemia.js.map +1 -1
  447. package/style/core/scopes.scss +1 -1
  448. package/style/core/utilities.scss +3 -6
  449. package/style/dnb-ui-basis.css +1 -1
  450. package/style/dnb-ui-basis.min.css +1 -1
  451. package/style/dnb-ui-body.css +1 -1
  452. package/style/dnb-ui-body.min.css +1 -1
  453. package/style/dnb-ui-components.css +34 -34
  454. package/style/dnb-ui-components.min.css +5 -5
  455. package/style/dnb-ui-core.css +1 -1
  456. package/style/dnb-ui-core.min.css +1 -1
  457. package/style/dnb-ui-elements.css +1 -1
  458. package/style/dnb-ui-elements.min.css +1 -1
  459. package/style/dnb-ui-extensions.css +10 -10
  460. package/style/dnb-ui-extensions.min.css +1 -1
  461. package/style/dnb-ui-forms.css +10 -10
  462. package/style/dnb-ui-forms.min.css +1 -1
  463. package/style/dnb-ui-fragments.css +2 -2
  464. package/style/dnb-ui-fragments.min.css +1 -1
  465. package/style/themes/theme-eiendom/eiendom-theme-basis.css +1 -1
  466. package/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  467. package/style/themes/theme-eiendom/eiendom-theme-components.css +45 -45
  468. package/style/themes/theme-eiendom/eiendom-theme-components.min.css +6 -6
  469. package/style/themes/theme-eiendom/eiendom-theme-elements.css +1 -1
  470. package/style/themes/theme-eiendom/eiendom-theme-elements.min.css +1 -1
  471. package/style/themes/theme-eiendom/eiendom-theme-extensions.css +10 -10
  472. package/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  473. package/style/themes/theme-eiendom/eiendom-theme-forms.css +10 -10
  474. package/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  475. package/style/themes/theme-sbanken/sbanken-theme-basis.css +1 -1
  476. package/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
  477. package/style/themes/theme-sbanken/sbanken-theme-components.css +45 -45
  478. package/style/themes/theme-sbanken/sbanken-theme-components.min.css +7 -7
  479. package/style/themes/theme-sbanken/sbanken-theme-elements.css +1 -1
  480. package/style/themes/theme-sbanken/sbanken-theme-elements.min.css +1 -1
  481. package/style/themes/theme-sbanken/sbanken-theme-extensions.css +10 -10
  482. package/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  483. package/style/themes/theme-sbanken/sbanken-theme-forms.css +10 -10
  484. package/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  485. package/style/themes/theme-ui/ui-theme-basis.css +1 -1
  486. package/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  487. package/style/themes/theme-ui/ui-theme-components.css +45 -45
  488. package/style/themes/theme-ui/ui-theme-components.min.css +6 -6
  489. package/style/themes/theme-ui/ui-theme-elements.css +1 -1
  490. package/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
  491. package/style/themes/theme-ui/ui-theme-extensions.css +10 -10
  492. package/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  493. package/style/themes/theme-ui/ui-theme-forms.css +10 -10
  494. package/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  495. package/style/themes/theme-ui/ui-theme-tags.css +1 -1
  496. package/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  497. package/umd/dnb-ui-basis.min.js +1 -1
  498. package/umd/dnb-ui-components.min.js +1 -1
  499. package/umd/dnb-ui-elements.min.js +1 -1
  500. package/umd/dnb-ui-extensions.min.js +5 -5
  501. package/umd/dnb-ui-lib.min.js +1 -1
  502. package/cjs/shared/helpers/useUnmountEffect.d.ts +0 -4
  503. package/cjs/shared/helpers/useUnmountEffect.js +0 -14
  504. package/cjs/shared/helpers/useUnmountEffect.js.map +0 -1
  505. package/es/shared/helpers/useUnmountEffect.d.ts +0 -4
  506. package/es/shared/helpers/useUnmountEffect.js +0 -9
  507. package/es/shared/helpers/useUnmountEffect.js.map +0 -1
  508. package/shared/helpers/useUnmountEffect.d.ts +0 -4
  509. package/shared/helpers/useUnmountEffect.js +0 -9
  510. package/shared/helpers/useUnmountEffect.js.map +0 -1
@@ -11,11 +11,9 @@ import { FormError } from '../types';
11
11
  import { Context as DataContext } from '../DataContext';
12
12
  import { clearedData } from '../DataContext/Provider/Provider';
13
13
  import FieldPropsContext from '../Form/FieldProps/FieldPropsContext';
14
- import { combineDescribedBy } from '../../../shared/component-helper';
14
+ import { combineDescribedBy, warn } from '../../../shared/component-helper';
15
15
  import useId from '../../../shared/helpers/useId';
16
16
  import useUpdateEffect from '../../../shared/helpers/useUpdateEffect';
17
- import useMountEffect from '../../../shared/helpers/useMountEffect';
18
- import useUnmountEffect from '../../../shared/helpers/useUnmountEffect';
19
17
  import FieldBlockContext from '../FieldBlock/FieldBlockContext';
20
18
  import IterateElementContext from '../Iterate/IterateItemContext';
21
19
  import SectionContext from '../Form/Section/SectionContext';
@@ -26,6 +24,7 @@ import { createSharedState, useSharedState } from '../../../shared/helpers/useSh
26
24
  import { isAsync } from '../../../shared/helpers/isAsync';
27
25
  import useTranslation from './useTranslation';
28
26
  import useExternalValue from './useExternalValue';
27
+ import useDataValue from './useDataValue';
29
28
  export default function useFieldProps(localeProps, {
30
29
  executeOnChangeRegardlessOfError = false
31
30
  } = {}) {
@@ -51,6 +50,7 @@ export default function useFieldProps(localeProps, {
51
50
  onChange,
52
51
  onBlurValidator,
53
52
  validator,
53
+ exportValidators,
54
54
  schema,
55
55
  validateInitially,
56
56
  validateUnchanged,
@@ -72,7 +72,11 @@ export default function useFieldProps(localeProps, {
72
72
  return res;
73
73
  }
74
74
  } = props;
75
- const [, forceUpdate] = useReducer(() => ({}), {});
75
+ const [salt, forceUpdate] = useReducer(() => ({}), {});
76
+ const isInternalRerenderRef = useRef(undefined);
77
+ useMemo(() => {
78
+ isInternalRerenderRef.current = salt;
79
+ }, [salt]);
76
80
  const {
77
81
  startProcess
78
82
  } = useProcessManager();
@@ -103,10 +107,13 @@ export default function useFieldProps(localeProps, {
103
107
  setFieldError: setFieldErrorDataContext,
104
108
  setFieldProps: setPropsDataContext,
105
109
  setHasVisibleError: setHasVisibleErrorDataContext,
110
+ handleMountField,
111
+ handleUnMountField,
112
+ setFieldEventListener,
106
113
  errors: dataContextErrors,
107
114
  showAllErrors,
108
115
  contextErrorMessages
109
- } = dataContext !== null && dataContext !== void 0 ? dataContext : {};
116
+ } = dataContext || {};
110
117
  const onChangeContext = dataContext === null || dataContext === void 0 ? void 0 : (_dataContext$props = dataContext.props) === null || _dataContext$props === void 0 ? void 0 : _dataContext$props.onChange;
111
118
  const disabled = disabledProp !== null && disabledProp !== void 0 ? disabledProp : props.readOnly;
112
119
  const inFieldBlock = Boolean(fieldBlockContext);
@@ -114,18 +121,18 @@ export default function useFieldProps(localeProps, {
114
121
  setFieldState: setFieldStateFieldBlock,
115
122
  showFieldError: showFieldErrorFieldBlock,
116
123
  mountedFieldsRef: mountedFieldsRefFieldBlock
117
- } = fieldBlockContext !== null && fieldBlockContext !== void 0 ? fieldBlockContext : {};
124
+ } = fieldBlockContext || {};
118
125
  const {
119
126
  handleChange: handleChangeIterateContext
120
- } = iterateItemContext !== null && iterateItemContext !== void 0 ? iterateItemContext : {};
127
+ } = iterateItemContext || {};
121
128
  const {
122
129
  path: sectionPath,
123
130
  errorPrioritization
124
- } = sectionContext !== null && sectionContext !== void 0 ? sectionContext : {};
131
+ } = sectionContext || {};
125
132
  const {
126
133
  setFieldError,
127
134
  showBoundaryErrors
128
- } = fieldBoundaryContext !== null && fieldBoundaryContext !== void 0 ? fieldBoundaryContext : {};
135
+ } = fieldBoundaryContext || {};
129
136
  const hasPath = Boolean(pathProp);
130
137
  const {
131
138
  path,
@@ -145,8 +152,8 @@ export default function useFieldProps(localeProps, {
145
152
  emptyValue
146
153
  })) !== null && _useExternalValue !== void 0 ? _useExternalValue : defaultValueRef.current;
147
154
  const valueRef = useRef(externalValue);
148
- const changedRef = useRef(false);
149
- const hasFocusRef = useRef(false);
155
+ const changedRef = useRef();
156
+ const hasFocusRef = useRef();
150
157
  const required = useMemo(() => {
151
158
  if (requiredProp) {
152
159
  return requiredProp;
@@ -177,9 +184,9 @@ export default function useFieldProps(localeProps, {
177
184
  return path ? dataContextErrors === null || dataContextErrors === void 0 ? void 0 : dataContextErrors[identifier] : undefined;
178
185
  }, [dataContextErrors, identifier, path]);
179
186
  const contextErrorRef = useRef(dataContextError);
180
- const validatorRef = useRef(validator);
187
+ const onChangeValidatorRef = useRef(validator);
181
188
  useUpdateEffect(() => {
182
- validatorRef.current = validator;
189
+ onChangeValidatorRef.current = validator;
183
190
  }, [validator]);
184
191
  const onBlurValidatorRef = useRef(onBlurValidator);
185
192
  useUpdateEffect(() => {
@@ -258,22 +265,21 @@ export default function useFieldProps(localeProps, {
258
265
  }
259
266
  }, [setFieldStateDataContext, identifier, validateInitially]);
260
267
  const revealError = useCallback(() => {
261
- revealErrorRef.current = true;
262
- showFieldErrorFieldBlock === null || showFieldErrorFieldBlock === void 0 ? void 0 : showFieldErrorFieldBlock(identifier, true);
263
- if (localErrorRef.current) {
264
- setHasVisibleErrorDataContext === null || setHasVisibleErrorDataContext === void 0 ? void 0 : setHasVisibleErrorDataContext(identifier, true);
265
- } else {
266
- setHasVisibleErrorDataContext === null || setHasVisibleErrorDataContext === void 0 ? void 0 : setHasVisibleErrorDataContext(identifier, false);
268
+ if (!revealErrorRef.current) {
269
+ revealErrorRef.current = true;
270
+ showFieldErrorFieldBlock === null || showFieldErrorFieldBlock === void 0 ? void 0 : showFieldErrorFieldBlock(identifier, true);
271
+ setHasVisibleErrorDataContext === null || setHasVisibleErrorDataContext === void 0 ? void 0 : setHasVisibleErrorDataContext(identifier, !!localErrorRef.current);
267
272
  }
268
- }, [showFieldErrorFieldBlock, identifier, setHasVisibleErrorDataContext]);
273
+ }, [identifier, setHasVisibleErrorDataContext, showFieldErrorFieldBlock]);
269
274
  const hideError = useCallback(() => {
270
- revealErrorRef.current = false;
271
- showFieldErrorFieldBlock === null || showFieldErrorFieldBlock === void 0 ? void 0 : showFieldErrorFieldBlock(identifier, false);
272
- setHasVisibleErrorDataContext === null || setHasVisibleErrorDataContext === void 0 ? void 0 : setHasVisibleErrorDataContext(identifier, false);
273
- }, [setHasVisibleErrorDataContext, identifier, showFieldErrorFieldBlock]);
275
+ if (revealErrorRef.current) {
276
+ revealErrorRef.current = false;
277
+ showFieldErrorFieldBlock === null || showFieldErrorFieldBlock === void 0 ? void 0 : showFieldErrorFieldBlock(identifier, false);
278
+ setHasVisibleErrorDataContext === null || setHasVisibleErrorDataContext === void 0 ? void 0 : setHasVisibleErrorDataContext(identifier, false);
279
+ }
280
+ }, [identifier, setHasVisibleErrorDataContext, showFieldErrorFieldBlock]);
274
281
  const prepareError = useCallback(error => {
275
282
  if (error instanceof FormError) {
276
- var _error$messageValues;
277
283
  let message = error.message;
278
284
  const {
279
285
  validationRule
@@ -285,10 +291,10 @@ export default function useFieldProps(localeProps, {
285
291
  message = fieldMessage;
286
292
  }
287
293
  }
288
- const messagehasValues = Object.entries((_error$messageValues = error.messageValues) !== null && _error$messageValues !== void 0 ? _error$messageValues : {}).reduce((message, [key, value]) => {
294
+ const messageHasValues = Object.entries(error.messageValues || {}).reduce((message, [key, value]) => {
289
295
  return message.replace(`{${key}}`, value);
290
296
  }, message);
291
- error.message = messagehasValues;
297
+ error.message = messageHasValues;
292
298
  return error;
293
299
  }
294
300
  return error;
@@ -308,6 +314,73 @@ export default function useFieldProps(localeProps, {
308
314
  var _ref2;
309
315
  return Boolean((_ref2 = errorProp !== null && errorProp !== void 0 ? errorProp : localErrorRef.current) !== null && _ref2 !== void 0 ? _ref2 : contextErrorRef.current);
310
316
  }, [errorProp]);
317
+ const connectWithPathListenerRef = useRef(async () => {
318
+ if (localErrorRef.current || validateUnchanged || continuousValidation) {
319
+ if (onChangeValidatorRef.current) {
320
+ runOnChangeValidator();
321
+ }
322
+ }
323
+ if (localErrorRef.current && onBlurValidatorRef.current) {
324
+ runOnBlurValidator();
325
+ }
326
+ });
327
+ const {
328
+ getValueByPath
329
+ } = useDataValue();
330
+ const exportValidatorsRef = useRef(exportValidators);
331
+ exportValidatorsRef.current = exportValidators;
332
+ const additionalArgs = useMemo(() => {
333
+ const errorMessages = _objectSpread(_objectSpread({}, contextErrorMessages), errorMessagesRef.current);
334
+ const args = _objectSpread(_objectSpread({}, errorMessages), {}, {
335
+ errorMessages,
336
+ validators: exportValidatorsRef.current,
337
+ connectWithPath: path => {
338
+ setFieldEventListener === null || setFieldEventListener === void 0 ? void 0 : setFieldEventListener(path, 'onPathChange', connectWithPathListenerRef.current);
339
+ return {
340
+ getValue: () => getValueByPath(path)
341
+ };
342
+ }
343
+ });
344
+ return args;
345
+ }, [contextErrorMessages, getValueByPath, setFieldEventListener]);
346
+ const extendWithExportedValidators = useCallback((validator, result) => {
347
+ if (exportValidatorsRef.current && !result && (validator === onChangeValidatorRef.current || validator === onBlurValidatorRef.current) && !Array.isArray(result)) {
348
+ return Object.values(exportValidatorsRef.current);
349
+ }
350
+ return result;
351
+ }, []);
352
+ const callValidatorFnSync = useCallback((validator, value = valueRef.current) => {
353
+ if (typeof validator !== 'function') {
354
+ return undefined;
355
+ }
356
+ const result = extendWithExportedValidators(validator, validator(value, additionalArgs));
357
+ if (Array.isArray(result)) {
358
+ for (const validator of result) {
359
+ const result = callValidatorFnSync(validator, value);
360
+ if (result instanceof Error) {
361
+ return result;
362
+ }
363
+ }
364
+ return;
365
+ }
366
+ return result;
367
+ }, [additionalArgs, extendWithExportedValidators]);
368
+ const callValidatorFnAsync = useCallback(async (validator, value = valueRef.current) => {
369
+ if (typeof validator !== 'function') {
370
+ return undefined;
371
+ }
372
+ const result = extendWithExportedValidators(validator, await validator(value, additionalArgs));
373
+ if (Array.isArray(result)) {
374
+ for (const validator of result) {
375
+ const result = await callValidatorFnAsync(validator, value);
376
+ if (result instanceof Error) {
377
+ return result;
378
+ }
379
+ }
380
+ return;
381
+ }
382
+ return result;
383
+ }, [additionalArgs, extendWithExportedValidators]);
311
384
  const stateId = useId();
312
385
  const persistErrorState = useCallback((method, errorArg = undefined) => {
313
386
  const error = prepareError(errorArg);
@@ -339,23 +412,18 @@ export default function useFieldProps(localeProps, {
339
412
  persistErrorState('wipe');
340
413
  hasLocalErrorRef.current = false;
341
414
  }, [persistErrorState]);
342
- const callValidator = useCallback(async () => {
343
- if (typeof validatorRef.current !== 'function') {
344
- return;
345
- }
346
- const runAsync = isAsync(validatorRef.current);
347
- if (runAsync) {
348
- defineAsyncProcess('validator');
349
- setFieldState('validating');
350
- hideError();
351
- }
352
- const opts = _objectSpread(_objectSpread({}, contextErrorMessages), errorMessagesRef.current);
353
- const tmpValue = valueRef.current;
354
- const result = await validatorRef.current(valueRef.current, opts);
355
- const unchangedValue = tmpValue === valueRef.current;
415
+ const validatorCacheRef = useRef({
416
+ onChangeValidator: null,
417
+ onBlurValidator: null
418
+ });
419
+ const revealOnChangeValidatorResult = useCallback(({
420
+ result,
421
+ unchangedValue
422
+ }) => {
423
+ const runAsync = isAsync(onChangeValidatorRef.current);
356
424
  if (unchangedValue) {
357
425
  persistErrorState('gracefully', result);
358
- if (continuousValidation || runAsync) {
426
+ if (validateInitially && !changedRef.current || validateUnchanged || continuousValidation || runAsync) {
359
427
  window.requestAnimationFrame(() => {
360
428
  revealError();
361
429
  forceUpdate();
@@ -370,29 +438,129 @@ export default function useFieldProps(localeProps, {
370
438
  setFieldState('pending');
371
439
  }
372
440
  }
373
- return result;
374
- }, [contextErrorMessages, continuousValidation, hideError, persistErrorState, defineAsyncProcess, setFieldState, revealError]);
441
+ }, [continuousValidation, defineAsyncProcess, persistErrorState, revealError, setFieldState, validateInitially, validateUnchanged]);
442
+ const callOnChangeValidator = useCallback(async () => {
443
+ if (typeof onChangeValidatorRef.current !== 'function') {
444
+ return {};
445
+ }
446
+ const tmpValue = valueRef.current;
447
+ let result = isAsync(onChangeValidatorRef.current) ? await callValidatorFnAsync(onChangeValidatorRef.current) : callValidatorFnSync(onChangeValidatorRef.current);
448
+ if (result instanceof Promise) {
449
+ result = await result;
450
+ }
451
+ const unchangedValue = tmpValue === valueRef.current;
452
+ return {
453
+ result,
454
+ unchangedValue
455
+ };
456
+ }, [callValidatorFnAsync, callValidatorFnSync]);
457
+ const startOnChangeValidatorValidation = useCallback(async () => {
458
+ if (typeof onChangeValidatorRef.current !== 'function') {
459
+ return;
460
+ }
461
+ if (isAsync(onChangeValidatorRef.current)) {
462
+ defineAsyncProcess('validator');
463
+ setFieldState('validating');
464
+ hideError();
465
+ }
466
+ const tmpValue = valueRef.current;
467
+ let result = isAsync(onChangeValidatorRef.current) ? await callValidatorFnAsync(onChangeValidatorRef.current) : callValidatorFnSync(onChangeValidatorRef.current);
468
+ if (result instanceof Promise) {
469
+ result = await result;
470
+ }
471
+ const unchangedValue = tmpValue === valueRef.current;
472
+ revealOnChangeValidatorResult({
473
+ result,
474
+ unchangedValue
475
+ });
476
+ return {
477
+ result
478
+ };
479
+ }, [callValidatorFnAsync, callValidatorFnSync, defineAsyncProcess, hideError, revealOnChangeValidatorResult, setFieldState]);
480
+ const runOnChangeValidator = useCallback(async () => {
481
+ if (!onChangeValidatorRef.current) {
482
+ return;
483
+ }
484
+ const {
485
+ result,
486
+ unchangedValue
487
+ } = await callOnChangeValidator();
488
+ if (String(result) !== String(validatorCacheRef.current.onChangeValidator)) {
489
+ if (result) {
490
+ revealOnChangeValidatorResult({
491
+ result,
492
+ unchangedValue
493
+ });
494
+ } else {
495
+ hideError();
496
+ clearErrorState();
497
+ }
498
+ }
499
+ validatorCacheRef.current.onChangeValidator = result || null;
500
+ }, [callOnChangeValidator, clearErrorState, hideError, revealOnChangeValidatorResult]);
375
501
  const callOnBlurValidator = useCallback(async ({
376
- valueOverride = null
502
+ overrideValue = null
377
503
  } = {}) => {
378
504
  if (typeof onBlurValidatorRef.current !== 'function') {
379
- return;
505
+ return {};
380
506
  }
381
- const value = transformers.current.toEvent(valueOverride !== null && valueOverride !== void 0 ? valueOverride : valueRef.current, 'onBlurValidator');
382
- const runAsync = isAsync(onBlurValidatorRef.current);
383
- if (runAsync) {
384
- defineAsyncProcess('onBlurValidator');
385
- setFieldState('validating');
507
+ const value = transformers.current.toEvent(overrideValue !== null && overrideValue !== void 0 ? overrideValue : valueRef.current, 'onBlurValidator');
508
+ let result = isAsync(onBlurValidatorRef.current) ? await callValidatorFnAsync(onBlurValidatorRef.current, value) : callValidatorFnSync(onBlurValidatorRef.current, value);
509
+ if (result instanceof Promise) {
510
+ result = await result;
386
511
  }
387
- const result = await onBlurValidatorRef.current(value);
512
+ return {
513
+ result
514
+ };
515
+ }, [callValidatorFnAsync, callValidatorFnSync]);
516
+ const revealOnBlurValidatorResult = useCallback(({
517
+ result
518
+ }) => {
388
519
  persistErrorState('gracefully', result);
389
- if (runAsync) {
520
+ if (isAsync(onBlurValidatorRef.current)) {
390
521
  defineAsyncProcess(undefined);
391
522
  setFieldState(result instanceof Error ? 'error' : 'complete');
392
523
  }
393
524
  revealError();
394
- forceUpdate();
395
- }, [persistErrorState, defineAsyncProcess, setFieldState, revealError]);
525
+ }, [defineAsyncProcess, persistErrorState, revealError, setFieldState]);
526
+ const startOnBlurValidatorProcess = useCallback(async ({
527
+ overrideValue = null
528
+ } = {}) => {
529
+ if (typeof onBlurValidatorRef.current !== 'function') {
530
+ return;
531
+ }
532
+ if (isAsync(onBlurValidatorRef.current)) {
533
+ defineAsyncProcess('onBlurValidator');
534
+ setFieldState('validating');
535
+ }
536
+ const {
537
+ result
538
+ } = await callOnBlurValidator({
539
+ overrideValue
540
+ });
541
+ revealOnBlurValidatorResult({
542
+ result
543
+ });
544
+ }, [callOnBlurValidator, defineAsyncProcess, revealOnBlurValidatorResult, setFieldState]);
545
+ const runOnBlurValidator = useCallback(async () => {
546
+ if (!onBlurValidatorRef.current) {
547
+ return;
548
+ }
549
+ const {
550
+ result
551
+ } = await callOnBlurValidator();
552
+ if (String(result) !== String(validatorCacheRef.current.onBlurValidator) && revealErrorRef.current) {
553
+ if (result) {
554
+ revealOnBlurValidatorResult({
555
+ result
556
+ });
557
+ } else {
558
+ hideError();
559
+ clearErrorState();
560
+ }
561
+ }
562
+ validatorCacheRef.current.onBlurValidator = result || null;
563
+ }, [callOnBlurValidator, clearErrorState, hideError, revealOnBlurValidatorResult]);
396
564
  const prioritizeContextSchema = useMemo(() => {
397
565
  if (errorPrioritization) {
398
566
  const schemaPath = identifier.split('/').join('/properties/');
@@ -429,8 +597,10 @@ export default function useFieldProps(localeProps, {
429
597
  const error = ajvErrorsToOneFormError(schemaValidatorRef.current.errors, valueRef.current);
430
598
  throw error;
431
599
  }
432
- if (validatorRef.current && (changedRef.current || validateInitially)) {
433
- const result = await callValidator();
600
+ if (onChangeValidatorRef.current && (changedRef.current || validateInitially || validateUnchanged)) {
601
+ const {
602
+ result
603
+ } = await startOnChangeValidatorValidation();
434
604
  if (result instanceof Error) {
435
605
  throw result;
436
606
  }
@@ -445,7 +615,7 @@ export default function useFieldProps(localeProps, {
445
615
  persistErrorState('weak', error);
446
616
  }
447
617
  }
448
- }, [startProcess, disabled, hideError, setFieldState, clearErrorState, emptyValue, requiredProp, required, prioritizeContextSchema, validateInitially, callValidator, persistErrorState]);
618
+ }, [startProcess, disabled, hideError, setFieldState, clearErrorState, emptyValue, requiredProp, required, prioritizeContextSchema, validateInitially, validateUnchanged, startOnChangeValidatorValidation, persistErrorState]);
449
619
  const handleError = useCallback(() => {
450
620
  if (continuousValidation || continuousValidation !== false && !hasFocusRef.current) {
451
621
  revealError();
@@ -453,9 +623,9 @@ export default function useFieldProps(localeProps, {
453
623
  hideError();
454
624
  }
455
625
  }, [continuousValidation, hideError, revealError]);
456
- const setHasFocus = useCallback(async (hasFocus, valueOverride, additionalArgs) => {
626
+ const setHasFocus = useCallback(async (hasFocus, overrideValue, additionalArgs) => {
457
627
  const getArgs = type => {
458
- const value = transformers.current.toEvent(valueOverride !== null && valueOverride !== void 0 ? valueOverride : valueRef.current, type);
628
+ const value = transformers.current.toEvent(overrideValue !== null && overrideValue !== void 0 ? overrideValue : valueRef.current, type);
459
629
  const transformedAdditionalArgs = transformers.current.transformAdditionalArgs(additionalArgs, value);
460
630
  return typeof transformedAdditionalArgs !== 'undefined' ? [value, transformedAdditionalArgs] : [value];
461
631
  };
@@ -470,15 +640,15 @@ export default function useFieldProps(localeProps, {
470
640
  if (!changedRef.current && !validateUnchanged) {
471
641
  return;
472
642
  }
473
- addToPool('onBlurValidator', async () => await callOnBlurValidator({
474
- valueOverride
643
+ addToPool('onBlurValidator', async () => await startOnBlurValidatorProcess({
644
+ overrideValue
475
645
  }), isAsync(onBlurValidatorRef.current));
476
646
  await runPool(() => {
477
647
  revealError();
478
648
  forceUpdate();
479
649
  });
480
650
  }
481
- }, [addToPool, callOnBlurValidator, onBlur, onFocus, runPool, revealError, validateUnchanged]);
651
+ }, [onFocus, onBlur, validateUnchanged, addToPool, runPool, startOnBlurValidatorProcess, revealError]);
482
652
  const yieldAsyncProcess = useCallback(async ({
483
653
  name,
484
654
  waitFor
@@ -584,7 +754,7 @@ export default function useFieldProps(localeProps, {
584
754
  if (hasPath) {
585
755
  handlePathChangeUnvalidatedDataContext(identifier, newValue);
586
756
  }
587
- addToPool('validator', validateValue, isAsync(validatorRef.current));
757
+ addToPool('validator', validateValue, isAsync(onChangeValidatorRef.current));
588
758
  addToPool('onChangeContext', callOnChangeContext, isAsync(onChangeContext));
589
759
  await runPool(() => {
590
760
  handleError();
@@ -646,16 +816,18 @@ export default function useFieldProps(localeProps, {
646
816
  const handleFocus = useCallback(() => setHasFocus(true), [setHasFocus]);
647
817
  const handleBlur = useCallback(() => setHasFocus(false), [setHasFocus]);
648
818
  setPropsDataContext === null || setPropsDataContext === void 0 ? void 0 : setPropsDataContext(identifier, props);
649
- useMountEffect(() => {
650
- dataContext === null || dataContext === void 0 ? void 0 : dataContext.handleMountField(identifier);
819
+ useEffect(() => {
820
+ handleMountField(identifier);
821
+ return () => {
822
+ handleUnMountField(identifier);
823
+ setFieldErrorDataContext === null || setFieldErrorDataContext === void 0 ? void 0 : setFieldErrorDataContext(identifier, undefined);
824
+ setFieldError === null || setFieldError === void 0 ? void 0 : setFieldError(identifier, undefined);
825
+ localErrorRef.current = undefined;
826
+ };
827
+ }, [handleMountField, handleUnMountField, identifier, setFieldError, setFieldErrorDataContext]);
828
+ useEffect(() => {
651
829
  validateValue();
652
- });
653
- useUnmountEffect(() => {
654
- dataContext === null || dataContext === void 0 ? void 0 : dataContext.handleUnMountField(identifier);
655
- setFieldErrorDataContext === null || setFieldErrorDataContext === void 0 ? void 0 : setFieldErrorDataContext(identifier, undefined);
656
- setFieldError === null || setFieldError === void 0 ? void 0 : setFieldError(identifier, undefined);
657
- localErrorRef.current = undefined;
658
- });
830
+ }, [validateValue]);
659
831
  useUpdateEffect(() => {
660
832
  var _dataContext$ajvInsta2;
661
833
  schemaValidatorRef.current = schema ? (_dataContext$ajvInsta2 = dataContext.ajvInstance) === null || _dataContext$ajvInsta2 === void 0 ? void 0 : _dataContext$ajvInsta2.compile(schema) : undefined;
@@ -686,6 +858,14 @@ export default function useFieldProps(localeProps, {
686
858
  }
687
859
  }
688
860
  }, [clearErrorState, dataContextError, handleError, persistErrorState, prepareError, validateInitially]);
861
+ useEffect(() => {
862
+ if (itemPath && valueProp !== undefined) {
863
+ warn(`Using value="${valueProp}" prop inside Iterate is not supported yet`);
864
+ }
865
+ if (itemPath && defaultValue !== undefined) {
866
+ warn(`Using defaultValue="${defaultValue}" prop inside Iterate is not supported yet`);
867
+ }
868
+ }, [defaultValue, itemPath, valueProp]);
689
869
  useEffect(() => {
690
870
  if (hasPath) {
691
871
  let value = valueProp;
@@ -710,7 +890,7 @@ export default function useFieldProps(localeProps, {
710
890
  validateDataDataContext === null || validateDataDataContext === void 0 ? void 0 : validateDataDataContext();
711
891
  }
712
892
  }
713
- }, [dataContext.data, dataContext.id, hasPath, identifier, updateDataValueDataContext, validateDataDataContext, valueProp]);
893
+ }, [dataContext.data, dataContext.id, defaultValue, hasPath, identifier, updateDataValueDataContext, validateDataDataContext, valueProp]);
714
894
  useEffect(() => {
715
895
  if (showAllErrors || showBoundaryErrors) {
716
896
  if (fieldStateRef.current !== 'validating') {
@@ -721,7 +901,7 @@ export default function useFieldProps(localeProps, {
721
901
  }
722
902
  }, [hideError, revealError, showAllErrors, showBoundaryErrors]);
723
903
  useEffect(() => {
724
- if (dataContext.formState === 'pending' && (validatorRef.current || onBlurValidatorRef.current)) {
904
+ if (dataContext.formState === 'pending' && (onChangeValidatorRef.current || onBlurValidatorRef.current)) {
725
905
  hideError();
726
906
  forceUpdate();
727
907
  }
@@ -730,50 +910,43 @@ export default function useFieldProps(localeProps, {
730
910
  if (hasError()) {
731
911
  return;
732
912
  }
733
- addToPool('validator', callValidator, isAsync(validatorRef.current));
734
- addToPool('onBlurValidator', callOnBlurValidator, isAsync(onBlurValidatorRef.current));
913
+ addToPool('validator', startOnChangeValidatorValidation, isAsync(onChangeValidatorRef.current));
914
+ addToPool('onBlurValidator', startOnBlurValidatorProcess, isAsync(onBlurValidatorRef.current));
735
915
  await runPool();
736
- }, [addToPool, callOnBlurValidator, callValidator, hasError, runPool]);
737
- useMountEffect(() => {
738
- var _dataContext$setField;
739
- dataContext === null || dataContext === void 0 ? void 0 : (_dataContext$setField = dataContext.setFieldEventListener) === null || _dataContext$setField === void 0 ? void 0 : _dataContext$setField.call(dataContext, identifier, 'onSubmit', onSubmitHandler);
740
- });
741
- useMountEffect(() => {
916
+ }, [addToPool, startOnBlurValidatorProcess, hasError, runPool, startOnChangeValidatorValidation]);
917
+ useEffect(() => {
918
+ setFieldEventListener === null || setFieldEventListener === void 0 ? void 0 : setFieldEventListener(identifier, 'onSubmit', onSubmitHandler);
919
+ }, [identifier, onSubmitHandler, setFieldEventListener]);
920
+ useEffect(() => {
742
921
  if (inFieldBlock) {
743
- if (errorProp) {
744
- setFieldStateFieldBlock === null || setFieldStateFieldBlock === void 0 ? void 0 : setFieldStateFieldBlock({
745
- identifier,
746
- type: 'error',
747
- content: errorProp,
748
- showInitially: true,
749
- show: true
750
- });
751
- }
752
- if (warning) {
753
- setFieldStateFieldBlock === null || setFieldStateFieldBlock === void 0 ? void 0 : setFieldStateFieldBlock({
754
- identifier,
755
- type: 'warning',
756
- content: warning,
757
- showInitially: true,
758
- show: true
759
- });
760
- }
761
- if (info) {
762
- setFieldStateFieldBlock === null || setFieldStateFieldBlock === void 0 ? void 0 : setFieldStateFieldBlock({
763
- identifier,
764
- type: 'info',
765
- content: info,
766
- showInitially: true,
767
- show: true
768
- });
769
- }
922
+ setFieldStateFieldBlock === null || setFieldStateFieldBlock === void 0 ? void 0 : setFieldStateFieldBlock({
923
+ identifier,
924
+ type: 'error',
925
+ content: errorProp,
926
+ showInitially: true,
927
+ show: true
928
+ });
929
+ setFieldStateFieldBlock === null || setFieldStateFieldBlock === void 0 ? void 0 : setFieldStateFieldBlock({
930
+ identifier,
931
+ type: 'warning',
932
+ content: warning,
933
+ showInitially: true,
934
+ show: true
935
+ });
936
+ setFieldStateFieldBlock === null || setFieldStateFieldBlock === void 0 ? void 0 : setFieldStateFieldBlock({
937
+ identifier,
938
+ type: 'info',
939
+ content: info,
940
+ showInitially: true,
941
+ show: true
942
+ });
770
943
  return () => {
771
944
  if (mountedFieldsRefFieldBlock) {
772
945
  mountedFieldsRefFieldBlock.current[identifier] = true;
773
946
  }
774
947
  };
775
948
  }
776
- });
949
+ }, [errorProp, identifier, inFieldBlock, info, mountedFieldsRefFieldBlock, setFieldStateFieldBlock, warning]);
777
950
  const infoRef = useRef(info);
778
951
  const warningRef = useRef(warning);
779
952
  useUpdateEffect(() => {
@@ -819,13 +992,16 @@ export default function useFieldProps(localeProps, {
819
992
  };
820
993
  const sharedData = useSharedState('field-block-props-' + id);
821
994
  sharedData.set(fieldBlockProps);
995
+ useEffect(() => {
996
+ isInternalRerenderRef.current = undefined;
997
+ });
822
998
  return _objectSpread(_objectSpread(_objectSpread({}, props), fieldBlockProps), {}, {
823
999
  name: props.name || ((_props$path = props.path) === null || _props$path === void 0 ? void 0 : _props$path.replace('/', '')) || id,
824
1000
  autoComplete: (_props$autoComplete = props.autoComplete) !== null && _props$autoComplete !== void 0 ? _props$autoComplete : dataContext.autoComplete === true ? 'on' : undefined,
825
1001
  id,
826
1002
  value: transformers.current.transformIn(transformers.current.toInput(valueRef.current)),
827
1003
  hasError: hasVisibleError,
828
- isChanged: changedRef.current,
1004
+ isChanged: Boolean(changedRef.current),
829
1005
  props,
830
1006
  htmlAttributes,
831
1007
  setHasFocus,