@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
  var _dataContext$props,
31
30
  _useExternalValue,
@@ -59,6 +58,7 @@ export default function useFieldProps(localeProps) {
59
58
  onChange,
60
59
  onBlurValidator,
61
60
  validator,
61
+ exportValidators,
62
62
  schema,
63
63
  validateInitially,
64
64
  validateUnchanged,
@@ -81,7 +81,11 @@ export default function useFieldProps(localeProps) {
81
81
  return res;
82
82
  }
83
83
  } = props;
84
- const [, forceUpdate] = useReducer(() => ({}), {});
84
+ const [salt, forceUpdate] = useReducer(() => ({}), {});
85
+ const isInternalRerenderRef = useRef(undefined);
86
+ useMemo(() => {
87
+ isInternalRerenderRef.current = salt;
88
+ }, [salt]);
85
89
  const {
86
90
  startProcess
87
91
  } = useProcessManager();
@@ -112,10 +116,13 @@ export default function useFieldProps(localeProps) {
112
116
  setFieldError: setFieldErrorDataContext,
113
117
  setFieldProps: setPropsDataContext,
114
118
  setHasVisibleError: setHasVisibleErrorDataContext,
119
+ handleMountField,
120
+ handleUnMountField,
121
+ setFieldEventListener,
115
122
  errors: dataContextErrors,
116
123
  showAllErrors,
117
124
  contextErrorMessages
118
- } = dataContext !== null && dataContext !== void 0 ? dataContext : {};
125
+ } = dataContext || {};
119
126
  const onChangeContext = dataContext === null || dataContext === void 0 ? void 0 : (_dataContext$props = dataContext.props) === null || _dataContext$props === void 0 ? void 0 : _dataContext$props.onChange;
120
127
  const disabled = disabledProp !== null && disabledProp !== void 0 ? disabledProp : props.readOnly;
121
128
  const inFieldBlock = Boolean(fieldBlockContext);
@@ -123,18 +130,18 @@ export default function useFieldProps(localeProps) {
123
130
  setFieldState: setFieldStateFieldBlock,
124
131
  showFieldError: showFieldErrorFieldBlock,
125
132
  mountedFieldsRef: mountedFieldsRefFieldBlock
126
- } = fieldBlockContext !== null && fieldBlockContext !== void 0 ? fieldBlockContext : {};
133
+ } = fieldBlockContext || {};
127
134
  const {
128
135
  handleChange: handleChangeIterateContext
129
- } = iterateItemContext !== null && iterateItemContext !== void 0 ? iterateItemContext : {};
136
+ } = iterateItemContext || {};
130
137
  const {
131
138
  path: sectionPath,
132
139
  errorPrioritization
133
- } = sectionContext !== null && sectionContext !== void 0 ? sectionContext : {};
140
+ } = sectionContext || {};
134
141
  const {
135
142
  setFieldError,
136
143
  showBoundaryErrors
137
- } = fieldBoundaryContext !== null && fieldBoundaryContext !== void 0 ? fieldBoundaryContext : {};
144
+ } = fieldBoundaryContext || {};
138
145
  const hasPath = Boolean(pathProp);
139
146
  const {
140
147
  path,
@@ -154,8 +161,8 @@ export default function useFieldProps(localeProps) {
154
161
  emptyValue
155
162
  })) !== null && _useExternalValue !== void 0 ? _useExternalValue : defaultValueRef.current;
156
163
  const valueRef = useRef(externalValue);
157
- const changedRef = useRef(false);
158
- const hasFocusRef = useRef(false);
164
+ const changedRef = useRef();
165
+ const hasFocusRef = useRef();
159
166
  const required = useMemo(() => {
160
167
  if (requiredProp) {
161
168
  return requiredProp;
@@ -186,9 +193,9 @@ export default function useFieldProps(localeProps) {
186
193
  return path ? dataContextErrors === null || dataContextErrors === void 0 ? void 0 : dataContextErrors[identifier] : undefined;
187
194
  }, [dataContextErrors, identifier, path]);
188
195
  const contextErrorRef = useRef(dataContextError);
189
- const validatorRef = useRef(validator);
196
+ const onChangeValidatorRef = useRef(validator);
190
197
  useUpdateEffect(() => {
191
- validatorRef.current = validator;
198
+ onChangeValidatorRef.current = validator;
192
199
  }, [validator]);
193
200
  const onBlurValidatorRef = useRef(onBlurValidator);
194
201
  useUpdateEffect(() => {
@@ -268,22 +275,21 @@ export default function useFieldProps(localeProps) {
268
275
  }
269
276
  }, [setFieldStateDataContext, identifier, validateInitially]);
270
277
  const revealError = useCallback(() => {
271
- revealErrorRef.current = true;
272
- showFieldErrorFieldBlock === null || showFieldErrorFieldBlock === void 0 ? void 0 : showFieldErrorFieldBlock(identifier, true);
273
- if (localErrorRef.current) {
274
- setHasVisibleErrorDataContext === null || setHasVisibleErrorDataContext === void 0 ? void 0 : setHasVisibleErrorDataContext(identifier, true);
275
- } else {
276
- setHasVisibleErrorDataContext === null || setHasVisibleErrorDataContext === void 0 ? void 0 : setHasVisibleErrorDataContext(identifier, false);
278
+ if (!revealErrorRef.current) {
279
+ revealErrorRef.current = true;
280
+ showFieldErrorFieldBlock === null || showFieldErrorFieldBlock === void 0 ? void 0 : showFieldErrorFieldBlock(identifier, true);
281
+ setHasVisibleErrorDataContext === null || setHasVisibleErrorDataContext === void 0 ? void 0 : setHasVisibleErrorDataContext(identifier, !!localErrorRef.current);
277
282
  }
278
- }, [showFieldErrorFieldBlock, identifier, setHasVisibleErrorDataContext]);
283
+ }, [identifier, setHasVisibleErrorDataContext, showFieldErrorFieldBlock]);
279
284
  const hideError = useCallback(() => {
280
- revealErrorRef.current = false;
281
- showFieldErrorFieldBlock === null || showFieldErrorFieldBlock === void 0 ? void 0 : showFieldErrorFieldBlock(identifier, false);
282
- setHasVisibleErrorDataContext === null || setHasVisibleErrorDataContext === void 0 ? void 0 : setHasVisibleErrorDataContext(identifier, false);
283
- }, [setHasVisibleErrorDataContext, identifier, showFieldErrorFieldBlock]);
285
+ if (revealErrorRef.current) {
286
+ revealErrorRef.current = false;
287
+ showFieldErrorFieldBlock === null || showFieldErrorFieldBlock === void 0 ? void 0 : showFieldErrorFieldBlock(identifier, false);
288
+ setHasVisibleErrorDataContext === null || setHasVisibleErrorDataContext === void 0 ? void 0 : setHasVisibleErrorDataContext(identifier, false);
289
+ }
290
+ }, [identifier, setHasVisibleErrorDataContext, showFieldErrorFieldBlock]);
284
291
  const prepareError = useCallback(error => {
285
292
  if (error instanceof FormError) {
286
- var _error$messageValues;
287
293
  let message = error.message;
288
294
  const {
289
295
  validationRule
@@ -295,11 +301,11 @@ export default function useFieldProps(localeProps) {
295
301
  message = fieldMessage;
296
302
  }
297
303
  }
298
- const messagehasValues = Object.entries((_error$messageValues = error.messageValues) !== null && _error$messageValues !== void 0 ? _error$messageValues : {}).reduce((message, _ref2) => {
304
+ const messageHasValues = Object.entries(error.messageValues || {}).reduce((message, _ref2) => {
299
305
  let [key, value] = _ref2;
300
306
  return message.replace(`{${key}}`, value);
301
307
  }, message);
302
- error.message = messagehasValues;
308
+ error.message = messageHasValues;
303
309
  return error;
304
310
  }
305
311
  return error;
@@ -319,6 +325,75 @@ export default function useFieldProps(localeProps) {
319
325
  var _ref4;
320
326
  return Boolean((_ref4 = errorProp !== null && errorProp !== void 0 ? errorProp : localErrorRef.current) !== null && _ref4 !== void 0 ? _ref4 : contextErrorRef.current);
321
327
  }, [errorProp]);
328
+ const connectWithPathListenerRef = useRef(async () => {
329
+ if (localErrorRef.current || validateUnchanged || continuousValidation) {
330
+ if (onChangeValidatorRef.current) {
331
+ runOnChangeValidator();
332
+ }
333
+ }
334
+ if (localErrorRef.current && onBlurValidatorRef.current) {
335
+ runOnBlurValidator();
336
+ }
337
+ });
338
+ const {
339
+ getValueByPath
340
+ } = useDataValue();
341
+ const exportValidatorsRef = useRef(exportValidators);
342
+ exportValidatorsRef.current = exportValidators;
343
+ const additionalArgs = useMemo(() => {
344
+ const errorMessages = _objectSpread(_objectSpread({}, contextErrorMessages), errorMessagesRef.current);
345
+ const args = _objectSpread(_objectSpread({}, errorMessages), {}, {
346
+ errorMessages,
347
+ validators: exportValidatorsRef.current,
348
+ connectWithPath: path => {
349
+ setFieldEventListener === null || setFieldEventListener === void 0 ? void 0 : setFieldEventListener(path, 'onPathChange', connectWithPathListenerRef.current);
350
+ return {
351
+ getValue: () => getValueByPath(path)
352
+ };
353
+ }
354
+ });
355
+ return args;
356
+ }, [contextErrorMessages, getValueByPath, setFieldEventListener]);
357
+ const extendWithExportedValidators = useCallback((validator, result) => {
358
+ if (exportValidatorsRef.current && !result && (validator === onChangeValidatorRef.current || validator === onBlurValidatorRef.current) && !Array.isArray(result)) {
359
+ return Object.values(exportValidatorsRef.current);
360
+ }
361
+ return result;
362
+ }, []);
363
+ const callValidatorFnSync = useCallback(function (validator) {
364
+ let value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : valueRef.current;
365
+ if (typeof validator !== 'function') {
366
+ return undefined;
367
+ }
368
+ const result = extendWithExportedValidators(validator, validator(value, additionalArgs));
369
+ if (Array.isArray(result)) {
370
+ for (const validator of result) {
371
+ const result = callValidatorFnSync(validator, value);
372
+ if (result instanceof Error) {
373
+ return result;
374
+ }
375
+ }
376
+ return;
377
+ }
378
+ return result;
379
+ }, [additionalArgs, extendWithExportedValidators]);
380
+ const callValidatorFnAsync = useCallback(async function (validator) {
381
+ let value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : valueRef.current;
382
+ if (typeof validator !== 'function') {
383
+ return undefined;
384
+ }
385
+ const result = extendWithExportedValidators(validator, await validator(value, additionalArgs));
386
+ if (Array.isArray(result)) {
387
+ for (const validator of result) {
388
+ const result = await callValidatorFnAsync(validator, value);
389
+ if (result instanceof Error) {
390
+ return result;
391
+ }
392
+ }
393
+ return;
394
+ }
395
+ return result;
396
+ }, [additionalArgs, extendWithExportedValidators]);
322
397
  const stateId = useId();
323
398
  const persistErrorState = useCallback(function (method) {
324
399
  let errorArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
@@ -351,23 +426,19 @@ export default function useFieldProps(localeProps) {
351
426
  persistErrorState('wipe');
352
427
  hasLocalErrorRef.current = false;
353
428
  }, [persistErrorState]);
354
- const callValidator = useCallback(async () => {
355
- if (typeof validatorRef.current !== 'function') {
356
- return;
357
- }
358
- const runAsync = isAsync(validatorRef.current);
359
- if (runAsync) {
360
- defineAsyncProcess('validator');
361
- setFieldState('validating');
362
- hideError();
363
- }
364
- const opts = _objectSpread(_objectSpread({}, contextErrorMessages), errorMessagesRef.current);
365
- const tmpValue = valueRef.current;
366
- const result = await validatorRef.current(valueRef.current, opts);
367
- const unchangedValue = tmpValue === valueRef.current;
429
+ const validatorCacheRef = useRef({
430
+ onChangeValidator: null,
431
+ onBlurValidator: null
432
+ });
433
+ const revealOnChangeValidatorResult = useCallback(_ref5 => {
434
+ let {
435
+ result,
436
+ unchangedValue
437
+ } = _ref5;
438
+ const runAsync = isAsync(onChangeValidatorRef.current);
368
439
  if (unchangedValue) {
369
440
  persistErrorState('gracefully', result);
370
- if (continuousValidation || runAsync) {
441
+ if (validateInitially && !changedRef.current || validateUnchanged || continuousValidation || runAsync) {
371
442
  window.requestAnimationFrame(() => {
372
443
  revealError();
373
444
  forceUpdate();
@@ -382,30 +453,132 @@ export default function useFieldProps(localeProps) {
382
453
  setFieldState('pending');
383
454
  }
384
455
  }
385
- return result;
386
- }, [contextErrorMessages, continuousValidation, hideError, persistErrorState, defineAsyncProcess, setFieldState, revealError]);
456
+ }, [continuousValidation, defineAsyncProcess, persistErrorState, revealError, setFieldState, validateInitially, validateUnchanged]);
457
+ const callOnChangeValidator = useCallback(async () => {
458
+ if (typeof onChangeValidatorRef.current !== 'function') {
459
+ return {};
460
+ }
461
+ const tmpValue = valueRef.current;
462
+ let result = isAsync(onChangeValidatorRef.current) ? await callValidatorFnAsync(onChangeValidatorRef.current) : callValidatorFnSync(onChangeValidatorRef.current);
463
+ if (result instanceof Promise) {
464
+ result = await result;
465
+ }
466
+ const unchangedValue = tmpValue === valueRef.current;
467
+ return {
468
+ result,
469
+ unchangedValue
470
+ };
471
+ }, [callValidatorFnAsync, callValidatorFnSync]);
472
+ const startOnChangeValidatorValidation = useCallback(async () => {
473
+ if (typeof onChangeValidatorRef.current !== 'function') {
474
+ return;
475
+ }
476
+ if (isAsync(onChangeValidatorRef.current)) {
477
+ defineAsyncProcess('validator');
478
+ setFieldState('validating');
479
+ hideError();
480
+ }
481
+ const tmpValue = valueRef.current;
482
+ let result = isAsync(onChangeValidatorRef.current) ? await callValidatorFnAsync(onChangeValidatorRef.current) : callValidatorFnSync(onChangeValidatorRef.current);
483
+ if (result instanceof Promise) {
484
+ result = await result;
485
+ }
486
+ const unchangedValue = tmpValue === valueRef.current;
487
+ revealOnChangeValidatorResult({
488
+ result,
489
+ unchangedValue
490
+ });
491
+ return {
492
+ result
493
+ };
494
+ }, [callValidatorFnAsync, callValidatorFnSync, defineAsyncProcess, hideError, revealOnChangeValidatorResult, setFieldState]);
495
+ const runOnChangeValidator = useCallback(async () => {
496
+ if (!onChangeValidatorRef.current) {
497
+ return;
498
+ }
499
+ const {
500
+ result,
501
+ unchangedValue
502
+ } = await callOnChangeValidator();
503
+ if (String(result) !== String(validatorCacheRef.current.onChangeValidator)) {
504
+ if (result) {
505
+ revealOnChangeValidatorResult({
506
+ result,
507
+ unchangedValue
508
+ });
509
+ } else {
510
+ hideError();
511
+ clearErrorState();
512
+ }
513
+ }
514
+ validatorCacheRef.current.onChangeValidator = result || null;
515
+ }, [callOnChangeValidator, clearErrorState, hideError, revealOnChangeValidatorResult]);
387
516
  const callOnBlurValidator = useCallback(async function () {
388
517
  let {
389
- valueOverride = null
518
+ overrideValue = null
390
519
  } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
391
520
  if (typeof onBlurValidatorRef.current !== 'function') {
392
- return;
521
+ return {};
393
522
  }
394
- const value = transformers.current.toEvent(valueOverride !== null && valueOverride !== void 0 ? valueOverride : valueRef.current, 'onBlurValidator');
395
- const runAsync = isAsync(onBlurValidatorRef.current);
396
- if (runAsync) {
397
- defineAsyncProcess('onBlurValidator');
398
- setFieldState('validating');
523
+ const value = transformers.current.toEvent(overrideValue !== null && overrideValue !== void 0 ? overrideValue : valueRef.current, 'onBlurValidator');
524
+ let result = isAsync(onBlurValidatorRef.current) ? await callValidatorFnAsync(onBlurValidatorRef.current, value) : callValidatorFnSync(onBlurValidatorRef.current, value);
525
+ if (result instanceof Promise) {
526
+ result = await result;
399
527
  }
400
- const result = await onBlurValidatorRef.current(value);
528
+ return {
529
+ result
530
+ };
531
+ }, [callValidatorFnAsync, callValidatorFnSync]);
532
+ const revealOnBlurValidatorResult = useCallback(_ref6 => {
533
+ let {
534
+ result
535
+ } = _ref6;
401
536
  persistErrorState('gracefully', result);
402
- if (runAsync) {
537
+ if (isAsync(onBlurValidatorRef.current)) {
403
538
  defineAsyncProcess(undefined);
404
539
  setFieldState(result instanceof Error ? 'error' : 'complete');
405
540
  }
406
541
  revealError();
407
- forceUpdate();
408
- }, [persistErrorState, defineAsyncProcess, setFieldState, revealError]);
542
+ }, [defineAsyncProcess, persistErrorState, revealError, setFieldState]);
543
+ const startOnBlurValidatorProcess = useCallback(async function () {
544
+ let {
545
+ overrideValue = null
546
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
547
+ if (typeof onBlurValidatorRef.current !== 'function') {
548
+ return;
549
+ }
550
+ if (isAsync(onBlurValidatorRef.current)) {
551
+ defineAsyncProcess('onBlurValidator');
552
+ setFieldState('validating');
553
+ }
554
+ const {
555
+ result
556
+ } = await callOnBlurValidator({
557
+ overrideValue
558
+ });
559
+ revealOnBlurValidatorResult({
560
+ result
561
+ });
562
+ }, [callOnBlurValidator, defineAsyncProcess, revealOnBlurValidatorResult, setFieldState]);
563
+ const runOnBlurValidator = useCallback(async () => {
564
+ if (!onBlurValidatorRef.current) {
565
+ return;
566
+ }
567
+ const {
568
+ result
569
+ } = await callOnBlurValidator();
570
+ if (String(result) !== String(validatorCacheRef.current.onBlurValidator) && revealErrorRef.current) {
571
+ if (result) {
572
+ revealOnBlurValidatorResult({
573
+ result
574
+ });
575
+ } else {
576
+ hideError();
577
+ clearErrorState();
578
+ }
579
+ }
580
+ validatorCacheRef.current.onBlurValidator = result || null;
581
+ }, [callOnBlurValidator, clearErrorState, hideError, revealOnBlurValidatorResult]);
409
582
  const prioritizeContextSchema = useMemo(() => {
410
583
  if (errorPrioritization) {
411
584
  const schemaPath = identifier.split('/').join('/properties/');
@@ -442,8 +615,10 @@ export default function useFieldProps(localeProps) {
442
615
  const error = ajvErrorsToOneFormError(schemaValidatorRef.current.errors, valueRef.current);
443
616
  throw error;
444
617
  }
445
- if (validatorRef.current && (changedRef.current || validateInitially)) {
446
- const result = await callValidator();
618
+ if (onChangeValidatorRef.current && (changedRef.current || validateInitially || validateUnchanged)) {
619
+ const {
620
+ result
621
+ } = await startOnChangeValidatorValidation();
447
622
  if (result instanceof Error) {
448
623
  throw result;
449
624
  }
@@ -458,7 +633,7 @@ export default function useFieldProps(localeProps) {
458
633
  persistErrorState('weak', error);
459
634
  }
460
635
  }
461
- }, [startProcess, disabled, hideError, setFieldState, clearErrorState, emptyValue, requiredProp, required, prioritizeContextSchema, validateInitially, callValidator, persistErrorState]);
636
+ }, [startProcess, disabled, hideError, setFieldState, clearErrorState, emptyValue, requiredProp, required, prioritizeContextSchema, validateInitially, validateUnchanged, startOnChangeValidatorValidation, persistErrorState]);
462
637
  const handleError = useCallback(() => {
463
638
  if (continuousValidation || continuousValidation !== false && !hasFocusRef.current) {
464
639
  revealError();
@@ -466,9 +641,9 @@ export default function useFieldProps(localeProps) {
466
641
  hideError();
467
642
  }
468
643
  }, [continuousValidation, hideError, revealError]);
469
- const setHasFocus = useCallback(async (hasFocus, valueOverride, additionalArgs) => {
644
+ const setHasFocus = useCallback(async (hasFocus, overrideValue, additionalArgs) => {
470
645
  const getArgs = type => {
471
- const value = transformers.current.toEvent(valueOverride !== null && valueOverride !== void 0 ? valueOverride : valueRef.current, type);
646
+ const value = transformers.current.toEvent(overrideValue !== null && overrideValue !== void 0 ? overrideValue : valueRef.current, type);
472
647
  const transformedAdditionalArgs = transformers.current.transformAdditionalArgs(additionalArgs, value);
473
648
  return typeof transformedAdditionalArgs !== 'undefined' ? [value, transformedAdditionalArgs] : [value];
474
649
  };
@@ -483,28 +658,28 @@ export default function useFieldProps(localeProps) {
483
658
  if (!changedRef.current && !validateUnchanged) {
484
659
  return;
485
660
  }
486
- addToPool('onBlurValidator', async () => await callOnBlurValidator({
487
- valueOverride
661
+ addToPool('onBlurValidator', async () => await startOnBlurValidatorProcess({
662
+ overrideValue
488
663
  }), isAsync(onBlurValidatorRef.current));
489
664
  await runPool(() => {
490
665
  revealError();
491
666
  forceUpdate();
492
667
  });
493
668
  }
494
- }, [addToPool, callOnBlurValidator, onBlur, onFocus, runPool, revealError, validateUnchanged]);
495
- const yieldAsyncProcess = useCallback(async _ref5 => {
669
+ }, [onFocus, onBlur, validateUnchanged, addToPool, runPool, startOnBlurValidatorProcess, revealError]);
670
+ const yieldAsyncProcess = useCallback(async _ref7 => {
496
671
  let {
497
672
  name,
498
673
  waitFor
499
- } = _ref5;
674
+ } = _ref7;
500
675
  return new Promise(resolve => {
501
676
  const validateProcesses = () => {
502
- const result = waitFor.some(_ref6 => {
677
+ const result = waitFor.some(_ref8 => {
503
678
  let {
504
679
  processName,
505
680
  withStates,
506
681
  hasValue
507
- } = _ref6;
682
+ } = _ref8;
508
683
  const hasMatchingValue = hasValue === validatedValue.current;
509
684
  const result = (typeof hasValue === 'undefined' ? false : !hasMatchingValue) || (processName ? processName === asyncProcessRef.current : true) && (withStates === null || withStates === void 0 ? void 0 : withStates.some(state => {
510
685
  return state === fieldStateRef.current;
@@ -599,7 +774,7 @@ export default function useFieldProps(localeProps) {
599
774
  if (hasPath) {
600
775
  handlePathChangeUnvalidatedDataContext(identifier, newValue);
601
776
  }
602
- addToPool('validator', validateValue, isAsync(validatorRef.current));
777
+ addToPool('validator', validateValue, isAsync(onChangeValidatorRef.current));
603
778
  addToPool('onChangeContext', callOnChangeContext, isAsync(onChangeContext));
604
779
  await runPool(() => {
605
780
  handleError();
@@ -662,16 +837,18 @@ export default function useFieldProps(localeProps) {
662
837
  const handleFocus = useCallback(() => setHasFocus(true), [setHasFocus]);
663
838
  const handleBlur = useCallback(() => setHasFocus(false), [setHasFocus]);
664
839
  setPropsDataContext === null || setPropsDataContext === void 0 ? void 0 : setPropsDataContext(identifier, props);
665
- useMountEffect(() => {
666
- dataContext === null || dataContext === void 0 ? void 0 : dataContext.handleMountField(identifier);
840
+ useEffect(() => {
841
+ handleMountField(identifier);
842
+ return () => {
843
+ handleUnMountField(identifier);
844
+ setFieldErrorDataContext === null || setFieldErrorDataContext === void 0 ? void 0 : setFieldErrorDataContext(identifier, undefined);
845
+ setFieldError === null || setFieldError === void 0 ? void 0 : setFieldError(identifier, undefined);
846
+ localErrorRef.current = undefined;
847
+ };
848
+ }, [handleMountField, handleUnMountField, identifier, setFieldError, setFieldErrorDataContext]);
849
+ useEffect(() => {
667
850
  validateValue();
668
- });
669
- useUnmountEffect(() => {
670
- dataContext === null || dataContext === void 0 ? void 0 : dataContext.handleUnMountField(identifier);
671
- setFieldErrorDataContext === null || setFieldErrorDataContext === void 0 ? void 0 : setFieldErrorDataContext(identifier, undefined);
672
- setFieldError === null || setFieldError === void 0 ? void 0 : setFieldError(identifier, undefined);
673
- localErrorRef.current = undefined;
674
- });
851
+ }, [validateValue]);
675
852
  useUpdateEffect(() => {
676
853
  var _dataContext$ajvInsta2;
677
854
  schemaValidatorRef.current = schema ? (_dataContext$ajvInsta2 = dataContext.ajvInstance) === null || _dataContext$ajvInsta2 === void 0 ? void 0 : _dataContext$ajvInsta2.compile(schema) : undefined;
@@ -702,6 +879,14 @@ export default function useFieldProps(localeProps) {
702
879
  }
703
880
  }
704
881
  }, [clearErrorState, dataContextError, handleError, persistErrorState, prepareError, validateInitially]);
882
+ useEffect(() => {
883
+ if (itemPath && valueProp !== undefined) {
884
+ warn(`Using value="${valueProp}" prop inside Iterate is not supported yet`);
885
+ }
886
+ if (itemPath && defaultValue !== undefined) {
887
+ warn(`Using defaultValue="${defaultValue}" prop inside Iterate is not supported yet`);
888
+ }
889
+ }, [defaultValue, itemPath, valueProp]);
705
890
  useEffect(() => {
706
891
  if (hasPath) {
707
892
  let value = valueProp;
@@ -726,7 +911,7 @@ export default function useFieldProps(localeProps) {
726
911
  validateDataDataContext === null || validateDataDataContext === void 0 ? void 0 : validateDataDataContext();
727
912
  }
728
913
  }
729
- }, [dataContext.data, dataContext.id, hasPath, identifier, updateDataValueDataContext, validateDataDataContext, valueProp]);
914
+ }, [dataContext.data, dataContext.id, defaultValue, hasPath, identifier, updateDataValueDataContext, validateDataDataContext, valueProp]);
730
915
  useEffect(() => {
731
916
  if (showAllErrors || showBoundaryErrors) {
732
917
  if (fieldStateRef.current !== 'validating') {
@@ -737,7 +922,7 @@ export default function useFieldProps(localeProps) {
737
922
  }
738
923
  }, [hideError, revealError, showAllErrors, showBoundaryErrors]);
739
924
  useEffect(() => {
740
- if (dataContext.formState === 'pending' && (validatorRef.current || onBlurValidatorRef.current)) {
925
+ if (dataContext.formState === 'pending' && (onChangeValidatorRef.current || onBlurValidatorRef.current)) {
741
926
  hideError();
742
927
  forceUpdate();
743
928
  }
@@ -746,50 +931,43 @@ export default function useFieldProps(localeProps) {
746
931
  if (hasError()) {
747
932
  return;
748
933
  }
749
- addToPool('validator', callValidator, isAsync(validatorRef.current));
750
- addToPool('onBlurValidator', callOnBlurValidator, isAsync(onBlurValidatorRef.current));
934
+ addToPool('validator', startOnChangeValidatorValidation, isAsync(onChangeValidatorRef.current));
935
+ addToPool('onBlurValidator', startOnBlurValidatorProcess, isAsync(onBlurValidatorRef.current));
751
936
  await runPool();
752
- }, [addToPool, callOnBlurValidator, callValidator, hasError, runPool]);
753
- useMountEffect(() => {
754
- var _dataContext$setField;
755
- 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);
756
- });
757
- useMountEffect(() => {
937
+ }, [addToPool, startOnBlurValidatorProcess, hasError, runPool, startOnChangeValidatorValidation]);
938
+ useEffect(() => {
939
+ setFieldEventListener === null || setFieldEventListener === void 0 ? void 0 : setFieldEventListener(identifier, 'onSubmit', onSubmitHandler);
940
+ }, [identifier, onSubmitHandler, setFieldEventListener]);
941
+ useEffect(() => {
758
942
  if (inFieldBlock) {
759
- if (errorProp) {
760
- setFieldStateFieldBlock === null || setFieldStateFieldBlock === void 0 ? void 0 : setFieldStateFieldBlock({
761
- identifier,
762
- type: 'error',
763
- content: errorProp,
764
- showInitially: true,
765
- show: true
766
- });
767
- }
768
- if (warning) {
769
- setFieldStateFieldBlock === null || setFieldStateFieldBlock === void 0 ? void 0 : setFieldStateFieldBlock({
770
- identifier,
771
- type: 'warning',
772
- content: warning,
773
- showInitially: true,
774
- show: true
775
- });
776
- }
777
- if (info) {
778
- setFieldStateFieldBlock === null || setFieldStateFieldBlock === void 0 ? void 0 : setFieldStateFieldBlock({
779
- identifier,
780
- type: 'info',
781
- content: info,
782
- showInitially: true,
783
- show: true
784
- });
785
- }
943
+ setFieldStateFieldBlock === null || setFieldStateFieldBlock === void 0 ? void 0 : setFieldStateFieldBlock({
944
+ identifier,
945
+ type: 'error',
946
+ content: errorProp,
947
+ showInitially: true,
948
+ show: true
949
+ });
950
+ setFieldStateFieldBlock === null || setFieldStateFieldBlock === void 0 ? void 0 : setFieldStateFieldBlock({
951
+ identifier,
952
+ type: 'warning',
953
+ content: warning,
954
+ showInitially: true,
955
+ show: true
956
+ });
957
+ setFieldStateFieldBlock === null || setFieldStateFieldBlock === void 0 ? void 0 : setFieldStateFieldBlock({
958
+ identifier,
959
+ type: 'info',
960
+ content: info,
961
+ showInitially: true,
962
+ show: true
963
+ });
786
964
  return () => {
787
965
  if (mountedFieldsRefFieldBlock) {
788
966
  mountedFieldsRefFieldBlock.current[identifier] = true;
789
967
  }
790
968
  };
791
969
  }
792
- });
970
+ }, [errorProp, identifier, inFieldBlock, info, mountedFieldsRefFieldBlock, setFieldStateFieldBlock, warning]);
793
971
  const infoRef = useRef(info);
794
972
  const warningRef = useRef(warning);
795
973
  useUpdateEffect(() => {
@@ -835,13 +1013,16 @@ export default function useFieldProps(localeProps) {
835
1013
  };
836
1014
  const sharedData = useSharedState('field-block-props-' + id);
837
1015
  sharedData.set(fieldBlockProps);
1016
+ useEffect(() => {
1017
+ isInternalRerenderRef.current = undefined;
1018
+ });
838
1019
  return _objectSpread(_objectSpread(_objectSpread({}, props), fieldBlockProps), {}, {
839
1020
  name: props.name || ((_props$path = props.path) === null || _props$path === void 0 ? void 0 : _props$path.replace('/', '')) || id,
840
1021
  autoComplete: (_props$autoComplete = props.autoComplete) !== null && _props$autoComplete !== void 0 ? _props$autoComplete : dataContext.autoComplete === true ? 'on' : undefined,
841
1022
  id,
842
1023
  value: transformers.current.transformIn(transformers.current.toInput(valueRef.current)),
843
1024
  hasError: hasVisibleError,
844
- isChanged: changedRef.current,
1025
+ isChanged: Boolean(changedRef.current),
845
1026
  props,
846
1027
  htmlAttributes,
847
1028
  setHasFocus,