@dnb/eufemia 10.34.0 → 10.35.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 (984) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/assets/images/sbanken/sbanken-compact-horizontal.svg +3 -0
  3. package/assets/images/sbanken/sbanken-compact.svg +3 -0
  4. package/assets/images/sbanken/sbanken.svg +3 -0
  5. package/cjs/components/accordion/Accordion.d.ts +0 -2
  6. package/cjs/components/accordion/Accordion.js +2 -3
  7. package/cjs/components/accordion/Accordion.js.map +1 -1
  8. package/cjs/components/accordion/AccordionGroup.js +2 -3
  9. package/cjs/components/accordion/AccordionGroup.js.map +1 -1
  10. package/cjs/components/anchor/Anchor.d.ts +3 -0
  11. package/cjs/components/anchor/Anchor.js +22 -15
  12. package/cjs/components/anchor/Anchor.js.map +1 -1
  13. package/cjs/components/autocomplete/Autocomplete.js +2 -4
  14. package/cjs/components/autocomplete/Autocomplete.js.map +1 -1
  15. package/cjs/components/autocomplete/style/themes/dnb-autocomplete-theme-sbanken.css +1 -1
  16. package/cjs/components/autocomplete/style/themes/dnb-autocomplete-theme-sbanken.scss +1 -1
  17. package/cjs/components/button/Button.d.ts +0 -4
  18. package/cjs/components/button/Button.js +2 -5
  19. package/cjs/components/button/Button.js.map +1 -1
  20. package/cjs/components/date-picker/DatePicker.d.ts +0 -1
  21. package/cjs/components/date-picker/DatePicker.js +2 -5
  22. package/cjs/components/date-picker/DatePicker.js.map +1 -1
  23. package/cjs/components/dropdown/Dropdown.js +2 -5
  24. package/cjs/components/dropdown/Dropdown.js.map +1 -1
  25. package/cjs/components/form-row/FormRow.d.ts +0 -1
  26. package/cjs/components/form-row/FormRow.js +2 -5
  27. package/cjs/components/form-row/FormRow.js.map +1 -1
  28. package/cjs/components/form-set/FormSet.d.ts +0 -1
  29. package/cjs/components/form-set/FormSet.js +3 -4
  30. package/cjs/components/form-set/FormSet.js.map +1 -1
  31. package/cjs/components/form-status/FormStatus.d.ts +0 -1
  32. package/cjs/components/form-status/FormStatus.js +2 -5
  33. package/cjs/components/form-status/FormStatus.js.map +1 -1
  34. package/cjs/components/global-status/GlobalStatus.d.ts +0 -1
  35. package/cjs/components/global-status/GlobalStatus.js +2 -5
  36. package/cjs/components/global-status/GlobalStatus.js.map +1 -1
  37. package/cjs/components/global-status/GlobalStatusController.js.map +1 -1
  38. package/cjs/components/global-status/GlobalStatusProvider.js.map +1 -1
  39. package/cjs/components/help-button/HelpButton.js +3 -0
  40. package/cjs/components/help-button/HelpButton.js.map +1 -1
  41. package/cjs/components/help-button/HelpButtonInstance.js +3 -4
  42. package/cjs/components/help-button/HelpButtonInstance.js.map +1 -1
  43. package/cjs/components/help-button/style/dnb-help-button.css +4 -1
  44. package/cjs/components/help-button/style/dnb-help-button.min.css +1 -0
  45. package/cjs/components/help-button/style/dnb-help-button.scss +6 -0
  46. package/cjs/components/icon/Icon.js +2 -3
  47. package/cjs/components/icon/Icon.js.map +1 -1
  48. package/cjs/components/icon-primary/IconPrimary.js.map +1 -1
  49. package/cjs/components/input/Input.d.ts +0 -1
  50. package/cjs/components/input/Input.js +2 -5
  51. package/cjs/components/input/Input.js.map +1 -1
  52. package/cjs/components/input-masked/InputMasked.d.ts +0 -1
  53. package/cjs/components/input-masked/InputMasked.js.map +1 -1
  54. package/cjs/components/logo/Logo.d.ts +47 -43
  55. package/cjs/components/logo/Logo.js +77 -224
  56. package/cjs/components/logo/Logo.js.map +1 -1
  57. package/cjs/components/logo/LogoDocs.d.ts +2 -0
  58. package/cjs/components/logo/LogoDocs.js +50 -0
  59. package/cjs/components/logo/LogoDocs.js.map +1 -0
  60. package/cjs/components/logo/LogoSvg.d.ts +7 -0
  61. package/cjs/components/logo/LogoSvg.js +81 -0
  62. package/cjs/components/logo/LogoSvg.js.map +1 -0
  63. package/cjs/components/modal/Modal.d.ts +2 -1
  64. package/cjs/components/modal/Modal.js +26 -12
  65. package/cjs/components/modal/Modal.js.map +1 -1
  66. package/cjs/components/modal/types.d.ts +0 -4
  67. package/cjs/components/modal/types.js.map +1 -1
  68. package/cjs/components/number-format/NumberFormat.d.ts +4 -0
  69. package/cjs/components/number-format/NumberFormat.js +5 -5
  70. package/cjs/components/number-format/NumberFormat.js.map +1 -1
  71. package/cjs/components/number-format/style/dnb-number-format.css +3 -0
  72. package/cjs/components/number-format/style/dnb-number-format.min.css +1 -1
  73. package/cjs/components/number-format/style/dnb-number-format.scss +4 -0
  74. package/cjs/components/pagination/Pagination.d.ts +0 -3
  75. package/cjs/components/pagination/Pagination.js +2 -5
  76. package/cjs/components/pagination/Pagination.js.map +1 -1
  77. package/cjs/components/pagination/PaginationHelpers.js.map +1 -1
  78. package/cjs/components/pagination/PaginationInfinity.js.map +1 -1
  79. package/cjs/components/pagination/PaginationProvider.js.map +1 -1
  80. package/cjs/components/progress-indicator/ProgressIndicatorDocs.js +1 -1
  81. package/cjs/components/progress-indicator/ProgressIndicatorDocs.js.map +1 -1
  82. package/cjs/components/progress-indicator/types.d.ts +1 -1
  83. package/cjs/components/progress-indicator/types.js.map +1 -1
  84. package/cjs/components/radio/Radio.d.ts +0 -1
  85. package/cjs/components/radio/Radio.js +2 -5
  86. package/cjs/components/radio/Radio.js.map +1 -1
  87. package/cjs/components/radio/RadioGroup.d.ts +0 -1
  88. package/cjs/components/radio/RadioGroup.js +2 -5
  89. package/cjs/components/radio/RadioGroup.js.map +1 -1
  90. package/cjs/components/skeleton/Skeleton.d.ts +0 -1
  91. package/cjs/components/skeleton/Skeleton.js +2 -5
  92. package/cjs/components/skeleton/Skeleton.js.map +1 -1
  93. package/cjs/components/switch/Switch.d.ts +0 -1
  94. package/cjs/components/switch/Switch.js +2 -5
  95. package/cjs/components/switch/Switch.js.map +1 -1
  96. package/cjs/components/table/Table.d.ts +6 -0
  97. package/cjs/components/table/Table.js +15 -3
  98. package/cjs/components/table/Table.js.map +1 -1
  99. package/cjs/components/table/TableAccordion.d.ts +7 -11
  100. package/cjs/components/table/TableAccordion.js +32 -21
  101. package/cjs/components/table/TableAccordion.js.map +1 -1
  102. package/cjs/components/table/TableTr.js +24 -25
  103. package/cjs/components/table/TableTr.js.map +1 -1
  104. package/cjs/components/tabs/Tabs.d.ts +0 -1
  105. package/cjs/components/tabs/Tabs.js +1 -7
  106. package/cjs/components/tabs/Tabs.js.map +1 -1
  107. package/cjs/components/tabs/TabsCustomContent.d.ts +0 -1
  108. package/cjs/components/tabs/TabsCustomContent.js +5 -8
  109. package/cjs/components/tabs/TabsCustomContent.js.map +1 -1
  110. package/cjs/components/tabs/TabsDocs.js +1 -1
  111. package/cjs/components/tabs/TabsDocs.js.map +1 -1
  112. package/cjs/components/textarea/Textarea.d.ts +0 -1
  113. package/cjs/components/textarea/Textarea.js +2 -5
  114. package/cjs/components/textarea/Textarea.js.map +1 -1
  115. package/cjs/components/toggle-button/ToggleButton.d.ts +0 -1
  116. package/cjs/components/toggle-button/ToggleButton.js +2 -5
  117. package/cjs/components/toggle-button/ToggleButton.js.map +1 -1
  118. package/cjs/components/toggle-button/ToggleButtonGroup.d.ts +0 -1
  119. package/cjs/components/toggle-button/ToggleButtonGroup.js +2 -5
  120. package/cjs/components/toggle-button/ToggleButtonGroup.js.map +1 -1
  121. package/cjs/extensions/forms/DataContext/Context.d.ts +2 -0
  122. package/cjs/extensions/forms/DataContext/Context.js +1 -0
  123. package/cjs/extensions/forms/DataContext/Context.js.map +1 -1
  124. package/cjs/extensions/forms/DataContext/FieldBoundary/FieldBoundaryContext.d.ts +17 -1
  125. package/cjs/extensions/forms/DataContext/FieldBoundary/FieldBoundaryContext.js.map +1 -1
  126. package/cjs/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js +5 -3
  127. package/cjs/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js.map +1 -1
  128. package/cjs/extensions/forms/DataContext/Provider/Provider.js +50 -4
  129. package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  130. package/cjs/extensions/forms/Field/ArraySelection/ArraySelection.d.ts +2 -2
  131. package/cjs/extensions/forms/Field/ArraySelection/ArraySelection.js +7 -1
  132. package/cjs/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
  133. package/cjs/extensions/forms/Field/Boolean/Boolean.d.ts +2 -2
  134. package/cjs/extensions/forms/Field/Boolean/Boolean.js.map +1 -1
  135. package/cjs/extensions/forms/Field/Number/style/dnb-number.css +10 -0
  136. package/cjs/extensions/forms/Field/Number/style/dnb-number.min.css +1 -1
  137. package/cjs/extensions/forms/Field/Number/style/dnb-number.scss +11 -0
  138. package/cjs/extensions/forms/Field/Option/Option.d.ts +2 -2
  139. package/cjs/extensions/forms/Field/Option/Option.js.map +1 -1
  140. package/cjs/extensions/forms/Field/Password/Password.js +2 -1
  141. package/cjs/extensions/forms/Field/Password/Password.js.map +1 -1
  142. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.js +6 -6
  143. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  144. package/cjs/extensions/forms/Field/Selection/Selection.js +7 -2
  145. package/cjs/extensions/forms/Field/Selection/Selection.js.map +1 -1
  146. package/cjs/extensions/forms/Field/Toggle/Toggle.d.ts +2 -2
  147. package/cjs/extensions/forms/Field/Toggle/Toggle.js +13 -1
  148. package/cjs/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  149. package/cjs/extensions/forms/Form/Appearance/Appearance.d.ts +3 -0
  150. package/cjs/extensions/forms/Form/Appearance/Appearance.js +1 -0
  151. package/cjs/extensions/forms/Form/Appearance/Appearance.js.map +1 -1
  152. package/cjs/extensions/forms/Form/FieldProps/FieldProps.d.ts +5 -1
  153. package/cjs/extensions/forms/Form/FieldProps/FieldProps.js +20 -37
  154. package/cjs/extensions/forms/Form/FieldProps/FieldProps.js.map +1 -1
  155. package/cjs/extensions/forms/Form/Section/EditContainer/EditContainer.d.ts +12 -0
  156. package/cjs/extensions/forms/Form/Section/EditContainer/EditContainer.js +44 -0
  157. package/cjs/extensions/forms/Form/Section/EditContainer/EditContainer.js.map +1 -0
  158. package/cjs/extensions/forms/Form/Section/EditContainer/EditContainerDocs.d.ts +3 -0
  159. package/cjs/extensions/forms/Form/Section/EditContainer/EditContainerDocs.js +27 -0
  160. package/cjs/extensions/forms/Form/Section/EditContainer/EditContainerDocs.js.map +1 -0
  161. package/cjs/extensions/forms/Form/Section/EditContainer/EditToolbarTools.d.ts +1 -0
  162. package/cjs/extensions/forms/Form/Section/EditContainer/EditToolbarTools.js +67 -0
  163. package/cjs/extensions/forms/Form/Section/EditContainer/EditToolbarTools.js.map +1 -0
  164. package/cjs/extensions/forms/Form/Section/EditContainer/index.d.ts +2 -0
  165. package/cjs/extensions/forms/Form/Section/EditContainer/index.js +27 -0
  166. package/cjs/extensions/forms/Form/Section/EditContainer/index.js.map +1 -0
  167. package/cjs/extensions/forms/Form/Section/EditContainer/useContainerDataStore.d.ts +3 -0
  168. package/cjs/extensions/forms/Form/Section/EditContainer/useContainerDataStore.js +54 -0
  169. package/cjs/extensions/forms/Form/Section/EditContainer/useContainerDataStore.js.map +1 -0
  170. package/cjs/extensions/forms/Form/Section/EditContainer/useEditContainerToolbar.d.ts +1 -0
  171. package/cjs/extensions/forms/Form/Section/EditContainer/useEditContainerToolbar.js +25 -0
  172. package/cjs/extensions/forms/Form/Section/EditContainer/useEditContainerToolbar.js.map +1 -0
  173. package/cjs/extensions/forms/Form/Section/Section.d.ts +9 -1
  174. package/cjs/extensions/forms/Form/Section/Section.js +10 -2
  175. package/cjs/extensions/forms/Form/Section/Section.js.map +1 -1
  176. package/cjs/extensions/forms/Form/Section/SectionContext.d.ts +1 -2
  177. package/cjs/extensions/forms/Form/Section/SectionContext.js.map +1 -1
  178. package/cjs/extensions/forms/Form/Section/SectionDocs.js +6 -1
  179. package/cjs/extensions/forms/Form/Section/SectionDocs.js.map +1 -1
  180. package/cjs/extensions/forms/Form/Section/ViewContainer/ViewContainer.d.ts +12 -0
  181. package/cjs/extensions/forms/Form/Section/ViewContainer/ViewContainer.js +43 -0
  182. package/cjs/extensions/forms/Form/Section/ViewContainer/ViewContainer.js.map +1 -0
  183. package/cjs/extensions/forms/Form/Section/ViewContainer/ViewContainerDocs.d.ts +3 -0
  184. package/cjs/extensions/forms/Form/Section/ViewContainer/ViewContainerDocs.js +27 -0
  185. package/cjs/extensions/forms/Form/Section/ViewContainer/ViewContainerDocs.js.map +1 -0
  186. package/cjs/extensions/forms/Form/Section/ViewContainer/ViewToolbarTools.d.ts +1 -0
  187. package/cjs/extensions/forms/Form/Section/ViewContainer/ViewToolbarTools.js +34 -0
  188. package/cjs/extensions/forms/Form/Section/ViewContainer/ViewToolbarTools.js.map +1 -0
  189. package/cjs/extensions/forms/Form/Section/ViewContainer/index.d.ts +2 -0
  190. package/cjs/extensions/forms/Form/Section/ViewContainer/index.js +27 -0
  191. package/cjs/extensions/forms/Form/Section/ViewContainer/index.js.map +1 -0
  192. package/cjs/extensions/forms/Form/Section/containers/SectionContainer.d.ts +19 -0
  193. package/cjs/extensions/forms/Form/Section/containers/SectionContainer.js +93 -0
  194. package/cjs/extensions/forms/Form/Section/containers/SectionContainer.js.map +1 -0
  195. package/cjs/extensions/forms/Form/Section/containers/SectionContainerContext.d.ts +8 -0
  196. package/cjs/extensions/forms/Form/Section/containers/SectionContainerContext.js +12 -0
  197. package/cjs/extensions/forms/Form/Section/containers/SectionContainerContext.js.map +1 -0
  198. package/cjs/extensions/forms/Form/Section/containers/SectionContainerProvider.d.ts +8 -0
  199. package/cjs/extensions/forms/Form/Section/containers/SectionContainerProvider.js +33 -0
  200. package/cjs/extensions/forms/Form/Section/containers/SectionContainerProvider.js.map +1 -0
  201. package/cjs/extensions/forms/Form/Section/containers/Toolbar.d.ts +7 -0
  202. package/cjs/extensions/forms/Form/Section/containers/Toolbar.js +35 -0
  203. package/cjs/extensions/forms/Form/Section/containers/Toolbar.js.map +1 -0
  204. package/cjs/extensions/forms/Form/Section/style/dnb-form-section.css +45 -0
  205. package/cjs/extensions/forms/Form/Section/style/dnb-form-section.min.css +1 -0
  206. package/{extensions/forms/Iterate/style/dnb-form-iterate.scss → cjs/extensions/forms/Form/Section/style/dnb-form-section.scss} +4 -12
  207. package/cjs/extensions/forms/Iterate/AnimatedContainer/ElementBlock.js +8 -8
  208. package/cjs/extensions/forms/Iterate/AnimatedContainer/ElementBlock.js.map +1 -1
  209. package/cjs/extensions/forms/Iterate/Array/Array.js +1 -1
  210. package/cjs/extensions/forms/Iterate/Array/Array.js.map +1 -1
  211. package/cjs/extensions/forms/Iterate/EditContainer/EditContainer.js +1 -1
  212. package/cjs/extensions/forms/Iterate/EditContainer/EditContainer.js.map +1 -1
  213. package/cjs/extensions/forms/Iterate/EditContainer/EditToolbarTools.js +17 -8
  214. package/cjs/extensions/forms/Iterate/EditContainer/EditToolbarTools.js.map +1 -1
  215. package/cjs/extensions/forms/Iterate/RemoveButton/RemoveButton.js +1 -1
  216. package/cjs/extensions/forms/Iterate/RemoveButton/RemoveButton.js.map +1 -1
  217. package/cjs/extensions/forms/Iterate/ViewContainer/ViewContainer.js +1 -1
  218. package/cjs/extensions/forms/Iterate/ViewContainer/ViewContainer.js.map +1 -1
  219. package/cjs/extensions/forms/Iterate/ViewContainer/ViewToolbarTools.js +1 -1
  220. package/cjs/extensions/forms/Iterate/ViewContainer/ViewToolbarTools.js.map +1 -1
  221. package/cjs/extensions/forms/Iterate/style/dnb-iterate.css +6 -0
  222. package/cjs/extensions/forms/Iterate/style/dnb-iterate.min.css +1 -0
  223. package/cjs/extensions/forms/Iterate/style/dnb-iterate.scss +12 -0
  224. package/cjs/extensions/forms/Wizard/Container/WizardContainer.js +1 -1
  225. package/cjs/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  226. package/cjs/extensions/forms/Wizard/Step/Step.js +1 -1
  227. package/cjs/extensions/forms/Wizard/Step/Step.js.map +1 -1
  228. package/cjs/extensions/forms/constants/locales/en-GB.d.ts +2 -1
  229. package/cjs/extensions/forms/constants/locales/en-GB.js +3 -2
  230. package/cjs/extensions/forms/constants/locales/en-GB.js.map +1 -1
  231. package/cjs/extensions/forms/constants/locales/en-US.d.ts +2 -1
  232. package/cjs/extensions/forms/constants/locales/index.d.ts +4 -2
  233. package/cjs/extensions/forms/constants/locales/nb-NO.d.ts +2 -1
  234. package/cjs/extensions/forms/constants/locales/nb-NO.js +3 -2
  235. package/cjs/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  236. package/cjs/extensions/forms/hooks/useDataValue.d.ts +4 -0
  237. package/cjs/extensions/forms/hooks/useDataValue.js +30 -5
  238. package/cjs/extensions/forms/hooks/useDataValue.js.map +1 -1
  239. package/cjs/extensions/forms/hooks/useFieldProps.js +14 -9
  240. package/cjs/extensions/forms/hooks/useFieldProps.js.map +1 -1
  241. package/cjs/extensions/forms/hooks/useTranslation.js +6 -11
  242. package/cjs/extensions/forms/hooks/useTranslation.js.map +1 -1
  243. package/cjs/extensions/forms/style/dnb-forms.css +56 -44
  244. package/cjs/extensions/forms/style/dnb-forms.min.css +1 -1
  245. package/cjs/extensions/payment-card/PaymentCard.js +0 -2
  246. package/cjs/extensions/payment-card/PaymentCard.js.map +1 -1
  247. package/cjs/fragments/drawer-list/DrawerList.d.ts +0 -1
  248. package/cjs/fragments/drawer-list/DrawerList.js +6 -13
  249. package/cjs/fragments/drawer-list/DrawerList.js.map +1 -1
  250. package/cjs/fragments/drawer-list/DrawerListHelpers.d.ts +43 -46
  251. package/cjs/fragments/drawer-list/DrawerListHelpers.js +0 -2
  252. package/cjs/fragments/drawer-list/DrawerListHelpers.js.map +1 -1
  253. package/cjs/fragments/drawer-list/DrawerListPortal.js.map +1 -1
  254. package/cjs/fragments/drawer-list/DrawerListProvider.js.map +1 -1
  255. package/cjs/fragments/drawer-list/style/dnb-drawer-list.scss +4 -0
  256. package/cjs/fragments/text-counter/TextCounter.js +3 -2
  257. package/cjs/fragments/text-counter/TextCounter.js.map +1 -1
  258. package/cjs/shared/Context.d.ts +9 -5
  259. package/cjs/shared/Context.js +40 -35
  260. package/cjs/shared/Context.js.map +1 -1
  261. package/cjs/shared/Eufemia.d.ts +1 -1
  262. package/cjs/shared/Eufemia.js +2 -2
  263. package/cjs/shared/Eufemia.js.map +1 -1
  264. package/cjs/shared/Provider.d.ts +1 -1
  265. package/cjs/shared/Provider.js +49 -42
  266. package/cjs/shared/Provider.js.map +1 -1
  267. package/cjs/shared/Translation.d.ts +5 -5
  268. package/cjs/shared/Translation.js +6 -11
  269. package/cjs/shared/Translation.js.map +1 -1
  270. package/cjs/shared/index.d.ts +1 -0
  271. package/cjs/shared/index.js +26 -1
  272. package/cjs/shared/index.js.map +1 -1
  273. package/cjs/shared/locales/en-GB.d.ts +0 -3
  274. package/cjs/shared/locales/en-GB.js +0 -3
  275. package/cjs/shared/locales/en-GB.js.map +1 -1
  276. package/cjs/shared/locales/en-US.d.ts +0 -3
  277. package/cjs/shared/locales/index.d.ts +0 -6
  278. package/cjs/shared/locales/nb-NO.d.ts +0 -3
  279. package/cjs/shared/locales/nb-NO.js +0 -3
  280. package/cjs/shared/locales/nb-NO.js.map +1 -1
  281. package/cjs/shared/useTranslation.d.ts +5 -4
  282. package/cjs/shared/useTranslation.js +14 -12
  283. package/cjs/shared/useTranslation.js.map +1 -1
  284. package/cjs/style/core/scopes.scss +1 -1
  285. package/cjs/style/dnb-ui-basis.css +1 -1
  286. package/cjs/style/dnb-ui-basis.min.css +1 -1
  287. package/cjs/style/dnb-ui-body.css +1 -1
  288. package/cjs/style/dnb-ui-body.min.css +1 -1
  289. package/cjs/style/dnb-ui-components.css +67 -44
  290. package/cjs/style/dnb-ui-components.min.css +2 -2
  291. package/cjs/style/dnb-ui-core.css +1 -1
  292. package/cjs/style/dnb-ui-core.min.css +1 -1
  293. package/cjs/style/dnb-ui-extensions.css +56 -44
  294. package/cjs/style/dnb-ui-extensions.min.css +1 -1
  295. package/cjs/style/dnb-ui-forms.css +56 -44
  296. package/cjs/style/dnb-ui-forms.min.css +1 -1
  297. package/cjs/style/dnb-ui-forms.scss +2 -1
  298. package/cjs/style/dnb-ui-fragments.css +4 -0
  299. package/cjs/style/dnb-ui-fragments.min.css +1 -1
  300. package/cjs/style/themes/theme-eiendom/eiendom-theme-basis.css +2 -2
  301. package/cjs/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  302. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +123 -88
  303. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +3 -3
  304. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.css +56 -44
  305. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  306. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.css +56 -44
  307. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  308. package/cjs/style/themes/theme-sbanken/globals.scss +3 -2
  309. package/cjs/style/themes/theme-sbanken/sbanken-theme-basis.css +2 -2
  310. package/cjs/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
  311. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +124 -89
  312. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +3 -3
  313. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.css +56 -44
  314. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  315. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.css +56 -44
  316. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  317. package/cjs/style/themes/theme-ui/globals.scss +3 -2
  318. package/cjs/style/themes/theme-ui/ui-theme-basis.css +2 -2
  319. package/cjs/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  320. package/cjs/style/themes/theme-ui/ui-theme-components.css +123 -88
  321. package/cjs/style/themes/theme-ui/ui-theme-components.min.css +3 -3
  322. package/cjs/style/themes/theme-ui/ui-theme-extensions.css +56 -44
  323. package/cjs/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  324. package/cjs/style/themes/theme-ui/ui-theme-forms.css +56 -44
  325. package/cjs/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  326. package/components/accordion/Accordion.d.ts +0 -2
  327. package/components/accordion/Accordion.js +2 -3
  328. package/components/accordion/Accordion.js.map +1 -1
  329. package/components/accordion/AccordionGroup.js +2 -3
  330. package/components/accordion/AccordionGroup.js.map +1 -1
  331. package/components/anchor/Anchor.d.ts +3 -0
  332. package/components/anchor/Anchor.js +21 -15
  333. package/components/anchor/Anchor.js.map +1 -1
  334. package/components/autocomplete/Autocomplete.js +2 -4
  335. package/components/autocomplete/Autocomplete.js.map +1 -1
  336. package/components/autocomplete/style/themes/dnb-autocomplete-theme-sbanken.css +1 -1
  337. package/components/autocomplete/style/themes/dnb-autocomplete-theme-sbanken.scss +1 -1
  338. package/components/button/Button.d.ts +0 -4
  339. package/components/button/Button.js +2 -5
  340. package/components/button/Button.js.map +1 -1
  341. package/components/date-picker/DatePicker.d.ts +0 -1
  342. package/components/date-picker/DatePicker.js +2 -5
  343. package/components/date-picker/DatePicker.js.map +1 -1
  344. package/components/dropdown/Dropdown.js +2 -5
  345. package/components/dropdown/Dropdown.js.map +1 -1
  346. package/components/form-row/FormRow.d.ts +0 -1
  347. package/components/form-row/FormRow.js +2 -5
  348. package/components/form-row/FormRow.js.map +1 -1
  349. package/components/form-set/FormSet.d.ts +0 -1
  350. package/components/form-set/FormSet.js +3 -4
  351. package/components/form-set/FormSet.js.map +1 -1
  352. package/components/form-status/FormStatus.d.ts +0 -1
  353. package/components/form-status/FormStatus.js +2 -5
  354. package/components/form-status/FormStatus.js.map +1 -1
  355. package/components/global-status/GlobalStatus.d.ts +0 -1
  356. package/components/global-status/GlobalStatus.js +2 -5
  357. package/components/global-status/GlobalStatus.js.map +1 -1
  358. package/components/global-status/GlobalStatusController.js.map +1 -1
  359. package/components/global-status/GlobalStatusProvider.js.map +1 -1
  360. package/components/help-button/HelpButton.js +3 -0
  361. package/components/help-button/HelpButton.js.map +1 -1
  362. package/components/help-button/HelpButtonInstance.js +3 -4
  363. package/components/help-button/HelpButtonInstance.js.map +1 -1
  364. package/components/help-button/style/dnb-help-button.css +4 -1
  365. package/components/help-button/style/dnb-help-button.min.css +1 -0
  366. package/components/help-button/style/dnb-help-button.scss +6 -0
  367. package/components/icon/Icon.js +2 -3
  368. package/components/icon/Icon.js.map +1 -1
  369. package/components/icon-primary/IconPrimary.js.map +1 -1
  370. package/components/input/Input.d.ts +0 -1
  371. package/components/input/Input.js +2 -5
  372. package/components/input/Input.js.map +1 -1
  373. package/components/input-masked/InputMasked.d.ts +0 -1
  374. package/components/input-masked/InputMasked.js.map +1 -1
  375. package/components/logo/Logo.d.ts +47 -43
  376. package/components/logo/Logo.js +75 -224
  377. package/components/logo/Logo.js.map +1 -1
  378. package/components/logo/LogoDocs.d.ts +2 -0
  379. package/components/logo/LogoDocs.js +43 -0
  380. package/components/logo/LogoDocs.js.map +1 -0
  381. package/components/logo/LogoSvg.d.ts +7 -0
  382. package/components/logo/LogoSvg.js +73 -0
  383. package/components/logo/LogoSvg.js.map +1 -0
  384. package/components/modal/Modal.d.ts +2 -1
  385. package/components/modal/Modal.js +26 -12
  386. package/components/modal/Modal.js.map +1 -1
  387. package/components/modal/types.d.ts +0 -4
  388. package/components/modal/types.js.map +1 -1
  389. package/components/number-format/NumberFormat.d.ts +4 -0
  390. package/components/number-format/NumberFormat.js +5 -5
  391. package/components/number-format/NumberFormat.js.map +1 -1
  392. package/components/number-format/style/dnb-number-format.css +3 -0
  393. package/components/number-format/style/dnb-number-format.min.css +1 -1
  394. package/components/number-format/style/dnb-number-format.scss +4 -0
  395. package/components/pagination/Pagination.d.ts +0 -3
  396. package/components/pagination/Pagination.js +2 -5
  397. package/components/pagination/Pagination.js.map +1 -1
  398. package/components/pagination/PaginationHelpers.js.map +1 -1
  399. package/components/pagination/PaginationInfinity.js.map +1 -1
  400. package/components/pagination/PaginationProvider.js.map +1 -1
  401. package/components/progress-indicator/ProgressIndicatorDocs.js +1 -1
  402. package/components/progress-indicator/ProgressIndicatorDocs.js.map +1 -1
  403. package/components/progress-indicator/types.d.ts +1 -1
  404. package/components/progress-indicator/types.js.map +1 -1
  405. package/components/radio/Radio.d.ts +0 -1
  406. package/components/radio/Radio.js +2 -5
  407. package/components/radio/Radio.js.map +1 -1
  408. package/components/radio/RadioGroup.d.ts +0 -1
  409. package/components/radio/RadioGroup.js +2 -5
  410. package/components/radio/RadioGroup.js.map +1 -1
  411. package/components/skeleton/Skeleton.d.ts +0 -1
  412. package/components/skeleton/Skeleton.js +2 -5
  413. package/components/skeleton/Skeleton.js.map +1 -1
  414. package/components/switch/Switch.d.ts +0 -1
  415. package/components/switch/Switch.js +2 -5
  416. package/components/switch/Switch.js.map +1 -1
  417. package/components/table/Table.d.ts +6 -0
  418. package/components/table/Table.js +13 -3
  419. package/components/table/Table.js.map +1 -1
  420. package/components/table/TableAccordion.d.ts +7 -11
  421. package/components/table/TableAccordion.js +29 -20
  422. package/components/table/TableAccordion.js.map +1 -1
  423. package/components/table/TableTr.js +25 -26
  424. package/components/table/TableTr.js.map +1 -1
  425. package/components/tabs/Tabs.d.ts +0 -1
  426. package/components/tabs/Tabs.js +1 -7
  427. package/components/tabs/Tabs.js.map +1 -1
  428. package/components/tabs/TabsCustomContent.d.ts +0 -1
  429. package/components/tabs/TabsCustomContent.js +5 -8
  430. package/components/tabs/TabsCustomContent.js.map +1 -1
  431. package/components/tabs/TabsDocs.js +1 -1
  432. package/components/tabs/TabsDocs.js.map +1 -1
  433. package/components/textarea/Textarea.d.ts +0 -1
  434. package/components/textarea/Textarea.js +2 -5
  435. package/components/textarea/Textarea.js.map +1 -1
  436. package/components/toggle-button/ToggleButton.d.ts +0 -1
  437. package/components/toggle-button/ToggleButton.js +2 -5
  438. package/components/toggle-button/ToggleButton.js.map +1 -1
  439. package/components/toggle-button/ToggleButtonGroup.d.ts +0 -1
  440. package/components/toggle-button/ToggleButtonGroup.js +2 -5
  441. package/components/toggle-button/ToggleButtonGroup.js.map +1 -1
  442. package/es/components/accordion/Accordion.d.ts +0 -2
  443. package/es/components/accordion/Accordion.js +2 -3
  444. package/es/components/accordion/Accordion.js.map +1 -1
  445. package/es/components/accordion/AccordionGroup.js +2 -3
  446. package/es/components/accordion/AccordionGroup.js.map +1 -1
  447. package/es/components/anchor/Anchor.d.ts +3 -0
  448. package/es/components/anchor/Anchor.js +21 -15
  449. package/es/components/anchor/Anchor.js.map +1 -1
  450. package/es/components/autocomplete/Autocomplete.js +2 -4
  451. package/es/components/autocomplete/Autocomplete.js.map +1 -1
  452. package/es/components/autocomplete/style/themes/dnb-autocomplete-theme-sbanken.css +1 -1
  453. package/es/components/autocomplete/style/themes/dnb-autocomplete-theme-sbanken.scss +1 -1
  454. package/es/components/button/Button.d.ts +0 -4
  455. package/es/components/button/Button.js +2 -5
  456. package/es/components/button/Button.js.map +1 -1
  457. package/es/components/date-picker/DatePicker.d.ts +0 -1
  458. package/es/components/date-picker/DatePicker.js +2 -5
  459. package/es/components/date-picker/DatePicker.js.map +1 -1
  460. package/es/components/dropdown/Dropdown.js +2 -5
  461. package/es/components/dropdown/Dropdown.js.map +1 -1
  462. package/es/components/form-row/FormRow.d.ts +0 -1
  463. package/es/components/form-row/FormRow.js +2 -5
  464. package/es/components/form-row/FormRow.js.map +1 -1
  465. package/es/components/form-set/FormSet.d.ts +0 -1
  466. package/es/components/form-set/FormSet.js +3 -4
  467. package/es/components/form-set/FormSet.js.map +1 -1
  468. package/es/components/form-status/FormStatus.d.ts +0 -1
  469. package/es/components/form-status/FormStatus.js +2 -5
  470. package/es/components/form-status/FormStatus.js.map +1 -1
  471. package/es/components/global-status/GlobalStatus.d.ts +0 -1
  472. package/es/components/global-status/GlobalStatus.js +2 -5
  473. package/es/components/global-status/GlobalStatus.js.map +1 -1
  474. package/es/components/global-status/GlobalStatusController.js.map +1 -1
  475. package/es/components/global-status/GlobalStatusProvider.js.map +1 -1
  476. package/es/components/help-button/HelpButton.js +3 -0
  477. package/es/components/help-button/HelpButton.js.map +1 -1
  478. package/es/components/help-button/HelpButtonInstance.js +3 -4
  479. package/es/components/help-button/HelpButtonInstance.js.map +1 -1
  480. package/es/components/help-button/style/dnb-help-button.css +4 -1
  481. package/es/components/help-button/style/dnb-help-button.min.css +1 -0
  482. package/es/components/help-button/style/dnb-help-button.scss +6 -0
  483. package/es/components/icon/Icon.js +2 -3
  484. package/es/components/icon/Icon.js.map +1 -1
  485. package/es/components/icon-primary/IconPrimary.js.map +1 -1
  486. package/es/components/input/Input.d.ts +0 -1
  487. package/es/components/input/Input.js +2 -5
  488. package/es/components/input/Input.js.map +1 -1
  489. package/es/components/input-masked/InputMasked.d.ts +0 -1
  490. package/es/components/input-masked/InputMasked.js.map +1 -1
  491. package/es/components/logo/Logo.d.ts +47 -43
  492. package/es/components/logo/Logo.js +75 -224
  493. package/es/components/logo/Logo.js.map +1 -1
  494. package/es/components/logo/LogoDocs.d.ts +2 -0
  495. package/es/components/logo/LogoDocs.js +43 -0
  496. package/es/components/logo/LogoDocs.js.map +1 -0
  497. package/es/components/logo/LogoSvg.d.ts +7 -0
  498. package/es/components/logo/LogoSvg.js +72 -0
  499. package/es/components/logo/LogoSvg.js.map +1 -0
  500. package/es/components/modal/Modal.d.ts +2 -1
  501. package/es/components/modal/Modal.js +26 -12
  502. package/es/components/modal/Modal.js.map +1 -1
  503. package/es/components/modal/types.d.ts +0 -4
  504. package/es/components/modal/types.js.map +1 -1
  505. package/es/components/number-format/NumberFormat.d.ts +4 -0
  506. package/es/components/number-format/NumberFormat.js +5 -5
  507. package/es/components/number-format/NumberFormat.js.map +1 -1
  508. package/es/components/number-format/style/dnb-number-format.css +3 -0
  509. package/es/components/number-format/style/dnb-number-format.min.css +1 -1
  510. package/es/components/number-format/style/dnb-number-format.scss +4 -0
  511. package/es/components/pagination/Pagination.d.ts +0 -3
  512. package/es/components/pagination/Pagination.js +2 -5
  513. package/es/components/pagination/Pagination.js.map +1 -1
  514. package/es/components/pagination/PaginationHelpers.js.map +1 -1
  515. package/es/components/pagination/PaginationInfinity.js.map +1 -1
  516. package/es/components/pagination/PaginationProvider.js.map +1 -1
  517. package/es/components/progress-indicator/ProgressIndicatorDocs.js +1 -1
  518. package/es/components/progress-indicator/ProgressIndicatorDocs.js.map +1 -1
  519. package/es/components/progress-indicator/types.d.ts +1 -1
  520. package/es/components/progress-indicator/types.js.map +1 -1
  521. package/es/components/radio/Radio.d.ts +0 -1
  522. package/es/components/radio/Radio.js +2 -5
  523. package/es/components/radio/Radio.js.map +1 -1
  524. package/es/components/radio/RadioGroup.d.ts +0 -1
  525. package/es/components/radio/RadioGroup.js +2 -5
  526. package/es/components/radio/RadioGroup.js.map +1 -1
  527. package/es/components/skeleton/Skeleton.d.ts +0 -1
  528. package/es/components/skeleton/Skeleton.js +2 -5
  529. package/es/components/skeleton/Skeleton.js.map +1 -1
  530. package/es/components/switch/Switch.d.ts +0 -1
  531. package/es/components/switch/Switch.js +2 -5
  532. package/es/components/switch/Switch.js.map +1 -1
  533. package/es/components/table/Table.d.ts +6 -0
  534. package/es/components/table/Table.js +13 -3
  535. package/es/components/table/Table.js.map +1 -1
  536. package/es/components/table/TableAccordion.d.ts +7 -11
  537. package/es/components/table/TableAccordion.js +29 -19
  538. package/es/components/table/TableAccordion.js.map +1 -1
  539. package/es/components/table/TableTr.js +25 -26
  540. package/es/components/table/TableTr.js.map +1 -1
  541. package/es/components/tabs/Tabs.d.ts +0 -1
  542. package/es/components/tabs/Tabs.js +1 -7
  543. package/es/components/tabs/Tabs.js.map +1 -1
  544. package/es/components/tabs/TabsCustomContent.d.ts +0 -1
  545. package/es/components/tabs/TabsCustomContent.js +5 -8
  546. package/es/components/tabs/TabsCustomContent.js.map +1 -1
  547. package/es/components/tabs/TabsDocs.js +1 -1
  548. package/es/components/tabs/TabsDocs.js.map +1 -1
  549. package/es/components/textarea/Textarea.d.ts +0 -1
  550. package/es/components/textarea/Textarea.js +2 -5
  551. package/es/components/textarea/Textarea.js.map +1 -1
  552. package/es/components/toggle-button/ToggleButton.d.ts +0 -1
  553. package/es/components/toggle-button/ToggleButton.js +2 -5
  554. package/es/components/toggle-button/ToggleButton.js.map +1 -1
  555. package/es/components/toggle-button/ToggleButtonGroup.d.ts +0 -1
  556. package/es/components/toggle-button/ToggleButtonGroup.js +2 -5
  557. package/es/components/toggle-button/ToggleButtonGroup.js.map +1 -1
  558. package/es/extensions/forms/DataContext/Context.d.ts +2 -0
  559. package/es/extensions/forms/DataContext/Context.js +1 -0
  560. package/es/extensions/forms/DataContext/Context.js.map +1 -1
  561. package/es/extensions/forms/DataContext/FieldBoundary/FieldBoundaryContext.d.ts +17 -1
  562. package/es/extensions/forms/DataContext/FieldBoundary/FieldBoundaryContext.js.map +1 -1
  563. package/es/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js +5 -3
  564. package/es/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js.map +1 -1
  565. package/es/extensions/forms/DataContext/Provider/Provider.js +46 -1
  566. package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  567. package/es/extensions/forms/Field/ArraySelection/ArraySelection.d.ts +2 -2
  568. package/es/extensions/forms/Field/ArraySelection/ArraySelection.js +8 -2
  569. package/es/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
  570. package/es/extensions/forms/Field/Boolean/Boolean.d.ts +2 -2
  571. package/es/extensions/forms/Field/Boolean/Boolean.js.map +1 -1
  572. package/es/extensions/forms/Field/Number/style/dnb-number.css +10 -0
  573. package/es/extensions/forms/Field/Number/style/dnb-number.min.css +1 -1
  574. package/es/extensions/forms/Field/Number/style/dnb-number.scss +11 -0
  575. package/es/extensions/forms/Field/Option/Option.d.ts +2 -2
  576. package/es/extensions/forms/Field/Option/Option.js.map +1 -1
  577. package/es/extensions/forms/Field/Password/Password.js +2 -1
  578. package/es/extensions/forms/Field/Password/Password.js.map +1 -1
  579. package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.js +6 -6
  580. package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  581. package/es/extensions/forms/Field/Selection/Selection.js +7 -2
  582. package/es/extensions/forms/Field/Selection/Selection.js.map +1 -1
  583. package/es/extensions/forms/Field/Toggle/Toggle.d.ts +2 -2
  584. package/es/extensions/forms/Field/Toggle/Toggle.js +14 -2
  585. package/es/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  586. package/es/extensions/forms/Form/Appearance/Appearance.d.ts +3 -0
  587. package/es/extensions/forms/Form/Appearance/Appearance.js +1 -0
  588. package/es/extensions/forms/Form/Appearance/Appearance.js.map +1 -1
  589. package/es/extensions/forms/Form/FieldProps/FieldProps.d.ts +5 -1
  590. package/es/extensions/forms/Form/FieldProps/FieldProps.js +19 -37
  591. package/es/extensions/forms/Form/FieldProps/FieldProps.js.map +1 -1
  592. package/es/extensions/forms/Form/Section/EditContainer/EditContainer.d.ts +12 -0
  593. package/es/extensions/forms/Form/Section/EditContainer/EditContainer.js +33 -0
  594. package/es/extensions/forms/Form/Section/EditContainer/EditContainer.js.map +1 -0
  595. package/es/extensions/forms/Form/Section/EditContainer/EditContainerDocs.d.ts +3 -0
  596. package/es/extensions/forms/Form/Section/EditContainer/EditContainerDocs.js +19 -0
  597. package/es/extensions/forms/Form/Section/EditContainer/EditContainerDocs.js.map +1 -0
  598. package/es/extensions/forms/Form/Section/EditContainer/EditToolbarTools.d.ts +1 -0
  599. package/es/extensions/forms/Form/Section/EditContainer/EditToolbarTools.js +59 -0
  600. package/es/extensions/forms/Form/Section/EditContainer/EditToolbarTools.js.map +1 -0
  601. package/es/extensions/forms/Form/Section/EditContainer/index.d.ts +2 -0
  602. package/es/extensions/forms/Form/Section/EditContainer/index.js +3 -0
  603. package/es/extensions/forms/Form/Section/EditContainer/index.js.map +1 -0
  604. package/es/extensions/forms/Form/Section/EditContainer/useContainerDataStore.d.ts +3 -0
  605. package/es/extensions/forms/Form/Section/EditContainer/useContainerDataStore.js +46 -0
  606. package/es/extensions/forms/Form/Section/EditContainer/useContainerDataStore.js.map +1 -0
  607. package/es/extensions/forms/Form/Section/EditContainer/useEditContainerToolbar.d.ts +1 -0
  608. package/es/extensions/forms/Form/Section/EditContainer/useEditContainerToolbar.js +19 -0
  609. package/es/extensions/forms/Form/Section/EditContainer/useEditContainerToolbar.js.map +1 -0
  610. package/es/extensions/forms/Form/Section/Section.d.ts +9 -1
  611. package/es/extensions/forms/Form/Section/Section.js +10 -2
  612. package/es/extensions/forms/Form/Section/Section.js.map +1 -1
  613. package/es/extensions/forms/Form/Section/SectionContext.d.ts +1 -2
  614. package/es/extensions/forms/Form/Section/SectionContext.js.map +1 -1
  615. package/es/extensions/forms/Form/Section/SectionDocs.js +6 -1
  616. package/es/extensions/forms/Form/Section/SectionDocs.js.map +1 -1
  617. package/es/extensions/forms/Form/Section/ViewContainer/ViewContainer.d.ts +12 -0
  618. package/es/extensions/forms/Form/Section/ViewContainer/ViewContainer.js +32 -0
  619. package/es/extensions/forms/Form/Section/ViewContainer/ViewContainer.js.map +1 -0
  620. package/es/extensions/forms/Form/Section/ViewContainer/ViewContainerDocs.d.ts +3 -0
  621. package/es/extensions/forms/Form/Section/ViewContainer/ViewContainerDocs.js +19 -0
  622. package/es/extensions/forms/Form/Section/ViewContainer/ViewContainerDocs.js.map +1 -0
  623. package/es/extensions/forms/Form/Section/ViewContainer/ViewToolbarTools.d.ts +1 -0
  624. package/es/extensions/forms/Form/Section/ViewContainer/ViewToolbarTools.js +26 -0
  625. package/es/extensions/forms/Form/Section/ViewContainer/ViewToolbarTools.js.map +1 -0
  626. package/es/extensions/forms/Form/Section/ViewContainer/index.d.ts +2 -0
  627. package/es/extensions/forms/Form/Section/ViewContainer/index.js +3 -0
  628. package/es/extensions/forms/Form/Section/ViewContainer/index.js.map +1 -0
  629. package/es/extensions/forms/Form/Section/containers/SectionContainer.d.ts +19 -0
  630. package/es/extensions/forms/Form/Section/containers/SectionContainer.js +83 -0
  631. package/es/extensions/forms/Form/Section/containers/SectionContainer.js.map +1 -0
  632. package/es/extensions/forms/Form/Section/containers/SectionContainerContext.d.ts +8 -0
  633. package/es/extensions/forms/Form/Section/containers/SectionContainerContext.js +4 -0
  634. package/es/extensions/forms/Form/Section/containers/SectionContainerContext.js.map +1 -0
  635. package/es/extensions/forms/Form/Section/containers/SectionContainerProvider.d.ts +8 -0
  636. package/es/extensions/forms/Form/Section/containers/SectionContainerProvider.js +24 -0
  637. package/es/extensions/forms/Form/Section/containers/SectionContainerProvider.js.map +1 -0
  638. package/es/extensions/forms/Form/Section/containers/Toolbar.d.ts +7 -0
  639. package/es/extensions/forms/Form/Section/containers/Toolbar.js +27 -0
  640. package/es/extensions/forms/Form/Section/containers/Toolbar.js.map +1 -0
  641. package/es/extensions/forms/Form/Section/style/dnb-form-section.css +45 -0
  642. package/es/extensions/forms/Form/Section/style/dnb-form-section.min.css +1 -0
  643. package/es/extensions/forms/{Iterate/style/dnb-form-iterate.scss → Form/Section/style/dnb-form-section.scss} +4 -12
  644. package/es/extensions/forms/Iterate/AnimatedContainer/ElementBlock.js +8 -8
  645. package/es/extensions/forms/Iterate/AnimatedContainer/ElementBlock.js.map +1 -1
  646. package/es/extensions/forms/Iterate/Array/Array.js +1 -1
  647. package/es/extensions/forms/Iterate/Array/Array.js.map +1 -1
  648. package/es/extensions/forms/Iterate/EditContainer/EditContainer.js +1 -1
  649. package/es/extensions/forms/Iterate/EditContainer/EditContainer.js.map +1 -1
  650. package/es/extensions/forms/Iterate/EditContainer/EditToolbarTools.js +19 -10
  651. package/es/extensions/forms/Iterate/EditContainer/EditToolbarTools.js.map +1 -1
  652. package/es/extensions/forms/Iterate/RemoveButton/RemoveButton.js +1 -1
  653. package/es/extensions/forms/Iterate/RemoveButton/RemoveButton.js.map +1 -1
  654. package/es/extensions/forms/Iterate/ViewContainer/ViewContainer.js +1 -1
  655. package/es/extensions/forms/Iterate/ViewContainer/ViewContainer.js.map +1 -1
  656. package/es/extensions/forms/Iterate/ViewContainer/ViewToolbarTools.js +1 -1
  657. package/es/extensions/forms/Iterate/ViewContainer/ViewToolbarTools.js.map +1 -1
  658. package/es/extensions/forms/Iterate/style/dnb-iterate.css +6 -0
  659. package/es/extensions/forms/Iterate/style/dnb-iterate.min.css +1 -0
  660. package/es/extensions/forms/Iterate/style/dnb-iterate.scss +12 -0
  661. package/es/extensions/forms/Wizard/Container/WizardContainer.js +1 -1
  662. package/es/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  663. package/es/extensions/forms/Wizard/Step/Step.js +1 -1
  664. package/es/extensions/forms/Wizard/Step/Step.js.map +1 -1
  665. package/es/extensions/forms/constants/locales/en-GB.d.ts +2 -1
  666. package/es/extensions/forms/constants/locales/en-GB.js +3 -2
  667. package/es/extensions/forms/constants/locales/en-GB.js.map +1 -1
  668. package/es/extensions/forms/constants/locales/en-US.d.ts +2 -1
  669. package/es/extensions/forms/constants/locales/index.d.ts +4 -2
  670. package/es/extensions/forms/constants/locales/nb-NO.d.ts +2 -1
  671. package/es/extensions/forms/constants/locales/nb-NO.js +3 -2
  672. package/es/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  673. package/es/extensions/forms/hooks/useDataValue.d.ts +4 -0
  674. package/es/extensions/forms/hooks/useDataValue.js +30 -5
  675. package/es/extensions/forms/hooks/useDataValue.js.map +1 -1
  676. package/es/extensions/forms/hooks/useFieldProps.js +14 -9
  677. package/es/extensions/forms/hooks/useFieldProps.js.map +1 -1
  678. package/es/extensions/forms/hooks/useTranslation.js +7 -12
  679. package/es/extensions/forms/hooks/useTranslation.js.map +1 -1
  680. package/es/extensions/forms/style/dnb-forms.css +56 -44
  681. package/es/extensions/forms/style/dnb-forms.min.css +1 -1
  682. package/es/extensions/payment-card/PaymentCard.js +0 -2
  683. package/es/extensions/payment-card/PaymentCard.js.map +1 -1
  684. package/es/fragments/drawer-list/DrawerList.d.ts +0 -1
  685. package/es/fragments/drawer-list/DrawerList.js +6 -13
  686. package/es/fragments/drawer-list/DrawerList.js.map +1 -1
  687. package/es/fragments/drawer-list/DrawerListHelpers.d.ts +43 -46
  688. package/es/fragments/drawer-list/DrawerListHelpers.js +0 -2
  689. package/es/fragments/drawer-list/DrawerListHelpers.js.map +1 -1
  690. package/es/fragments/drawer-list/DrawerListPortal.js.map +1 -1
  691. package/es/fragments/drawer-list/DrawerListProvider.js.map +1 -1
  692. package/es/fragments/drawer-list/style/dnb-drawer-list.scss +4 -0
  693. package/es/fragments/text-counter/TextCounter.js +3 -2
  694. package/es/fragments/text-counter/TextCounter.js.map +1 -1
  695. package/es/shared/Context.d.ts +9 -5
  696. package/es/shared/Context.js +39 -35
  697. package/es/shared/Context.js.map +1 -1
  698. package/es/shared/Eufemia.d.ts +1 -1
  699. package/es/shared/Eufemia.js +2 -2
  700. package/es/shared/Eufemia.js.map +1 -1
  701. package/es/shared/Provider.d.ts +1 -1
  702. package/es/shared/Provider.js +49 -41
  703. package/es/shared/Provider.js.map +1 -1
  704. package/es/shared/Translation.d.ts +5 -5
  705. package/es/shared/Translation.js +8 -10
  706. package/es/shared/Translation.js.map +1 -1
  707. package/es/shared/index.d.ts +1 -0
  708. package/es/shared/index.js +1 -0
  709. package/es/shared/index.js.map +1 -1
  710. package/es/shared/locales/en-GB.d.ts +0 -3
  711. package/es/shared/locales/en-GB.js +0 -3
  712. package/es/shared/locales/en-GB.js.map +1 -1
  713. package/es/shared/locales/en-US.d.ts +0 -3
  714. package/es/shared/locales/index.d.ts +0 -6
  715. package/es/shared/locales/nb-NO.d.ts +0 -3
  716. package/es/shared/locales/nb-NO.js +0 -3
  717. package/es/shared/locales/nb-NO.js.map +1 -1
  718. package/es/shared/useTranslation.d.ts +5 -4
  719. package/es/shared/useTranslation.js +13 -11
  720. package/es/shared/useTranslation.js.map +1 -1
  721. package/es/style/core/scopes.scss +1 -1
  722. package/es/style/dnb-ui-basis.css +1 -1
  723. package/es/style/dnb-ui-basis.min.css +1 -1
  724. package/es/style/dnb-ui-body.css +1 -1
  725. package/es/style/dnb-ui-body.min.css +1 -1
  726. package/es/style/dnb-ui-components.css +67 -44
  727. package/es/style/dnb-ui-components.min.css +2 -2
  728. package/es/style/dnb-ui-core.css +1 -1
  729. package/es/style/dnb-ui-core.min.css +1 -1
  730. package/es/style/dnb-ui-extensions.css +56 -44
  731. package/es/style/dnb-ui-extensions.min.css +1 -1
  732. package/es/style/dnb-ui-forms.css +56 -44
  733. package/es/style/dnb-ui-forms.min.css +1 -1
  734. package/es/style/dnb-ui-forms.scss +2 -1
  735. package/es/style/dnb-ui-fragments.css +4 -0
  736. package/es/style/dnb-ui-fragments.min.css +1 -1
  737. package/es/style/themes/theme-eiendom/eiendom-theme-basis.css +2 -2
  738. package/es/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  739. package/es/style/themes/theme-eiendom/eiendom-theme-components.css +123 -88
  740. package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +3 -3
  741. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.css +56 -44
  742. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  743. package/es/style/themes/theme-eiendom/eiendom-theme-forms.css +56 -44
  744. package/es/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  745. package/es/style/themes/theme-sbanken/globals.scss +3 -2
  746. package/es/style/themes/theme-sbanken/sbanken-theme-basis.css +2 -2
  747. package/es/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
  748. package/es/style/themes/theme-sbanken/sbanken-theme-components.css +124 -89
  749. package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +3 -3
  750. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.css +56 -44
  751. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  752. package/es/style/themes/theme-sbanken/sbanken-theme-forms.css +56 -44
  753. package/es/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  754. package/es/style/themes/theme-ui/globals.scss +3 -2
  755. package/es/style/themes/theme-ui/ui-theme-basis.css +2 -2
  756. package/es/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  757. package/es/style/themes/theme-ui/ui-theme-components.css +123 -88
  758. package/es/style/themes/theme-ui/ui-theme-components.min.css +3 -3
  759. package/es/style/themes/theme-ui/ui-theme-extensions.css +56 -44
  760. package/es/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  761. package/es/style/themes/theme-ui/ui-theme-forms.css +56 -44
  762. package/es/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  763. package/esm/dnb-ui-basis.min.mjs +1 -1
  764. package/esm/dnb-ui-components.min.mjs +1 -1
  765. package/esm/dnb-ui-elements.min.mjs +1 -1
  766. package/esm/dnb-ui-extensions.min.mjs +5 -5
  767. package/esm/dnb-ui-lib.min.mjs +1 -1
  768. package/extensions/forms/DataContext/Context.d.ts +2 -0
  769. package/extensions/forms/DataContext/Context.js +1 -0
  770. package/extensions/forms/DataContext/Context.js.map +1 -1
  771. package/extensions/forms/DataContext/FieldBoundary/FieldBoundaryContext.d.ts +17 -1
  772. package/extensions/forms/DataContext/FieldBoundary/FieldBoundaryContext.js.map +1 -1
  773. package/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js +5 -3
  774. package/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js.map +1 -1
  775. package/extensions/forms/DataContext/Provider/Provider.js +50 -4
  776. package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  777. package/extensions/forms/Field/ArraySelection/ArraySelection.d.ts +2 -2
  778. package/extensions/forms/Field/ArraySelection/ArraySelection.js +8 -2
  779. package/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
  780. package/extensions/forms/Field/Boolean/Boolean.d.ts +2 -2
  781. package/extensions/forms/Field/Boolean/Boolean.js.map +1 -1
  782. package/extensions/forms/Field/Number/style/dnb-number.css +10 -0
  783. package/extensions/forms/Field/Number/style/dnb-number.min.css +1 -1
  784. package/extensions/forms/Field/Number/style/dnb-number.scss +11 -0
  785. package/extensions/forms/Field/Option/Option.d.ts +2 -2
  786. package/extensions/forms/Field/Option/Option.js.map +1 -1
  787. package/extensions/forms/Field/Password/Password.js +2 -1
  788. package/extensions/forms/Field/Password/Password.js.map +1 -1
  789. package/extensions/forms/Field/PhoneNumber/PhoneNumber.js +6 -6
  790. package/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  791. package/extensions/forms/Field/Selection/Selection.js +7 -2
  792. package/extensions/forms/Field/Selection/Selection.js.map +1 -1
  793. package/extensions/forms/Field/Toggle/Toggle.d.ts +2 -2
  794. package/extensions/forms/Field/Toggle/Toggle.js +14 -2
  795. package/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  796. package/extensions/forms/Form/Appearance/Appearance.d.ts +3 -0
  797. package/extensions/forms/Form/Appearance/Appearance.js +1 -0
  798. package/extensions/forms/Form/Appearance/Appearance.js.map +1 -1
  799. package/extensions/forms/Form/FieldProps/FieldProps.d.ts +5 -1
  800. package/extensions/forms/Form/FieldProps/FieldProps.js +19 -37
  801. package/extensions/forms/Form/FieldProps/FieldProps.js.map +1 -1
  802. package/extensions/forms/Form/Section/EditContainer/EditContainer.d.ts +12 -0
  803. package/extensions/forms/Form/Section/EditContainer/EditContainer.js +33 -0
  804. package/extensions/forms/Form/Section/EditContainer/EditContainer.js.map +1 -0
  805. package/extensions/forms/Form/Section/EditContainer/EditContainerDocs.d.ts +3 -0
  806. package/extensions/forms/Form/Section/EditContainer/EditContainerDocs.js +19 -0
  807. package/extensions/forms/Form/Section/EditContainer/EditContainerDocs.js.map +1 -0
  808. package/extensions/forms/Form/Section/EditContainer/EditToolbarTools.d.ts +1 -0
  809. package/extensions/forms/Form/Section/EditContainer/EditToolbarTools.js +59 -0
  810. package/extensions/forms/Form/Section/EditContainer/EditToolbarTools.js.map +1 -0
  811. package/extensions/forms/Form/Section/EditContainer/index.d.ts +2 -0
  812. package/extensions/forms/Form/Section/EditContainer/index.js +3 -0
  813. package/extensions/forms/Form/Section/EditContainer/index.js.map +1 -0
  814. package/extensions/forms/Form/Section/EditContainer/useContainerDataStore.d.ts +3 -0
  815. package/extensions/forms/Form/Section/EditContainer/useContainerDataStore.js +46 -0
  816. package/extensions/forms/Form/Section/EditContainer/useContainerDataStore.js.map +1 -0
  817. package/extensions/forms/Form/Section/EditContainer/useEditContainerToolbar.d.ts +1 -0
  818. package/extensions/forms/Form/Section/EditContainer/useEditContainerToolbar.js +19 -0
  819. package/extensions/forms/Form/Section/EditContainer/useEditContainerToolbar.js.map +1 -0
  820. package/extensions/forms/Form/Section/Section.d.ts +9 -1
  821. package/extensions/forms/Form/Section/Section.js +10 -2
  822. package/extensions/forms/Form/Section/Section.js.map +1 -1
  823. package/extensions/forms/Form/Section/SectionContext.d.ts +1 -2
  824. package/extensions/forms/Form/Section/SectionContext.js.map +1 -1
  825. package/extensions/forms/Form/Section/SectionDocs.js +6 -1
  826. package/extensions/forms/Form/Section/SectionDocs.js.map +1 -1
  827. package/extensions/forms/Form/Section/ViewContainer/ViewContainer.d.ts +12 -0
  828. package/extensions/forms/Form/Section/ViewContainer/ViewContainer.js +32 -0
  829. package/extensions/forms/Form/Section/ViewContainer/ViewContainer.js.map +1 -0
  830. package/extensions/forms/Form/Section/ViewContainer/ViewContainerDocs.d.ts +3 -0
  831. package/extensions/forms/Form/Section/ViewContainer/ViewContainerDocs.js +19 -0
  832. package/extensions/forms/Form/Section/ViewContainer/ViewContainerDocs.js.map +1 -0
  833. package/extensions/forms/Form/Section/ViewContainer/ViewToolbarTools.d.ts +1 -0
  834. package/extensions/forms/Form/Section/ViewContainer/ViewToolbarTools.js +26 -0
  835. package/extensions/forms/Form/Section/ViewContainer/ViewToolbarTools.js.map +1 -0
  836. package/extensions/forms/Form/Section/ViewContainer/index.d.ts +2 -0
  837. package/extensions/forms/Form/Section/ViewContainer/index.js +3 -0
  838. package/extensions/forms/Form/Section/ViewContainer/index.js.map +1 -0
  839. package/extensions/forms/Form/Section/containers/SectionContainer.d.ts +19 -0
  840. package/extensions/forms/Form/Section/containers/SectionContainer.js +83 -0
  841. package/extensions/forms/Form/Section/containers/SectionContainer.js.map +1 -0
  842. package/extensions/forms/Form/Section/containers/SectionContainerContext.d.ts +8 -0
  843. package/extensions/forms/Form/Section/containers/SectionContainerContext.js +4 -0
  844. package/extensions/forms/Form/Section/containers/SectionContainerContext.js.map +1 -0
  845. package/extensions/forms/Form/Section/containers/SectionContainerProvider.d.ts +8 -0
  846. package/extensions/forms/Form/Section/containers/SectionContainerProvider.js +24 -0
  847. package/extensions/forms/Form/Section/containers/SectionContainerProvider.js.map +1 -0
  848. package/extensions/forms/Form/Section/containers/Toolbar.d.ts +7 -0
  849. package/extensions/forms/Form/Section/containers/Toolbar.js +27 -0
  850. package/extensions/forms/Form/Section/containers/Toolbar.js.map +1 -0
  851. package/extensions/forms/Form/Section/style/dnb-form-section.css +45 -0
  852. package/extensions/forms/Form/Section/style/dnb-form-section.min.css +1 -0
  853. package/{cjs/extensions/forms/Iterate/style/dnb-form-iterate.scss → extensions/forms/Form/Section/style/dnb-form-section.scss} +4 -12
  854. package/extensions/forms/Iterate/AnimatedContainer/ElementBlock.js +8 -8
  855. package/extensions/forms/Iterate/AnimatedContainer/ElementBlock.js.map +1 -1
  856. package/extensions/forms/Iterate/Array/Array.js +1 -1
  857. package/extensions/forms/Iterate/Array/Array.js.map +1 -1
  858. package/extensions/forms/Iterate/EditContainer/EditContainer.js +1 -1
  859. package/extensions/forms/Iterate/EditContainer/EditContainer.js.map +1 -1
  860. package/extensions/forms/Iterate/EditContainer/EditToolbarTools.js +19 -10
  861. package/extensions/forms/Iterate/EditContainer/EditToolbarTools.js.map +1 -1
  862. package/extensions/forms/Iterate/RemoveButton/RemoveButton.js +1 -1
  863. package/extensions/forms/Iterate/RemoveButton/RemoveButton.js.map +1 -1
  864. package/extensions/forms/Iterate/ViewContainer/ViewContainer.js +1 -1
  865. package/extensions/forms/Iterate/ViewContainer/ViewContainer.js.map +1 -1
  866. package/extensions/forms/Iterate/ViewContainer/ViewToolbarTools.js +1 -1
  867. package/extensions/forms/Iterate/ViewContainer/ViewToolbarTools.js.map +1 -1
  868. package/extensions/forms/Iterate/style/dnb-iterate.css +6 -0
  869. package/extensions/forms/Iterate/style/dnb-iterate.min.css +1 -0
  870. package/extensions/forms/Iterate/style/dnb-iterate.scss +12 -0
  871. package/extensions/forms/Wizard/Container/WizardContainer.js +1 -1
  872. package/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  873. package/extensions/forms/Wizard/Step/Step.js +1 -1
  874. package/extensions/forms/Wizard/Step/Step.js.map +1 -1
  875. package/extensions/forms/constants/locales/en-GB.d.ts +2 -1
  876. package/extensions/forms/constants/locales/en-GB.js +3 -2
  877. package/extensions/forms/constants/locales/en-GB.js.map +1 -1
  878. package/extensions/forms/constants/locales/en-US.d.ts +2 -1
  879. package/extensions/forms/constants/locales/index.d.ts +4 -2
  880. package/extensions/forms/constants/locales/nb-NO.d.ts +2 -1
  881. package/extensions/forms/constants/locales/nb-NO.js +3 -2
  882. package/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  883. package/extensions/forms/hooks/useDataValue.d.ts +4 -0
  884. package/extensions/forms/hooks/useDataValue.js +30 -5
  885. package/extensions/forms/hooks/useDataValue.js.map +1 -1
  886. package/extensions/forms/hooks/useFieldProps.js +14 -9
  887. package/extensions/forms/hooks/useFieldProps.js.map +1 -1
  888. package/extensions/forms/hooks/useTranslation.js +7 -12
  889. package/extensions/forms/hooks/useTranslation.js.map +1 -1
  890. package/extensions/forms/style/dnb-forms.css +56 -44
  891. package/extensions/forms/style/dnb-forms.min.css +1 -1
  892. package/extensions/payment-card/PaymentCard.js +0 -2
  893. package/extensions/payment-card/PaymentCard.js.map +1 -1
  894. package/fragments/drawer-list/DrawerList.d.ts +0 -1
  895. package/fragments/drawer-list/DrawerList.js +6 -13
  896. package/fragments/drawer-list/DrawerList.js.map +1 -1
  897. package/fragments/drawer-list/DrawerListHelpers.d.ts +43 -46
  898. package/fragments/drawer-list/DrawerListHelpers.js +0 -2
  899. package/fragments/drawer-list/DrawerListHelpers.js.map +1 -1
  900. package/fragments/drawer-list/DrawerListPortal.js.map +1 -1
  901. package/fragments/drawer-list/DrawerListProvider.js.map +1 -1
  902. package/fragments/drawer-list/style/dnb-drawer-list.scss +4 -0
  903. package/fragments/text-counter/TextCounter.js +3 -2
  904. package/fragments/text-counter/TextCounter.js.map +1 -1
  905. package/package.json +1 -1
  906. package/shared/Context.d.ts +9 -5
  907. package/shared/Context.js +40 -35
  908. package/shared/Context.js.map +1 -1
  909. package/shared/Eufemia.d.ts +1 -1
  910. package/shared/Eufemia.js +2 -2
  911. package/shared/Eufemia.js.map +1 -1
  912. package/shared/Provider.d.ts +1 -1
  913. package/shared/Provider.js +49 -41
  914. package/shared/Provider.js.map +1 -1
  915. package/shared/Translation.d.ts +5 -5
  916. package/shared/Translation.js +8 -10
  917. package/shared/Translation.js.map +1 -1
  918. package/shared/index.d.ts +1 -0
  919. package/shared/index.js +1 -0
  920. package/shared/index.js.map +1 -1
  921. package/shared/locales/en-GB.d.ts +0 -3
  922. package/shared/locales/en-GB.js +0 -3
  923. package/shared/locales/en-GB.js.map +1 -1
  924. package/shared/locales/en-US.d.ts +0 -3
  925. package/shared/locales/index.d.ts +0 -6
  926. package/shared/locales/nb-NO.d.ts +0 -3
  927. package/shared/locales/nb-NO.js +0 -3
  928. package/shared/locales/nb-NO.js.map +1 -1
  929. package/shared/useTranslation.d.ts +5 -4
  930. package/shared/useTranslation.js +13 -11
  931. package/shared/useTranslation.js.map +1 -1
  932. package/style/core/scopes.scss +1 -1
  933. package/style/dnb-ui-basis.css +1 -1
  934. package/style/dnb-ui-basis.min.css +1 -1
  935. package/style/dnb-ui-body.css +1 -1
  936. package/style/dnb-ui-body.min.css +1 -1
  937. package/style/dnb-ui-components.css +67 -44
  938. package/style/dnb-ui-components.min.css +2 -2
  939. package/style/dnb-ui-core.css +1 -1
  940. package/style/dnb-ui-core.min.css +1 -1
  941. package/style/dnb-ui-extensions.css +56 -44
  942. package/style/dnb-ui-extensions.min.css +1 -1
  943. package/style/dnb-ui-forms.css +56 -44
  944. package/style/dnb-ui-forms.min.css +1 -1
  945. package/style/dnb-ui-forms.scss +2 -1
  946. package/style/dnb-ui-fragments.css +4 -0
  947. package/style/dnb-ui-fragments.min.css +1 -1
  948. package/style/themes/theme-eiendom/eiendom-theme-basis.css +2 -2
  949. package/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  950. package/style/themes/theme-eiendom/eiendom-theme-components.css +123 -88
  951. package/style/themes/theme-eiendom/eiendom-theme-components.min.css +3 -3
  952. package/style/themes/theme-eiendom/eiendom-theme-extensions.css +56 -44
  953. package/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  954. package/style/themes/theme-eiendom/eiendom-theme-forms.css +56 -44
  955. package/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  956. package/style/themes/theme-sbanken/globals.scss +3 -2
  957. package/style/themes/theme-sbanken/sbanken-theme-basis.css +2 -2
  958. package/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
  959. package/style/themes/theme-sbanken/sbanken-theme-components.css +124 -89
  960. package/style/themes/theme-sbanken/sbanken-theme-components.min.css +3 -3
  961. package/style/themes/theme-sbanken/sbanken-theme-extensions.css +56 -44
  962. package/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  963. package/style/themes/theme-sbanken/sbanken-theme-forms.css +56 -44
  964. package/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  965. package/style/themes/theme-ui/globals.scss +3 -2
  966. package/style/themes/theme-ui/ui-theme-basis.css +2 -2
  967. package/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  968. package/style/themes/theme-ui/ui-theme-components.css +123 -88
  969. package/style/themes/theme-ui/ui-theme-components.min.css +3 -3
  970. package/style/themes/theme-ui/ui-theme-extensions.css +56 -44
  971. package/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  972. package/style/themes/theme-ui/ui-theme-forms.css +56 -44
  973. package/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  974. package/umd/dnb-ui-basis.min.js +1 -1
  975. package/umd/dnb-ui-components.min.js +1 -1
  976. package/umd/dnb-ui-elements.min.js +1 -1
  977. package/umd/dnb-ui-extensions.min.js +5 -5
  978. package/umd/dnb-ui-lib.min.js +1 -1
  979. package/cjs/extensions/forms/Iterate/style/dnb-form-iterate.css +0 -50
  980. package/cjs/extensions/forms/Iterate/style/dnb-form-iterate.min.css +0 -1
  981. package/es/extensions/forms/Iterate/style/dnb-form-iterate.css +0 -50
  982. package/es/extensions/forms/Iterate/style/dnb-form-iterate.min.css +0 -1
  983. package/extensions/forms/Iterate/style/dnb-form-iterate.css +0 -50
  984. package/extensions/forms/Iterate/style/dnb-form-iterate.min.css +0 -1
@@ -63,11 +63,13 @@ export interface ContextState {
63
63
  skipErrorCheck?: boolean;
64
64
  }) => void;
65
65
  setFieldEventListener: (path: EventListenerCall['path'], type: EventListenerCall['type'], callback: EventListenerCall['callback']) => void;
66
+ setHasVisibleError?: (path: Path, hasError: boolean) => void;
66
67
  setFieldProps?: (path: Path, props: any) => void;
67
68
  setValueProps?: (path: Path, props: any) => void;
68
69
  fieldPropsRef?: React.MutableRefObject<Record<string, FieldProps>>;
69
70
  valuePropsRef?: React.MutableRefObject<Record<string, ValueProps>>;
70
71
  showAllErrors: boolean;
72
+ hasVisibleError: boolean;
71
73
  formState: SubmitState;
72
74
  ajvInstance: Ajv;
73
75
  contextErrorMessages: CustomErrorMessagesWithPaths;
@@ -13,6 +13,7 @@ export const defaultContextState = {
13
13
  handleSubmit: () => null,
14
14
  scrollToTop: () => null,
15
15
  showAllErrors: false,
16
+ hasVisibleError: false,
16
17
  formState: undefined,
17
18
  setFormState: () => null,
18
19
  setSubmitState: () => null,
@@ -1 +1 @@
1
- {"version":3,"file":"Context.js","names":["React","makeAjvInstance","defaultContextState","hasContext","data","undefined","schema","submitState","handlePathChange","handlePathChangeUnvalidated","updateDataValue","setData","validateData","handleSubmit","scrollToTop","showAllErrors","formState","setFormState","setSubmitState","setFieldEventListener","handleSubmitCall","setShowAllErrors","handleMountField","handleUnMountField","hasErrors","hasFieldState","hasFieldError","setFieldState","setFieldError","ajvInstance","contextErrorMessages","isInsideFormElement","props","Context","createContext"],"sources":["../../../../../src/extensions/forms/DataContext/Context.ts"],"sourcesContent":["import React from 'react'\nimport { Ajv, makeAjvInstance } from '../utils/ajv'\nimport {\n AllJSONSchemaVersions,\n CustomErrorMessagesWithPaths,\n SubmitState,\n Path,\n EventStateObject,\n EventReturnWithStateObject,\n Identifier,\n FieldProps,\n FormError,\n ValueProps,\n} from '../types'\nimport { Props as ProviderProps } from './Provider'\n\ntype HandleSubmitProps = {\n formElement?: HTMLFormElement\n}\n\nexport type EventListenerCall = {\n path: Path\n type: 'onSubmit'\n callback: () => any\n}\n\nexport type FilterDataHandler<Data> = (\n data: Data,\n filter: FilterData\n) => Partial<Data>\nexport type FilterDataHandlerCallback<R> = (\n parameters: FilterDataHandlerParameters\n) => R\nexport type FilterDataHandlerParameters =\n FilterDataPathConditionParameters & {\n path: Path\n }\nexport type FilterDataPathCondition<Data = unknown> = (\n parameters: FilterDataPathConditionParameters<Data>\n) => boolean | undefined\nexport type FilterDataPathConditionParameters<Data = unknown> = {\n value: unknown\n props: FieldProps\n data: Data\n internal: {\n error: Error | undefined\n }\n}\nexport type FilterDataPathObject<Data> = Record<\n Path,\n FilterDataPathCondition<Data> | boolean | undefined\n>\nexport type FilterData<Data = unknown> =\n | FilterDataPathObject<Data>\n | FilterDataHandlerCallback<boolean | undefined>\nexport type TransformData = FilterDataHandlerCallback<unknown>\n\nexport interface ContextState {\n id?: Identifier\n hasContext: boolean\n /** The dataset for the form / form wizard */\n data: any\n /** Should the form validate data before submitting? */\n errors?: Record<string, Error>\n /** Will set autoComplete=\"on\" on each nested Field.String and Field.Number */\n autoComplete?: boolean\n handlePathChange: (\n path: Path,\n value?: any\n ) =>\n | EventReturnWithStateObject\n | unknown\n | Promise<EventReturnWithStateObject | unknown>\n handlePathChangeUnvalidated: (path: Path, value: any) => void\n updateDataValue: (path: Path, value: any) => void\n setData: (data: any) => void\n mutateDataHandler?: (data: any, mutate: TransformData) => any\n filterDataHandler?: (data: any, filter: FilterData) => any\n validateData: () => void\n handleSubmit: (props?: HandleSubmitProps) => any\n scrollToTop: () => void\n setShowAllErrors: (showAllErrors: boolean) => void\n hasErrors: () => boolean\n hasFieldState: (state: SubmitState) => boolean\n hasFieldError: (path: Path) => boolean\n setFieldState: (path: Path, fieldState: SubmitState) => void\n setFieldError: (path: Path, error: Error | FormError) => void\n handleMountField: (path: Path) => void\n handleUnMountField: (path: Path) => void\n setFormState?: (state: SubmitState) => void\n setSubmitState?: (state: EventStateObject) => void\n addOnChangeHandler?: (callback: (data: unknown) => void) => void\n handleSubmitCall: ({\n onSubmit,\n enableAsyncBehaviour,\n skipFieldValidation,\n skipErrorCheck,\n }: {\n onSubmit: () =>\n | EventReturnWithStateObject\n | void\n | Promise<EventReturnWithStateObject | void>\n enableAsyncBehaviour: boolean\n skipFieldValidation?: boolean\n skipErrorCheck?: boolean\n }) => void\n setFieldEventListener: (\n path: EventListenerCall['path'],\n type: EventListenerCall['type'],\n callback: EventListenerCall['callback']\n ) => void\n setFieldProps?: (path: Path, props: any) => void\n setValueProps?: (path: Path, props: any) => void\n fieldPropsRef?: React.MutableRefObject<Record<string, FieldProps>>\n valuePropsRef?: React.MutableRefObject<Record<string, ValueProps>>\n showAllErrors: boolean\n formState: SubmitState\n ajvInstance: Ajv\n contextErrorMessages: CustomErrorMessagesWithPaths\n schema: AllJSONSchemaVersions\n disabled?: boolean\n required?: boolean\n submitState: Partial<EventStateObject>\n isInsideFormElement?: boolean\n prerenderFieldProps?: boolean\n props: ProviderProps<unknown>\n}\n\nexport const defaultContextState: ContextState = {\n hasContext: false,\n data: undefined,\n schema: undefined,\n submitState: undefined,\n handlePathChange: () => null,\n handlePathChangeUnvalidated: () => null,\n updateDataValue: () => null,\n setData: () => null,\n validateData: () => null,\n handleSubmit: () => null,\n scrollToTop: () => null,\n showAllErrors: false,\n formState: undefined,\n setFormState: () => null,\n setSubmitState: () => null,\n setFieldEventListener: () => null,\n handleSubmitCall: () => null,\n setShowAllErrors: () => null,\n handleMountField: () => null,\n handleUnMountField: () => null,\n hasErrors: () => false,\n hasFieldState: () => false,\n hasFieldError: () => false,\n setFieldState: () => null,\n setFieldError: () => null,\n ajvInstance: makeAjvInstance(),\n contextErrorMessages: undefined,\n isInsideFormElement: false,\n props: null,\n}\n\nconst Context = React.createContext<ContextState>(defaultContextState)\n\nexport default Context\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAAcC,eAAe,QAAQ,cAAc;AA+HnD,OAAO,MAAMC,mBAAiC,GAAG;EAC/CC,UAAU,EAAE,KAAK;EACjBC,IAAI,EAAEC,SAAS;EACfC,MAAM,EAAED,SAAS;EACjBE,WAAW,EAAEF,SAAS;EACtBG,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,2BAA2B,EAAEA,CAAA,KAAM,IAAI;EACvCC,eAAe,EAAEA,CAAA,KAAM,IAAI;EAC3BC,OAAO,EAAEA,CAAA,KAAM,IAAI;EACnBC,YAAY,EAAEA,CAAA,KAAM,IAAI;EACxBC,YAAY,EAAEA,CAAA,KAAM,IAAI;EACxBC,WAAW,EAAEA,CAAA,KAAM,IAAI;EACvBC,aAAa,EAAE,KAAK;EACpBC,SAAS,EAAEX,SAAS;EACpBY,YAAY,EAAEA,CAAA,KAAM,IAAI;EACxBC,cAAc,EAAEA,CAAA,KAAM,IAAI;EAC1BC,qBAAqB,EAAEA,CAAA,KAAM,IAAI;EACjCC,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,kBAAkB,EAAEA,CAAA,KAAM,IAAI;EAC9BC,SAAS,EAAEA,CAAA,KAAM,KAAK;EACtBC,aAAa,EAAEA,CAAA,KAAM,KAAK;EAC1BC,aAAa,EAAEA,CAAA,KAAM,KAAK;EAC1BC,aAAa,EAAEA,CAAA,KAAM,IAAI;EACzBC,aAAa,EAAEA,CAAA,KAAM,IAAI;EACzBC,WAAW,EAAE5B,eAAe,CAAC,CAAC;EAC9B6B,oBAAoB,EAAEzB,SAAS;EAC/B0B,mBAAmB,EAAE,KAAK;EAC1BC,KAAK,EAAE;AACT,CAAC;AAED,MAAMC,OAAO,GAAGjC,KAAK,CAACkC,aAAa,CAAehC,mBAAmB,CAAC;AAEtE,eAAe+B,OAAO"}
1
+ {"version":3,"file":"Context.js","names":["React","makeAjvInstance","defaultContextState","hasContext","data","undefined","schema","submitState","handlePathChange","handlePathChangeUnvalidated","updateDataValue","setData","validateData","handleSubmit","scrollToTop","showAllErrors","hasVisibleError","formState","setFormState","setSubmitState","setFieldEventListener","handleSubmitCall","setShowAllErrors","handleMountField","handleUnMountField","hasErrors","hasFieldState","hasFieldError","setFieldState","setFieldError","ajvInstance","contextErrorMessages","isInsideFormElement","props","Context","createContext"],"sources":["../../../../../src/extensions/forms/DataContext/Context.ts"],"sourcesContent":["import React from 'react'\nimport { Ajv, makeAjvInstance } from '../utils/ajv'\nimport {\n AllJSONSchemaVersions,\n CustomErrorMessagesWithPaths,\n SubmitState,\n Path,\n EventStateObject,\n EventReturnWithStateObject,\n Identifier,\n FieldProps,\n FormError,\n ValueProps,\n} from '../types'\nimport { Props as ProviderProps } from './Provider'\n\ntype HandleSubmitProps = {\n formElement?: HTMLFormElement\n}\n\nexport type EventListenerCall = {\n path: Path\n type: 'onSubmit'\n callback: () => any\n}\n\nexport type FilterDataHandler<Data> = (\n data: Data,\n filter: FilterData\n) => Partial<Data>\nexport type FilterDataHandlerCallback<R> = (\n parameters: FilterDataHandlerParameters\n) => R\nexport type FilterDataHandlerParameters =\n FilterDataPathConditionParameters & {\n path: Path\n }\nexport type FilterDataPathCondition<Data = unknown> = (\n parameters: FilterDataPathConditionParameters<Data>\n) => boolean | undefined\nexport type FilterDataPathConditionParameters<Data = unknown> = {\n value: unknown\n props: FieldProps\n data: Data\n internal: {\n error: Error | undefined\n }\n}\nexport type FilterDataPathObject<Data> = Record<\n Path,\n FilterDataPathCondition<Data> | boolean | undefined\n>\nexport type FilterData<Data = unknown> =\n | FilterDataPathObject<Data>\n | FilterDataHandlerCallback<boolean | undefined>\nexport type TransformData = FilterDataHandlerCallback<unknown>\n\nexport interface ContextState {\n id?: Identifier\n hasContext: boolean\n /** The dataset for the form / form wizard */\n data: any\n /** Should the form validate data before submitting? */\n errors?: Record<string, Error>\n /** Will set autoComplete=\"on\" on each nested Field.String and Field.Number */\n autoComplete?: boolean\n handlePathChange: (\n path: Path,\n value?: any\n ) =>\n | EventReturnWithStateObject\n | unknown\n | Promise<EventReturnWithStateObject | unknown>\n handlePathChangeUnvalidated: (path: Path, value: any) => void\n updateDataValue: (path: Path, value: any) => void\n setData: (data: any) => void\n mutateDataHandler?: (data: any, mutate: TransformData) => any\n filterDataHandler?: (data: any, filter: FilterData) => any\n validateData: () => void\n handleSubmit: (props?: HandleSubmitProps) => any\n scrollToTop: () => void\n setShowAllErrors: (showAllErrors: boolean) => void\n hasErrors: () => boolean\n hasFieldState: (state: SubmitState) => boolean\n hasFieldError: (path: Path) => boolean\n setFieldState: (path: Path, fieldState: SubmitState) => void\n setFieldError: (path: Path, error: Error | FormError) => void\n handleMountField: (path: Path) => void\n handleUnMountField: (path: Path) => void\n setFormState?: (state: SubmitState) => void\n setSubmitState?: (state: EventStateObject) => void\n addOnChangeHandler?: (callback: (data: unknown) => void) => void\n handleSubmitCall: ({\n onSubmit,\n enableAsyncBehaviour,\n skipFieldValidation,\n skipErrorCheck,\n }: {\n onSubmit: () =>\n | EventReturnWithStateObject\n | void\n | Promise<EventReturnWithStateObject | void>\n enableAsyncBehaviour: boolean\n skipFieldValidation?: boolean\n skipErrorCheck?: boolean\n }) => void\n setFieldEventListener: (\n path: EventListenerCall['path'],\n type: EventListenerCall['type'],\n callback: EventListenerCall['callback']\n ) => void\n setHasVisibleError?: (path: Path, hasError: boolean) => void\n setFieldProps?: (path: Path, props: any) => void\n setValueProps?: (path: Path, props: any) => void\n fieldPropsRef?: React.MutableRefObject<Record<string, FieldProps>>\n valuePropsRef?: React.MutableRefObject<Record<string, ValueProps>>\n showAllErrors: boolean\n hasVisibleError: boolean\n formState: SubmitState\n ajvInstance: Ajv\n contextErrorMessages: CustomErrorMessagesWithPaths\n schema: AllJSONSchemaVersions\n disabled?: boolean\n required?: boolean\n submitState: Partial<EventStateObject>\n isInsideFormElement?: boolean\n prerenderFieldProps?: boolean\n props: ProviderProps<unknown>\n}\n\nexport const defaultContextState: ContextState = {\n hasContext: false,\n data: undefined,\n schema: undefined,\n submitState: undefined,\n handlePathChange: () => null,\n handlePathChangeUnvalidated: () => null,\n updateDataValue: () => null,\n setData: () => null,\n validateData: () => null,\n handleSubmit: () => null,\n scrollToTop: () => null,\n showAllErrors: false,\n hasVisibleError: false,\n formState: undefined,\n setFormState: () => null,\n setSubmitState: () => null,\n setFieldEventListener: () => null,\n handleSubmitCall: () => null,\n setShowAllErrors: () => null,\n handleMountField: () => null,\n handleUnMountField: () => null,\n hasErrors: () => false,\n hasFieldState: () => false,\n hasFieldError: () => false,\n setFieldState: () => null,\n setFieldError: () => null,\n ajvInstance: makeAjvInstance(),\n contextErrorMessages: undefined,\n isInsideFormElement: false,\n props: null,\n}\n\nconst Context = React.createContext<ContextState>(defaultContextState)\n\nexport default Context\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAAcC,eAAe,QAAQ,cAAc;AAiInD,OAAO,MAAMC,mBAAiC,GAAG;EAC/CC,UAAU,EAAE,KAAK;EACjBC,IAAI,EAAEC,SAAS;EACfC,MAAM,EAAED,SAAS;EACjBE,WAAW,EAAEF,SAAS;EACtBG,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,2BAA2B,EAAEA,CAAA,KAAM,IAAI;EACvCC,eAAe,EAAEA,CAAA,KAAM,IAAI;EAC3BC,OAAO,EAAEA,CAAA,KAAM,IAAI;EACnBC,YAAY,EAAEA,CAAA,KAAM,IAAI;EACxBC,YAAY,EAAEA,CAAA,KAAM,IAAI;EACxBC,WAAW,EAAEA,CAAA,KAAM,IAAI;EACvBC,aAAa,EAAE,KAAK;EACpBC,eAAe,EAAE,KAAK;EACtBC,SAAS,EAAEZ,SAAS;EACpBa,YAAY,EAAEA,CAAA,KAAM,IAAI;EACxBC,cAAc,EAAEA,CAAA,KAAM,IAAI;EAC1BC,qBAAqB,EAAEA,CAAA,KAAM,IAAI;EACjCC,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,kBAAkB,EAAEA,CAAA,KAAM,IAAI;EAC9BC,SAAS,EAAEA,CAAA,KAAM,KAAK;EACtBC,aAAa,EAAEA,CAAA,KAAM,KAAK;EAC1BC,aAAa,EAAEA,CAAA,KAAM,KAAK;EAC1BC,aAAa,EAAEA,CAAA,KAAM,IAAI;EACzBC,aAAa,EAAEA,CAAA,KAAM,IAAI;EACzBC,WAAW,EAAE7B,eAAe,CAAC,CAAC;EAC9B8B,oBAAoB,EAAE1B,SAAS;EAC/B2B,mBAAmB,EAAE,KAAK;EAC1BC,KAAK,EAAE;AACT,CAAC;AAED,MAAMC,OAAO,GAAGlC,KAAK,CAACmC,aAAa,CAAejC,mBAAmB,CAAC;AAEtE,eAAegC,OAAO"}
@@ -1,9 +1,25 @@
1
1
  import React from 'react';
2
2
  import { Path } from '../../types';
3
3
  export interface FieldBoundaryContextState {
4
+ /**
5
+ * Will be set to true when one or more nested fields are in error state.
6
+ */
4
7
  hasError?: boolean;
5
- hasErrorAndShowIt?: boolean;
8
+ /**
9
+ * Will be set to true when the inherited data context has submit errors and the `hasError` has errors as well.
10
+ */
11
+ hasSubmitError?: boolean;
12
+ /**
13
+ * Will be set to true when a nested field contains a visible error.
14
+ */
15
+ hasVisibleError?: boolean;
16
+ /**
17
+ * Contains the nested field errors.
18
+ */
6
19
  errorsRef?: React.RefObject<unknown>;
20
+ /**
21
+ * To set the local error state.
22
+ */
7
23
  setFieldError?: (path: Path, error: Error) => void;
8
24
  }
9
25
  declare const FieldBoundaryContext: React.Context<FieldBoundaryContextState>;
@@ -1 +1 @@
1
- {"version":3,"file":"FieldBoundaryContext.js","names":["React","FieldBoundaryContext","createContext","undefined"],"sources":["../../../../../../src/extensions/forms/DataContext/FieldBoundary/FieldBoundaryContext.ts"],"sourcesContent":["import React from 'react'\nimport { Path } from '../../types'\n\nexport interface FieldBoundaryContextState {\n hasError?: boolean\n hasErrorAndShowIt?: boolean\n errorsRef?: React.RefObject<unknown>\n setFieldError?: (path: Path, error: Error) => void\n}\n\nconst FieldBoundaryContext = React.createContext<\n FieldBoundaryContextState | undefined\n>(undefined)\n\nexport default FieldBoundaryContext\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAUzB,MAAMC,oBAAoB,GAAGD,KAAK,CAACE,aAAa,CAE9CC,SAAS,CAAC;AAEZ,eAAeF,oBAAoB"}
1
+ {"version":3,"file":"FieldBoundaryContext.js","names":["React","FieldBoundaryContext","createContext","undefined"],"sources":["../../../../../../src/extensions/forms/DataContext/FieldBoundary/FieldBoundaryContext.ts"],"sourcesContent":["import React from 'react'\nimport { Path } from '../../types'\n\nexport interface FieldBoundaryContextState {\n /**\n * Will be set to true when one or more nested fields are in error state.\n */\n hasError?: boolean\n\n /**\n * Will be set to true when the inherited data context has submit errors and the `hasError` has errors as well.\n */\n hasSubmitError?: boolean\n\n /**\n * Will be set to true when a nested field contains a visible error.\n */\n hasVisibleError?: boolean\n\n /**\n * Contains the nested field errors.\n */\n errorsRef?: React.RefObject<unknown>\n\n /**\n * To set the local error state.\n */\n setFieldError?: (path: Path, error: Error) => void\n}\n\nconst FieldBoundaryContext = React.createContext<\n FieldBoundaryContextState | undefined\n>(undefined)\n\nexport default FieldBoundaryContext\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AA8BzB,MAAMC,oBAAoB,GAAGD,KAAK,CAACE,aAAa,CAE9CC,SAAS,CAAC;AAEZ,eAAeF,oBAAoB"}
@@ -8,11 +8,12 @@ export default function FieldBoundaryProvider(_ref) {
8
8
  children
9
9
  } = _ref;
10
10
  const {
11
- showAllErrors
11
+ showAllErrors,
12
+ hasVisibleError
12
13
  } = useContext(DataContext);
13
14
  const errorsRef = useRef({});
14
15
  const hasError = Object.keys(errorsRef.current || {}).length > 0;
15
- const hasErrorAndShowIt = showAllErrors && hasError;
16
+ const hasSubmitError = showAllErrors && hasError;
16
17
  const setFieldError = useCallback((path, error) => {
17
18
  if (error) {
18
19
  errorsRef.current[path] = !!error;
@@ -23,7 +24,8 @@ export default function FieldBoundaryProvider(_ref) {
23
24
  }, []);
24
25
  const context = {
25
26
  hasError,
26
- hasErrorAndShowIt,
27
+ hasSubmitError,
28
+ hasVisibleError,
27
29
  errorsRef,
28
30
  setFieldError
29
31
  };
@@ -1 +1 @@
1
- {"version":3,"file":"FieldBoundaryProvider.js","names":["React","useCallback","useContext","useRef","FieldBoundaryContext","DataContext","FieldBoundaryProvider","_ref","children","showAllErrors","errorsRef","hasError","Object","keys","current","length","hasErrorAndShowIt","setFieldError","path","error","_errorsRef$current","context","createElement","Provider","value"],"sources":["../../../../../../src/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.tsx"],"sourcesContent":["import React, { useCallback, useContext, useRef } from 'react'\nimport FieldBoundaryContext, {\n FieldBoundaryContextState,\n} from './FieldBoundaryContext'\nimport DataContext from '../Context'\nimport { Path } from '../../types'\n\nexport default function FieldBoundaryProvider({ children }) {\n const { showAllErrors } = useContext(DataContext)\n\n const errorsRef = useRef<Record<Path, boolean>>({})\n const hasError = Object.keys(errorsRef.current || {}).length > 0\n const hasErrorAndShowIt = showAllErrors && hasError\n\n const setFieldError = useCallback((path: Path, error: Error) => {\n if (error) {\n errorsRef.current[path] = !!error\n } else {\n delete errorsRef.current?.[path]\n }\n }, [])\n\n const context: FieldBoundaryContextState = {\n hasError,\n hasErrorAndShowIt,\n errorsRef,\n setFieldError,\n }\n\n return (\n <FieldBoundaryContext.Provider value={context}>\n {children}\n </FieldBoundaryContext.Provider>\n )\n}\n"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,UAAU,EAAEC,MAAM,QAAQ,OAAO;AAC9D,OAAOC,oBAAoB,MAEpB,wBAAwB;AAC/B,OAAOC,WAAW,MAAM,YAAY;AAGpC,eAAe,SAASC,qBAAqBA,CAAAC,IAAA,EAAe;EAAA,IAAd;IAAEC;EAAS,CAAC,GAAAD,IAAA;EACxD,MAAM;IAAEE;EAAc,CAAC,GAAGP,UAAU,CAACG,WAAW,CAAC;EAEjD,MAAMK,SAAS,GAAGP,MAAM,CAAwB,CAAC,CAAC,CAAC;EACnD,MAAMQ,QAAQ,GAAGC,MAAM,CAACC,IAAI,CAACH,SAAS,CAACI,OAAO,IAAI,CAAC,CAAC,CAAC,CAACC,MAAM,GAAG,CAAC;EAChE,MAAMC,iBAAiB,GAAGP,aAAa,IAAIE,QAAQ;EAEnD,MAAMM,aAAa,GAAGhB,WAAW,CAAC,CAACiB,IAAU,EAAEC,KAAY,KAAK;IAC9D,IAAIA,KAAK,EAAE;MACTT,SAAS,CAACI,OAAO,CAACI,IAAI,CAAC,GAAG,CAAC,CAACC,KAAK;IACnC,CAAC,MAAM;MAAA,IAAAC,kBAAA;MACL,CAAAA,kBAAA,GAAOV,SAAS,CAACI,OAAO,cAAAM,kBAAA,qBAAxB,OAAOA,kBAAA,CAAoBF,IAAI,CAAC;IAClC;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMG,OAAkC,GAAG;IACzCV,QAAQ;IACRK,iBAAiB;IACjBN,SAAS;IACTO;EACF,CAAC;EAED,OACEjB,KAAA,CAAAsB,aAAA,CAAClB,oBAAoB,CAACmB,QAAQ;IAACC,KAAK,EAAEH;EAAQ,GAC3Cb,QAC4B,CAAC;AAEpC"}
1
+ {"version":3,"file":"FieldBoundaryProvider.js","names":["React","useCallback","useContext","useRef","FieldBoundaryContext","DataContext","FieldBoundaryProvider","_ref","children","showAllErrors","hasVisibleError","errorsRef","hasError","Object","keys","current","length","hasSubmitError","setFieldError","path","error","_errorsRef$current","context","createElement","Provider","value"],"sources":["../../../../../../src/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.tsx"],"sourcesContent":["import React, { useCallback, useContext, useRef } from 'react'\nimport FieldBoundaryContext, {\n FieldBoundaryContextState,\n} from './FieldBoundaryContext'\nimport DataContext from '../Context'\nimport { Path } from '../../types'\n\nexport default function FieldBoundaryProvider({ children }) {\n const { showAllErrors, hasVisibleError } = useContext(DataContext)\n\n const errorsRef = useRef<Record<Path, boolean>>({})\n const hasError = Object.keys(errorsRef.current || {}).length > 0\n const hasSubmitError = showAllErrors && hasError\n\n const setFieldError = useCallback((path: Path, error: Error) => {\n if (error) {\n errorsRef.current[path] = !!error\n } else {\n delete errorsRef.current?.[path]\n }\n }, [])\n\n const context: FieldBoundaryContextState = {\n hasError,\n hasSubmitError,\n hasVisibleError,\n errorsRef,\n setFieldError,\n }\n\n return (\n <FieldBoundaryContext.Provider value={context}>\n {children}\n </FieldBoundaryContext.Provider>\n )\n}\n"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,UAAU,EAAEC,MAAM,QAAQ,OAAO;AAC9D,OAAOC,oBAAoB,MAEpB,wBAAwB;AAC/B,OAAOC,WAAW,MAAM,YAAY;AAGpC,eAAe,SAASC,qBAAqBA,CAAAC,IAAA,EAAe;EAAA,IAAd;IAAEC;EAAS,CAAC,GAAAD,IAAA;EACxD,MAAM;IAAEE,aAAa;IAAEC;EAAgB,CAAC,GAAGR,UAAU,CAACG,WAAW,CAAC;EAElE,MAAMM,SAAS,GAAGR,MAAM,CAAwB,CAAC,CAAC,CAAC;EACnD,MAAMS,QAAQ,GAAGC,MAAM,CAACC,IAAI,CAACH,SAAS,CAACI,OAAO,IAAI,CAAC,CAAC,CAAC,CAACC,MAAM,GAAG,CAAC;EAChE,MAAMC,cAAc,GAAGR,aAAa,IAAIG,QAAQ;EAEhD,MAAMM,aAAa,GAAGjB,WAAW,CAAC,CAACkB,IAAU,EAAEC,KAAY,KAAK;IAC9D,IAAIA,KAAK,EAAE;MACTT,SAAS,CAACI,OAAO,CAACI,IAAI,CAAC,GAAG,CAAC,CAACC,KAAK;IACnC,CAAC,MAAM;MAAA,IAAAC,kBAAA;MACL,CAAAA,kBAAA,GAAOV,SAAS,CAACI,OAAO,cAAAM,kBAAA,qBAAxB,OAAOA,kBAAA,CAAoBF,IAAI,CAAC;IAClC;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMG,OAAkC,GAAG;IACzCV,QAAQ;IACRK,cAAc;IACdP,eAAe;IACfC,SAAS;IACTO;EACF,CAAC;EAED,OACElB,KAAA,CAAAuB,aAAA,CAACnB,oBAAoB,CAACoB,QAAQ;IAACC,KAAK,EAAEH;EAAQ,GAC3Cd,QAC4B,CAAC;AAEpC"}
@@ -59,12 +59,21 @@ export default function Provider(props) {
59
59
  const translation = useTranslation().Form;
60
60
  const ajvRef = useRef(makeAjvInstance(ajvInstance));
61
61
  const mountedFieldPathsRef = useRef([]);
62
+ const hasVisibleErrorRef = useRef({});
62
63
  const errorsRef = useRef();
63
64
  const showAllErrorsRef = useRef(false);
64
65
  const setShowAllErrors = useCallback(showAllErrors => {
65
66
  showAllErrorsRef.current = showAllErrors;
66
67
  forceUpdate();
67
68
  }, []);
69
+ const setHasVisibleError = useCallback((path, hasError) => {
70
+ if (hasError) {
71
+ hasVisibleErrorRef.current[path] = hasError;
72
+ } else {
73
+ delete hasVisibleErrorRef.current[path];
74
+ }
75
+ forceUpdate();
76
+ }, []);
68
77
  const submitStateRef = useRef({});
69
78
  const setSubmitState = useCallback(state => {
70
79
  Object.assign(submitStateRef.current, state);
@@ -170,8 +179,11 @@ export default function Provider(props) {
170
179
  });
171
180
  return data;
172
181
  } else if (filter) {
173
- Object.entries(filter).forEach(_ref2 => {
174
- let [path, condition] = _ref2;
182
+ const runFilter = _ref2 => {
183
+ let {
184
+ path,
185
+ condition
186
+ } = _ref2;
175
187
  const exists = pointer.has(data, path);
176
188
  if (exists) {
177
189
  var _fieldPropsRef$curren, _fieldErrorRef$curren2;
@@ -188,7 +200,39 @@ export default function Provider(props) {
188
200
  }) : condition;
189
201
  mutate(path, result);
190
202
  }
203
+ };
204
+ const wildcardPaths = [];
205
+ Object.entries(filter).forEach(_ref3 => {
206
+ let [path, condition] = _ref3;
207
+ if (path.includes('*')) {
208
+ const parts = path.split(/\/\*/g);
209
+ const exists = pointer.has(data, parts[0]);
210
+ if (exists) {
211
+ const traverse = (subData, subPath, idx) => {
212
+ if (idx === parts.length - 1) {
213
+ wildcardPaths.push({
214
+ path: subPath,
215
+ condition
216
+ });
217
+ return;
218
+ }
219
+ const list = pointer.get(subData, subPath);
220
+ if (Array.isArray(list)) {
221
+ list.forEach((_, i) => {
222
+ traverse(list[i], `${subPath}/${i}${parts[idx + 1]}`, idx + 1);
223
+ });
224
+ }
225
+ };
226
+ traverse(data, parts[0], 0);
227
+ }
228
+ } else {
229
+ runFilter({
230
+ path,
231
+ condition
232
+ });
233
+ }
191
234
  });
235
+ wildcardPaths.forEach(runFilter);
192
236
  return data;
193
237
  }
194
238
  return data;
@@ -491,11 +535,11 @@ export default function Provider(props) {
491
535
  }, [filterDataHandler, handleSubmitCall, id, mutateDataHandler, onSubmit, onSubmitComplete, scrollToTop, scrollTopOnSubmit, sessionStorageId, setSharedData, transformOut]);
492
536
  const fieldEventListenersRef = useRef([]);
493
537
  const setFieldEventListener = useCallback((path, type, callback) => {
494
- fieldEventListenersRef.current = fieldEventListenersRef.current.filter(_ref3 => {
538
+ fieldEventListenersRef.current = fieldEventListenersRef.current.filter(_ref4 => {
495
539
  let {
496
540
  path: p,
497
541
  type: t
498
- } = _ref3;
542
+ } = _ref4;
499
543
  return !(p === path && t === type);
500
544
  });
501
545
  fieldEventListenersRef.current.push({
@@ -556,6 +600,7 @@ export default function Provider(props) {
556
600
  setFormState,
557
601
  setSubmitState,
558
602
  setShowAllErrors,
603
+ setHasVisibleError,
559
604
  setFieldEventListener,
560
605
  setFieldState,
561
606
  setFieldError,
@@ -579,6 +624,7 @@ export default function Provider(props) {
579
624
  hasContext: true,
580
625
  errors: errorsRef.current,
581
626
  showAllErrors: showAllErrorsRef.current,
627
+ hasVisibleError: Object.keys(hasVisibleErrorRef.current).length > 0,
582
628
  fieldPropsRef,
583
629
  valuePropsRef,
584
630
  ajvInstance: ajvRef.current,
@@ -1 +1 @@
1
- {"version":3,"file":"Provider.js","names":["React","useRef","useMemo","useCallback","useReducer","useEffect","useContext","pointer","makeAjvInstance","ajvErrorsToFormErrors","debounce","FieldPropsProvider","useMountEffect","useUpdateEffect","isAsync","useSharedState","useTranslation","Context","structuredClone","useLayoutEffect","window","isArrayJsonPointer","Provider","props","_sharedAttachments$da","forceUpdate","id","globalStatusId","defaultData","data","schema","onChange","onPathChange","onSubmit","onSubmitRequest","onSubmitComplete","scrollTopOnSubmit","minimumAsyncBehaviorTime","asyncSubmitTimeout","sessionStorageId","ajvInstance","transformIn","transformOut","filterSubmitData","filterData","locale","translations","required","errorMessages","contextErrorMessages","children","rest","_objectWithoutProperties","_excluded","undefined","Error","nestedContext","hasContext","translation","Form","ajvRef","mountedFieldPathsRef","errorsRef","showAllErrorsRef","setShowAllErrors","showAllErrors","current","submitStateRef","setSubmitState","state","Object","assign","formStateRef","setFormState","formState","fieldErrorRef","fieldStateRef","initialData","_window$sessionStorag","sessionDataJSON","sessionStorage","getItem","JSON","parse","internalDataRef","ajvValidatorRef","executeAjvValidator","_ajvValidatorRef$curr","call","errors","validateData","checkFieldStateFor","path","_errorsRef$current","Boolean","hasFieldState","some","hasFieldError","p","hasErrors","setFieldError","error","setFieldState","fieldState","mutateDataHandler","filter","remove","arguments","length","mutate","result","set","entries","fieldPropsRef","forEach","_ref","exists","has","_fieldErrorRef$curren","value","get","internal","_ref2","condition","_fieldPropsRef$curren","_fieldErrorRef$curren2","filterDataHandler","valuePropsRef","setFieldProps","setValueProps","hasFieldWithAsyncValidator","includes","validator","onBlurValidator","sharedData","sharedAttachments","setSharedData","extendSharedData","extend","extendAttachment","rerenderUseDataHook","cacheRef","shared","hasUsedInitialData","update","_objectSpread","storeInSession","_window$sessionStorag2","setItem","stringify","process","env","NODE_ENV","updateDataValue","_internalDataRef$curr","givenData","match","newData","e","setData","handlePathChangeUnvalidated","handlePathChange","transformedData","cb","changeHandlerStackRef","addOnChangeHandler","callback","push","handleMountField","addListPath","handleUnMountField","removeListPath","scrollToTop","_window","_window$scrollTo","scrollTo","top","behavior","handleSubmitCall","args","enableAsyncBehaviour","skipFieldValidation","skipErrorCheck","asyncBehaviorIsEnabled","type","fieldEventListenersRef","warning","info","requestAnimationFrame","onSubmitContinueRef","handleSubmit","formElement","filteredData","opts","resetForm","_formElement$reset","reset","removeItem","clearData","completeResult","keys","setFieldEventListener","_ref3","t","_onSubmitContinueRef$","_ajvRef$current","compile","_ajvRef$current2","onTimeout","bufferedFormState","useFormStatusBuffer","waitFor","submitState","disabled","createElement","FormStatus","globalStatus","title","errorSummaryTitle","show","paths","concat","thisPath","stateRef","nowRef","timeoutRef","setState","clear","key","clearTimeout","hadCompleteRef","activeElementRef","isTest","minimum","setTimeout","document","activeElement","Date","now","offset","Math","max","delay","complete","_activeElementRef$cur","_activeElementRef$cur2","focus","timeout"],"sources":["../../../../../../src/extensions/forms/DataContext/Provider/Provider.tsx"],"sourcesContent":["import React, {\n useRef,\n useMemo,\n useCallback,\n useReducer,\n useEffect,\n useContext,\n} from 'react'\nimport pointer, { JsonObject } from 'json-pointer'\nimport { ValidateFunction } from 'ajv/dist/2020'\nimport {\n Ajv,\n makeAjvInstance,\n ajvErrorsToFormErrors,\n} from '../../utils/ajv'\nimport {\n FormError,\n CustomErrorMessagesWithPaths,\n AllJSONSchemaVersions,\n FieldProps,\n SubmitState,\n Path,\n EventStateObject,\n OnSubmit,\n OnChange,\n EventReturnWithStateObject,\n ValueProps,\n} from '../../types'\nimport { debounce } from '../../../../shared/helpers'\nimport FieldPropsProvider from '../../Form/FieldProps'\nimport useMountEffect from '../../../../shared/helpers/useMountEffect'\nimport useUpdateEffect from '../../../../shared/helpers/useUpdateEffect'\nimport { isAsync } from '../../../../shared/helpers/isAsync'\nimport { useSharedState } from '../../../../shared/helpers/useSharedState'\nimport { ContextProps } from '../../../../shared/Context'\nimport useTranslation from '../../hooks/useTranslation'\nimport Context, {\n ContextState,\n EventListenerCall,\n FilterData,\n TransformData,\n} from '../Context'\n\n/**\n * Deprecated, as it is supported by all major browsers and Node.js >=v18\n * So its a question of time, when we will remove this polyfill\n */\nimport structuredClone from '@ungap/structured-clone'\n\n// SSR warning fix: https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\nconst useLayoutEffect =\n typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect\n\nexport interface Props<Data extends JsonObject> {\n /**\n * Unique ID to communicate with the hook Form.useData\n */\n id?: string\n /**\n * Unique ID to connect with a GlobalStatus\n */\n globalStatusId?: string\n /**\n * Default source data, only used if no other source is available, and not leading to updates if changed after mount\n */\n defaultData?: Data\n /**\n * Source data, will be used instead of defaultData, and leading to updates if changed after mount\n */\n data?: Data\n /**\n * JSON Schema to validate the data against.\n */\n schema?: AllJSONSchemaVersions<Data>\n /**\n * Custom Ajv instance, if you want to use your own\n */\n ajvInstance?: Ajv\n /**\n * Custom error messages for the whole data set\n */\n errorMessages?: CustomErrorMessagesWithPaths\n /**\n * Filter the `onSubmit` output data, based on your criteria: `({ path, value, data, props, internal }) => !props?.disabled`. It will iterate on each data entry (/path). Return false to exclude the entry.\n */\n filterSubmitData?: FilterData\n /**\n * @deprecated Use `filterSubmitData` instead\n */\n filterData?: FilterData\n /**\n * Transform the data context (internally as well) based on your criteria: `({ path, value, data, props, internal }) => 'new value'`. It will iterate on each data entry (/path).\n */\n transformIn?: TransformData\n /**\n * Mutate the data before it enters onSubmit or onChange based on your criteria: `({ path, value, data, props, internal }) => 'new value'`. It will iterate on each data entry (/path).\n */\n transformOut?: TransformData\n /**\n * Change handler for the whole data set.\n * You can provide an async function to show an indicator on the current label during a field change.\n */\n onChange?: OnChange<Data>\n /**\n * Change handler for each value\n */\n onPathChange?: (\n path: Path,\n value: any\n ) =>\n | EventReturnWithStateObject\n | void\n | Promise<EventReturnWithStateObject | void>\n /**\n * Will emit on a form submit – if validation has passed.\n * You can provide an async function to shows a submit indicator during submit. All form elements will be disabled during the submit.\n */\n onSubmit?: OnSubmit<Data>\n /**\n * Submit was requested, but data was invalid\n */\n onSubmitRequest?: () => void\n /**\n * Will be called when the onSubmit is finished and had not errors\n */\n onSubmitComplete?: (\n data: Data,\n /**\n * The result of the onSubmit function\n */\n result: unknown\n ) =>\n | EventReturnWithStateObject\n | void\n | Promise<EventReturnWithStateObject | void>\n /**\n * Minimum time to display the submit indicator.\n */\n minimumAsyncBehaviorTime?: number\n /**\n * The maximum time to display the submit indicator before it changes back to normal. In case something went wrong during submission.\n */\n asyncSubmitTimeout?: number\n /**\n * Scroll to top on submit\n */\n scrollTopOnSubmit?: boolean\n /**\n * Key for caching the data in session storage\n */\n sessionStorageId?: string\n /**\n * Locale to use for all nested Eufemia components\n */\n locale?: ContextProps['locale']\n /**\n * Provide your own translations. Use the same format as defined in the translation files\n */\n translations?: ContextProps['translations']\n /**\n * Make all fields required\n */\n required?: boolean\n\n children: React.ReactNode\n}\n\nconst isArrayJsonPointer = /^\\/\\d+(\\/|$)/\n\nexport default function Provider<Data extends JsonObject>(\n props: Props<Data>\n) {\n const [, forceUpdate] = useReducer(() => ({}), {})\n\n const {\n id,\n globalStatusId = 'main',\n defaultData,\n data,\n schema,\n onChange,\n onPathChange,\n onSubmit,\n onSubmitRequest,\n onSubmitComplete,\n scrollTopOnSubmit,\n minimumAsyncBehaviorTime,\n asyncSubmitTimeout,\n sessionStorageId,\n ajvInstance,\n transformIn,\n transformOut,\n filterSubmitData,\n filterData,\n locale,\n translations,\n required,\n errorMessages: contextErrorMessages,\n children,\n ...rest\n } = props\n\n // Prop error handling\n if (data !== undefined && sessionStorageId !== undefined) {\n throw new Error(\n 'Use \"defaultData\" instead of \"data\" when using sessionStorageId'\n )\n }\n\n const nestedContext = useContext(Context)\n if (nestedContext?.hasContext) {\n throw new Error('DataContext (Form.Handler) can not be nested')\n }\n\n // - Locale\n const translation = useTranslation().Form\n\n // - Ajv\n const ajvRef = useRef<Ajv>(makeAjvInstance(ajvInstance))\n\n // - Paths\n const mountedFieldPathsRef = useRef<Path[]>([])\n\n // - Errors from provider validation (the whole data set)\n const errorsRef = useRef<Record<Path, FormError> | undefined>()\n const showAllErrorsRef = useRef<boolean>(false)\n const setShowAllErrors = useCallback((showAllErrors: boolean) => {\n showAllErrorsRef.current = showAllErrors\n forceUpdate()\n }, [])\n const submitStateRef = useRef<Partial<EventStateObject>>({})\n const setSubmitState = useCallback((state: EventStateObject) => {\n Object.assign(submitStateRef.current, state)\n forceUpdate()\n }, [])\n\n // - Progress\n const formStateRef = useRef<SubmitState>()\n const setFormState = useCallback((formState: SubmitState) => {\n formStateRef.current = formState\n forceUpdate()\n }, [])\n\n // - States (e.g. error) reported by fields, based on their direct validation rules\n const fieldErrorRef = useRef<Record<Path, Error>>({})\n const fieldStateRef = useRef<Record<Path, SubmitState>>({})\n\n // - Data\n const initialData = useMemo<Data>(() => {\n if (sessionStorageId && typeof window !== 'undefined') {\n const sessionDataJSON =\n window.sessionStorage?.getItem(sessionStorageId)\n if (sessionDataJSON) {\n return JSON.parse(sessionDataJSON)\n }\n }\n return data ?? defaultData\n // eslint-disable-next-line react-hooks/exhaustive-deps -- Avoid triggering code that should only run initially\n }, [])\n const internalDataRef = useRef<Data>(initialData)\n\n // - Validator\n const ajvValidatorRef = useRef<ValidateFunction>()\n const executeAjvValidator = useCallback(() => {\n if (!ajvValidatorRef.current) {\n // No schema-based validator. Assume data is valid.\n return\n }\n\n if (!ajvValidatorRef.current?.(internalDataRef.current)) {\n // Errors found\n errorsRef.current = ajvErrorsToFormErrors(\n ajvValidatorRef.current.errors,\n internalDataRef.current\n )\n } else {\n errorsRef.current = undefined\n }\n }, [])\n const validateData = useCallback(() => {\n if (!ajvValidatorRef.current) {\n // No schema-based validator. Assume data is valid.\n return\n }\n\n executeAjvValidator()\n forceUpdate()\n }, [executeAjvValidator])\n\n // - Error handling\n const checkFieldStateFor = useCallback(\n (path: Path, state: SubmitState) => {\n return Boolean(\n state === 'error'\n ? errorsRef.current?.[path] instanceof Error ||\n fieldErrorRef.current[path] instanceof Error\n : fieldStateRef.current[path] === state\n )\n },\n []\n )\n const hasFieldState = useCallback(\n (state: SubmitState) => {\n return mountedFieldPathsRef.current.some((path) => {\n return checkFieldStateFor(path, state)\n })\n },\n [checkFieldStateFor]\n )\n const hasFieldError = useCallback(\n (path: Path) => {\n return mountedFieldPathsRef.current.some((p) => {\n return p === path && checkFieldStateFor(p, 'error')\n })\n },\n [checkFieldStateFor]\n )\n const hasErrors = useCallback(() => {\n return hasFieldState('error')\n }, [hasFieldState])\n\n /**\n * Sets the error state for a specific path\n */\n const setFieldError = useCallback(\n (path: Path, error: Error | FormError) => {\n fieldErrorRef.current[path] = error\n },\n []\n )\n\n /**\n * Sets the field state for a specific path\n */\n const setFieldState = useCallback(\n (path: Path, fieldState: SubmitState) => {\n if (fieldState !== fieldStateRef.current[path]) {\n // The state for the target value was changed\n fieldStateRef.current[path] = fieldState\n forceUpdate()\n }\n },\n []\n )\n\n /**\n * Mutate the data set based on the filterData function\n */\n const mutateDataHandler = useCallback(\n (data: Data, filter: FilterData | TransformData, remove = false) => {\n const mutate = (path: Path, result: boolean | unknown) => {\n if (remove) {\n if (result === false) {\n data = structuredClone(data)\n pointer.remove(data, path)\n }\n } else {\n if (typeof result !== 'undefined') {\n data = structuredClone(data)\n pointer.set(data, path, result)\n }\n }\n }\n\n if (typeof filter === 'function') {\n Object.entries(fieldPropsRef.current).forEach(([path, props]) => {\n const exists = pointer.has(data, path)\n if (exists) {\n const value = pointer.get(data, path)\n const internal = {\n error: fieldErrorRef.current?.[path],\n }\n const result = filter({\n path,\n value,\n data: internalDataRef.current,\n props,\n internal,\n })\n mutate(path, result)\n }\n })\n\n return data\n } else if (filter) {\n Object.entries(filter).forEach(([path, condition]) => {\n const exists = pointer.has(data, path)\n if (exists) {\n const value = pointer.get(data, path)\n const props = fieldPropsRef.current?.[path]\n const internal = { error: fieldErrorRef.current?.[path] }\n const result =\n typeof condition === 'function'\n ? condition({\n value,\n data: internalDataRef.current,\n props,\n internal,\n })\n : condition\n mutate(path, result)\n }\n })\n return data\n }\n\n return data\n },\n []\n )\n\n /**\n * Filter the data set based on the filterData function\n */\n const filterDataHandler = useCallback(\n (data: Data, filter = filterData || filterSubmitData) => {\n if (filter) {\n return mutateDataHandler(data, filter, true)\n }\n\n return data\n },\n [filterData, filterSubmitData, mutateDataHandler]\n )\n\n const fieldPropsRef = useRef<Record<Path, FieldProps>>({})\n const valuePropsRef = useRef<Record<Path, ValueProps<unknown>>>({})\n const setFieldProps = useCallback(\n (path: Path, props: Record<string, unknown>) => {\n fieldPropsRef.current[path] = props\n },\n []\n )\n const setValueProps = useCallback(\n (path: Path, props: Record<string, unknown>) => {\n valuePropsRef.current[path] = props\n },\n []\n )\n const hasFieldWithAsyncValidator = useCallback(() => {\n for (const path in fieldPropsRef.current) {\n if (mountedFieldPathsRef.current.includes(path)) {\n const props = fieldPropsRef.current[path]\n if (isAsync(props.validator) || isAsync(props.onBlurValidator)) {\n return true\n }\n }\n }\n\n return false\n }, [])\n\n // - Shared state\n const sharedData = useSharedState<Data>(id)\n const sharedAttachments = useSharedState<{\n filterDataHandler?: Props<Data>['filterSubmitData']\n hasErrors?: ContextState['hasErrors']\n hasFieldError?: ContextState['hasFieldError']\n setShowAllErrors?: ContextState['setShowAllErrors']\n setSubmitState?: ContextState['setSubmitState']\n rerenderUseDataHook?: () => void\n }>(id + '-attachments')\n\n const setSharedData = sharedData.set\n const extendSharedData = sharedData.extend\n const extendAttachment = sharedAttachments.extend\n const rerenderUseDataHook = sharedAttachments.data?.rerenderUseDataHook\n\n const cacheRef = useRef({\n data,\n schema,\n shared: sharedData.data,\n hasUsedInitialData: false,\n })\n\n internalDataRef.current = useMemo(() => {\n // NB: \"sharedData.data\" is only available on a rerender.\n // Update the shared state, if initialData is given and no shared state is available.\n // We do almost the same later in a useLayoutEffect, but we need to do it here as well, so we set the data as early as possible.\n if (id && initialData && !sharedData.data) {\n sharedData.update(initialData)\n }\n\n // Merge both internal data and the shared state, if it both where given\n if (\n id &&\n initialData &&\n sharedData.data &&\n cacheRef.current.shared === sharedData.data &&\n internalDataRef.current === initialData\n ) {\n return {\n ...internalDataRef.current,\n ...sharedData.data,\n }\n }\n\n // Use shared state if no initial and initial data, and the shared state exists\n if (\n id &&\n !initialData &&\n !internalDataRef.current &&\n sharedData.data &&\n cacheRef.current.shared === sharedData.data\n ) {\n return sharedData.data\n }\n\n // Merge the internal data with the shared state, if the shared was updated and not the same as internal data\n if (\n id &&\n sharedData.data &&\n cacheRef.current.shared !== sharedData.data &&\n sharedData.data !== internalDataRef.current\n ) {\n cacheRef.current.shared = sharedData.data\n return {\n ...internalDataRef.current,\n ...sharedData.data,\n }\n }\n\n // When external data has changed, update the internal data\n if (data !== cacheRef.current.data) {\n cacheRef.current.data = data\n return data\n }\n\n return internalDataRef.current\n }, [data, id, initialData, sharedData])\n\n useLayoutEffect(() => {\n // Set the shared state, if initialData was given\n if (id && initialData && !sharedData.data) {\n extendSharedData?.(initialData)\n }\n }, [id, initialData, extendSharedData, sharedData.data])\n\n useMemo(() => {\n executeAjvValidator()\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [internalDataRef.current]) // run validation when internal data has changed\n\n useLayoutEffect(() => {\n if (id) {\n extendAttachment?.({\n filterDataHandler,\n hasErrors,\n hasFieldError,\n setShowAllErrors,\n setSubmitState,\n })\n if (filterData || filterSubmitData) {\n rerenderUseDataHook?.()\n }\n }\n }, [\n extendAttachment,\n filterData,\n filterDataHandler,\n filterSubmitData,\n hasErrors,\n hasFieldError,\n id,\n rerenderUseDataHook,\n setShowAllErrors,\n setSubmitState,\n ])\n\n const storeInSession = useMemo(() => {\n return debounce(\n () => {\n window.sessionStorage?.setItem(\n sessionStorageId,\n JSON.stringify(internalDataRef.current)\n )\n },\n process.env.NODE_ENV === 'test' ? 1 : 800\n )\n }, [sessionStorageId])\n\n /**\n * Update the data set\n */\n const updateDataValue: ContextState['updateDataValue'] = useCallback(\n (path, value) => {\n if (!path) {\n return\n }\n\n const givenData = (\n path === '/'\n ? // When setting the root of the data, the whole data set should be the new value\n value\n : // For sub paths, use the the existing data set (or empty array/object), but modify it below (since pointer.set is not immutable)\n internalDataRef.current ??\n (path.match(isArrayJsonPointer) ? [] : {})\n ) as Data\n\n let newData: Data = null\n try {\n // Update the data even if it contains errors. Submit/SubmitRequest will be called accordingly\n newData = structuredClone(givenData)\n } catch (e) {\n newData = givenData\n }\n\n if (path !== '/') {\n pointer.set(newData, path, value)\n }\n\n // - Mutate the data context\n if (transformIn) {\n newData = mutateDataHandler(newData, transformIn)\n }\n\n internalDataRef.current = newData\n\n if (id) {\n // Will ensure that Form.getData() gets the correct data\n extendSharedData?.(newData)\n if (filterData || filterSubmitData) {\n rerenderUseDataHook?.()\n }\n }\n\n if (sessionStorageId && typeof window !== 'undefined') {\n storeInSession()\n }\n\n forceUpdate()\n },\n [\n extendSharedData,\n filterData,\n filterSubmitData,\n id,\n mutateDataHandler,\n rerenderUseDataHook,\n sessionStorageId,\n storeInSession,\n transformIn,\n ]\n )\n\n const setData = useCallback((newData: Data) => {\n internalDataRef.current = newData\n forceUpdate()\n }, [])\n\n /**\n * Update the data set on user interaction (unvalidated)\n */\n const handlePathChangeUnvalidated: ContextState['handlePathChange'] =\n useCallback(\n async (path, value) => {\n if (!path) {\n return null\n }\n\n updateDataValue(path, value)\n\n if (isAsync(onPathChange)) {\n await onPathChange?.(path, value)\n } else {\n onPathChange?.(path, value)\n }\n },\n [onPathChange, updateDataValue]\n )\n\n /**\n * Update the data set on user interaction\n */\n const handlePathChange: ContextState['handlePathChange'] = useCallback(\n async (path, value = '_undefined_') => {\n if (!path) {\n return null\n }\n\n if (value !== '_undefined_') {\n handlePathChangeUnvalidated(path, value)\n }\n\n showAllErrorsRef.current = false\n\n validateData()\n\n const data = internalDataRef.current as Data\n const transformedData = transformOut\n ? mutateDataHandler(data, transformOut)\n : data\n\n for (const cb of changeHandlerStackRef.current) {\n if (isAsync(onChange)) {\n await cb(transformedData)\n } else {\n cb(transformedData)\n }\n }\n\n if (isAsync(onChange)) {\n return await onChange(transformedData)\n }\n\n return onChange?.(transformedData)\n },\n [\n handlePathChangeUnvalidated,\n mutateDataHandler,\n onChange,\n transformOut,\n validateData,\n ]\n )\n\n const changeHandlerStackRef = useRef<Array<OnChange<Data>>>([])\n const addOnChangeHandler = useCallback(\n (callback: (data: unknown) => void) => {\n const exists = changeHandlerStackRef.current.some((cb) => {\n return callback === cb\n })\n if (!exists) {\n changeHandlerStackRef.current.push(callback)\n }\n },\n []\n )\n\n // - Mounted fields\n const handleMountField = useCallback((path: Path) => {\n mountedFieldPathsRef.current = addListPath(\n mountedFieldPathsRef.current,\n path\n )\n }, [])\n\n const handleUnMountField = useCallback((path: Path) => {\n mountedFieldPathsRef.current = removeListPath(\n mountedFieldPathsRef.current,\n path\n )\n }, [])\n\n // - Features\n const scrollToTop = useCallback(() => {\n if (typeof window !== 'undefined') {\n window?.scrollTo?.({ top: 0, behavior: 'smooth' })\n }\n }, [])\n\n /**\n * Shared logic dedicated to submit the whole form\n */\n const handleSubmitCall = useCallback<ContextState['handleSubmitCall']>(\n async (args) => {\n const {\n onSubmit,\n enableAsyncBehaviour,\n skipFieldValidation,\n skipErrorCheck,\n } = args\n\n setSubmitState({ error: undefined })\n\n const asyncBehaviorIsEnabled =\n (skipErrorCheck\n ? true\n : // Don't enable async behaviour if we have errors, but when we have a pending state\n !hasErrors() || hasFieldState('pending')) &&\n (enableAsyncBehaviour || hasFieldWithAsyncValidator())\n\n if (asyncBehaviorIsEnabled) {\n setFormState('pending')\n }\n\n // Just call the submit listeners \"once\", and not on the retry/recall\n if (!skipFieldValidation) {\n for (const {\n path,\n type,\n callback,\n } of fieldEventListenersRef.current) {\n if (\n type === 'onSubmit' &&\n mountedFieldPathsRef.current.includes(path)\n ) {\n // Call all submit listener callbacks (e.g. to validate fields)\n if (asyncBehaviorIsEnabled) {\n await callback()\n } else {\n callback()\n }\n }\n }\n }\n\n if (\n !(skipErrorCheck ? false : hasErrors()) &&\n !hasFieldState('pending') &&\n (skipFieldValidation ? true : !hasFieldState('error'))\n ) {\n let result: EventStateObject | unknown\n\n try {\n result = await onSubmit()\n\n if (result instanceof Error) {\n throw result\n }\n } catch (error) {\n result = { error }\n }\n\n const state = result as EventStateObject\n\n if (asyncBehaviorIsEnabled) {\n setFormState(state?.error ? 'abort' : 'complete')\n }\n\n // Force the state to be set by a custom status\n if (state?.['status']) {\n setFormState(state?.['status'])\n }\n\n if (state?.error || state?.warning || state?.info) {\n setSubmitState(state)\n }\n } else {\n if (asyncBehaviorIsEnabled) {\n window.requestAnimationFrame(() => {\n setFormState(undefined)\n })\n\n if (!skipFieldValidation) {\n // Add a event listener to continue the submit after the pending state is resolved\n onSubmitContinueRef.current = () => {\n window.requestAnimationFrame(() => {\n // Do not call the validators again,\n // because we already did it in the first call\n // If they are async, we wait for them to finish anyway\n handleSubmitCall({ ...args, skipFieldValidation: true })\n })\n }\n }\n }\n\n onSubmitRequest?.()\n\n setShowAllErrors(true)\n }\n\n return internalDataRef.current\n },\n [\n setSubmitState,\n hasErrors,\n hasFieldWithAsyncValidator,\n hasFieldState,\n setFormState,\n onSubmitRequest,\n setShowAllErrors,\n ]\n )\n\n /**\n * Request to submit the whole form\n */\n const handleSubmit = useCallback<ContextState['handleSubmit']>(\n async ({ formElement = null } = {}) => {\n handleSubmitCall({\n enableAsyncBehaviour: isAsync(onSubmit),\n onSubmit: async () => {\n // - Mutate the data context\n const data = internalDataRef.current\n const filteredData = filterDataHandler(\n transformOut ? mutateDataHandler(data, transformOut) : data\n )\n const opts = {\n resetForm: () => {\n formElement?.reset?.()\n\n if (typeof window !== 'undefined') {\n if (sessionStorageId) {\n window.sessionStorage.removeItem(sessionStorageId)\n }\n }\n\n forceUpdate() // in order to fill \"empty fields\" again with their internal states\n },\n clearData: () => {\n internalDataRef.current = {} as Data\n if (id) {\n setSharedData?.({} as Data)\n } else {\n forceUpdate()\n }\n },\n }\n\n let result = undefined\n\n if (isAsync(onSubmit)) {\n result = await onSubmit(filteredData, opts)\n } else {\n result = onSubmit?.(filteredData, opts)\n }\n\n const completeResult = await onSubmitComplete?.(\n filteredData,\n result\n )\n if (completeResult) {\n result =\n Object.keys(result).length > 0\n ? { ...result, ...completeResult }\n : completeResult\n }\n\n if (scrollTopOnSubmit) {\n scrollToTop()\n }\n\n return result\n },\n })\n },\n [\n filterDataHandler,\n handleSubmitCall,\n id,\n mutateDataHandler,\n onSubmit,\n onSubmitComplete,\n scrollToTop,\n scrollTopOnSubmit,\n sessionStorageId,\n setSharedData,\n transformOut,\n ]\n )\n\n // Collect listeners to be called during form submit\n const fieldEventListenersRef = useRef<Array<EventListenerCall>>([])\n const setFieldEventListener = useCallback(\n (\n path: EventListenerCall['path'],\n type: EventListenerCall['type'],\n callback: EventListenerCall['callback']\n ) => {\n fieldEventListenersRef.current =\n fieldEventListenersRef.current.filter(({ path: p, type: t }) => {\n return !(p === path && t === type)\n })\n fieldEventListenersRef.current.push({ path, type, callback })\n },\n []\n )\n\n // Handle unresolved field states during async submit\n const onSubmitContinueRef = useRef<() => void>(null)\n if (!hasFieldState('pending')) {\n onSubmitContinueRef.current?.()\n onSubmitContinueRef.current = null\n }\n\n // - ajv validator routines\n useMountEffect(() => {\n if (schema) {\n ajvValidatorRef.current = ajvRef.current?.compile(schema)\n }\n\n // Validate the initial data\n validateData()\n })\n useUpdateEffect(() => {\n if (schema && schema !== cacheRef.current.schema) {\n cacheRef.current.schema = schema\n ajvValidatorRef.current = ajvRef.current?.compile(schema)\n\n validateData()\n forceUpdate()\n }\n }, [schema, validateData, forceUpdate])\n\n const onTimeout = useCallback(() => {\n setFormState(undefined)\n setSubmitState({\n info: undefined,\n warning: undefined,\n error: undefined,\n })\n }, [setFormState, setSubmitState])\n\n const { bufferedFormState: formState } = useFormStatusBuffer({\n formState: formStateRef.current,\n waitFor: hasFieldState('pending'),\n minimumAsyncBehaviorTime,\n asyncSubmitTimeout,\n onTimeout,\n })\n\n const submitState = submitStateRef.current\n const disabled =\n typeof rest?.['disabled'] === 'boolean'\n ? rest?.['disabled']\n : (formState === 'pending') === true\n ? true\n : undefined\n\n return (\n <Context.Provider\n value={{\n /** Method */\n handlePathChange,\n handlePathChangeUnvalidated,\n handleSubmit,\n handleMountField,\n handleUnMountField,\n handleSubmitCall,\n setFormState,\n setSubmitState,\n setShowAllErrors,\n setFieldEventListener,\n setFieldState,\n setFieldError,\n setFieldProps,\n setValueProps,\n hasErrors,\n hasFieldError,\n hasFieldState,\n validateData,\n updateDataValue,\n setData,\n filterDataHandler,\n addOnChangeHandler,\n scrollToTop,\n\n /** State handling */\n schema,\n disabled,\n required,\n formState,\n submitState,\n contextErrorMessages,\n hasContext: true,\n errors: errorsRef.current,\n showAllErrors: showAllErrorsRef.current,\n fieldPropsRef,\n valuePropsRef,\n ajvInstance: ajvRef.current,\n\n /** Additional */\n id,\n data: internalDataRef.current,\n props,\n ...rest,\n }}\n >\n <FieldPropsProvider\n FormStatus={\n globalStatusId\n ? {\n globalStatus: {\n id: globalStatusId,\n title: translation.errorSummaryTitle,\n show: showAllErrorsRef.current,\n },\n }\n : undefined\n }\n formElement={disabled ? { disabled: true } : undefined}\n locale={locale ? locale : undefined}\n translations={translations ? translations : undefined}\n >\n {children}\n </FieldPropsProvider>\n </Context.Provider>\n )\n}\n\ntype PathList = string[]\n\nexport function addListPath(paths: PathList, path: Path): PathList {\n return paths.includes(path) ? paths : paths.concat(path)\n}\n\nexport function removeListPath(paths: PathList, path: Path): PathList {\n return paths.filter((thisPath) => thisPath !== path)\n}\n\ntype FormStatusBufferProps = {\n minimumAsyncBehaviorTime?: Props<unknown>['minimumAsyncBehaviorTime']\n asyncSubmitTimeout?: Props<unknown>['asyncSubmitTimeout']\n formState: ContextState['formState']\n waitFor: boolean\n onTimeout: () => void\n}\n\nfunction useFormStatusBuffer(props: FormStatusBufferProps) {\n const {\n formState,\n waitFor,\n minimumAsyncBehaviorTime,\n asyncSubmitTimeout,\n onTimeout,\n } = props || {}\n\n const [, forceUpdate] = useReducer(() => ({}), {})\n const stateRef = useRef<SubmitState>()\n const nowRef = useRef<number | null>(null)\n const timeoutRef = useRef<{\n complete?: NodeJS.Timeout | null\n reset?: NodeJS.Timeout | null\n timeout?: NodeJS.Timeout | null\n }>({})\n\n const setState = useCallback(\n (state: SubmitState) => {\n stateRef.current = state\n forceUpdate()\n },\n [forceUpdate]\n )\n\n const clear = useCallback(() => {\n for (const key in timeoutRef.current) {\n clearTimeout(timeoutRef.current[key])\n }\n }, [])\n\n const hadCompleteRef = useRef(false)\n const activeElementRef = useRef<HTMLElement>(null)\n\n useEffect(() => {\n // This offset is used to calculate the delay,\n // which ensures that the form state is displayed for at least minimumAsyncBehaviorTime duration.\n // If the form was 'pending' for less than minimumAsyncBehaviorTime,\n // the delay will be the remaining time to reach minimumAsyncBehaviorTime.\n const isTest = process.env.NODE_ENV === 'test'\n const minimum =\n minimumAsyncBehaviorTime ??\n // make it testable\n (isTest ? 1 : 1000)\n\n if (stateRef.current && formState === 'error') {\n clear()\n setState(undefined)\n return\n }\n\n if (formState === 'abort') {\n clear()\n setState('abort')\n\n timeoutRef.current.reset = setTimeout(() => {\n nowRef.current = 0\n setState(undefined)\n }, minimum)\n return\n }\n\n if (formState === 'complete') {\n hadCompleteRef.current = true\n }\n\n if (formState === 'pending' && stateRef.current !== 'pending') {\n activeElementRef.current = document.activeElement as HTMLElement\n clear()\n nowRef.current = Date.now()\n hadCompleteRef.current = false\n setState('pending')\n } else if (stateRef.current === 'pending') {\n const offset = Math.max(Date.now() - nowRef.current)\n const delay = isTest ? minimum : Math.max(minimum - offset, 0)\n\n if (!waitFor) {\n timeoutRef.current.complete = setTimeout(() => {\n if (hadCompleteRef.current) {\n setState('complete')\n }\n window.requestAnimationFrame(() => {\n activeElementRef.current?.focus?.()\n })\n }, delay)\n\n timeoutRef.current.reset = setTimeout(() => {\n nowRef.current = 0\n setState(undefined)\n clear()\n }, delay + minimum)\n }\n }\n\n if (stateRef.current === 'pending') {\n timeoutRef.current.timeout = setTimeout(() => {\n clear()\n setState(undefined)\n onTimeout?.()\n }, asyncSubmitTimeout ?? 30000)\n }\n\n return clear\n }, [\n clear,\n minimumAsyncBehaviorTime,\n formState,\n setState,\n waitFor,\n asyncSubmitTimeout,\n onTimeout,\n ])\n\n return { bufferedFormState: stateRef.current }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Provider.js","names":["React","useRef","useMemo","useCallback","useReducer","useEffect","useContext","pointer","makeAjvInstance","ajvErrorsToFormErrors","debounce","FieldPropsProvider","useMountEffect","useUpdateEffect","isAsync","useSharedState","useTranslation","Context","structuredClone","useLayoutEffect","window","isArrayJsonPointer","Provider","props","_sharedAttachments$da","forceUpdate","id","globalStatusId","defaultData","data","schema","onChange","onPathChange","onSubmit","onSubmitRequest","onSubmitComplete","scrollTopOnSubmit","minimumAsyncBehaviorTime","asyncSubmitTimeout","sessionStorageId","ajvInstance","transformIn","transformOut","filterSubmitData","filterData","locale","translations","required","errorMessages","contextErrorMessages","children","rest","_objectWithoutProperties","_excluded","undefined","Error","nestedContext","hasContext","translation","Form","ajvRef","mountedFieldPathsRef","hasVisibleErrorRef","errorsRef","showAllErrorsRef","setShowAllErrors","showAllErrors","current","setHasVisibleError","path","hasError","submitStateRef","setSubmitState","state","Object","assign","formStateRef","setFormState","formState","fieldErrorRef","fieldStateRef","initialData","_window$sessionStorag","sessionDataJSON","sessionStorage","getItem","JSON","parse","internalDataRef","ajvValidatorRef","executeAjvValidator","_ajvValidatorRef$curr","call","errors","validateData","checkFieldStateFor","_errorsRef$current","Boolean","hasFieldState","some","hasFieldError","p","hasErrors","setFieldError","error","setFieldState","fieldState","mutateDataHandler","filter","remove","arguments","length","mutate","result","set","entries","fieldPropsRef","forEach","_ref","exists","has","_fieldErrorRef$curren","value","get","internal","runFilter","_ref2","condition","_fieldPropsRef$curren","_fieldErrorRef$curren2","wildcardPaths","_ref3","includes","parts","split","traverse","subData","subPath","idx","push","list","Array","isArray","_","i","filterDataHandler","valuePropsRef","setFieldProps","setValueProps","hasFieldWithAsyncValidator","validator","onBlurValidator","sharedData","sharedAttachments","setSharedData","extendSharedData","extend","extendAttachment","rerenderUseDataHook","cacheRef","shared","hasUsedInitialData","update","_objectSpread","storeInSession","_window$sessionStorag2","setItem","stringify","process","env","NODE_ENV","updateDataValue","_internalDataRef$curr","givenData","match","newData","e","setData","handlePathChangeUnvalidated","handlePathChange","transformedData","cb","changeHandlerStackRef","addOnChangeHandler","callback","handleMountField","addListPath","handleUnMountField","removeListPath","scrollToTop","_window","_window$scrollTo","scrollTo","top","behavior","handleSubmitCall","args","enableAsyncBehaviour","skipFieldValidation","skipErrorCheck","asyncBehaviorIsEnabled","type","fieldEventListenersRef","warning","info","requestAnimationFrame","onSubmitContinueRef","handleSubmit","formElement","filteredData","opts","resetForm","_formElement$reset","reset","removeItem","clearData","completeResult","keys","setFieldEventListener","_ref4","t","_onSubmitContinueRef$","_ajvRef$current","compile","_ajvRef$current2","onTimeout","bufferedFormState","useFormStatusBuffer","waitFor","submitState","disabled","createElement","hasVisibleError","FormStatus","globalStatus","title","errorSummaryTitle","show","paths","concat","thisPath","stateRef","nowRef","timeoutRef","setState","clear","key","clearTimeout","hadCompleteRef","activeElementRef","isTest","minimum","setTimeout","document","activeElement","Date","now","offset","Math","max","delay","complete","_activeElementRef$cur","_activeElementRef$cur2","focus","timeout"],"sources":["../../../../../../src/extensions/forms/DataContext/Provider/Provider.tsx"],"sourcesContent":["import React, {\n useRef,\n useMemo,\n useCallback,\n useReducer,\n useEffect,\n useContext,\n} from 'react'\nimport pointer, { JsonObject } from 'json-pointer'\nimport { ValidateFunction } from 'ajv/dist/2020'\nimport {\n Ajv,\n makeAjvInstance,\n ajvErrorsToFormErrors,\n} from '../../utils/ajv'\nimport {\n FormError,\n CustomErrorMessagesWithPaths,\n AllJSONSchemaVersions,\n FieldProps,\n SubmitState,\n Path,\n EventStateObject,\n OnSubmit,\n OnChange,\n EventReturnWithStateObject,\n ValueProps,\n} from '../../types'\nimport { debounce } from '../../../../shared/helpers'\nimport FieldPropsProvider from '../../Form/FieldProps'\nimport useMountEffect from '../../../../shared/helpers/useMountEffect'\nimport useUpdateEffect from '../../../../shared/helpers/useUpdateEffect'\nimport { isAsync } from '../../../../shared/helpers/isAsync'\nimport { useSharedState } from '../../../../shared/helpers/useSharedState'\nimport { ContextProps } from '../../../../shared/Context'\nimport useTranslation from '../../hooks/useTranslation'\nimport Context, {\n ContextState,\n EventListenerCall,\n FilterData,\n TransformData,\n} from '../Context'\n\n/**\n * Deprecated, as it is supported by all major browsers and Node.js >=v18\n * So its a question of time, when we will remove this polyfill\n */\nimport structuredClone from '@ungap/structured-clone'\n\n// SSR warning fix: https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\nconst useLayoutEffect =\n typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect\n\nexport interface Props<Data extends JsonObject> {\n /**\n * Unique ID to communicate with the hook Form.useData\n */\n id?: string\n /**\n * Unique ID to connect with a GlobalStatus\n */\n globalStatusId?: string\n /**\n * Default source data, only used if no other source is available, and not leading to updates if changed after mount\n */\n defaultData?: Data\n /**\n * Source data, will be used instead of defaultData, and leading to updates if changed after mount\n */\n data?: Data\n /**\n * JSON Schema to validate the data against.\n */\n schema?: AllJSONSchemaVersions<Data>\n /**\n * Custom Ajv instance, if you want to use your own\n */\n ajvInstance?: Ajv\n /**\n * Custom error messages for the whole data set\n */\n errorMessages?: CustomErrorMessagesWithPaths\n /**\n * Filter the `onSubmit` output data, based on your criteria: `({ path, value, data, props, internal }) => !props?.disabled`. It will iterate on each data entry (/path). Return false to exclude the entry.\n */\n filterSubmitData?: FilterData\n /**\n * @deprecated Use `filterSubmitData` instead\n */\n filterData?: FilterData\n /**\n * Transform the data context (internally as well) based on your criteria: `({ path, value, data, props, internal }) => 'new value'`. It will iterate on each data entry (/path).\n */\n transformIn?: TransformData\n /**\n * Mutate the data before it enters onSubmit or onChange based on your criteria: `({ path, value, data, props, internal }) => 'new value'`. It will iterate on each data entry (/path).\n */\n transformOut?: TransformData\n /**\n * Change handler for the whole data set.\n * You can provide an async function to show an indicator on the current label during a field change.\n */\n onChange?: OnChange<Data>\n /**\n * Change handler for each value\n */\n onPathChange?: (\n path: Path,\n value: any\n ) =>\n | EventReturnWithStateObject\n | void\n | Promise<EventReturnWithStateObject | void>\n /**\n * Will emit on a form submit – if validation has passed.\n * You can provide an async function to shows a submit indicator during submit. All form elements will be disabled during the submit.\n */\n onSubmit?: OnSubmit<Data>\n /**\n * Submit was requested, but data was invalid\n */\n onSubmitRequest?: () => void\n /**\n * Will be called when the onSubmit is finished and had not errors\n */\n onSubmitComplete?: (\n data: Data,\n /**\n * The result of the onSubmit function\n */\n result: unknown\n ) =>\n | EventReturnWithStateObject\n | void\n | Promise<EventReturnWithStateObject | void>\n /**\n * Minimum time to display the submit indicator.\n */\n minimumAsyncBehaviorTime?: number\n /**\n * The maximum time to display the submit indicator before it changes back to normal. In case something went wrong during submission.\n */\n asyncSubmitTimeout?: number\n /**\n * Scroll to top on submit\n */\n scrollTopOnSubmit?: boolean\n /**\n * Key for caching the data in session storage\n */\n sessionStorageId?: string\n /**\n * Locale to use for all nested Eufemia components\n */\n locale?: ContextProps['locale']\n /**\n * Provide your own translations. Use the same format as defined in the translation files\n */\n translations?: ContextProps['translations']\n /**\n * Make all fields required\n */\n required?: boolean\n\n children: React.ReactNode\n}\n\nconst isArrayJsonPointer = /^\\/\\d+(\\/|$)/\n\nexport default function Provider<Data extends JsonObject>(\n props: Props<Data>\n) {\n const [, forceUpdate] = useReducer(() => ({}), {})\n\n const {\n id,\n globalStatusId = 'main',\n defaultData,\n data,\n schema,\n onChange,\n onPathChange,\n onSubmit,\n onSubmitRequest,\n onSubmitComplete,\n scrollTopOnSubmit,\n minimumAsyncBehaviorTime,\n asyncSubmitTimeout,\n sessionStorageId,\n ajvInstance,\n transformIn,\n transformOut,\n filterSubmitData,\n filterData,\n locale,\n translations,\n required,\n errorMessages: contextErrorMessages,\n children,\n ...rest\n } = props\n\n // Prop error handling\n if (data !== undefined && sessionStorageId !== undefined) {\n throw new Error(\n 'Use \"defaultData\" instead of \"data\" when using sessionStorageId'\n )\n }\n\n const nestedContext = useContext(Context)\n if (nestedContext?.hasContext) {\n throw new Error('DataContext (Form.Handler) can not be nested')\n }\n\n // - Locale\n const translation = useTranslation().Form\n\n // - Ajv\n const ajvRef = useRef<Ajv>(makeAjvInstance(ajvInstance))\n\n // - Paths\n const mountedFieldPathsRef = useRef<Path[]>([])\n\n // - Errors from provider validation (the whole data set)\n const hasVisibleErrorRef = useRef<Record<Path, boolean>>({})\n const errorsRef = useRef<Record<Path, FormError> | undefined>()\n const showAllErrorsRef = useRef<boolean>(false)\n const setShowAllErrors = useCallback((showAllErrors: boolean) => {\n showAllErrorsRef.current = showAllErrors\n forceUpdate()\n }, [])\n const setHasVisibleError = useCallback(\n (path: Path, hasError: boolean) => {\n if (hasError) {\n hasVisibleErrorRef.current[path] = hasError\n } else {\n delete hasVisibleErrorRef.current[path]\n }\n forceUpdate()\n },\n []\n )\n const submitStateRef = useRef<Partial<EventStateObject>>({})\n const setSubmitState = useCallback((state: EventStateObject) => {\n Object.assign(submitStateRef.current, state)\n forceUpdate()\n }, [])\n\n // - Progress\n const formStateRef = useRef<SubmitState>()\n const setFormState = useCallback((formState: SubmitState) => {\n formStateRef.current = formState\n forceUpdate()\n }, [])\n\n // - States (e.g. error) reported by fields, based on their direct validation rules\n const fieldErrorRef = useRef<Record<Path, Error>>({})\n const fieldStateRef = useRef<Record<Path, SubmitState>>({})\n\n // - Data\n const initialData = useMemo<Data>(() => {\n if (sessionStorageId && typeof window !== 'undefined') {\n const sessionDataJSON =\n window.sessionStorage?.getItem(sessionStorageId)\n if (sessionDataJSON) {\n return JSON.parse(sessionDataJSON)\n }\n }\n return data ?? defaultData\n // eslint-disable-next-line react-hooks/exhaustive-deps -- Avoid triggering code that should only run initially\n }, [])\n const internalDataRef = useRef<Data>(initialData)\n\n // - Validator\n const ajvValidatorRef = useRef<ValidateFunction>()\n const executeAjvValidator = useCallback(() => {\n if (!ajvValidatorRef.current) {\n // No schema-based validator. Assume data is valid.\n return\n }\n\n if (!ajvValidatorRef.current?.(internalDataRef.current)) {\n // Errors found\n errorsRef.current = ajvErrorsToFormErrors(\n ajvValidatorRef.current.errors,\n internalDataRef.current\n )\n } else {\n errorsRef.current = undefined\n }\n }, [])\n const validateData = useCallback(() => {\n if (!ajvValidatorRef.current) {\n // No schema-based validator. Assume data is valid.\n return\n }\n\n executeAjvValidator()\n forceUpdate()\n }, [executeAjvValidator])\n\n // - Error handling\n const checkFieldStateFor = useCallback(\n (path: Path, state: SubmitState) => {\n return Boolean(\n state === 'error'\n ? errorsRef.current?.[path] instanceof Error ||\n fieldErrorRef.current[path] instanceof Error\n : fieldStateRef.current[path] === state\n )\n },\n []\n )\n const hasFieldState = useCallback(\n (state: SubmitState) => {\n return mountedFieldPathsRef.current.some((path) => {\n return checkFieldStateFor(path, state)\n })\n },\n [checkFieldStateFor]\n )\n const hasFieldError = useCallback(\n (path: Path) => {\n return mountedFieldPathsRef.current.some((p) => {\n return p === path && checkFieldStateFor(p, 'error')\n })\n },\n [checkFieldStateFor]\n )\n const hasErrors = useCallback(() => {\n return hasFieldState('error')\n }, [hasFieldState])\n\n /**\n * Sets the error state for a specific path\n */\n const setFieldError = useCallback(\n (path: Path, error: Error | FormError) => {\n fieldErrorRef.current[path] = error\n },\n []\n )\n\n /**\n * Sets the field state for a specific path\n */\n const setFieldState = useCallback(\n (path: Path, fieldState: SubmitState) => {\n if (fieldState !== fieldStateRef.current[path]) {\n // The state for the target value was changed\n fieldStateRef.current[path] = fieldState\n forceUpdate()\n }\n },\n []\n )\n\n /**\n * Mutate the data set based on the filterData function\n */\n const mutateDataHandler = useCallback(\n (data: Data, filter: FilterData | TransformData, remove = false) => {\n const mutate = (path: Path, result: boolean | unknown) => {\n if (remove) {\n if (result === false) {\n data = structuredClone(data)\n pointer.remove(data, path)\n }\n } else {\n if (typeof result !== 'undefined') {\n data = structuredClone(data)\n pointer.set(data, path, result)\n }\n }\n }\n\n if (typeof filter === 'function') {\n Object.entries(fieldPropsRef.current).forEach(([path, props]) => {\n const exists = pointer.has(data, path)\n if (exists) {\n const value = pointer.get(data, path)\n const internal = {\n error: fieldErrorRef.current?.[path],\n }\n const result = filter({\n path,\n value,\n data: internalDataRef.current,\n props,\n internal,\n })\n mutate(path, result)\n }\n })\n\n return data\n } else if (filter) {\n const runFilter = ({ path, condition }) => {\n const exists = pointer.has(data, path)\n if (exists) {\n const value = pointer.get(data, path)\n const props = fieldPropsRef.current?.[path]\n const internal = { error: fieldErrorRef.current?.[path] }\n const result =\n typeof condition === 'function'\n ? condition({\n value,\n data: internalDataRef.current,\n props,\n internal,\n })\n : condition\n mutate(path, result)\n }\n }\n\n const wildcardPaths = []\n\n Object.entries(filter).forEach(([path, condition]) => {\n if (path.includes('*')) {\n const parts = path.split(/\\/\\*/g)\n const exists = pointer.has(data, parts[0])\n if (exists) {\n const traverse = (\n subData: unknown,\n subPath: string,\n idx: number\n ) => {\n if (idx === parts.length - 1) {\n wildcardPaths.push({ path: subPath, condition })\n return\n }\n const list = pointer.get(subData, subPath)\n if (Array.isArray(list)) {\n list.forEach((_, i) => {\n traverse(\n list[i],\n `${subPath}/${i}${parts[idx + 1]}`,\n idx + 1\n )\n })\n }\n }\n traverse(data, parts[0], 0)\n }\n } else {\n runFilter({ path, condition })\n }\n })\n\n wildcardPaths.forEach(runFilter)\n\n return data\n }\n\n return data\n },\n []\n )\n\n /**\n * Filter the data set based on the filterData function\n */\n const filterDataHandler = useCallback(\n (data: Data, filter = filterData || filterSubmitData) => {\n if (filter) {\n return mutateDataHandler(data, filter, true)\n }\n\n return data\n },\n [filterData, filterSubmitData, mutateDataHandler]\n )\n\n const fieldPropsRef = useRef<Record<Path, FieldProps>>({})\n const valuePropsRef = useRef<Record<Path, ValueProps<unknown>>>({})\n const setFieldProps = useCallback(\n (path: Path, props: Record<string, unknown>) => {\n fieldPropsRef.current[path] = props\n },\n []\n )\n const setValueProps = useCallback(\n (path: Path, props: Record<string, unknown>) => {\n valuePropsRef.current[path] = props\n },\n []\n )\n const hasFieldWithAsyncValidator = useCallback(() => {\n for (const path in fieldPropsRef.current) {\n if (mountedFieldPathsRef.current.includes(path)) {\n const props = fieldPropsRef.current[path]\n if (isAsync(props.validator) || isAsync(props.onBlurValidator)) {\n return true\n }\n }\n }\n\n return false\n }, [])\n\n // - Shared state\n const sharedData = useSharedState<Data>(id)\n const sharedAttachments = useSharedState<{\n filterDataHandler?: Props<Data>['filterSubmitData']\n hasErrors?: ContextState['hasErrors']\n hasFieldError?: ContextState['hasFieldError']\n setShowAllErrors?: ContextState['setShowAllErrors']\n setSubmitState?: ContextState['setSubmitState']\n rerenderUseDataHook?: () => void\n }>(id + '-attachments')\n\n const setSharedData = sharedData.set\n const extendSharedData = sharedData.extend\n const extendAttachment = sharedAttachments.extend\n const rerenderUseDataHook = sharedAttachments.data?.rerenderUseDataHook\n\n const cacheRef = useRef({\n data,\n schema,\n shared: sharedData.data,\n hasUsedInitialData: false,\n })\n\n internalDataRef.current = useMemo(() => {\n // NB: \"sharedData.data\" is only available on a rerender.\n // Update the shared state, if initialData is given and no shared state is available.\n // We do almost the same later in a useLayoutEffect, but we need to do it here as well, so we set the data as early as possible.\n if (id && initialData && !sharedData.data) {\n sharedData.update(initialData)\n }\n\n // Merge both internal data and the shared state, if it both where given\n if (\n id &&\n initialData &&\n sharedData.data &&\n cacheRef.current.shared === sharedData.data &&\n internalDataRef.current === initialData\n ) {\n return {\n ...internalDataRef.current,\n ...sharedData.data,\n }\n }\n\n // Use shared state if no initial and initial data, and the shared state exists\n if (\n id &&\n !initialData &&\n !internalDataRef.current &&\n sharedData.data &&\n cacheRef.current.shared === sharedData.data\n ) {\n return sharedData.data\n }\n\n // Merge the internal data with the shared state, if the shared was updated and not the same as internal data\n if (\n id &&\n sharedData.data &&\n cacheRef.current.shared !== sharedData.data &&\n sharedData.data !== internalDataRef.current\n ) {\n cacheRef.current.shared = sharedData.data\n return {\n ...internalDataRef.current,\n ...sharedData.data,\n }\n }\n\n // When external data has changed, update the internal data\n if (data !== cacheRef.current.data) {\n cacheRef.current.data = data\n return data\n }\n\n return internalDataRef.current\n }, [data, id, initialData, sharedData])\n\n useLayoutEffect(() => {\n // Set the shared state, if initialData was given\n if (id && initialData && !sharedData.data) {\n extendSharedData?.(initialData)\n }\n }, [id, initialData, extendSharedData, sharedData.data])\n\n useMemo(() => {\n executeAjvValidator()\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [internalDataRef.current]) // run validation when internal data has changed\n\n useLayoutEffect(() => {\n if (id) {\n extendAttachment?.({\n filterDataHandler,\n hasErrors,\n hasFieldError,\n setShowAllErrors,\n setSubmitState,\n })\n if (filterData || filterSubmitData) {\n rerenderUseDataHook?.()\n }\n }\n }, [\n extendAttachment,\n filterData,\n filterDataHandler,\n filterSubmitData,\n hasErrors,\n hasFieldError,\n id,\n rerenderUseDataHook,\n setShowAllErrors,\n setSubmitState,\n ])\n\n const storeInSession = useMemo(() => {\n return debounce(\n () => {\n window.sessionStorage?.setItem(\n sessionStorageId,\n JSON.stringify(internalDataRef.current)\n )\n },\n process.env.NODE_ENV === 'test' ? 1 : 800\n )\n }, [sessionStorageId])\n\n /**\n * Update the data set\n */\n const updateDataValue: ContextState['updateDataValue'] = useCallback(\n (path, value) => {\n if (!path) {\n return\n }\n\n const givenData = (\n path === '/'\n ? // When setting the root of the data, the whole data set should be the new value\n value\n : // For sub paths, use the existing data set (or empty array/object), but modify it below (since pointer.set is not immutable)\n internalDataRef.current ??\n (path.match(isArrayJsonPointer) ? [] : {})\n ) as Data\n\n let newData: Data = null\n try {\n // Update the data even if it contains errors. Submit/SubmitRequest will be called accordingly\n newData = structuredClone(givenData)\n } catch (e) {\n newData = givenData\n }\n\n if (path !== '/') {\n pointer.set(newData, path, value)\n }\n\n // - Mutate the data context\n if (transformIn) {\n newData = mutateDataHandler(newData, transformIn)\n }\n\n internalDataRef.current = newData\n\n if (id) {\n // Will ensure that Form.getData() gets the correct data\n extendSharedData?.(newData)\n if (filterData || filterSubmitData) {\n rerenderUseDataHook?.()\n }\n }\n\n if (sessionStorageId && typeof window !== 'undefined') {\n storeInSession()\n }\n\n forceUpdate()\n },\n [\n extendSharedData,\n filterData,\n filterSubmitData,\n id,\n mutateDataHandler,\n rerenderUseDataHook,\n sessionStorageId,\n storeInSession,\n transformIn,\n ]\n )\n\n const setData = useCallback((newData: Data) => {\n internalDataRef.current = newData\n forceUpdate()\n }, [])\n\n /**\n * Update the data set on user interaction (unvalidated)\n */\n const handlePathChangeUnvalidated: ContextState['handlePathChange'] =\n useCallback(\n async (path, value) => {\n if (!path) {\n return null\n }\n\n updateDataValue(path, value)\n\n if (isAsync(onPathChange)) {\n await onPathChange?.(path, value)\n } else {\n onPathChange?.(path, value)\n }\n },\n [onPathChange, updateDataValue]\n )\n\n /**\n * Update the data set on user interaction\n */\n const handlePathChange: ContextState['handlePathChange'] = useCallback(\n async (path, value = '_undefined_') => {\n if (!path) {\n return null\n }\n\n if (value !== '_undefined_') {\n handlePathChangeUnvalidated(path, value)\n }\n\n showAllErrorsRef.current = false\n\n validateData()\n\n const data = internalDataRef.current as Data\n const transformedData = transformOut\n ? mutateDataHandler(data, transformOut)\n : data\n\n for (const cb of changeHandlerStackRef.current) {\n if (isAsync(onChange)) {\n await cb(transformedData)\n } else {\n cb(transformedData)\n }\n }\n\n if (isAsync(onChange)) {\n return await onChange(transformedData)\n }\n\n return onChange?.(transformedData)\n },\n [\n handlePathChangeUnvalidated,\n mutateDataHandler,\n onChange,\n transformOut,\n validateData,\n ]\n )\n\n const changeHandlerStackRef = useRef<Array<OnChange<Data>>>([])\n const addOnChangeHandler = useCallback(\n (callback: (data: unknown) => void) => {\n const exists = changeHandlerStackRef.current.some((cb) => {\n return callback === cb\n })\n if (!exists) {\n changeHandlerStackRef.current.push(callback)\n }\n },\n []\n )\n\n // - Mounted fields\n const handleMountField = useCallback((path: Path) => {\n mountedFieldPathsRef.current = addListPath(\n mountedFieldPathsRef.current,\n path\n )\n }, [])\n\n const handleUnMountField = useCallback((path: Path) => {\n mountedFieldPathsRef.current = removeListPath(\n mountedFieldPathsRef.current,\n path\n )\n }, [])\n\n // - Features\n const scrollToTop = useCallback(() => {\n if (typeof window !== 'undefined') {\n window?.scrollTo?.({ top: 0, behavior: 'smooth' })\n }\n }, [])\n\n /**\n * Shared logic dedicated to submit the whole form\n */\n const handleSubmitCall = useCallback<ContextState['handleSubmitCall']>(\n async (args) => {\n const {\n onSubmit,\n enableAsyncBehaviour,\n skipFieldValidation,\n skipErrorCheck,\n } = args\n\n setSubmitState({ error: undefined })\n\n const asyncBehaviorIsEnabled =\n (skipErrorCheck\n ? true\n : // Don't enable async behaviour if we have errors, but when we have a pending state\n !hasErrors() || hasFieldState('pending')) &&\n (enableAsyncBehaviour || hasFieldWithAsyncValidator())\n\n if (asyncBehaviorIsEnabled) {\n setFormState('pending')\n }\n\n // Just call the submit listeners \"once\", and not on the retry/recall\n if (!skipFieldValidation) {\n for (const {\n path,\n type,\n callback,\n } of fieldEventListenersRef.current) {\n if (\n type === 'onSubmit' &&\n mountedFieldPathsRef.current.includes(path)\n ) {\n // Call all submit listener callbacks (e.g. to validate fields)\n if (asyncBehaviorIsEnabled) {\n await callback()\n } else {\n callback()\n }\n }\n }\n }\n\n if (\n !(skipErrorCheck ? false : hasErrors()) &&\n !hasFieldState('pending') &&\n (skipFieldValidation ? true : !hasFieldState('error'))\n ) {\n let result: EventStateObject | unknown\n\n try {\n result = await onSubmit()\n\n if (result instanceof Error) {\n throw result\n }\n } catch (error) {\n result = { error }\n }\n\n const state = result as EventStateObject\n\n if (asyncBehaviorIsEnabled) {\n setFormState(state?.error ? 'abort' : 'complete')\n }\n\n // Force the state to be set by a custom status\n if (state?.['status']) {\n setFormState(state?.['status'])\n }\n\n if (state?.error || state?.warning || state?.info) {\n setSubmitState(state)\n }\n } else {\n if (asyncBehaviorIsEnabled) {\n window.requestAnimationFrame(() => {\n setFormState(undefined)\n })\n\n if (!skipFieldValidation) {\n // Add a event listener to continue the submit after the pending state is resolved\n onSubmitContinueRef.current = () => {\n window.requestAnimationFrame(() => {\n // Do not call the validators again,\n // because we already did it in the first call\n // If they are async, we wait for them to finish anyway\n handleSubmitCall({ ...args, skipFieldValidation: true })\n })\n }\n }\n }\n\n onSubmitRequest?.()\n\n setShowAllErrors(true)\n }\n\n return internalDataRef.current\n },\n [\n setSubmitState,\n hasErrors,\n hasFieldWithAsyncValidator,\n hasFieldState,\n setFormState,\n onSubmitRequest,\n setShowAllErrors,\n ]\n )\n\n /**\n * Request to submit the whole form\n */\n const handleSubmit = useCallback<ContextState['handleSubmit']>(\n async ({ formElement = null } = {}) => {\n handleSubmitCall({\n enableAsyncBehaviour: isAsync(onSubmit),\n onSubmit: async () => {\n // - Mutate the data context\n const data = internalDataRef.current\n const filteredData = filterDataHandler(\n transformOut ? mutateDataHandler(data, transformOut) : data\n )\n const opts = {\n resetForm: () => {\n formElement?.reset?.()\n\n if (typeof window !== 'undefined') {\n if (sessionStorageId) {\n window.sessionStorage.removeItem(sessionStorageId)\n }\n }\n\n forceUpdate() // in order to fill \"empty fields\" again with their internal states\n },\n clearData: () => {\n internalDataRef.current = {} as Data\n if (id) {\n setSharedData?.({} as Data)\n } else {\n forceUpdate()\n }\n },\n }\n\n let result = undefined\n\n if (isAsync(onSubmit)) {\n result = await onSubmit(filteredData, opts)\n } else {\n result = onSubmit?.(filteredData, opts)\n }\n\n const completeResult = await onSubmitComplete?.(\n filteredData,\n result\n )\n if (completeResult) {\n result =\n Object.keys(result).length > 0\n ? { ...result, ...completeResult }\n : completeResult\n }\n\n if (scrollTopOnSubmit) {\n scrollToTop()\n }\n\n return result\n },\n })\n },\n [\n filterDataHandler,\n handleSubmitCall,\n id,\n mutateDataHandler,\n onSubmit,\n onSubmitComplete,\n scrollToTop,\n scrollTopOnSubmit,\n sessionStorageId,\n setSharedData,\n transformOut,\n ]\n )\n\n // Collect listeners to be called during form submit\n const fieldEventListenersRef = useRef<Array<EventListenerCall>>([])\n const setFieldEventListener = useCallback(\n (\n path: EventListenerCall['path'],\n type: EventListenerCall['type'],\n callback: EventListenerCall['callback']\n ) => {\n fieldEventListenersRef.current =\n fieldEventListenersRef.current.filter(({ path: p, type: t }) => {\n return !(p === path && t === type)\n })\n fieldEventListenersRef.current.push({ path, type, callback })\n },\n []\n )\n\n // Handle unresolved field states during async submit\n const onSubmitContinueRef = useRef<() => void>(null)\n if (!hasFieldState('pending')) {\n onSubmitContinueRef.current?.()\n onSubmitContinueRef.current = null\n }\n\n // - ajv validator routines\n useMountEffect(() => {\n if (schema) {\n ajvValidatorRef.current = ajvRef.current?.compile(schema)\n }\n\n // Validate the initial data\n validateData()\n })\n useUpdateEffect(() => {\n if (schema && schema !== cacheRef.current.schema) {\n cacheRef.current.schema = schema\n ajvValidatorRef.current = ajvRef.current?.compile(schema)\n\n validateData()\n forceUpdate()\n }\n }, [schema, validateData, forceUpdate])\n\n const onTimeout = useCallback(() => {\n setFormState(undefined)\n setSubmitState({\n info: undefined,\n warning: undefined,\n error: undefined,\n })\n }, [setFormState, setSubmitState])\n\n const { bufferedFormState: formState } = useFormStatusBuffer({\n formState: formStateRef.current,\n waitFor: hasFieldState('pending'),\n minimumAsyncBehaviorTime,\n asyncSubmitTimeout,\n onTimeout,\n })\n\n const submitState = submitStateRef.current\n const disabled =\n typeof rest?.['disabled'] === 'boolean'\n ? rest?.['disabled']\n : (formState === 'pending') === true\n ? true\n : undefined\n\n return (\n <Context.Provider\n value={{\n /** Method */\n handlePathChange,\n handlePathChangeUnvalidated,\n handleSubmit,\n handleMountField,\n handleUnMountField,\n handleSubmitCall,\n setFormState,\n setSubmitState,\n setShowAllErrors,\n setHasVisibleError,\n setFieldEventListener,\n setFieldState,\n setFieldError,\n setFieldProps,\n setValueProps,\n hasErrors,\n hasFieldError,\n hasFieldState,\n validateData,\n updateDataValue,\n setData,\n filterDataHandler,\n addOnChangeHandler,\n scrollToTop,\n\n /** State handling */\n schema,\n disabled,\n required,\n formState,\n submitState,\n contextErrorMessages,\n hasContext: true,\n errors: errorsRef.current,\n showAllErrors: showAllErrorsRef.current,\n hasVisibleError:\n Object.keys(hasVisibleErrorRef.current).length > 0,\n fieldPropsRef,\n valuePropsRef,\n ajvInstance: ajvRef.current,\n\n /** Additional */\n id,\n data: internalDataRef.current,\n props,\n ...rest,\n }}\n >\n <FieldPropsProvider\n FormStatus={\n globalStatusId\n ? {\n globalStatus: {\n id: globalStatusId,\n title: translation.errorSummaryTitle,\n show: showAllErrorsRef.current,\n },\n }\n : undefined\n }\n formElement={disabled ? { disabled: true } : undefined}\n locale={locale ? locale : undefined}\n translations={translations ? translations : undefined}\n >\n {children}\n </FieldPropsProvider>\n </Context.Provider>\n )\n}\n\ntype PathList = string[]\n\nexport function addListPath(paths: PathList, path: Path): PathList {\n return paths.includes(path) ? paths : paths.concat(path)\n}\n\nexport function removeListPath(paths: PathList, path: Path): PathList {\n return paths.filter((thisPath) => thisPath !== path)\n}\n\ntype FormStatusBufferProps = {\n minimumAsyncBehaviorTime?: Props<unknown>['minimumAsyncBehaviorTime']\n asyncSubmitTimeout?: Props<unknown>['asyncSubmitTimeout']\n formState: ContextState['formState']\n waitFor: boolean\n onTimeout: () => void\n}\n\nfunction useFormStatusBuffer(props: FormStatusBufferProps) {\n const {\n formState,\n waitFor,\n minimumAsyncBehaviorTime,\n asyncSubmitTimeout,\n onTimeout,\n } = props || {}\n\n const [, forceUpdate] = useReducer(() => ({}), {})\n const stateRef = useRef<SubmitState>()\n const nowRef = useRef<number | null>(null)\n const timeoutRef = useRef<{\n complete?: NodeJS.Timeout | null\n reset?: NodeJS.Timeout | null\n timeout?: NodeJS.Timeout | null\n }>({})\n\n const setState = useCallback(\n (state: SubmitState) => {\n stateRef.current = state\n forceUpdate()\n },\n [forceUpdate]\n )\n\n const clear = useCallback(() => {\n for (const key in timeoutRef.current) {\n clearTimeout(timeoutRef.current[key])\n }\n }, [])\n\n const hadCompleteRef = useRef(false)\n const activeElementRef = useRef<HTMLElement>(null)\n\n useEffect(() => {\n // This offset is used to calculate the delay,\n // which ensures that the form state is displayed for at least minimumAsyncBehaviorTime duration.\n // If the form was 'pending' for less than minimumAsyncBehaviorTime,\n // the delay will be the remaining time to reach minimumAsyncBehaviorTime.\n const isTest = process.env.NODE_ENV === 'test'\n const minimum =\n minimumAsyncBehaviorTime ??\n // make it testable\n (isTest ? 1 : 1000)\n\n if (stateRef.current && formState === 'error') {\n clear()\n setState(undefined)\n return\n }\n\n if (formState === 'abort') {\n clear()\n setState('abort')\n\n timeoutRef.current.reset = setTimeout(() => {\n nowRef.current = 0\n setState(undefined)\n }, minimum)\n return\n }\n\n if (formState === 'complete') {\n hadCompleteRef.current = true\n }\n\n if (formState === 'pending' && stateRef.current !== 'pending') {\n activeElementRef.current = document.activeElement as HTMLElement\n clear()\n nowRef.current = Date.now()\n hadCompleteRef.current = false\n setState('pending')\n } else if (stateRef.current === 'pending') {\n const offset = Math.max(Date.now() - nowRef.current)\n const delay = isTest ? minimum : Math.max(minimum - offset, 0)\n\n if (!waitFor) {\n timeoutRef.current.complete = setTimeout(() => {\n if (hadCompleteRef.current) {\n setState('complete')\n }\n window.requestAnimationFrame(() => {\n activeElementRef.current?.focus?.()\n })\n }, delay)\n\n timeoutRef.current.reset = setTimeout(() => {\n nowRef.current = 0\n setState(undefined)\n clear()\n }, delay + minimum)\n }\n }\n\n if (stateRef.current === 'pending') {\n timeoutRef.current.timeout = setTimeout(() => {\n clear()\n setState(undefined)\n onTimeout?.()\n }, asyncSubmitTimeout ?? 30000)\n }\n\n return clear\n }, [\n clear,\n minimumAsyncBehaviorTime,\n formState,\n setState,\n waitFor,\n asyncSubmitTimeout,\n onTimeout,\n ])\n\n return { bufferedFormState: stateRef.current }\n}\n"],"mappings":";;;;;;;AAAA,OAAOA,KAAK,IACVC,MAAM,EACNC,OAAO,EACPC,WAAW,EACXC,UAAU,EACVC,SAAS,EACTC,UAAU,QACL,OAAO;AACd,OAAOC,OAAO,MAAsB,cAAc;AAElD,SAEEC,eAAe,EACfC,qBAAqB,QAChB,iBAAiB;AAcxB,SAASC,QAAQ,QAAQ,4BAA4B;AACrD,OAAOC,kBAAkB,MAAM,uBAAuB;AACtD,OAAOC,cAAc,MAAM,2CAA2C;AACtE,OAAOC,eAAe,MAAM,4CAA4C;AACxE,SAASC,OAAO,QAAQ,oCAAoC;AAC5D,SAASC,cAAc,QAAQ,2CAA2C;AAE1E,OAAOC,cAAc,MAAM,4BAA4B;AACvD,OAAOC,OAAO,MAKP,YAAY;AAMnB,OAAOC,eAAe,MAAM,yBAAyB;AAGrD,MAAMC,eAAe,GACnB,OAAOC,MAAM,KAAK,WAAW,GAAGpB,KAAK,CAACK,SAAS,GAAGL,KAAK,CAACmB,eAAe;AAoHzE,MAAME,kBAAkB,GAAG,cAAc;AAEzC,eAAe,SAASC,QAAQA,CAC9BC,KAAkB,EAClB;EAAA,IAAAC,qBAAA;EACA,MAAM,GAAGC,WAAW,CAAC,GAAGrB,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAElD,MAAM;MACJsB,EAAE;MACFC,cAAc,GAAG,MAAM;MACvBC,WAAW;MACXC,IAAI;MACJC,MAAM;MACNC,QAAQ;MACRC,YAAY;MACZC,QAAQ;MACRC,eAAe;MACfC,gBAAgB;MAChBC,iBAAiB;MACjBC,wBAAwB;MACxBC,kBAAkB;MAClBC,gBAAgB;MAChBC,WAAW;MACXC,WAAW;MACXC,YAAY;MACZC,gBAAgB;MAChBC,UAAU;MACVC,MAAM;MACNC,YAAY;MACZC,QAAQ;MACRC,aAAa,EAAEC,oBAAoB;MACnCC;IAEF,CAAC,GAAG3B,KAAK;IADJ4B,IAAI,GAAAC,wBAAA,CACL7B,KAAK,EAAA8B,SAAA;EAGT,IAAIxB,IAAI,KAAKyB,SAAS,IAAIf,gBAAgB,KAAKe,SAAS,EAAE;IACxD,MAAM,IAAIC,KAAK,CACb,iEACF,CAAC;EACH;EAEA,MAAMC,aAAa,GAAGlD,UAAU,CAACW,OAAO,CAAC;EACzC,IAAIuC,aAAa,aAAbA,aAAa,eAAbA,aAAa,CAAEC,UAAU,EAAE;IAC7B,MAAM,IAAIF,KAAK,CAAC,8CAA8C,CAAC;EACjE;EAGA,MAAMG,WAAW,GAAG1C,cAAc,CAAC,CAAC,CAAC2C,IAAI;EAGzC,MAAMC,MAAM,GAAG3D,MAAM,CAAMO,eAAe,CAACgC,WAAW,CAAC,CAAC;EAGxD,MAAMqB,oBAAoB,GAAG5D,MAAM,CAAS,EAAE,CAAC;EAG/C,MAAM6D,kBAAkB,GAAG7D,MAAM,CAAwB,CAAC,CAAC,CAAC;EAC5D,MAAM8D,SAAS,GAAG9D,MAAM,CAAsC,CAAC;EAC/D,MAAM+D,gBAAgB,GAAG/D,MAAM,CAAU,KAAK,CAAC;EAC/C,MAAMgE,gBAAgB,GAAG9D,WAAW,CAAE+D,aAAsB,IAAK;IAC/DF,gBAAgB,CAACG,OAAO,GAAGD,aAAa;IACxCzC,WAAW,CAAC,CAAC;EACf,CAAC,EAAE,EAAE,CAAC;EACN,MAAM2C,kBAAkB,GAAGjE,WAAW,CACpC,CAACkE,IAAU,EAAEC,QAAiB,KAAK;IACjC,IAAIA,QAAQ,EAAE;MACZR,kBAAkB,CAACK,OAAO,CAACE,IAAI,CAAC,GAAGC,QAAQ;IAC7C,CAAC,MAAM;MACL,OAAOR,kBAAkB,CAACK,OAAO,CAACE,IAAI,CAAC;IACzC;IACA5C,WAAW,CAAC,CAAC;EACf,CAAC,EACD,EACF,CAAC;EACD,MAAM8C,cAAc,GAAGtE,MAAM,CAA4B,CAAC,CAAC,CAAC;EAC5D,MAAMuE,cAAc,GAAGrE,WAAW,CAAEsE,KAAuB,IAAK;IAC9DC,MAAM,CAACC,MAAM,CAACJ,cAAc,CAACJ,OAAO,EAAEM,KAAK,CAAC;IAC5ChD,WAAW,CAAC,CAAC;EACf,CAAC,EAAE,EAAE,CAAC;EAGN,MAAMmD,YAAY,GAAG3E,MAAM,CAAc,CAAC;EAC1C,MAAM4E,YAAY,GAAG1E,WAAW,CAAE2E,SAAsB,IAAK;IAC3DF,YAAY,CAACT,OAAO,GAAGW,SAAS;IAChCrD,WAAW,CAAC,CAAC;EACf,CAAC,EAAE,EAAE,CAAC;EAGN,MAAMsD,aAAa,GAAG9E,MAAM,CAAsB,CAAC,CAAC,CAAC;EACrD,MAAM+E,aAAa,GAAG/E,MAAM,CAA4B,CAAC,CAAC,CAAC;EAG3D,MAAMgF,WAAW,GAAG/E,OAAO,CAAO,MAAM;IACtC,IAAIqC,gBAAgB,IAAI,OAAOnB,MAAM,KAAK,WAAW,EAAE;MAAA,IAAA8D,qBAAA;MACrD,MAAMC,eAAe,IAAAD,qBAAA,GACnB9D,MAAM,CAACgE,cAAc,cAAAF,qBAAA,uBAArBA,qBAAA,CAAuBG,OAAO,CAAC9C,gBAAgB,CAAC;MAClD,IAAI4C,eAAe,EAAE;QACnB,OAAOG,IAAI,CAACC,KAAK,CAACJ,eAAe,CAAC;MACpC;IACF;IACA,OAAOtD,IAAI,aAAJA,IAAI,cAAJA,IAAI,GAAID,WAAW;EAE5B,CAAC,EAAE,EAAE,CAAC;EACN,MAAM4D,eAAe,GAAGvF,MAAM,CAAOgF,WAAW,CAAC;EAGjD,MAAMQ,eAAe,GAAGxF,MAAM,CAAmB,CAAC;EAClD,MAAMyF,mBAAmB,GAAGvF,WAAW,CAAC,MAAM;IAAA,IAAAwF,qBAAA;IAC5C,IAAI,CAACF,eAAe,CAACtB,OAAO,EAAE;MAE5B;IACF;IAEA,IAAI,GAAAwB,qBAAA,GAACF,eAAe,CAACtB,OAAO,cAAAwB,qBAAA,eAAvBA,qBAAA,CAAAC,IAAA,CAAAH,eAAe,EAAWD,eAAe,CAACrB,OAAO,CAAC,GAAE;MAEvDJ,SAAS,CAACI,OAAO,GAAG1D,qBAAqB,CACvCgF,eAAe,CAACtB,OAAO,CAAC0B,MAAM,EAC9BL,eAAe,CAACrB,OAClB,CAAC;IACH,CAAC,MAAM;MACLJ,SAAS,CAACI,OAAO,GAAGb,SAAS;IAC/B;EACF,CAAC,EAAE,EAAE,CAAC;EACN,MAAMwC,YAAY,GAAG3F,WAAW,CAAC,MAAM;IACrC,IAAI,CAACsF,eAAe,CAACtB,OAAO,EAAE;MAE5B;IACF;IAEAuB,mBAAmB,CAAC,CAAC;IACrBjE,WAAW,CAAC,CAAC;EACf,CAAC,EAAE,CAACiE,mBAAmB,CAAC,CAAC;EAGzB,MAAMK,kBAAkB,GAAG5F,WAAW,CACpC,CAACkE,IAAU,EAAEI,KAAkB,KAAK;IAAA,IAAAuB,kBAAA;IAClC,OAAOC,OAAO,CACZxB,KAAK,KAAK,OAAO,GACb,EAAAuB,kBAAA,GAAAjC,SAAS,CAACI,OAAO,cAAA6B,kBAAA,uBAAjBA,kBAAA,CAAoB3B,IAAI,CAAC,aAAYd,KAAK,IACxCwB,aAAa,CAACZ,OAAO,CAACE,IAAI,CAAC,YAAYd,KAAK,GAC9CyB,aAAa,CAACb,OAAO,CAACE,IAAI,CAAC,KAAKI,KACtC,CAAC;EACH,CAAC,EACD,EACF,CAAC;EACD,MAAMyB,aAAa,GAAG/F,WAAW,CAC9BsE,KAAkB,IAAK;IACtB,OAAOZ,oBAAoB,CAACM,OAAO,CAACgC,IAAI,CAAE9B,IAAI,IAAK;MACjD,OAAO0B,kBAAkB,CAAC1B,IAAI,EAAEI,KAAK,CAAC;IACxC,CAAC,CAAC;EACJ,CAAC,EACD,CAACsB,kBAAkB,CACrB,CAAC;EACD,MAAMK,aAAa,GAAGjG,WAAW,CAC9BkE,IAAU,IAAK;IACd,OAAOR,oBAAoB,CAACM,OAAO,CAACgC,IAAI,CAAEE,CAAC,IAAK;MAC9C,OAAOA,CAAC,KAAKhC,IAAI,IAAI0B,kBAAkB,CAACM,CAAC,EAAE,OAAO,CAAC;IACrD,CAAC,CAAC;EACJ,CAAC,EACD,CAACN,kBAAkB,CACrB,CAAC;EACD,MAAMO,SAAS,GAAGnG,WAAW,CAAC,MAAM;IAClC,OAAO+F,aAAa,CAAC,OAAO,CAAC;EAC/B,CAAC,EAAE,CAACA,aAAa,CAAC,CAAC;EAKnB,MAAMK,aAAa,GAAGpG,WAAW,CAC/B,CAACkE,IAAU,EAAEmC,KAAwB,KAAK;IACxCzB,aAAa,CAACZ,OAAO,CAACE,IAAI,CAAC,GAAGmC,KAAK;EACrC,CAAC,EACD,EACF,CAAC;EAKD,MAAMC,aAAa,GAAGtG,WAAW,CAC/B,CAACkE,IAAU,EAAEqC,UAAuB,KAAK;IACvC,IAAIA,UAAU,KAAK1B,aAAa,CAACb,OAAO,CAACE,IAAI,CAAC,EAAE;MAE9CW,aAAa,CAACb,OAAO,CAACE,IAAI,CAAC,GAAGqC,UAAU;MACxCjF,WAAW,CAAC,CAAC;IACf;EACF,CAAC,EACD,EACF,CAAC;EAKD,MAAMkF,iBAAiB,GAAGxG,WAAW,CACnC,UAAC0B,IAAU,EAAE+E,MAAkC,EAAqB;IAAA,IAAnBC,MAAM,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAxD,SAAA,GAAAwD,SAAA,MAAG,KAAK;IAC7D,MAAME,MAAM,GAAGA,CAAC3C,IAAU,EAAE4C,MAAyB,KAAK;MACxD,IAAIJ,MAAM,EAAE;QACV,IAAII,MAAM,KAAK,KAAK,EAAE;UACpBpF,IAAI,GAAGX,eAAe,CAACW,IAAI,CAAC;UAC5BtB,OAAO,CAACsG,MAAM,CAAChF,IAAI,EAAEwC,IAAI,CAAC;QAC5B;MACF,CAAC,MAAM;QACL,IAAI,OAAO4C,MAAM,KAAK,WAAW,EAAE;UACjCpF,IAAI,GAAGX,eAAe,CAACW,IAAI,CAAC;UAC5BtB,OAAO,CAAC2G,GAAG,CAACrF,IAAI,EAAEwC,IAAI,EAAE4C,MAAM,CAAC;QACjC;MACF;IACF,CAAC;IAED,IAAI,OAAOL,MAAM,KAAK,UAAU,EAAE;MAChClC,MAAM,CAACyC,OAAO,CAACC,aAAa,CAACjD,OAAO,CAAC,CAACkD,OAAO,CAACC,IAAA,IAAmB;QAAA,IAAlB,CAACjD,IAAI,EAAE9C,KAAK,CAAC,GAAA+F,IAAA;QAC1D,MAAMC,MAAM,GAAGhH,OAAO,CAACiH,GAAG,CAAC3F,IAAI,EAAEwC,IAAI,CAAC;QACtC,IAAIkD,MAAM,EAAE;UAAA,IAAAE,qBAAA;UACV,MAAMC,KAAK,GAAGnH,OAAO,CAACoH,GAAG,CAAC9F,IAAI,EAAEwC,IAAI,CAAC;UACrC,MAAMuD,QAAQ,GAAG;YACfpB,KAAK,GAAAiB,qBAAA,GAAE1C,aAAa,CAACZ,OAAO,cAAAsD,qBAAA,uBAArBA,qBAAA,CAAwBpD,IAAI;UACrC,CAAC;UACD,MAAM4C,MAAM,GAAGL,MAAM,CAAC;YACpBvC,IAAI;YACJqD,KAAK;YACL7F,IAAI,EAAE2D,eAAe,CAACrB,OAAO;YAC7B5C,KAAK;YACLqG;UACF,CAAC,CAAC;UACFZ,MAAM,CAAC3C,IAAI,EAAE4C,MAAM,CAAC;QACtB;MACF,CAAC,CAAC;MAEF,OAAOpF,IAAI;IACb,CAAC,MAAM,IAAI+E,MAAM,EAAE;MACjB,MAAMiB,SAAS,GAAGC,KAAA,IAAyB;QAAA,IAAxB;UAAEzD,IAAI;UAAE0D;QAAU,CAAC,GAAAD,KAAA;QACpC,MAAMP,MAAM,GAAGhH,OAAO,CAACiH,GAAG,CAAC3F,IAAI,EAAEwC,IAAI,CAAC;QACtC,IAAIkD,MAAM,EAAE;UAAA,IAAAS,qBAAA,EAAAC,sBAAA;UACV,MAAMP,KAAK,GAAGnH,OAAO,CAACoH,GAAG,CAAC9F,IAAI,EAAEwC,IAAI,CAAC;UACrC,MAAM9C,KAAK,IAAAyG,qBAAA,GAAGZ,aAAa,CAACjD,OAAO,cAAA6D,qBAAA,uBAArBA,qBAAA,CAAwB3D,IAAI,CAAC;UAC3C,MAAMuD,QAAQ,GAAG;YAAEpB,KAAK,GAAAyB,sBAAA,GAAElD,aAAa,CAACZ,OAAO,cAAA8D,sBAAA,uBAArBA,sBAAA,CAAwB5D,IAAI;UAAE,CAAC;UACzD,MAAM4C,MAAM,GACV,OAAOc,SAAS,KAAK,UAAU,GAC3BA,SAAS,CAAC;YACRL,KAAK;YACL7F,IAAI,EAAE2D,eAAe,CAACrB,OAAO;YAC7B5C,KAAK;YACLqG;UACF,CAAC,CAAC,GACFG,SAAS;UACff,MAAM,CAAC3C,IAAI,EAAE4C,MAAM,CAAC;QACtB;MACF,CAAC;MAED,MAAMiB,aAAa,GAAG,EAAE;MAExBxD,MAAM,CAACyC,OAAO,CAACP,MAAM,CAAC,CAACS,OAAO,CAACc,KAAA,IAAuB;QAAA,IAAtB,CAAC9D,IAAI,EAAE0D,SAAS,CAAC,GAAAI,KAAA;QAC/C,IAAI9D,IAAI,CAAC+D,QAAQ,CAAC,GAAG,CAAC,EAAE;UACtB,MAAMC,KAAK,GAAGhE,IAAI,CAACiE,KAAK,CAAC,OAAO,CAAC;UACjC,MAAMf,MAAM,GAAGhH,OAAO,CAACiH,GAAG,CAAC3F,IAAI,EAAEwG,KAAK,CAAC,CAAC,CAAC,CAAC;UAC1C,IAAId,MAAM,EAAE;YACV,MAAMgB,QAAQ,GAAGA,CACfC,OAAgB,EAChBC,OAAe,EACfC,GAAW,KACR;cACH,IAAIA,GAAG,KAAKL,KAAK,CAACtB,MAAM,GAAG,CAAC,EAAE;gBAC5BmB,aAAa,CAACS,IAAI,CAAC;kBAAEtE,IAAI,EAAEoE,OAAO;kBAAEV;gBAAU,CAAC,CAAC;gBAChD;cACF;cACA,MAAMa,IAAI,GAAGrI,OAAO,CAACoH,GAAG,CAACa,OAAO,EAAEC,OAAO,CAAC;cAC1C,IAAII,KAAK,CAACC,OAAO,CAACF,IAAI,CAAC,EAAE;gBACvBA,IAAI,CAACvB,OAAO,CAAC,CAAC0B,CAAC,EAAEC,CAAC,KAAK;kBACrBT,QAAQ,CACNK,IAAI,CAACI,CAAC,CAAC,EACN,GAAEP,OAAQ,IAAGO,CAAE,GAAEX,KAAK,CAACK,GAAG,GAAG,CAAC,CAAE,EAAC,EAClCA,GAAG,GAAG,CACR,CAAC;gBACH,CAAC,CAAC;cACJ;YACF,CAAC;YACDH,QAAQ,CAAC1G,IAAI,EAAEwG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;UAC7B;QACF,CAAC,MAAM;UACLR,SAAS,CAAC;YAAExD,IAAI;YAAE0D;UAAU,CAAC,CAAC;QAChC;MACF,CAAC,CAAC;MAEFG,aAAa,CAACb,OAAO,CAACQ,SAAS,CAAC;MAEhC,OAAOhG,IAAI;IACb;IAEA,OAAOA,IAAI;EACb,CAAC,EACD,EACF,CAAC;EAKD,MAAMoH,iBAAiB,GAAG9I,WAAW,CACnC,UAAC0B,IAAU,EAA8C;IAAA,IAA5C+E,MAAM,GAAAE,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAxD,SAAA,GAAAwD,SAAA,MAAGlE,UAAU,IAAID,gBAAgB;IAClD,IAAIiE,MAAM,EAAE;MACV,OAAOD,iBAAiB,CAAC9E,IAAI,EAAE+E,MAAM,EAAE,IAAI,CAAC;IAC9C;IAEA,OAAO/E,IAAI;EACb,CAAC,EACD,CAACe,UAAU,EAAED,gBAAgB,EAAEgE,iBAAiB,CAClD,CAAC;EAED,MAAMS,aAAa,GAAGnH,MAAM,CAA2B,CAAC,CAAC,CAAC;EAC1D,MAAMiJ,aAAa,GAAGjJ,MAAM,CAAoC,CAAC,CAAC,CAAC;EACnE,MAAMkJ,aAAa,GAAGhJ,WAAW,CAC/B,CAACkE,IAAU,EAAE9C,KAA8B,KAAK;IAC9C6F,aAAa,CAACjD,OAAO,CAACE,IAAI,CAAC,GAAG9C,KAAK;EACrC,CAAC,EACD,EACF,CAAC;EACD,MAAM6H,aAAa,GAAGjJ,WAAW,CAC/B,CAACkE,IAAU,EAAE9C,KAA8B,KAAK;IAC9C2H,aAAa,CAAC/E,OAAO,CAACE,IAAI,CAAC,GAAG9C,KAAK;EACrC,CAAC,EACD,EACF,CAAC;EACD,MAAM8H,0BAA0B,GAAGlJ,WAAW,CAAC,MAAM;IACnD,KAAK,MAAMkE,IAAI,IAAI+C,aAAa,CAACjD,OAAO,EAAE;MACxC,IAAIN,oBAAoB,CAACM,OAAO,CAACiE,QAAQ,CAAC/D,IAAI,CAAC,EAAE;QAC/C,MAAM9C,KAAK,GAAG6F,aAAa,CAACjD,OAAO,CAACE,IAAI,CAAC;QACzC,IAAIvD,OAAO,CAACS,KAAK,CAAC+H,SAAS,CAAC,IAAIxI,OAAO,CAACS,KAAK,CAACgI,eAAe,CAAC,EAAE;UAC9D,OAAO,IAAI;QACb;MACF;IACF;IAEA,OAAO,KAAK;EACd,CAAC,EAAE,EAAE,CAAC;EAGN,MAAMC,UAAU,GAAGzI,cAAc,CAAOW,EAAE,CAAC;EAC3C,MAAM+H,iBAAiB,GAAG1I,cAAc,CAOrCW,EAAE,GAAG,cAAc,CAAC;EAEvB,MAAMgI,aAAa,GAAGF,UAAU,CAACtC,GAAG;EACpC,MAAMyC,gBAAgB,GAAGH,UAAU,CAACI,MAAM;EAC1C,MAAMC,gBAAgB,GAAGJ,iBAAiB,CAACG,MAAM;EACjD,MAAME,mBAAmB,IAAAtI,qBAAA,GAAGiI,iBAAiB,CAAC5H,IAAI,cAAAL,qBAAA,uBAAtBA,qBAAA,CAAwBsI,mBAAmB;EAEvE,MAAMC,QAAQ,GAAG9J,MAAM,CAAC;IACtB4B,IAAI;IACJC,MAAM;IACNkI,MAAM,EAAER,UAAU,CAAC3H,IAAI;IACvBoI,kBAAkB,EAAE;EACtB,CAAC,CAAC;EAEFzE,eAAe,CAACrB,OAAO,GAAGjE,OAAO,CAAC,MAAM;IAItC,IAAIwB,EAAE,IAAIuD,WAAW,IAAI,CAACuE,UAAU,CAAC3H,IAAI,EAAE;MACzC2H,UAAU,CAACU,MAAM,CAACjF,WAAW,CAAC;IAChC;IAGA,IACEvD,EAAE,IACFuD,WAAW,IACXuE,UAAU,CAAC3H,IAAI,IACfkI,QAAQ,CAAC5F,OAAO,CAAC6F,MAAM,KAAKR,UAAU,CAAC3H,IAAI,IAC3C2D,eAAe,CAACrB,OAAO,KAAKc,WAAW,EACvC;MACA,OAAAkF,aAAA,CAAAA,aAAA,KACK3E,eAAe,CAACrB,OAAO,GACvBqF,UAAU,CAAC3H,IAAI;IAEtB;IAGA,IACEH,EAAE,IACF,CAACuD,WAAW,IACZ,CAACO,eAAe,CAACrB,OAAO,IACxBqF,UAAU,CAAC3H,IAAI,IACfkI,QAAQ,CAAC5F,OAAO,CAAC6F,MAAM,KAAKR,UAAU,CAAC3H,IAAI,EAC3C;MACA,OAAO2H,UAAU,CAAC3H,IAAI;IACxB;IAGA,IACEH,EAAE,IACF8H,UAAU,CAAC3H,IAAI,IACfkI,QAAQ,CAAC5F,OAAO,CAAC6F,MAAM,KAAKR,UAAU,CAAC3H,IAAI,IAC3C2H,UAAU,CAAC3H,IAAI,KAAK2D,eAAe,CAACrB,OAAO,EAC3C;MACA4F,QAAQ,CAAC5F,OAAO,CAAC6F,MAAM,GAAGR,UAAU,CAAC3H,IAAI;MACzC,OAAAsI,aAAA,CAAAA,aAAA,KACK3E,eAAe,CAACrB,OAAO,GACvBqF,UAAU,CAAC3H,IAAI;IAEtB;IAGA,IAAIA,IAAI,KAAKkI,QAAQ,CAAC5F,OAAO,CAACtC,IAAI,EAAE;MAClCkI,QAAQ,CAAC5F,OAAO,CAACtC,IAAI,GAAGA,IAAI;MAC5B,OAAOA,IAAI;IACb;IAEA,OAAO2D,eAAe,CAACrB,OAAO;EAChC,CAAC,EAAE,CAACtC,IAAI,EAAEH,EAAE,EAAEuD,WAAW,EAAEuE,UAAU,CAAC,CAAC;EAEvCrI,eAAe,CAAC,MAAM;IAEpB,IAAIO,EAAE,IAAIuD,WAAW,IAAI,CAACuE,UAAU,CAAC3H,IAAI,EAAE;MACzC8H,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAG1E,WAAW,CAAC;IACjC;EACF,CAAC,EAAE,CAACvD,EAAE,EAAEuD,WAAW,EAAE0E,gBAAgB,EAAEH,UAAU,CAAC3H,IAAI,CAAC,CAAC;EAExD3B,OAAO,CAAC,MAAM;IACZwF,mBAAmB,CAAC,CAAC;EAGvB,CAAC,EAAE,CAACF,eAAe,CAACrB,OAAO,CAAC,CAAC;EAE7BhD,eAAe,CAAC,MAAM;IACpB,IAAIO,EAAE,EAAE;MACNmI,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAG;QACjBZ,iBAAiB;QACjB3C,SAAS;QACTF,aAAa;QACbnC,gBAAgB;QAChBO;MACF,CAAC,CAAC;MACF,IAAI5B,UAAU,IAAID,gBAAgB,EAAE;QAClCmH,mBAAmB,aAAnBA,mBAAmB,uBAAnBA,mBAAmB,CAAG,CAAC;MACzB;IACF;EACF,CAAC,EAAE,CACDD,gBAAgB,EAChBjH,UAAU,EACVqG,iBAAiB,EACjBtG,gBAAgB,EAChB2D,SAAS,EACTF,aAAa,EACb1E,EAAE,EACFoI,mBAAmB,EACnB7F,gBAAgB,EAChBO,cAAc,CACf,CAAC;EAEF,MAAM4F,cAAc,GAAGlK,OAAO,CAAC,MAAM;IACnC,OAAOQ,QAAQ,CACb,MAAM;MAAA,IAAA2J,sBAAA;MACJ,CAAAA,sBAAA,GAAAjJ,MAAM,CAACgE,cAAc,cAAAiF,sBAAA,uBAArBA,sBAAA,CAAuBC,OAAO,CAC5B/H,gBAAgB,EAChB+C,IAAI,CAACiF,SAAS,CAAC/E,eAAe,CAACrB,OAAO,CACxC,CAAC;IACH,CAAC,EACDqG,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,MAAM,GAAG,CAAC,GAAG,GACxC,CAAC;EACH,CAAC,EAAE,CAACnI,gBAAgB,CAAC,CAAC;EAKtB,MAAMoI,eAAgD,GAAGxK,WAAW,CAClE,CAACkE,IAAI,EAAEqD,KAAK,KAAK;IAAA,IAAAkD,qBAAA;IACf,IAAI,CAACvG,IAAI,EAAE;MACT;IACF;IAEA,MAAMwG,SAAS,GACbxG,IAAI,KAAK,GAAG,GAERqD,KAAK,IAAAkD,qBAAA,GAELpF,eAAe,CAACrB,OAAO,cAAAyG,qBAAA,cAAAA,qBAAA,GACtBvG,IAAI,CAACyG,KAAK,CAACzJ,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,CACrC;IAET,IAAI0J,OAAa,GAAG,IAAI;IACxB,IAAI;MAEFA,OAAO,GAAG7J,eAAe,CAAC2J,SAAS,CAAC;IACtC,CAAC,CAAC,OAAOG,CAAC,EAAE;MACVD,OAAO,GAAGF,SAAS;IACrB;IAEA,IAAIxG,IAAI,KAAK,GAAG,EAAE;MAChB9D,OAAO,CAAC2G,GAAG,CAAC6D,OAAO,EAAE1G,IAAI,EAAEqD,KAAK,CAAC;IACnC;IAGA,IAAIjF,WAAW,EAAE;MACfsI,OAAO,GAAGpE,iBAAiB,CAACoE,OAAO,EAAEtI,WAAW,CAAC;IACnD;IAEA+C,eAAe,CAACrB,OAAO,GAAG4G,OAAO;IAEjC,IAAIrJ,EAAE,EAAE;MAENiI,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAGoB,OAAO,CAAC;MAC3B,IAAInI,UAAU,IAAID,gBAAgB,EAAE;QAClCmH,mBAAmB,aAAnBA,mBAAmB,uBAAnBA,mBAAmB,CAAG,CAAC;MACzB;IACF;IAEA,IAAIvH,gBAAgB,IAAI,OAAOnB,MAAM,KAAK,WAAW,EAAE;MACrDgJ,cAAc,CAAC,CAAC;IAClB;IAEA3I,WAAW,CAAC,CAAC;EACf,CAAC,EACD,CACEkI,gBAAgB,EAChB/G,UAAU,EACVD,gBAAgB,EAChBjB,EAAE,EACFiF,iBAAiB,EACjBmD,mBAAmB,EACnBvH,gBAAgB,EAChB6H,cAAc,EACd3H,WAAW,CAEf,CAAC;EAED,MAAMwI,OAAO,GAAG9K,WAAW,CAAE4K,OAAa,IAAK;IAC7CvF,eAAe,CAACrB,OAAO,GAAG4G,OAAO;IACjCtJ,WAAW,CAAC,CAAC;EACf,CAAC,EAAE,EAAE,CAAC;EAKN,MAAMyJ,2BAA6D,GACjE/K,WAAW,CACT,OAAOkE,IAAI,EAAEqD,KAAK,KAAK;IACrB,IAAI,CAACrD,IAAI,EAAE;MACT,OAAO,IAAI;IACb;IAEAsG,eAAe,CAACtG,IAAI,EAAEqD,KAAK,CAAC;IAE5B,IAAI5G,OAAO,CAACkB,YAAY,CAAC,EAAE;MACzB,OAAMA,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAGqC,IAAI,EAAEqD,KAAK,CAAC;IACnC,CAAC,MAAM;MACL1F,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAGqC,IAAI,EAAEqD,KAAK,CAAC;IAC7B;EACF,CAAC,EACD,CAAC1F,YAAY,EAAE2I,eAAe,CAChC,CAAC;EAKH,MAAMQ,gBAAkD,GAAGhL,WAAW,CACpE,gBAAOkE,IAAI,EAA4B;IAAA,IAA1BqD,KAAK,GAAAZ,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAxD,SAAA,GAAAwD,SAAA,MAAG,aAAa;IAChC,IAAI,CAACzC,IAAI,EAAE;MACT,OAAO,IAAI;IACb;IAEA,IAAIqD,KAAK,KAAK,aAAa,EAAE;MAC3BwD,2BAA2B,CAAC7G,IAAI,EAAEqD,KAAK,CAAC;IAC1C;IAEA1D,gBAAgB,CAACG,OAAO,GAAG,KAAK;IAEhC2B,YAAY,CAAC,CAAC;IAEd,MAAMjE,IAAI,GAAG2D,eAAe,CAACrB,OAAe;IAC5C,MAAMiH,eAAe,GAAG1I,YAAY,GAChCiE,iBAAiB,CAAC9E,IAAI,EAAEa,YAAY,CAAC,GACrCb,IAAI;IAER,KAAK,MAAMwJ,EAAE,IAAIC,qBAAqB,CAACnH,OAAO,EAAE;MAC9C,IAAIrD,OAAO,CAACiB,QAAQ,CAAC,EAAE;QACrB,MAAMsJ,EAAE,CAACD,eAAe,CAAC;MAC3B,CAAC,MAAM;QACLC,EAAE,CAACD,eAAe,CAAC;MACrB;IACF;IAEA,IAAItK,OAAO,CAACiB,QAAQ,CAAC,EAAE;MACrB,OAAO,MAAMA,QAAQ,CAACqJ,eAAe,CAAC;IACxC;IAEA,OAAOrJ,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAGqJ,eAAe,CAAC;EACpC,CAAC,EACD,CACEF,2BAA2B,EAC3BvE,iBAAiB,EACjB5E,QAAQ,EACRW,YAAY,EACZoD,YAAY,CAEhB,CAAC;EAED,MAAMwF,qBAAqB,GAAGrL,MAAM,CAAwB,EAAE,CAAC;EAC/D,MAAMsL,kBAAkB,GAAGpL,WAAW,CACnCqL,QAAiC,IAAK;IACrC,MAAMjE,MAAM,GAAG+D,qBAAqB,CAACnH,OAAO,CAACgC,IAAI,CAAEkF,EAAE,IAAK;MACxD,OAAOG,QAAQ,KAAKH,EAAE;IACxB,CAAC,CAAC;IACF,IAAI,CAAC9D,MAAM,EAAE;MACX+D,qBAAqB,CAACnH,OAAO,CAACwE,IAAI,CAAC6C,QAAQ,CAAC;IAC9C;EACF,CAAC,EACD,EACF,CAAC;EAGD,MAAMC,gBAAgB,GAAGtL,WAAW,CAAEkE,IAAU,IAAK;IACnDR,oBAAoB,CAACM,OAAO,GAAGuH,WAAW,CACxC7H,oBAAoB,CAACM,OAAO,EAC5BE,IACF,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMsH,kBAAkB,GAAGxL,WAAW,CAAEkE,IAAU,IAAK;IACrDR,oBAAoB,CAACM,OAAO,GAAGyH,cAAc,CAC3C/H,oBAAoB,CAACM,OAAO,EAC5BE,IACF,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAGN,MAAMwH,WAAW,GAAG1L,WAAW,CAAC,MAAM;IACpC,IAAI,OAAOiB,MAAM,KAAK,WAAW,EAAE;MAAA,IAAA0K,OAAA,EAAAC,gBAAA;MACjC,CAAAD,OAAA,GAAA1K,MAAM,cAAA0K,OAAA,wBAAAC,gBAAA,GAAND,OAAA,CAAQE,QAAQ,cAAAD,gBAAA,uBAAhBA,gBAAA,CAAAnG,IAAA,CAAAkG,OAAA,EAAmB;QAAEG,GAAG,EAAE,CAAC;QAAEC,QAAQ,EAAE;MAAS,CAAC,CAAC;IACpD;EACF,CAAC,EAAE,EAAE,CAAC;EAKN,MAAMC,gBAAgB,GAAGhM,WAAW,CAClC,MAAOiM,IAAI,IAAK;IACd,MAAM;MACJnK,QAAQ;MACRoK,oBAAoB;MACpBC,mBAAmB;MACnBC;IACF,CAAC,GAAGH,IAAI;IAER5H,cAAc,CAAC;MAAEgC,KAAK,EAAElD;IAAU,CAAC,CAAC;IAEpC,MAAMkJ,sBAAsB,GAC1B,CAACD,cAAc,GACX,IAAI,GAEJ,CAACjG,SAAS,CAAC,CAAC,IAAIJ,aAAa,CAAC,SAAS,CAAC,MAC3CmG,oBAAoB,IAAIhD,0BAA0B,CAAC,CAAC,CAAC;IAExD,IAAImD,sBAAsB,EAAE;MAC1B3H,YAAY,CAAC,SAAS,CAAC;IACzB;IAGA,IAAI,CAACyH,mBAAmB,EAAE;MACxB,KAAK,MAAM;QACTjI,IAAI;QACJoI,IAAI;QACJjB;MACF,CAAC,IAAIkB,sBAAsB,CAACvI,OAAO,EAAE;QACnC,IACEsI,IAAI,KAAK,UAAU,IACnB5I,oBAAoB,CAACM,OAAO,CAACiE,QAAQ,CAAC/D,IAAI,CAAC,EAC3C;UAEA,IAAImI,sBAAsB,EAAE;YAC1B,MAAMhB,QAAQ,CAAC,CAAC;UAClB,CAAC,MAAM;YACLA,QAAQ,CAAC,CAAC;UACZ;QACF;MACF;IACF;IAEA,IACE,EAAEe,cAAc,GAAG,KAAK,GAAGjG,SAAS,CAAC,CAAC,CAAC,IACvC,CAACJ,aAAa,CAAC,SAAS,CAAC,KACxBoG,mBAAmB,GAAG,IAAI,GAAG,CAACpG,aAAa,CAAC,OAAO,CAAC,CAAC,EACtD;MACA,IAAIe,MAAkC;MAEtC,IAAI;QACFA,MAAM,GAAG,MAAMhF,QAAQ,CAAC,CAAC;QAEzB,IAAIgF,MAAM,YAAY1D,KAAK,EAAE;UAC3B,MAAM0D,MAAM;QACd;MACF,CAAC,CAAC,OAAOT,KAAK,EAAE;QACdS,MAAM,GAAG;UAAET;QAAM,CAAC;MACpB;MAEA,MAAM/B,KAAK,GAAGwC,MAA0B;MAExC,IAAIuF,sBAAsB,EAAE;QAC1B3H,YAAY,CAACJ,KAAK,aAALA,KAAK,eAALA,KAAK,CAAE+B,KAAK,GAAG,OAAO,GAAG,UAAU,CAAC;MACnD;MAGA,IAAI/B,KAAK,aAALA,KAAK,eAALA,KAAK,CAAG,QAAQ,CAAC,EAAE;QACrBI,YAAY,CAACJ,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAG,QAAQ,CAAC,CAAC;MACjC;MAEA,IAAIA,KAAK,aAALA,KAAK,eAALA,KAAK,CAAE+B,KAAK,IAAI/B,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEkI,OAAO,IAAIlI,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEmI,IAAI,EAAE;QACjDpI,cAAc,CAACC,KAAK,CAAC;MACvB;IACF,CAAC,MAAM;MACL,IAAI+H,sBAAsB,EAAE;QAC1BpL,MAAM,CAACyL,qBAAqB,CAAC,MAAM;UACjChI,YAAY,CAACvB,SAAS,CAAC;QACzB,CAAC,CAAC;QAEF,IAAI,CAACgJ,mBAAmB,EAAE;UAExBQ,mBAAmB,CAAC3I,OAAO,GAAG,MAAM;YAClC/C,MAAM,CAACyL,qBAAqB,CAAC,MAAM;cAIjCV,gBAAgB,CAAAhC,aAAA,CAAAA,aAAA,KAAMiC,IAAI;gBAAEE,mBAAmB,EAAE;cAAI,EAAE,CAAC;YAC1D,CAAC,CAAC;UACJ,CAAC;QACH;MACF;MAEApK,eAAe,aAAfA,eAAe,uBAAfA,eAAe,CAAG,CAAC;MAEnB+B,gBAAgB,CAAC,IAAI,CAAC;IACxB;IAEA,OAAOuB,eAAe,CAACrB,OAAO;EAChC,CAAC,EACD,CACEK,cAAc,EACd8B,SAAS,EACT+C,0BAA0B,EAC1BnD,aAAa,EACbrB,YAAY,EACZ3C,eAAe,EACf+B,gBAAgB,CAEpB,CAAC;EAKD,MAAM8I,YAAY,GAAG5M,WAAW,CAC9B,kBAAuC;IAAA,IAAhC;MAAE6M,WAAW,GAAG;IAAK,CAAC,GAAAlG,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAxD,SAAA,GAAAwD,SAAA,MAAG,CAAC,CAAC;IAChCqF,gBAAgB,CAAC;MACfE,oBAAoB,EAAEvL,OAAO,CAACmB,QAAQ,CAAC;MACvCA,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAEpB,MAAMJ,IAAI,GAAG2D,eAAe,CAACrB,OAAO;QACpC,MAAM8I,YAAY,GAAGhE,iBAAiB,CACpCvG,YAAY,GAAGiE,iBAAiB,CAAC9E,IAAI,EAAEa,YAAY,CAAC,GAAGb,IACzD,CAAC;QACD,MAAMqL,IAAI,GAAG;UACXC,SAAS,EAAEA,CAAA,KAAM;YAAA,IAAAC,kBAAA;YACfJ,WAAW,aAAXA,WAAW,wBAAAI,kBAAA,GAAXJ,WAAW,CAAEK,KAAK,cAAAD,kBAAA,uBAAlBA,kBAAA,CAAAxH,IAAA,CAAAoH,WAAqB,CAAC;YAEtB,IAAI,OAAO5L,MAAM,KAAK,WAAW,EAAE;cACjC,IAAImB,gBAAgB,EAAE;gBACpBnB,MAAM,CAACgE,cAAc,CAACkI,UAAU,CAAC/K,gBAAgB,CAAC;cACpD;YACF;YAEAd,WAAW,CAAC,CAAC;UACf,CAAC;UACD8L,SAAS,EAAEA,CAAA,KAAM;YACf/H,eAAe,CAACrB,OAAO,GAAG,CAAC,CAAS;YACpC,IAAIzC,EAAE,EAAE;cACNgI,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAG,CAAC,CAAS,CAAC;YAC7B,CAAC,MAAM;cACLjI,WAAW,CAAC,CAAC;YACf;UACF;QACF,CAAC;QAED,IAAIwF,MAAM,GAAG3D,SAAS;QAEtB,IAAIxC,OAAO,CAACmB,QAAQ,CAAC,EAAE;UACrBgF,MAAM,GAAG,MAAMhF,QAAQ,CAACgL,YAAY,EAAEC,IAAI,CAAC;QAC7C,CAAC,MAAM;UACLjG,MAAM,GAAGhF,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAGgL,YAAY,EAAEC,IAAI,CAAC;QACzC;QAEA,MAAMM,cAAc,GAAG,OAAMrL,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAC3C8K,YAAY,EACZhG,MACF,CAAC;QACD,IAAIuG,cAAc,EAAE;UAClBvG,MAAM,GACJvC,MAAM,CAAC+I,IAAI,CAACxG,MAAM,CAAC,CAACF,MAAM,GAAG,CAAC,GAAAoD,aAAA,CAAAA,aAAA,KACrBlD,MAAM,GAAKuG,cAAc,IAC9BA,cAAc;QACtB;QAEA,IAAIpL,iBAAiB,EAAE;UACrByJ,WAAW,CAAC,CAAC;QACf;QAEA,OAAO5E,MAAM;MACf;IACF,CAAC,CAAC;EACJ,CAAC,EACD,CACEgC,iBAAiB,EACjBkD,gBAAgB,EAChBzK,EAAE,EACFiF,iBAAiB,EACjB1E,QAAQ,EACRE,gBAAgB,EAChB0J,WAAW,EACXzJ,iBAAiB,EACjBG,gBAAgB,EAChBmH,aAAa,EACbhH,YAAY,CAEhB,CAAC;EAGD,MAAMgK,sBAAsB,GAAGzM,MAAM,CAA2B,EAAE,CAAC;EACnE,MAAMyN,qBAAqB,GAAGvN,WAAW,CACvC,CACEkE,IAA+B,EAC/BoI,IAA+B,EAC/BjB,QAAuC,KACpC;IACHkB,sBAAsB,CAACvI,OAAO,GAC5BuI,sBAAsB,CAACvI,OAAO,CAACyC,MAAM,CAAC+G,KAAA,IAA0B;MAAA,IAAzB;QAAEtJ,IAAI,EAAEgC,CAAC;QAAEoG,IAAI,EAAEmB;MAAE,CAAC,GAAAD,KAAA;MACzD,OAAO,EAAEtH,CAAC,KAAKhC,IAAI,IAAIuJ,CAAC,KAAKnB,IAAI,CAAC;IACpC,CAAC,CAAC;IACJC,sBAAsB,CAACvI,OAAO,CAACwE,IAAI,CAAC;MAAEtE,IAAI;MAAEoI,IAAI;MAAEjB;IAAS,CAAC,CAAC;EAC/D,CAAC,EACD,EACF,CAAC;EAGD,MAAMsB,mBAAmB,GAAG7M,MAAM,CAAa,IAAI,CAAC;EACpD,IAAI,CAACiG,aAAa,CAAC,SAAS,CAAC,EAAE;IAAA,IAAA2H,qBAAA;IAC7B,CAAAA,qBAAA,GAAAf,mBAAmB,CAAC3I,OAAO,cAAA0J,qBAAA,uBAA3BA,qBAAA,CAAAjI,IAAA,CAAAkH,mBAA8B,CAAC;IAC/BA,mBAAmB,CAAC3I,OAAO,GAAG,IAAI;EACpC;EAGAvD,cAAc,CAAC,MAAM;IACnB,IAAIkB,MAAM,EAAE;MAAA,IAAAgM,eAAA;MACVrI,eAAe,CAACtB,OAAO,IAAA2J,eAAA,GAAGlK,MAAM,CAACO,OAAO,cAAA2J,eAAA,uBAAdA,eAAA,CAAgBC,OAAO,CAACjM,MAAM,CAAC;IAC3D;IAGAgE,YAAY,CAAC,CAAC;EAChB,CAAC,CAAC;EACFjF,eAAe,CAAC,MAAM;IACpB,IAAIiB,MAAM,IAAIA,MAAM,KAAKiI,QAAQ,CAAC5F,OAAO,CAACrC,MAAM,EAAE;MAAA,IAAAkM,gBAAA;MAChDjE,QAAQ,CAAC5F,OAAO,CAACrC,MAAM,GAAGA,MAAM;MAChC2D,eAAe,CAACtB,OAAO,IAAA6J,gBAAA,GAAGpK,MAAM,CAACO,OAAO,cAAA6J,gBAAA,uBAAdA,gBAAA,CAAgBD,OAAO,CAACjM,MAAM,CAAC;MAEzDgE,YAAY,CAAC,CAAC;MACdrE,WAAW,CAAC,CAAC;IACf;EACF,CAAC,EAAE,CAACK,MAAM,EAAEgE,YAAY,EAAErE,WAAW,CAAC,CAAC;EAEvC,MAAMwM,SAAS,GAAG9N,WAAW,CAAC,MAAM;IAClC0E,YAAY,CAACvB,SAAS,CAAC;IACvBkB,cAAc,CAAC;MACboI,IAAI,EAAEtJ,SAAS;MACfqJ,OAAO,EAAErJ,SAAS;MAClBkD,KAAK,EAAElD;IACT,CAAC,CAAC;EACJ,CAAC,EAAE,CAACuB,YAAY,EAAEL,cAAc,CAAC,CAAC;EAElC,MAAM;IAAE0J,iBAAiB,EAAEpJ;EAAU,CAAC,GAAGqJ,mBAAmB,CAAC;IAC3DrJ,SAAS,EAAEF,YAAY,CAACT,OAAO;IAC/BiK,OAAO,EAAElI,aAAa,CAAC,SAAS,CAAC;IACjC7D,wBAAwB;IACxBC,kBAAkB;IAClB2L;EACF,CAAC,CAAC;EAEF,MAAMI,WAAW,GAAG9J,cAAc,CAACJ,OAAO;EAC1C,MAAMmK,QAAQ,GACZ,QAAOnL,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAG,UAAU,CAAC,MAAK,SAAS,GACnCA,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAG,UAAU,CAAC,GACjB2B,SAAS,KAAK,SAAS,KAAM,IAAI,GAClC,IAAI,GACJxB,SAAS;EAEf,OACEtD,KAAA,CAAAuO,aAAA,CAACtN,OAAO,CAACK,QAAQ;IACfoG,KAAK,EAAAyC,aAAA;MAEHgB,gBAAgB;MAChBD,2BAA2B;MAC3B6B,YAAY;MACZtB,gBAAgB;MAChBE,kBAAkB;MAClBQ,gBAAgB;MAChBtH,YAAY;MACZL,cAAc;MACdP,gBAAgB;MAChBG,kBAAkB;MAClBsJ,qBAAqB;MACrBjH,aAAa;MACbF,aAAa;MACb4C,aAAa;MACbC,aAAa;MACb9C,SAAS;MACTF,aAAa;MACbF,aAAa;MACbJ,YAAY;MACZ6E,eAAe;MACfM,OAAO;MACPhC,iBAAiB;MACjBsC,kBAAkB;MAClBM,WAAW;MAGX/J,MAAM;MACNwM,QAAQ;MACRvL,QAAQ;MACR+B,SAAS;MACTuJ,WAAW;MACXpL,oBAAoB;MACpBQ,UAAU,EAAE,IAAI;MAChBoC,MAAM,EAAE9B,SAAS,CAACI,OAAO;MACzBD,aAAa,EAAEF,gBAAgB,CAACG,OAAO;MACvCqK,eAAe,EACb9J,MAAM,CAAC+I,IAAI,CAAC3J,kBAAkB,CAACK,OAAO,CAAC,CAAC4C,MAAM,GAAG,CAAC;MACpDK,aAAa;MACb8B,aAAa;MACb1G,WAAW,EAAEoB,MAAM,CAACO,OAAO;MAG3BzC,EAAE;MACFG,IAAI,EAAE2D,eAAe,CAACrB,OAAO;MAC7B5C;IAAK,GACF4B,IAAI;EACP,GAEFnD,KAAA,CAAAuO,aAAA,CAAC5N,kBAAkB;IACjB8N,UAAU,EACR9M,cAAc,GACV;MACE+M,YAAY,EAAE;QACZhN,EAAE,EAAEC,cAAc;QAClBgN,KAAK,EAAEjL,WAAW,CAACkL,iBAAiB;QACpCC,IAAI,EAAE7K,gBAAgB,CAACG;MACzB;IACF,CAAC,GACDb,SACL;IACD0J,WAAW,EAAEsB,QAAQ,GAAG;MAAEA,QAAQ,EAAE;IAAK,CAAC,GAAGhL,SAAU;IACvDT,MAAM,EAAEA,MAAM,GAAGA,MAAM,GAAGS,SAAU;IACpCR,YAAY,EAAEA,YAAY,GAAGA,YAAY,GAAGQ;EAAU,GAErDJ,QACiB,CACJ,CAAC;AAEvB;AAIA,OAAO,SAASwI,WAAWA,CAACoD,KAAe,EAAEzK,IAAU,EAAY;EACjE,OAAOyK,KAAK,CAAC1G,QAAQ,CAAC/D,IAAI,CAAC,GAAGyK,KAAK,GAAGA,KAAK,CAACC,MAAM,CAAC1K,IAAI,CAAC;AAC1D;AAEA,OAAO,SAASuH,cAAcA,CAACkD,KAAe,EAAEzK,IAAU,EAAY;EACpE,OAAOyK,KAAK,CAAClI,MAAM,CAAEoI,QAAQ,IAAKA,QAAQ,KAAK3K,IAAI,CAAC;AACtD;AAUA,SAAS8J,mBAAmBA,CAAC5M,KAA4B,EAAE;EACzD,MAAM;IACJuD,SAAS;IACTsJ,OAAO;IACP/L,wBAAwB;IACxBC,kBAAkB;IAClB2L;EACF,CAAC,GAAG1M,KAAK,IAAI,CAAC,CAAC;EAEf,MAAM,GAAGE,WAAW,CAAC,GAAGrB,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAClD,MAAM6O,QAAQ,GAAGhP,MAAM,CAAc,CAAC;EACtC,MAAMiP,MAAM,GAAGjP,MAAM,CAAgB,IAAI,CAAC;EAC1C,MAAMkP,UAAU,GAAGlP,MAAM,CAItB,CAAC,CAAC,CAAC;EAEN,MAAMmP,QAAQ,GAAGjP,WAAW,CACzBsE,KAAkB,IAAK;IACtBwK,QAAQ,CAAC9K,OAAO,GAAGM,KAAK;IACxBhD,WAAW,CAAC,CAAC;EACf,CAAC,EACD,CAACA,WAAW,CACd,CAAC;EAED,MAAM4N,KAAK,GAAGlP,WAAW,CAAC,MAAM;IAC9B,KAAK,MAAMmP,GAAG,IAAIH,UAAU,CAAChL,OAAO,EAAE;MACpCoL,YAAY,CAACJ,UAAU,CAAChL,OAAO,CAACmL,GAAG,CAAC,CAAC;IACvC;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,MAAME,cAAc,GAAGvP,MAAM,CAAC,KAAK,CAAC;EACpC,MAAMwP,gBAAgB,GAAGxP,MAAM,CAAc,IAAI,CAAC;EAElDI,SAAS,CAAC,MAAM;IAKd,MAAMqP,MAAM,GAAGlF,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,MAAM;IAC9C,MAAMiF,OAAO,GACXtN,wBAAwB,aAAxBA,wBAAwB,cAAxBA,wBAAwB,GAEvBqN,MAAM,GAAG,CAAC,GAAG,IAAK;IAErB,IAAIT,QAAQ,CAAC9K,OAAO,IAAIW,SAAS,KAAK,OAAO,EAAE;MAC7CuK,KAAK,CAAC,CAAC;MACPD,QAAQ,CAAC9L,SAAS,CAAC;MACnB;IACF;IAEA,IAAIwB,SAAS,KAAK,OAAO,EAAE;MACzBuK,KAAK,CAAC,CAAC;MACPD,QAAQ,CAAC,OAAO,CAAC;MAEjBD,UAAU,CAAChL,OAAO,CAACkJ,KAAK,GAAGuC,UAAU,CAAC,MAAM;QAC1CV,MAAM,CAAC/K,OAAO,GAAG,CAAC;QAClBiL,QAAQ,CAAC9L,SAAS,CAAC;MACrB,CAAC,EAAEqM,OAAO,CAAC;MACX;IACF;IAEA,IAAI7K,SAAS,KAAK,UAAU,EAAE;MAC5B0K,cAAc,CAACrL,OAAO,GAAG,IAAI;IAC/B;IAEA,IAAIW,SAAS,KAAK,SAAS,IAAImK,QAAQ,CAAC9K,OAAO,KAAK,SAAS,EAAE;MAC7DsL,gBAAgB,CAACtL,OAAO,GAAG0L,QAAQ,CAACC,aAA4B;MAChET,KAAK,CAAC,CAAC;MACPH,MAAM,CAAC/K,OAAO,GAAG4L,IAAI,CAACC,GAAG,CAAC,CAAC;MAC3BR,cAAc,CAACrL,OAAO,GAAG,KAAK;MAC9BiL,QAAQ,CAAC,SAAS,CAAC;IACrB,CAAC,MAAM,IAAIH,QAAQ,CAAC9K,OAAO,KAAK,SAAS,EAAE;MACzC,MAAM8L,MAAM,GAAGC,IAAI,CAACC,GAAG,CAACJ,IAAI,CAACC,GAAG,CAAC,CAAC,GAAGd,MAAM,CAAC/K,OAAO,CAAC;MACpD,MAAMiM,KAAK,GAAGV,MAAM,GAAGC,OAAO,GAAGO,IAAI,CAACC,GAAG,CAACR,OAAO,GAAGM,MAAM,EAAE,CAAC,CAAC;MAE9D,IAAI,CAAC7B,OAAO,EAAE;QACZe,UAAU,CAAChL,OAAO,CAACkM,QAAQ,GAAGT,UAAU,CAAC,MAAM;UAC7C,IAAIJ,cAAc,CAACrL,OAAO,EAAE;YAC1BiL,QAAQ,CAAC,UAAU,CAAC;UACtB;UACAhO,MAAM,CAACyL,qBAAqB,CAAC,MAAM;YAAA,IAAAyD,qBAAA,EAAAC,sBAAA;YACjC,CAAAD,qBAAA,GAAAb,gBAAgB,CAACtL,OAAO,cAAAmM,qBAAA,wBAAAC,sBAAA,GAAxBD,qBAAA,CAA0BE,KAAK,cAAAD,sBAAA,uBAA/BA,sBAAA,CAAA3K,IAAA,CAAA0K,qBAAkC,CAAC;UACrC,CAAC,CAAC;QACJ,CAAC,EAAEF,KAAK,CAAC;QAETjB,UAAU,CAAChL,OAAO,CAACkJ,KAAK,GAAGuC,UAAU,CAAC,MAAM;UAC1CV,MAAM,CAAC/K,OAAO,GAAG,CAAC;UAClBiL,QAAQ,CAAC9L,SAAS,CAAC;UACnB+L,KAAK,CAAC,CAAC;QACT,CAAC,EAAEe,KAAK,GAAGT,OAAO,CAAC;MACrB;IACF;IAEA,IAAIV,QAAQ,CAAC9K,OAAO,KAAK,SAAS,EAAE;MAClCgL,UAAU,CAAChL,OAAO,CAACsM,OAAO,GAAGb,UAAU,CAAC,MAAM;QAC5CP,KAAK,CAAC,CAAC;QACPD,QAAQ,CAAC9L,SAAS,CAAC;QACnB2K,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAG,CAAC;MACf,CAAC,EAAE3L,kBAAkB,aAAlBA,kBAAkB,cAAlBA,kBAAkB,GAAI,KAAK,CAAC;IACjC;IAEA,OAAO+M,KAAK;EACd,CAAC,EAAE,CACDA,KAAK,EACLhN,wBAAwB,EACxByC,SAAS,EACTsK,QAAQ,EACRhB,OAAO,EACP9L,kBAAkB,EAClB2L,SAAS,CACV,CAAC;EAEF,OAAO;IAAEC,iBAAiB,EAAEe,QAAQ,CAAC9K;EAAQ,CAAC;AAChD"}
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
- import { FieldProps } from '../../types';
3
- export type Props = FieldProps<Array<string | number> | undefined> & {
2
+ import { FieldHelpProps, FieldProps } from '../../types';
3
+ export type Props = FieldHelpProps & FieldProps<Array<string | number> | undefined> & {
4
4
  children?: React.ReactNode;
5
5
  variant?: 'checkbox' | 'button';
6
6
  optionsLayout?: 'horizontal' | 'vertical';
@@ -2,7 +2,7 @@ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
2
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3
3
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
4
  import React, { useMemo } from 'react';
5
- import { Checkbox, ToggleButton } from '../../../../components';
5
+ import { Checkbox, HelpButton, ToggleButton } from '../../../../components';
6
6
  import classnames from 'classnames';
7
7
  import OptionField from '../Option';
8
8
  import FieldBlock from '../../FieldBlock';
@@ -21,6 +21,7 @@ function ArraySelection(props) {
21
21
  value,
22
22
  error,
23
23
  hasError,
24
+ help,
24
25
  info,
25
26
  warning,
26
27
  disabled,
@@ -32,12 +33,17 @@ function ArraySelection(props) {
32
33
  forId: id,
33
34
  className: classnames(`dnb-forms-field-array-selection dnb-forms-field-array-selection--layout-${layout} dnb-forms-field-array-selection--options-layout-${optionsLayout}`, className),
34
35
  contentClassName: 'dnb-forms-field-array-selection__options',
36
+ help,
35
37
  info,
36
38
  warning,
37
39
  error,
38
40
  layout,
39
41
  label,
40
- labelDescription
42
+ labelDescription: React.createElement(React.Fragment, null, labelDescription, help ? React.createElement(HelpButton, {
43
+ size: "small",
44
+ left: labelDescription ? 'x-small' : false,
45
+ title: help.title
46
+ }, help.content) : undefined)
41
47
  }, pickSpacingProps(props));
42
48
  const options = useMemo(() => React.Children.toArray(children).filter(child => React.isValidElement(child) && child.type === OptionField).map(option => {
43
49
  var _option$props$title;