@dnb/eufemia 10.73.2 → 10.74.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 (624) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/cjs/components/autocomplete/Autocomplete.js +7 -4
  3. package/cjs/components/autocomplete/Autocomplete.js.map +1 -1
  4. package/cjs/components/autocomplete/AutocompleteDocs.d.ts +289 -3
  5. package/cjs/components/autocomplete/AutocompleteDocs.js +2 -2
  6. package/cjs/components/autocomplete/AutocompleteDocs.js.map +1 -1
  7. package/cjs/components/button/style/dnb-button.css +1 -0
  8. package/cjs/components/button/style/dnb-button.min.css +1 -1
  9. package/cjs/components/button/style/dnb-button.scss +1 -0
  10. package/cjs/components/checkbox/Checkbox.d.ts +9 -1
  11. package/cjs/components/checkbox/Checkbox.js +59 -34
  12. package/cjs/components/checkbox/Checkbox.js.map +1 -1
  13. package/cjs/components/checkbox/CheckboxDocs.js +6 -1
  14. package/cjs/components/checkbox/CheckboxDocs.js.map +1 -1
  15. package/cjs/components/date-picker/DatePicker.d.ts +4 -0
  16. package/cjs/components/date-picker/DatePicker.js +4 -3
  17. package/cjs/components/date-picker/DatePicker.js.map +1 -1
  18. package/cjs/components/date-picker/DatePickerCalendar.d.ts +2 -16
  19. package/cjs/components/date-picker/DatePickerCalendar.js +27 -86
  20. package/cjs/components/date-picker/DatePickerCalendar.js.map +1 -1
  21. package/cjs/components/date-picker/DatePickerCalendarNavigator.d.ts +37 -0
  22. package/cjs/components/date-picker/DatePickerCalendarNavigator.js +173 -0
  23. package/cjs/components/date-picker/DatePickerCalendarNavigator.js.map +1 -0
  24. package/cjs/components/date-picker/DatePickerContext.d.ts +3 -0
  25. package/cjs/components/date-picker/DatePickerContext.js.map +1 -1
  26. package/cjs/components/date-picker/DatePickerDocs.js +6 -1
  27. package/cjs/components/date-picker/DatePickerDocs.js.map +1 -1
  28. package/cjs/components/date-picker/DatePickerFooter.js +20 -17
  29. package/cjs/components/date-picker/DatePickerFooter.js.map +1 -1
  30. package/cjs/components/date-picker/DatePickerProvider.js +7 -0
  31. package/cjs/components/date-picker/DatePickerProvider.js.map +1 -1
  32. package/cjs/components/date-picker/DatePickerRange.js +2 -28
  33. package/cjs/components/date-picker/DatePickerRange.js.map +1 -1
  34. package/cjs/components/date-picker/hooks/useSubmittedDates.d.ts +7 -0
  35. package/cjs/components/date-picker/hooks/useSubmittedDates.js +19 -0
  36. package/cjs/components/date-picker/hooks/useSubmittedDates.js.map +1 -0
  37. package/cjs/components/date-picker/style/dnb-date-picker.css +1 -1
  38. package/cjs/components/date-picker/style/dnb-date-picker.min.css +1 -1
  39. package/cjs/components/date-picker/style/dnb-date-picker.scss +1 -1
  40. package/cjs/components/date-picker/style/themes/dnb-date-picker-theme-ui.css +17 -0
  41. package/cjs/components/date-picker/style/themes/dnb-date-picker-theme-ui.min.css +1 -1
  42. package/cjs/components/date-picker/style/themes/dnb-date-picker-theme-ui.scss +19 -0
  43. package/cjs/components/drawer/Drawer.js +1 -0
  44. package/cjs/components/drawer/Drawer.js.map +1 -1
  45. package/cjs/components/dropdown/Dropdown.js +6 -4
  46. package/cjs/components/dropdown/Dropdown.js.map +1 -1
  47. package/cjs/components/dropdown/DropdownDocs.d.ts +179 -3
  48. package/cjs/components/dropdown/DropdownDocs.js.map +1 -1
  49. package/cjs/components/heading/HeadingHelpers.js +9 -5
  50. package/cjs/components/heading/HeadingHelpers.js.map +1 -1
  51. package/cjs/components/icon/Icon.d.ts +2 -2
  52. package/cjs/components/input-masked/InputMaskedDocs.js +1 -1
  53. package/cjs/components/input-masked/InputMaskedDocs.js.map +1 -1
  54. package/cjs/components/input-masked/InputMaskedHooks.d.ts +1 -0
  55. package/cjs/components/input-masked/InputMaskedHooks.js +38 -6
  56. package/cjs/components/input-masked/InputMaskedHooks.js.map +1 -1
  57. package/cjs/components/input-masked/InputMaskedUtils.js +5 -4
  58. package/cjs/components/input-masked/InputMaskedUtils.js.map +1 -1
  59. package/cjs/components/number-format/NumberUtils.js +6 -4
  60. package/cjs/components/number-format/NumberUtils.js.map +1 -1
  61. package/cjs/components/switch/SwitchDocs.js +2 -2
  62. package/cjs/components/switch/SwitchDocs.js.map +1 -1
  63. package/cjs/extensions/forms/DataContext/Context.d.ts +1 -1
  64. package/cjs/extensions/forms/DataContext/Context.js.map +1 -1
  65. package/cjs/extensions/forms/DataContext/Provider/Provider.js +9 -0
  66. package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  67. package/cjs/extensions/forms/Field/Boolean/Boolean.d.ts +1 -0
  68. package/cjs/extensions/forms/Field/Boolean/Boolean.js.map +1 -1
  69. package/cjs/extensions/forms/Field/Boolean/BooleanDocs.d.ts +1 -0
  70. package/cjs/extensions/forms/Field/Boolean/BooleanDocs.js +8 -1
  71. package/cjs/extensions/forms/Field/Boolean/BooleanDocs.js.map +1 -1
  72. package/cjs/extensions/forms/Field/Date/Date.d.ts +1 -1
  73. package/cjs/extensions/forms/Field/Date/Date.js +1 -1
  74. package/cjs/extensions/forms/Field/Date/Date.js.map +1 -1
  75. package/cjs/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
  76. package/cjs/extensions/forms/Field/Number/NumberDocs.js +1 -1
  77. package/cjs/extensions/forms/Field/Number/NumberDocs.js.map +1 -1
  78. package/cjs/extensions/forms/Field/Provider/useFieldProvider.d.ts +3 -3
  79. package/cjs/extensions/forms/Field/SelectCountry/SelectCountryDocs.js +2 -2
  80. package/cjs/extensions/forms/Field/SelectCountry/SelectCountryDocs.js.map +1 -1
  81. package/cjs/extensions/forms/Field/SelectCurrency/SelectCurrencyDocs.js +2 -2
  82. package/cjs/extensions/forms/Field/SelectCurrency/SelectCurrencyDocs.js.map +1 -1
  83. package/cjs/extensions/forms/Field/Selection/Selection.d.ts +2 -0
  84. package/cjs/extensions/forms/Field/Selection/Selection.js +10 -9
  85. package/cjs/extensions/forms/Field/Selection/Selection.js.map +1 -1
  86. package/cjs/extensions/forms/Field/Toggle/Toggle.d.ts +7 -0
  87. package/cjs/extensions/forms/Field/Toggle/Toggle.js +24 -8
  88. package/cjs/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  89. package/cjs/extensions/forms/Field/Toggle/ToggleDocs.d.ts +1 -0
  90. package/cjs/extensions/forms/Field/Toggle/ToggleDocs.js +8 -1
  91. package/cjs/extensions/forms/Field/Toggle/ToggleDocs.js.map +1 -1
  92. package/cjs/extensions/forms/Form/Isolation/IsolatedContainer.d.ts +4 -0
  93. package/cjs/extensions/forms/Form/Isolation/IsolatedContainer.js +64 -0
  94. package/cjs/extensions/forms/Form/Isolation/IsolatedContainer.js.map +1 -0
  95. package/cjs/extensions/forms/Form/Isolation/Isolation.d.ts +16 -0
  96. package/cjs/extensions/forms/Form/Isolation/Isolation.js +39 -14
  97. package/cjs/extensions/forms/Form/Isolation/Isolation.js.map +1 -1
  98. package/cjs/extensions/forms/Form/Isolation/IsolationCommitButton.js +1 -1
  99. package/cjs/extensions/forms/Form/Isolation/IsolationCommitButton.js.map +1 -1
  100. package/cjs/extensions/forms/Form/Isolation/IsolationContext.d.ts +12 -0
  101. package/cjs/extensions/forms/Form/Isolation/IsolationContext.js +11 -0
  102. package/cjs/extensions/forms/Form/Isolation/IsolationContext.js.map +1 -0
  103. package/cjs/extensions/forms/Form/Isolation/IsolationDataReference.d.ts +9 -0
  104. package/cjs/extensions/forms/Form/Isolation/IsolationDataReference.js +31 -0
  105. package/cjs/extensions/forms/Form/Isolation/IsolationDataReference.js.map +1 -0
  106. package/cjs/extensions/forms/Form/Isolation/IsolationDocs.js +15 -0
  107. package/cjs/extensions/forms/Form/Isolation/IsolationDocs.js.map +1 -1
  108. package/cjs/extensions/forms/Form/Isolation/IsolationResetButton.d.ts +7 -0
  109. package/cjs/extensions/forms/Form/Isolation/IsolationResetButton.js +112 -0
  110. package/cjs/extensions/forms/Form/Isolation/IsolationResetButton.js.map +1 -0
  111. package/cjs/extensions/forms/Form/Isolation/useDataContextSnapshot.d.ts +7 -0
  112. package/cjs/extensions/forms/Form/Isolation/useDataContextSnapshot.js +58 -0
  113. package/cjs/extensions/forms/Form/Isolation/useDataContextSnapshot.js.map +1 -0
  114. package/cjs/extensions/forms/Form/Isolation/useHandleStatus.d.ts +9 -0
  115. package/cjs/extensions/forms/Form/Isolation/useHandleStatus.js +57 -0
  116. package/cjs/extensions/forms/Form/Isolation/useHandleStatus.js.map +1 -0
  117. package/cjs/extensions/forms/{Iterate/EditContainer → Form/Isolation}/useHasContentChanged.js +11 -9
  118. package/cjs/extensions/forms/Form/Isolation/useHasContentChanged.js.map +1 -0
  119. package/cjs/extensions/forms/Form/Snapshot/Snapshot.d.ts +2 -1
  120. package/cjs/extensions/forms/Form/Snapshot/Snapshot.js.map +1 -1
  121. package/cjs/extensions/forms/Iterate/EditContainer/ResetButton.js +1 -1
  122. package/cjs/extensions/forms/Iterate/EditContainer/ResetButton.js.map +1 -1
  123. package/cjs/extensions/forms/Iterate/EditContainer/index.d.ts +1 -1
  124. package/cjs/extensions/forms/Iterate/EditContainer/index.js +1 -1
  125. package/cjs/extensions/forms/Iterate/EditContainer/index.js.map +1 -1
  126. package/cjs/extensions/forms/Iterate/PushContainer/PushContainer.d.ts +7 -0
  127. package/cjs/extensions/forms/Iterate/PushContainer/PushContainer.js +15 -56
  128. package/cjs/extensions/forms/Iterate/PushContainer/PushContainer.js.map +1 -1
  129. package/cjs/extensions/forms/Iterate/PushContainer/PushContainerDocs.js +2 -2
  130. package/cjs/extensions/forms/Iterate/PushContainer/PushContainerDocs.js.map +1 -1
  131. package/cjs/extensions/forms/constants/locales/en-GB.d.ts +1 -1
  132. package/cjs/extensions/forms/constants/locales/en-GB.js +3 -3
  133. package/cjs/extensions/forms/constants/locales/en-GB.js.map +1 -1
  134. package/cjs/extensions/forms/constants/locales/en-US.d.ts +1 -1
  135. package/cjs/extensions/forms/constants/locales/index.d.ts +2 -2
  136. package/cjs/extensions/forms/constants/locales/nb-NO.d.ts +1 -1
  137. package/cjs/extensions/forms/constants/locales/nb-NO.js +3 -3
  138. package/cjs/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  139. package/cjs/extensions/forms/constants/locales/sv-SE.d.ts +1 -1
  140. package/cjs/extensions/forms/constants/locales/sv-SE.js +3 -3
  141. package/cjs/extensions/forms/constants/locales/sv-SE.js.map +1 -1
  142. package/cjs/extensions/forms/hooks/useDataContext.js +5 -3
  143. package/cjs/extensions/forms/hooks/useDataContext.js.map +1 -1
  144. package/cjs/extensions/forms/hooks/useSnapshot.js +17 -14
  145. package/cjs/extensions/forms/hooks/useSnapshot.js.map +1 -1
  146. package/cjs/fragments/drawer-list/DrawerList.d.ts +176 -224
  147. package/cjs/fragments/drawer-list/DrawerList.js +70 -175
  148. package/cjs/fragments/drawer-list/DrawerList.js.map +1 -1
  149. package/cjs/fragments/drawer-list/DrawerListContext.d.ts +27 -2
  150. package/cjs/fragments/drawer-list/DrawerListContext.js.map +1 -1
  151. package/cjs/fragments/drawer-list/DrawerListDocs.d.ts +211 -4
  152. package/cjs/fragments/drawer-list/DrawerListDocs.js +2 -2
  153. package/cjs/fragments/drawer-list/DrawerListDocs.js.map +1 -1
  154. package/cjs/fragments/drawer-list/DrawerListHelpers.d.ts +85 -89
  155. package/cjs/fragments/drawer-list/DrawerListHelpers.js +52 -58
  156. package/cjs/fragments/drawer-list/DrawerListHelpers.js.map +1 -1
  157. package/cjs/fragments/drawer-list/DrawerListItem.d.ts +30 -0
  158. package/cjs/fragments/drawer-list/DrawerListItem.js +106 -0
  159. package/cjs/fragments/drawer-list/DrawerListItem.js.map +1 -0
  160. package/cjs/fragments/drawer-list/DrawerListPortal.d.ts +20 -30
  161. package/cjs/fragments/drawer-list/DrawerListPortal.js +93 -125
  162. package/cjs/fragments/drawer-list/DrawerListPortal.js.map +1 -1
  163. package/cjs/fragments/drawer-list/DrawerListProvider.d.ts +217 -11
  164. package/cjs/fragments/drawer-list/DrawerListProvider.js +11 -18
  165. package/cjs/fragments/drawer-list/DrawerListProvider.js.map +1 -1
  166. package/cjs/shared/Eufemia.d.ts +1 -1
  167. package/cjs/shared/Eufemia.js +2 -2
  168. package/cjs/shared/Eufemia.js.map +1 -1
  169. package/cjs/shared/component-helper.d.ts +45 -48
  170. package/cjs/shared/component-helper.js +72 -201
  171. package/cjs/shared/component-helper.js.map +1 -1
  172. package/cjs/shared/helpers/withCamelCaseProps.d.ts +4 -5
  173. package/cjs/shared/helpers/withCamelCaseProps.js +7 -2
  174. package/cjs/shared/helpers/withCamelCaseProps.js.map +1 -1
  175. package/cjs/shared/legacy/component-helper-legacy.d.ts +19 -0
  176. package/cjs/shared/legacy/component-helper-legacy.js +202 -0
  177. package/cjs/shared/legacy/component-helper-legacy.js.map +1 -0
  178. package/cjs/shared/locales/en-GB.d.ts +1 -0
  179. package/cjs/shared/locales/en-GB.js +1 -0
  180. package/cjs/shared/locales/en-GB.js.map +1 -1
  181. package/cjs/shared/locales/en-US.js.map +1 -1
  182. package/cjs/shared/locales/index.d.ts +2 -0
  183. package/cjs/shared/locales/nb-NO.d.ts +1 -0
  184. package/cjs/shared/locales/nb-NO.js +2 -1
  185. package/cjs/shared/locales/nb-NO.js.map +1 -1
  186. package/cjs/shared/locales/sv-SE.d.ts +1 -0
  187. package/cjs/shared/locales/sv-SE.js +1 -0
  188. package/cjs/shared/locales/sv-SE.js.map +1 -1
  189. package/cjs/style/core/scopes.scss +1 -1
  190. package/cjs/style/dnb-ui-basis.css +1 -1
  191. package/cjs/style/dnb-ui-basis.min.css +1 -1
  192. package/cjs/style/dnb-ui-body.css +1 -1
  193. package/cjs/style/dnb-ui-body.min.css +1 -1
  194. package/cjs/style/dnb-ui-components.css +2 -1
  195. package/cjs/style/dnb-ui-components.min.css +1 -1
  196. package/cjs/style/dnb-ui-core.css +1 -1
  197. package/cjs/style/dnb-ui-core.min.css +1 -1
  198. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +19 -1
  199. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  200. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +19 -1
  201. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  202. package/cjs/style/themes/theme-ui/ui-theme-components.css +19 -1
  203. package/cjs/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  204. package/components/autocomplete/Autocomplete.js +6 -3
  205. package/components/autocomplete/Autocomplete.js.map +1 -1
  206. package/components/autocomplete/AutocompleteDocs.d.ts +289 -3
  207. package/components/autocomplete/AutocompleteDocs.js +1 -1
  208. package/components/autocomplete/AutocompleteDocs.js.map +1 -1
  209. package/components/button/style/dnb-button.css +1 -0
  210. package/components/button/style/dnb-button.min.css +1 -1
  211. package/components/button/style/dnb-button.scss +1 -0
  212. package/components/checkbox/Checkbox.d.ts +9 -1
  213. package/components/checkbox/Checkbox.js +60 -35
  214. package/components/checkbox/Checkbox.js.map +1 -1
  215. package/components/checkbox/CheckboxDocs.js +6 -1
  216. package/components/checkbox/CheckboxDocs.js.map +1 -1
  217. package/components/date-picker/DatePicker.d.ts +4 -0
  218. package/components/date-picker/DatePicker.js +4 -3
  219. package/components/date-picker/DatePicker.js.map +1 -1
  220. package/components/date-picker/DatePickerCalendar.d.ts +2 -16
  221. package/components/date-picker/DatePickerCalendar.js +27 -86
  222. package/components/date-picker/DatePickerCalendar.js.map +1 -1
  223. package/components/date-picker/DatePickerCalendarNavigator.d.ts +37 -0
  224. package/components/date-picker/DatePickerCalendarNavigator.js +162 -0
  225. package/components/date-picker/DatePickerCalendarNavigator.js.map +1 -0
  226. package/components/date-picker/DatePickerContext.d.ts +3 -0
  227. package/components/date-picker/DatePickerContext.js.map +1 -1
  228. package/components/date-picker/DatePickerDocs.js +6 -1
  229. package/components/date-picker/DatePickerDocs.js.map +1 -1
  230. package/components/date-picker/DatePickerFooter.js +20 -17
  231. package/components/date-picker/DatePickerFooter.js.map +1 -1
  232. package/components/date-picker/DatePickerProvider.js +7 -0
  233. package/components/date-picker/DatePickerProvider.js.map +1 -1
  234. package/components/date-picker/DatePickerRange.js +2 -28
  235. package/components/date-picker/DatePickerRange.js.map +1 -1
  236. package/components/date-picker/hooks/useSubmittedDates.d.ts +7 -0
  237. package/components/date-picker/hooks/useSubmittedDates.js +14 -0
  238. package/components/date-picker/hooks/useSubmittedDates.js.map +1 -0
  239. package/components/date-picker/style/dnb-date-picker.css +1 -1
  240. package/components/date-picker/style/dnb-date-picker.min.css +1 -1
  241. package/components/date-picker/style/dnb-date-picker.scss +1 -1
  242. package/components/date-picker/style/themes/dnb-date-picker-theme-ui.css +17 -0
  243. package/components/date-picker/style/themes/dnb-date-picker-theme-ui.min.css +1 -1
  244. package/components/date-picker/style/themes/dnb-date-picker-theme-ui.scss +19 -0
  245. package/components/drawer/Drawer.js +1 -0
  246. package/components/drawer/Drawer.js.map +1 -1
  247. package/components/dropdown/Dropdown.js +6 -4
  248. package/components/dropdown/Dropdown.js.map +1 -1
  249. package/components/dropdown/DropdownDocs.d.ts +179 -3
  250. package/components/dropdown/DropdownDocs.js.map +1 -1
  251. package/components/heading/HeadingHelpers.js +9 -5
  252. package/components/heading/HeadingHelpers.js.map +1 -1
  253. package/components/icon/Icon.d.ts +2 -2
  254. package/components/input-masked/InputMaskedDocs.js +1 -1
  255. package/components/input-masked/InputMaskedDocs.js.map +1 -1
  256. package/components/input-masked/InputMaskedHooks.d.ts +1 -0
  257. package/components/input-masked/InputMaskedHooks.js +39 -7
  258. package/components/input-masked/InputMaskedHooks.js.map +1 -1
  259. package/components/input-masked/InputMaskedUtils.js +6 -5
  260. package/components/input-masked/InputMaskedUtils.js.map +1 -1
  261. package/components/number-format/NumberUtils.js +5 -4
  262. package/components/number-format/NumberUtils.js.map +1 -1
  263. package/components/switch/SwitchDocs.js +2 -2
  264. package/components/switch/SwitchDocs.js.map +1 -1
  265. package/es/components/autocomplete/Autocomplete.js +6 -3
  266. package/es/components/autocomplete/Autocomplete.js.map +1 -1
  267. package/es/components/autocomplete/AutocompleteDocs.d.ts +289 -3
  268. package/es/components/autocomplete/AutocompleteDocs.js +1 -1
  269. package/es/components/autocomplete/AutocompleteDocs.js.map +1 -1
  270. package/es/components/button/style/dnb-button.css +1 -0
  271. package/es/components/button/style/dnb-button.min.css +1 -1
  272. package/es/components/button/style/dnb-button.scss +1 -0
  273. package/es/components/checkbox/Checkbox.d.ts +9 -1
  274. package/es/components/checkbox/Checkbox.js +60 -35
  275. package/es/components/checkbox/Checkbox.js.map +1 -1
  276. package/es/components/checkbox/CheckboxDocs.js +6 -1
  277. package/es/components/checkbox/CheckboxDocs.js.map +1 -1
  278. package/es/components/date-picker/DatePicker.d.ts +4 -0
  279. package/es/components/date-picker/DatePicker.js +4 -3
  280. package/es/components/date-picker/DatePicker.js.map +1 -1
  281. package/es/components/date-picker/DatePickerCalendar.d.ts +2 -16
  282. package/es/components/date-picker/DatePickerCalendar.js +23 -80
  283. package/es/components/date-picker/DatePickerCalendar.js.map +1 -1
  284. package/es/components/date-picker/DatePickerCalendarNavigator.d.ts +37 -0
  285. package/es/components/date-picker/DatePickerCalendarNavigator.js +158 -0
  286. package/es/components/date-picker/DatePickerCalendarNavigator.js.map +1 -0
  287. package/es/components/date-picker/DatePickerContext.d.ts +3 -0
  288. package/es/components/date-picker/DatePickerContext.js.map +1 -1
  289. package/es/components/date-picker/DatePickerDocs.js +6 -1
  290. package/es/components/date-picker/DatePickerDocs.js.map +1 -1
  291. package/es/components/date-picker/DatePickerFooter.js +20 -17
  292. package/es/components/date-picker/DatePickerFooter.js.map +1 -1
  293. package/es/components/date-picker/DatePickerProvider.js +7 -0
  294. package/es/components/date-picker/DatePickerProvider.js.map +1 -1
  295. package/es/components/date-picker/DatePickerRange.js +2 -27
  296. package/es/components/date-picker/DatePickerRange.js.map +1 -1
  297. package/es/components/date-picker/hooks/useSubmittedDates.d.ts +7 -0
  298. package/es/components/date-picker/hooks/useSubmittedDates.js +14 -0
  299. package/es/components/date-picker/hooks/useSubmittedDates.js.map +1 -0
  300. package/es/components/date-picker/style/dnb-date-picker.css +1 -1
  301. package/es/components/date-picker/style/dnb-date-picker.min.css +1 -1
  302. package/es/components/date-picker/style/dnb-date-picker.scss +1 -1
  303. package/es/components/date-picker/style/themes/dnb-date-picker-theme-ui.css +17 -0
  304. package/es/components/date-picker/style/themes/dnb-date-picker-theme-ui.min.css +1 -1
  305. package/es/components/date-picker/style/themes/dnb-date-picker-theme-ui.scss +19 -0
  306. package/es/components/drawer/Drawer.js +1 -0
  307. package/es/components/drawer/Drawer.js.map +1 -1
  308. package/es/components/dropdown/Dropdown.js +6 -4
  309. package/es/components/dropdown/Dropdown.js.map +1 -1
  310. package/es/components/dropdown/DropdownDocs.d.ts +179 -3
  311. package/es/components/dropdown/DropdownDocs.js.map +1 -1
  312. package/es/components/heading/HeadingHelpers.js +9 -5
  313. package/es/components/heading/HeadingHelpers.js.map +1 -1
  314. package/es/components/icon/Icon.d.ts +2 -2
  315. package/es/components/input-masked/InputMaskedDocs.js +1 -1
  316. package/es/components/input-masked/InputMaskedDocs.js.map +1 -1
  317. package/es/components/input-masked/InputMaskedHooks.d.ts +1 -0
  318. package/es/components/input-masked/InputMaskedHooks.js +39 -7
  319. package/es/components/input-masked/InputMaskedHooks.js.map +1 -1
  320. package/es/components/input-masked/InputMaskedUtils.js +6 -5
  321. package/es/components/input-masked/InputMaskedUtils.js.map +1 -1
  322. package/es/components/number-format/NumberUtils.js +5 -4
  323. package/es/components/number-format/NumberUtils.js.map +1 -1
  324. package/es/components/switch/SwitchDocs.js +2 -2
  325. package/es/components/switch/SwitchDocs.js.map +1 -1
  326. package/es/extensions/forms/DataContext/Context.d.ts +1 -1
  327. package/es/extensions/forms/DataContext/Context.js.map +1 -1
  328. package/es/extensions/forms/DataContext/Provider/Provider.js +9 -0
  329. package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  330. package/es/extensions/forms/Field/Boolean/Boolean.d.ts +1 -0
  331. package/es/extensions/forms/Field/Boolean/Boolean.js.map +1 -1
  332. package/es/extensions/forms/Field/Boolean/BooleanDocs.d.ts +1 -0
  333. package/es/extensions/forms/Field/Boolean/BooleanDocs.js +7 -0
  334. package/es/extensions/forms/Field/Boolean/BooleanDocs.js.map +1 -1
  335. package/es/extensions/forms/Field/Date/Date.d.ts +1 -1
  336. package/es/extensions/forms/Field/Date/Date.js +1 -1
  337. package/es/extensions/forms/Field/Date/Date.js.map +1 -1
  338. package/es/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
  339. package/es/extensions/forms/Field/Number/NumberDocs.js +1 -1
  340. package/es/extensions/forms/Field/Number/NumberDocs.js.map +1 -1
  341. package/es/extensions/forms/Field/Provider/useFieldProvider.d.ts +3 -3
  342. package/es/extensions/forms/Field/SelectCountry/SelectCountryDocs.js +3 -3
  343. package/es/extensions/forms/Field/SelectCountry/SelectCountryDocs.js.map +1 -1
  344. package/es/extensions/forms/Field/SelectCurrency/SelectCurrencyDocs.js +3 -3
  345. package/es/extensions/forms/Field/SelectCurrency/SelectCurrencyDocs.js.map +1 -1
  346. package/es/extensions/forms/Field/Selection/Selection.d.ts +2 -0
  347. package/es/extensions/forms/Field/Selection/Selection.js +9 -8
  348. package/es/extensions/forms/Field/Selection/Selection.js.map +1 -1
  349. package/es/extensions/forms/Field/Toggle/Toggle.d.ts +7 -0
  350. package/es/extensions/forms/Field/Toggle/Toggle.js +24 -6
  351. package/es/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  352. package/es/extensions/forms/Field/Toggle/ToggleDocs.d.ts +1 -0
  353. package/es/extensions/forms/Field/Toggle/ToggleDocs.js +7 -0
  354. package/es/extensions/forms/Field/Toggle/ToggleDocs.js.map +1 -1
  355. package/es/extensions/forms/Form/Isolation/IsolatedContainer.d.ts +4 -0
  356. package/es/extensions/forms/Form/Isolation/IsolatedContainer.js +53 -0
  357. package/es/extensions/forms/Form/Isolation/IsolatedContainer.js.map +1 -0
  358. package/es/extensions/forms/Form/Isolation/Isolation.d.ts +16 -0
  359. package/es/extensions/forms/Form/Isolation/Isolation.js +40 -14
  360. package/es/extensions/forms/Form/Isolation/Isolation.js.map +1 -1
  361. package/es/extensions/forms/Form/Isolation/IsolationCommitButton.js +1 -1
  362. package/es/extensions/forms/Form/Isolation/IsolationCommitButton.js.map +1 -1
  363. package/es/extensions/forms/Form/Isolation/IsolationContext.d.ts +12 -0
  364. package/es/extensions/forms/Form/Isolation/IsolationContext.js +6 -0
  365. package/es/extensions/forms/Form/Isolation/IsolationContext.js.map +1 -0
  366. package/es/extensions/forms/Form/Isolation/IsolationDataReference.d.ts +9 -0
  367. package/es/extensions/forms/Form/Isolation/IsolationDataReference.js +25 -0
  368. package/es/extensions/forms/Form/Isolation/IsolationDataReference.js.map +1 -0
  369. package/es/extensions/forms/Form/Isolation/IsolationDocs.js +15 -0
  370. package/es/extensions/forms/Form/Isolation/IsolationDocs.js.map +1 -1
  371. package/es/extensions/forms/Form/Isolation/IsolationResetButton.d.ts +7 -0
  372. package/es/extensions/forms/Form/Isolation/IsolationResetButton.js +99 -0
  373. package/es/extensions/forms/Form/Isolation/IsolationResetButton.js.map +1 -0
  374. package/es/extensions/forms/Form/Isolation/useDataContextSnapshot.d.ts +7 -0
  375. package/es/extensions/forms/Form/Isolation/useDataContextSnapshot.js +50 -0
  376. package/es/extensions/forms/Form/Isolation/useDataContextSnapshot.js.map +1 -0
  377. package/es/extensions/forms/Form/Isolation/useHandleStatus.d.ts +9 -0
  378. package/es/extensions/forms/Form/Isolation/useHandleStatus.js +48 -0
  379. package/es/extensions/forms/Form/Isolation/useHandleStatus.js.map +1 -0
  380. package/es/extensions/forms/{Iterate/EditContainer → Form/Isolation}/useHasContentChanged.js +12 -10
  381. package/es/extensions/forms/Form/Isolation/useHasContentChanged.js.map +1 -0
  382. package/es/extensions/forms/Form/Snapshot/Snapshot.d.ts +2 -1
  383. package/es/extensions/forms/Form/Snapshot/Snapshot.js.map +1 -1
  384. package/es/extensions/forms/Iterate/EditContainer/ResetButton.js +1 -1
  385. package/es/extensions/forms/Iterate/EditContainer/ResetButton.js.map +1 -1
  386. package/es/extensions/forms/Iterate/EditContainer/index.d.ts +1 -1
  387. package/es/extensions/forms/Iterate/EditContainer/index.js +1 -1
  388. package/es/extensions/forms/Iterate/EditContainer/index.js.map +1 -1
  389. package/es/extensions/forms/Iterate/PushContainer/PushContainer.d.ts +7 -0
  390. package/es/extensions/forms/Iterate/PushContainer/PushContainer.js +16 -55
  391. package/es/extensions/forms/Iterate/PushContainer/PushContainer.js.map +1 -1
  392. package/es/extensions/forms/Iterate/PushContainer/PushContainerDocs.js +2 -2
  393. package/es/extensions/forms/Iterate/PushContainer/PushContainerDocs.js.map +1 -1
  394. package/es/extensions/forms/constants/locales/en-GB.d.ts +1 -1
  395. package/es/extensions/forms/constants/locales/en-GB.js +3 -3
  396. package/es/extensions/forms/constants/locales/en-GB.js.map +1 -1
  397. package/es/extensions/forms/constants/locales/en-US.d.ts +1 -1
  398. package/es/extensions/forms/constants/locales/index.d.ts +2 -2
  399. package/es/extensions/forms/constants/locales/nb-NO.d.ts +1 -1
  400. package/es/extensions/forms/constants/locales/nb-NO.js +3 -3
  401. package/es/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  402. package/es/extensions/forms/constants/locales/sv-SE.d.ts +1 -1
  403. package/es/extensions/forms/constants/locales/sv-SE.js +3 -3
  404. package/es/extensions/forms/constants/locales/sv-SE.js.map +1 -1
  405. package/es/extensions/forms/hooks/useDataContext.js +5 -3
  406. package/es/extensions/forms/hooks/useDataContext.js.map +1 -1
  407. package/es/extensions/forms/hooks/useSnapshot.js +18 -15
  408. package/es/extensions/forms/hooks/useSnapshot.js.map +1 -1
  409. package/es/fragments/drawer-list/DrawerList.d.ts +176 -224
  410. package/es/fragments/drawer-list/DrawerList.js +72 -173
  411. package/es/fragments/drawer-list/DrawerList.js.map +1 -1
  412. package/es/fragments/drawer-list/DrawerListContext.d.ts +27 -2
  413. package/es/fragments/drawer-list/DrawerListContext.js.map +1 -1
  414. package/es/fragments/drawer-list/DrawerListDocs.d.ts +211 -4
  415. package/es/fragments/drawer-list/DrawerListDocs.js +2 -2
  416. package/es/fragments/drawer-list/DrawerListDocs.js.map +1 -1
  417. package/es/fragments/drawer-list/DrawerListHelpers.d.ts +85 -89
  418. package/es/fragments/drawer-list/DrawerListHelpers.js +45 -54
  419. package/es/fragments/drawer-list/DrawerListHelpers.js.map +1 -1
  420. package/es/fragments/drawer-list/DrawerListItem.d.ts +30 -0
  421. package/es/fragments/drawer-list/DrawerListItem.js +90 -0
  422. package/es/fragments/drawer-list/DrawerListItem.js.map +1 -0
  423. package/es/fragments/drawer-list/DrawerListPortal.d.ts +20 -30
  424. package/es/fragments/drawer-list/DrawerListPortal.js +88 -120
  425. package/es/fragments/drawer-list/DrawerListPortal.js.map +1 -1
  426. package/es/fragments/drawer-list/DrawerListProvider.d.ts +217 -11
  427. package/es/fragments/drawer-list/DrawerListProvider.js +33 -19
  428. package/es/fragments/drawer-list/DrawerListProvider.js.map +1 -1
  429. package/es/shared/Eufemia.d.ts +1 -1
  430. package/es/shared/Eufemia.js +2 -2
  431. package/es/shared/Eufemia.js.map +1 -1
  432. package/es/shared/component-helper.d.ts +45 -48
  433. package/es/shared/component-helper.js +20 -183
  434. package/es/shared/component-helper.js.map +1 -1
  435. package/es/shared/helpers/withCamelCaseProps.d.ts +4 -5
  436. package/es/shared/helpers/withCamelCaseProps.js +7 -2
  437. package/es/shared/helpers/withCamelCaseProps.js.map +1 -1
  438. package/es/shared/legacy/component-helper-legacy.d.ts +19 -0
  439. package/es/shared/legacy/component-helper-legacy.js +180 -0
  440. package/es/shared/legacy/component-helper-legacy.js.map +1 -0
  441. package/es/shared/locales/en-GB.d.ts +1 -0
  442. package/es/shared/locales/en-GB.js +1 -0
  443. package/es/shared/locales/en-GB.js.map +1 -1
  444. package/es/shared/locales/en-US.js.map +1 -1
  445. package/es/shared/locales/index.d.ts +2 -0
  446. package/es/shared/locales/nb-NO.d.ts +1 -0
  447. package/es/shared/locales/nb-NO.js +2 -1
  448. package/es/shared/locales/nb-NO.js.map +1 -1
  449. package/es/shared/locales/sv-SE.d.ts +1 -0
  450. package/es/shared/locales/sv-SE.js +1 -0
  451. package/es/shared/locales/sv-SE.js.map +1 -1
  452. package/es/style/core/scopes.scss +1 -1
  453. package/es/style/dnb-ui-basis.css +1 -1
  454. package/es/style/dnb-ui-basis.min.css +1 -1
  455. package/es/style/dnb-ui-body.css +1 -1
  456. package/es/style/dnb-ui-body.min.css +1 -1
  457. package/es/style/dnb-ui-components.css +2 -1
  458. package/es/style/dnb-ui-components.min.css +1 -1
  459. package/es/style/dnb-ui-core.css +1 -1
  460. package/es/style/dnb-ui-core.min.css +1 -1
  461. package/es/style/themes/theme-eiendom/eiendom-theme-components.css +19 -1
  462. package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  463. package/es/style/themes/theme-sbanken/sbanken-theme-components.css +19 -1
  464. package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  465. package/es/style/themes/theme-ui/ui-theme-components.css +19 -1
  466. package/es/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  467. package/esm/dnb-ui-basis.min.mjs +1 -1
  468. package/esm/dnb-ui-components.min.mjs +1 -1
  469. package/esm/dnb-ui-elements.min.mjs +1 -1
  470. package/esm/dnb-ui-extensions.min.mjs +2 -2
  471. package/esm/dnb-ui-lib.min.mjs +1 -1
  472. package/extensions/forms/DataContext/Context.d.ts +1 -1
  473. package/extensions/forms/DataContext/Context.js.map +1 -1
  474. package/extensions/forms/DataContext/Provider/Provider.js +9 -0
  475. package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  476. package/extensions/forms/Field/Boolean/Boolean.d.ts +1 -0
  477. package/extensions/forms/Field/Boolean/Boolean.js.map +1 -1
  478. package/extensions/forms/Field/Boolean/BooleanDocs.d.ts +1 -0
  479. package/extensions/forms/Field/Boolean/BooleanDocs.js +7 -0
  480. package/extensions/forms/Field/Boolean/BooleanDocs.js.map +1 -1
  481. package/extensions/forms/Field/Date/Date.d.ts +1 -1
  482. package/extensions/forms/Field/Date/Date.js +1 -1
  483. package/extensions/forms/Field/Date/Date.js.map +1 -1
  484. package/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
  485. package/extensions/forms/Field/Number/NumberDocs.js +1 -1
  486. package/extensions/forms/Field/Number/NumberDocs.js.map +1 -1
  487. package/extensions/forms/Field/Provider/useFieldProvider.d.ts +3 -3
  488. package/extensions/forms/Field/SelectCountry/SelectCountryDocs.js +3 -3
  489. package/extensions/forms/Field/SelectCountry/SelectCountryDocs.js.map +1 -1
  490. package/extensions/forms/Field/SelectCurrency/SelectCurrencyDocs.js +3 -3
  491. package/extensions/forms/Field/SelectCurrency/SelectCurrencyDocs.js.map +1 -1
  492. package/extensions/forms/Field/Selection/Selection.d.ts +2 -0
  493. package/extensions/forms/Field/Selection/Selection.js +10 -9
  494. package/extensions/forms/Field/Selection/Selection.js.map +1 -1
  495. package/extensions/forms/Field/Toggle/Toggle.d.ts +7 -0
  496. package/extensions/forms/Field/Toggle/Toggle.js +26 -9
  497. package/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  498. package/extensions/forms/Field/Toggle/ToggleDocs.d.ts +1 -0
  499. package/extensions/forms/Field/Toggle/ToggleDocs.js +7 -0
  500. package/extensions/forms/Field/Toggle/ToggleDocs.js.map +1 -1
  501. package/extensions/forms/Form/Isolation/IsolatedContainer.d.ts +4 -0
  502. package/extensions/forms/Form/Isolation/IsolatedContainer.js +54 -0
  503. package/extensions/forms/Form/Isolation/IsolatedContainer.js.map +1 -0
  504. package/extensions/forms/Form/Isolation/Isolation.d.ts +16 -0
  505. package/extensions/forms/Form/Isolation/Isolation.js +40 -15
  506. package/extensions/forms/Form/Isolation/Isolation.js.map +1 -1
  507. package/extensions/forms/Form/Isolation/IsolationCommitButton.js +1 -1
  508. package/extensions/forms/Form/Isolation/IsolationCommitButton.js.map +1 -1
  509. package/extensions/forms/Form/Isolation/IsolationContext.d.ts +12 -0
  510. package/extensions/forms/Form/Isolation/IsolationContext.js +6 -0
  511. package/extensions/forms/Form/Isolation/IsolationContext.js.map +1 -0
  512. package/extensions/forms/Form/Isolation/IsolationDataReference.d.ts +9 -0
  513. package/extensions/forms/Form/Isolation/IsolationDataReference.js +25 -0
  514. package/extensions/forms/Form/Isolation/IsolationDataReference.js.map +1 -0
  515. package/extensions/forms/Form/Isolation/IsolationDocs.js +15 -0
  516. package/extensions/forms/Form/Isolation/IsolationDocs.js.map +1 -1
  517. package/extensions/forms/Form/Isolation/IsolationResetButton.d.ts +7 -0
  518. package/extensions/forms/Form/Isolation/IsolationResetButton.js +100 -0
  519. package/extensions/forms/Form/Isolation/IsolationResetButton.js.map +1 -0
  520. package/extensions/forms/Form/Isolation/useDataContextSnapshot.d.ts +7 -0
  521. package/extensions/forms/Form/Isolation/useDataContextSnapshot.js +52 -0
  522. package/extensions/forms/Form/Isolation/useDataContextSnapshot.js.map +1 -0
  523. package/extensions/forms/Form/Isolation/useHandleStatus.d.ts +9 -0
  524. package/extensions/forms/Form/Isolation/useHandleStatus.js +51 -0
  525. package/extensions/forms/Form/Isolation/useHandleStatus.js.map +1 -0
  526. package/extensions/forms/{Iterate/EditContainer → Form/Isolation}/useHasContentChanged.js +12 -10
  527. package/extensions/forms/Form/Isolation/useHasContentChanged.js.map +1 -0
  528. package/extensions/forms/Form/Snapshot/Snapshot.d.ts +2 -1
  529. package/extensions/forms/Form/Snapshot/Snapshot.js.map +1 -1
  530. package/extensions/forms/Iterate/EditContainer/ResetButton.js +1 -1
  531. package/extensions/forms/Iterate/EditContainer/ResetButton.js.map +1 -1
  532. package/extensions/forms/Iterate/EditContainer/index.d.ts +1 -1
  533. package/extensions/forms/Iterate/EditContainer/index.js +1 -1
  534. package/extensions/forms/Iterate/EditContainer/index.js.map +1 -1
  535. package/extensions/forms/Iterate/PushContainer/PushContainer.d.ts +7 -0
  536. package/extensions/forms/Iterate/PushContainer/PushContainer.js +16 -57
  537. package/extensions/forms/Iterate/PushContainer/PushContainer.js.map +1 -1
  538. package/extensions/forms/Iterate/PushContainer/PushContainerDocs.js +2 -2
  539. package/extensions/forms/Iterate/PushContainer/PushContainerDocs.js.map +1 -1
  540. package/extensions/forms/constants/locales/en-GB.d.ts +1 -1
  541. package/extensions/forms/constants/locales/en-GB.js +3 -3
  542. package/extensions/forms/constants/locales/en-GB.js.map +1 -1
  543. package/extensions/forms/constants/locales/en-US.d.ts +1 -1
  544. package/extensions/forms/constants/locales/index.d.ts +2 -2
  545. package/extensions/forms/constants/locales/nb-NO.d.ts +1 -1
  546. package/extensions/forms/constants/locales/nb-NO.js +3 -3
  547. package/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  548. package/extensions/forms/constants/locales/sv-SE.d.ts +1 -1
  549. package/extensions/forms/constants/locales/sv-SE.js +3 -3
  550. package/extensions/forms/constants/locales/sv-SE.js.map +1 -1
  551. package/extensions/forms/hooks/useDataContext.js +5 -3
  552. package/extensions/forms/hooks/useDataContext.js.map +1 -1
  553. package/extensions/forms/hooks/useSnapshot.js +18 -15
  554. package/extensions/forms/hooks/useSnapshot.js.map +1 -1
  555. package/fragments/drawer-list/DrawerList.d.ts +176 -224
  556. package/fragments/drawer-list/DrawerList.js +71 -175
  557. package/fragments/drawer-list/DrawerList.js.map +1 -1
  558. package/fragments/drawer-list/DrawerListContext.d.ts +27 -2
  559. package/fragments/drawer-list/DrawerListContext.js.map +1 -1
  560. package/fragments/drawer-list/DrawerListDocs.d.ts +211 -4
  561. package/fragments/drawer-list/DrawerListDocs.js +2 -2
  562. package/fragments/drawer-list/DrawerListDocs.js.map +1 -1
  563. package/fragments/drawer-list/DrawerListHelpers.d.ts +85 -89
  564. package/fragments/drawer-list/DrawerListHelpers.js +45 -53
  565. package/fragments/drawer-list/DrawerListHelpers.js.map +1 -1
  566. package/fragments/drawer-list/DrawerListItem.d.ts +30 -0
  567. package/fragments/drawer-list/DrawerListItem.js +91 -0
  568. package/fragments/drawer-list/DrawerListItem.js.map +1 -0
  569. package/fragments/drawer-list/DrawerListPortal.d.ts +20 -30
  570. package/fragments/drawer-list/DrawerListPortal.js +91 -121
  571. package/fragments/drawer-list/DrawerListPortal.js.map +1 -1
  572. package/fragments/drawer-list/DrawerListProvider.d.ts +217 -11
  573. package/fragments/drawer-list/DrawerListProvider.js +12 -19
  574. package/fragments/drawer-list/DrawerListProvider.js.map +1 -1
  575. package/package.json +1 -1
  576. package/shared/Eufemia.d.ts +1 -1
  577. package/shared/Eufemia.js +2 -2
  578. package/shared/Eufemia.js.map +1 -1
  579. package/shared/component-helper.d.ts +45 -48
  580. package/shared/component-helper.js +23 -189
  581. package/shared/component-helper.js.map +1 -1
  582. package/shared/helpers/withCamelCaseProps.d.ts +4 -5
  583. package/shared/helpers/withCamelCaseProps.js +7 -2
  584. package/shared/helpers/withCamelCaseProps.js.map +1 -1
  585. package/shared/legacy/component-helper-legacy.d.ts +19 -0
  586. package/shared/legacy/component-helper-legacy.js +185 -0
  587. package/shared/legacy/component-helper-legacy.js.map +1 -0
  588. package/shared/locales/en-GB.d.ts +1 -0
  589. package/shared/locales/en-GB.js +1 -0
  590. package/shared/locales/en-GB.js.map +1 -1
  591. package/shared/locales/en-US.js.map +1 -1
  592. package/shared/locales/index.d.ts +2 -0
  593. package/shared/locales/nb-NO.d.ts +1 -0
  594. package/shared/locales/nb-NO.js +2 -1
  595. package/shared/locales/nb-NO.js.map +1 -1
  596. package/shared/locales/sv-SE.d.ts +1 -0
  597. package/shared/locales/sv-SE.js +1 -0
  598. package/shared/locales/sv-SE.js.map +1 -1
  599. package/style/core/scopes.scss +1 -1
  600. package/style/dnb-ui-basis.css +1 -1
  601. package/style/dnb-ui-basis.min.css +1 -1
  602. package/style/dnb-ui-body.css +1 -1
  603. package/style/dnb-ui-body.min.css +1 -1
  604. package/style/dnb-ui-components.css +2 -1
  605. package/style/dnb-ui-components.min.css +1 -1
  606. package/style/dnb-ui-core.css +1 -1
  607. package/style/dnb-ui-core.min.css +1 -1
  608. package/style/themes/theme-eiendom/eiendom-theme-components.css +19 -1
  609. package/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  610. package/style/themes/theme-sbanken/sbanken-theme-components.css +19 -1
  611. package/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  612. package/style/themes/theme-ui/ui-theme-components.css +19 -1
  613. package/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  614. package/umd/dnb-ui-basis.min.js +1 -1
  615. package/umd/dnb-ui-components.min.js +1 -1
  616. package/umd/dnb-ui-elements.min.js +1 -1
  617. package/umd/dnb-ui-extensions.min.js +1 -1
  618. package/umd/dnb-ui-lib.min.js +1 -1
  619. package/cjs/extensions/forms/Iterate/EditContainer/useHasContentChanged.js.map +0 -1
  620. package/es/extensions/forms/Iterate/EditContainer/useHasContentChanged.js.map +0 -1
  621. package/extensions/forms/Iterate/EditContainer/useHasContentChanged.js.map +0 -1
  622. /package/cjs/extensions/forms/{Iterate/EditContainer → Form/Isolation}/useHasContentChanged.d.ts +0 -0
  623. /package/es/extensions/forms/{Iterate/EditContainer → Form/Isolation}/useHasContentChanged.d.ts +0 -0
  624. /package/extensions/forms/{Iterate/EditContainer → Form/Isolation}/useHasContentChanged.d.ts +0 -0
@@ -1,8 +1,10 @@
1
+ "use client";
2
+
1
3
  import _extends from "@babel/runtime/helpers/esm/extends";
2
4
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
3
5
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4
6
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
5
- import React, { useCallback, useMemo } from 'react';
7
+ import React, { useCallback, useMemo, useRef } from 'react';
6
8
  import classnames from 'classnames';
7
9
  import { Checkbox, ToggleButton } from '../../../../components';
8
10
  import ButtonRow from '../../Form/ButtonRow';
@@ -33,10 +35,25 @@ function Toggle(props) {
33
35
  handleChange,
34
36
  setDisplayValue
35
37
  } = useFieldProps(preparedProps);
36
- const handleCheckboxChange = useCallback(({
37
- checked
38
- }) => {
39
- handleChange === null || handleChange === void 0 ? void 0 : handleChange(checked ? valueOn : valueOff);
38
+ const preventChangeRef = useRef(false);
39
+ const onClick = preparedProps === null || preparedProps === void 0 ? void 0 : preparedProps.onClick;
40
+ const handleClick = useCallback(args => {
41
+ const preventDefault = () => {
42
+ var _args$preventDefault;
43
+ preventChangeRef.current = true;
44
+ (_args$preventDefault = args.preventDefault) === null || _args$preventDefault === void 0 ? void 0 : _args$preventDefault.call(args);
45
+ };
46
+ if (preventChangeRef.current) {
47
+ args.checked = !args.checked;
48
+ preventChangeRef.current = false;
49
+ }
50
+ const event = _objectSpread(_objectSpread({}, args), {}, {
51
+ preventDefault
52
+ });
53
+ onClick === null || onClick === void 0 ? void 0 : onClick(args.checked ? valueOn : valueOff, event);
54
+ }, [onClick, valueOff, valueOn]);
55
+ const handleCheckboxChange = useCallback(args => {
56
+ handleChange === null || handleChange === void 0 ? void 0 : handleChange(args.checked ? valueOn : valueOff, args);
40
57
  }, [handleChange, valueOn, valueOff]);
41
58
  const handleToggleChange = useCallback(({
42
59
  value
@@ -82,7 +99,8 @@ function Toggle(props) {
82
99
  disabled: disabled,
83
100
  size: size !== 'small' ? size : undefined,
84
101
  status: hasError ? 'error' : undefined,
85
- onChange: handleCheckboxChange
102
+ onChange: handleCheckboxChange,
103
+ onClick: handleClick
86
104
  }, htmlAttributes)));
87
105
  case 'button':
88
106
  return React.createElement(FieldBlock, fieldBlockProps, React.createElement(ToggleButton, _extends({
@@ -1 +1 @@
1
- {"version":3,"file":"Toggle.js","names":["React","useCallback","useMemo","classnames","Checkbox","ToggleButton","ButtonRow","FieldBlock","useFieldProps","pickSpacingProps","ToggleButtonGroupContext","useTranslation","useIterateItemNo","Toggle","props","translations","ToggleField","preparedProps","_objectSpread","errorMessages","id","className","valueOn","valueOff","variant","disabled","textOn","textOff","value","size","hasError","htmlAttributes","handleChange","setDisplayValue","handleCheckboxChange","checked","handleToggleChange","cn","fieldBlockProps","forId","isOn","isOff","text","label","labelSuffix","required","labelSrOnly","labelWithItemNo","createElement","_extends","undefined","yes","no","status","onChange","on_change","role","asFieldset","bottom","Group","Provider","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Toggle/Toggle.tsx"],"sourcesContent":["import React, { useCallback, useMemo } from 'react'\nimport classnames from 'classnames'\nimport { Checkbox, ToggleButton } from '../../../../components'\nimport ButtonRow from '../../Form/ButtonRow'\nimport FieldBlock, { Props as FieldBlockProps } from '../../FieldBlock'\nimport { useFieldProps } from '../../hooks'\nimport { FieldProps } from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport ToggleButtonGroupContext from '../../../../components/toggle-button/ToggleButtonGroupContext'\nimport useTranslation from '../../hooks/useTranslation'\nimport { useIterateItemNo } from '../../Iterate/ItemNo/useIItemNo'\nimport type { CheckboxProps } from '../../../../components/Checkbox'\nimport type { ToggleButtonProps } from '../../../../components/ToggleButton'\n\nexport type ToggleProps = {\n valueOn: unknown\n valueOff: unknown\n variant?: 'checkbox' | 'checkbox-button' | 'button' | 'buttons'\n textOn?: string\n textOff?: string\n size?: ToggleButtonProps['size'] | CheckboxProps['size']\n}\n\nexport type Props = Omit<FieldProps<unknown>, 'layout' | 'layoutOptions'> &\n ToggleProps\n\nfunction Toggle(props: Props) {\n const translations = useTranslation().ToggleField\n\n const preparedProps: Props = {\n ...props,\n errorMessages: props.errorMessages,\n }\n\n const {\n id,\n className,\n valueOn,\n valueOff,\n variant,\n disabled,\n textOn,\n textOff,\n value,\n size,\n hasError,\n htmlAttributes,\n handleChange,\n setDisplayValue,\n } = useFieldProps(preparedProps)\n\n const handleCheckboxChange = useCallback(\n ({ checked }) => {\n handleChange?.(checked ? valueOn : valueOff)\n },\n [handleChange, valueOn, valueOff]\n )\n const handleToggleChange = useCallback(\n ({ value }) => {\n handleChange?.(value === 'on' ? valueOn : valueOff)\n },\n [handleChange, valueOn, valueOff]\n )\n\n const cn = classnames('dnb-forms-field-toggle', className)\n\n const fieldBlockProps: FieldBlockProps = {\n forId: id,\n className: cn,\n disabled,\n ...pickSpacingProps(props),\n }\n\n const isOn = value === valueOn\n const isOff = value === valueOff\n\n useMemo(() => {\n const text = isOn ? textOn : textOff\n if (text) {\n setDisplayValue(text)\n }\n }, [isOn, setDisplayValue, textOff, textOn])\n\n const { label, labelSuffix, required, labelSrOnly } = props\n const labelWithItemNo = useIterateItemNo({\n label,\n labelSuffix,\n required,\n })\n\n switch (variant) {\n default:\n case 'checkbox':\n return (\n <FieldBlock {...fieldBlockProps} label={undefined}>\n <Checkbox\n id={id}\n className={cn}\n label={\n labelWithItemNo ??\n (isOn\n ? textOn ?? translations.yes\n : textOff ?? translations.no)\n }\n labelSrOnly={labelSrOnly}\n checked={isOn}\n disabled={disabled}\n size={size !== 'small' ? size : undefined}\n status={hasError ? 'error' : undefined}\n onChange={handleCheckboxChange}\n {...htmlAttributes}\n />\n </FieldBlock>\n )\n case 'button':\n return (\n <FieldBlock {...fieldBlockProps}>\n <ToggleButton\n id={id}\n text={\n isOn\n ? textOn ?? translations.yes\n : textOff ?? translations.no\n }\n checked={isOn}\n disabled={disabled}\n status={hasError ? 'error' : undefined}\n value={value ? 'true' : 'false'}\n size={size}\n on_change={handleCheckboxChange}\n role=\"checkbox\"\n {...htmlAttributes}\n />\n </FieldBlock>\n )\n case 'buttons':\n return (\n <FieldBlock {...fieldBlockProps} asFieldset>\n <ButtonRow bottom=\"x-small\">\n <ToggleButton.Group role=\"radiogroup\">\n <ToggleButtonGroupContext.Provider\n value={{\n value: isOn ? 'on' : isOff ? 'off' : null, // use \"null\" to reset the value\n onChange: handleToggleChange,\n status: hasError ? 'error' : undefined,\n disabled,\n size,\n }}\n >\n <ToggleButton\n text={textOn ?? translations.yes}\n value=\"on\"\n role=\"radio\"\n {...htmlAttributes}\n />\n <ToggleButton\n text={textOff ?? translations.no}\n value=\"off\"\n role=\"radio\"\n {...htmlAttributes}\n />\n </ToggleButtonGroupContext.Provider>\n </ToggleButton.Group>\n </ButtonRow>\n </FieldBlock>\n )\n case 'checkbox-button':\n return (\n <FieldBlock {...fieldBlockProps}>\n <ToggleButton\n id={id}\n variant=\"checkbox\"\n text={\n isOn\n ? textOn ?? translations.yes\n : textOff ?? translations.no\n }\n checked={isOn}\n disabled={disabled}\n status={hasError ? 'error' : undefined}\n value={value ? 'true' : 'false'}\n size={size}\n on_change={handleCheckboxChange}\n role=\"checkbox\"\n {...htmlAttributes}\n />\n </FieldBlock>\n )\n }\n}\n\nToggle._supportsSpacingProps = true\nexport default Toggle\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Toggle.js","names":["React","useCallback","useMemo","useRef","classnames","Checkbox","ToggleButton","ButtonRow","FieldBlock","useFieldProps","pickSpacingProps","ToggleButtonGroupContext","useTranslation","useIterateItemNo","Toggle","props","translations","ToggleField","preparedProps","_objectSpread","errorMessages","id","className","valueOn","valueOff","variant","disabled","textOn","textOff","value","size","hasError","htmlAttributes","handleChange","setDisplayValue","preventChangeRef","onClick","handleClick","args","preventDefault","_args$preventDefault","current","call","checked","event","handleCheckboxChange","handleToggleChange","cn","fieldBlockProps","forId","isOn","isOff","text","label","labelSuffix","required","labelSrOnly","labelWithItemNo","createElement","_extends","undefined","yes","no","status","onChange","on_change","role","asFieldset","bottom","Group","Provider","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Toggle/Toggle.tsx"],"sourcesContent":["import React, { useCallback, useMemo, useRef } from 'react'\nimport classnames from 'classnames'\nimport { Checkbox, ToggleButton } from '../../../../components'\nimport ButtonRow from '../../Form/ButtonRow'\nimport FieldBlock, { Props as FieldBlockProps } from '../../FieldBlock'\nimport { useFieldProps } from '../../hooks'\nimport { FieldProps } from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport ToggleButtonGroupContext from '../../../../components/toggle-button/ToggleButtonGroupContext'\nimport useTranslation from '../../hooks/useTranslation'\nimport { useIterateItemNo } from '../../Iterate/ItemNo/useIItemNo'\nimport type {\n CheckboxProps,\n OnChangeParams,\n OnClickParams,\n} from '../../../../components/Checkbox'\nimport type { ToggleButtonProps } from '../../../../components/ToggleButton'\n\nexport type ToggleProps = {\n valueOn: unknown\n valueOff: unknown\n variant?: 'checkbox' | 'checkbox-button' | 'button' | 'buttons'\n textOn?: string\n textOff?: string\n size?: ToggleButtonProps['size'] | CheckboxProps['size']\n\n /**\n * Checkbox props\n */\n onClick?: (\n value: unknown,\n params: { event: React.MouseEvent<HTMLInputElement> }\n ) => void\n}\n\nexport type Props = Omit<FieldProps<unknown>, 'layout' | 'layoutOptions'> &\n ToggleProps\n\nfunction Toggle(props: Props) {\n const translations = useTranslation().ToggleField\n\n const preparedProps: Props = {\n ...props,\n errorMessages: props.errorMessages,\n }\n\n const {\n id,\n className,\n valueOn,\n valueOff,\n variant,\n disabled,\n textOn,\n textOff,\n value,\n size,\n hasError,\n htmlAttributes,\n handleChange,\n setDisplayValue,\n } = useFieldProps(preparedProps)\n\n const preventChangeRef = useRef(false)\n\n const onClick = preparedProps?.onClick\n const handleClick = useCallback(\n (args: OnClickParams) => {\n const preventDefault = () => {\n preventChangeRef.current = true\n args.preventDefault?.()\n }\n\n if (preventChangeRef.current) {\n args.checked = !args.checked\n preventChangeRef.current = false\n }\n\n const event = {\n ...args,\n preventDefault,\n }\n onClick?.(args.checked ? valueOn : valueOff, event)\n },\n [onClick, valueOff, valueOn]\n )\n const handleCheckboxChange = useCallback(\n (args: OnChangeParams) => {\n handleChange?.(args.checked ? valueOn : valueOff, args)\n },\n [handleChange, valueOn, valueOff]\n )\n const handleToggleChange = useCallback(\n ({ value }) => {\n handleChange?.(value === 'on' ? valueOn : valueOff)\n },\n [handleChange, valueOn, valueOff]\n )\n\n const cn = classnames('dnb-forms-field-toggle', className)\n\n const fieldBlockProps: FieldBlockProps = {\n forId: id,\n className: cn,\n disabled,\n ...pickSpacingProps(props),\n }\n\n const isOn = value === valueOn\n const isOff = value === valueOff\n\n useMemo(() => {\n const text = isOn ? textOn : textOff\n if (text) {\n setDisplayValue(text)\n }\n }, [isOn, setDisplayValue, textOff, textOn])\n\n const { label, labelSuffix, required, labelSrOnly } = props\n const labelWithItemNo = useIterateItemNo({\n label,\n labelSuffix,\n required,\n })\n\n switch (variant) {\n default:\n case 'checkbox':\n return (\n <FieldBlock {...fieldBlockProps} label={undefined}>\n <Checkbox\n id={id}\n className={cn}\n label={\n labelWithItemNo ??\n (isOn\n ? textOn ?? translations.yes\n : textOff ?? translations.no)\n }\n labelSrOnly={labelSrOnly}\n checked={isOn}\n disabled={disabled}\n size={size !== 'small' ? size : undefined}\n status={hasError ? 'error' : undefined}\n onChange={handleCheckboxChange}\n onClick={handleClick}\n {...htmlAttributes}\n />\n </FieldBlock>\n )\n case 'button':\n return (\n <FieldBlock {...fieldBlockProps}>\n <ToggleButton\n id={id}\n text={\n isOn\n ? textOn ?? translations.yes\n : textOff ?? translations.no\n }\n checked={isOn}\n disabled={disabled}\n status={hasError ? 'error' : undefined}\n value={value ? 'true' : 'false'}\n size={size}\n on_change={handleCheckboxChange}\n role=\"checkbox\"\n {...htmlAttributes}\n />\n </FieldBlock>\n )\n case 'buttons':\n return (\n <FieldBlock {...fieldBlockProps} asFieldset>\n <ButtonRow bottom=\"x-small\">\n <ToggleButton.Group role=\"radiogroup\">\n <ToggleButtonGroupContext.Provider\n value={{\n value: isOn ? 'on' : isOff ? 'off' : null, // use \"null\" to reset the value\n onChange: handleToggleChange,\n status: hasError ? 'error' : undefined,\n disabled,\n size,\n }}\n >\n <ToggleButton\n text={textOn ?? translations.yes}\n value=\"on\"\n role=\"radio\"\n {...htmlAttributes}\n />\n <ToggleButton\n text={textOff ?? translations.no}\n value=\"off\"\n role=\"radio\"\n {...htmlAttributes}\n />\n </ToggleButtonGroupContext.Provider>\n </ToggleButton.Group>\n </ButtonRow>\n </FieldBlock>\n )\n case 'checkbox-button':\n return (\n <FieldBlock {...fieldBlockProps}>\n <ToggleButton\n id={id}\n variant=\"checkbox\"\n text={\n isOn\n ? textOn ?? translations.yes\n : textOff ?? translations.no\n }\n checked={isOn}\n disabled={disabled}\n status={hasError ? 'error' : undefined}\n value={value ? 'true' : 'false'}\n size={size}\n on_change={handleCheckboxChange}\n role=\"checkbox\"\n {...htmlAttributes}\n />\n </FieldBlock>\n )\n }\n}\n\nToggle._supportsSpacingProps = true\nexport default Toggle\n"],"mappings":"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","ignoreList":[]}
@@ -1,2 +1,3 @@
1
1
  import { PropertiesTableProps } from '../../../../shared/types';
2
2
  export declare const ToggleProperties: PropertiesTableProps;
3
+ export declare const ToggleEvents: PropertiesTableProps;
@@ -30,4 +30,11 @@ export const ToggleProperties = {
30
30
  status: 'optional'
31
31
  }
32
32
  };
33
+ export const ToggleEvents = {
34
+ onClick: {
35
+ doc: 'Will be called on click.',
36
+ type: '(value: unknown, { event: ClickEvent, preventDefault: () => void }) => void',
37
+ status: 'optional'
38
+ }
39
+ };
33
40
  //# sourceMappingURL=ToggleDocs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ToggleDocs.js","names":["ToggleProperties","valueOn","doc","type","status","valueOff","textOn","textOff","size","variant"],"sources":["../../../../../../src/extensions/forms/Field/Toggle/ToggleDocs.tsx"],"sourcesContent":["import { PropertiesTableProps } from '../../../../shared/types'\n\nexport const ToggleProperties: PropertiesTableProps = {\n valueOn: {\n doc: 'Source data value when the toggle is in the \"on-state\" (varies based on UI variant).',\n type: ['string', 'number', 'boolean'],\n status: 'required',\n },\n valueOff: {\n doc: 'Source data value when the toggle is in the \"off-state\".',\n type: ['string', 'number', 'boolean'],\n status: 'required',\n },\n textOn: {\n doc: 'Text to show in the UI when in the \"on-state\".',\n type: 'string',\n status: 'optional',\n },\n textOff: {\n doc: 'Text to show in the UI when in the \"off-state\".',\n type: 'string',\n status: 'optional',\n },\n size: {\n doc: 'The sizes you can choose is small (1.5rem), default (2rem), medium (2.5rem) and large (3rem) are supported component sizes. Defaults to default / null. Also, if you define a number like size=\"2\" then it will be forwarded as the input element attribute. Consider rather setting field sizes with [Form.Appearance](/uilib/extensions/forms/Form/Appearance/).',\n type: 'string',\n status: 'optional',\n },\n variant: {\n doc: 'Choice of input feature. Can be: `checkbox`, `button`, `checkbox-button` or `buttons`.',\n type: 'string',\n status: 'optional',\n },\n}\n"],"mappings":"AAEA,OAAO,MAAMA,gBAAsC,GAAG;EACpDC,OAAO,EAAE;IACPC,GAAG,EAAE,sFAAsF;IAC3FC,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC;IACrCC,MAAM,EAAE;EACV,CAAC;EACDC,QAAQ,EAAE;IACRH,GAAG,EAAE,0DAA0D;IAC/DC,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC;IACrCC,MAAM,EAAE;EACV,CAAC;EACDE,MAAM,EAAE;IACNJ,GAAG,EAAE,gDAAgD;IACrDC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDG,OAAO,EAAE;IACPL,GAAG,EAAE,iDAAiD;IACtDC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDI,IAAI,EAAE;IACJN,GAAG,EAAE,oWAAoW;IACzWC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDK,OAAO,EAAE;IACPP,GAAG,EAAE,wFAAwF;IAC7FC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV;AACF,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"ToggleDocs.js","names":["ToggleProperties","valueOn","doc","type","status","valueOff","textOn","textOff","size","variant","ToggleEvents","onClick"],"sources":["../../../../../../src/extensions/forms/Field/Toggle/ToggleDocs.tsx"],"sourcesContent":["import { PropertiesTableProps } from '../../../../shared/types'\n\nexport const ToggleProperties: PropertiesTableProps = {\n valueOn: {\n doc: 'Source data value when the toggle is in the \"on-state\" (varies based on UI variant).',\n type: ['string', 'number', 'boolean'],\n status: 'required',\n },\n valueOff: {\n doc: 'Source data value when the toggle is in the \"off-state\".',\n type: ['string', 'number', 'boolean'],\n status: 'required',\n },\n textOn: {\n doc: 'Text to show in the UI when in the \"on-state\".',\n type: 'string',\n status: 'optional',\n },\n textOff: {\n doc: 'Text to show in the UI when in the \"off-state\".',\n type: 'string',\n status: 'optional',\n },\n size: {\n doc: 'The sizes you can choose is small (1.5rem), default (2rem), medium (2.5rem) and large (3rem) are supported component sizes. Defaults to default / null. Also, if you define a number like size=\"2\" then it will be forwarded as the input element attribute. Consider rather setting field sizes with [Form.Appearance](/uilib/extensions/forms/Form/Appearance/).',\n type: 'string',\n status: 'optional',\n },\n variant: {\n doc: 'Choice of input feature. Can be: `checkbox`, `button`, `checkbox-button` or `buttons`.',\n type: 'string',\n status: 'optional',\n },\n}\n\nexport const ToggleEvents: PropertiesTableProps = {\n onClick: {\n doc: 'Will be called on click.',\n type: '(value: unknown, { event: ClickEvent, preventDefault: () => void }) => void',\n status: 'optional',\n },\n}\n"],"mappings":"AAEA,OAAO,MAAMA,gBAAsC,GAAG;EACpDC,OAAO,EAAE;IACPC,GAAG,EAAE,sFAAsF;IAC3FC,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC;IACrCC,MAAM,EAAE;EACV,CAAC;EACDC,QAAQ,EAAE;IACRH,GAAG,EAAE,0DAA0D;IAC/DC,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC;IACrCC,MAAM,EAAE;EACV,CAAC;EACDE,MAAM,EAAE;IACNJ,GAAG,EAAE,gDAAgD;IACrDC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDG,OAAO,EAAE;IACPL,GAAG,EAAE,iDAAiD;IACtDC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDI,IAAI,EAAE;IACJN,GAAG,EAAE,oWAAoW;IACzWC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDK,OAAO,EAAE;IACPP,GAAG,EAAE,wFAAwF;IAC7FC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV;AACF,CAAC;AAED,OAAO,MAAMM,YAAkC,GAAG;EAChDC,OAAO,EAAE;IACPT,GAAG,EAAE,0BAA0B;IAC/BC,IAAI,EAAE,6EAA6E;IACnFC,MAAM,EAAE;EACV;AACF,CAAC","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ export default function IsolatedContainer({ children }: {
2
+ children: any;
3
+ }): import("react/jsx-runtime").JSX.Element;
4
+ export declare const isolationError: Error;
@@ -0,0 +1,53 @@
1
+ "use client";
2
+
3
+ import React, { useCallback, useContext } from 'react';
4
+ import { FormStatus } from '../../../../components';
5
+ import { useTranslation } from '../../hooks';
6
+ import useHandleStatus from './useHandleStatus';
7
+ import IsolationContext from './IsolationContext';
8
+ import DataContext from '../../DataContext/Context';
9
+ import useDataContextSnapshot from './useDataContextSnapshot';
10
+ export default function IsolatedContainer({
11
+ children
12
+ }) {
13
+ const {
14
+ outerContext,
15
+ preventUncommittedChanges
16
+ } = useContext(IsolationContext);
17
+ const {
18
+ preventUncommittedChangesText
19
+ } = useTranslation().Isolation;
20
+ const {
21
+ showStatus: showCommitStatus
22
+ } = useHandleStatus({
23
+ outerContext,
24
+ preventUncommittedChanges,
25
+ error: isolationError
26
+ });
27
+ const {
28
+ setFieldEventListener
29
+ } = useContext(DataContext);
30
+ const {
31
+ resetDataAfterCommit
32
+ } = useContext(IsolationContext);
33
+ const {
34
+ handleReset
35
+ } = useDataContextSnapshot({
36
+ enabled: resetDataAfterCommit
37
+ });
38
+ const handleSubmit = useCallback(() => {
39
+ if (resetDataAfterCommit) {
40
+ handleReset();
41
+ }
42
+ }, [handleReset, resetDataAfterCommit]);
43
+ setFieldEventListener === null || setFieldEventListener === void 0 ? void 0 : setFieldEventListener(undefined, 'onBeforeCommit', handleSubmit);
44
+ return React.createElement(React.Fragment, null, children, preventUncommittedChanges && React.createElement(FormStatus, {
45
+ no_animation: false,
46
+ shellSpace: {
47
+ top: true
48
+ },
49
+ show: Boolean(showCommitStatus)
50
+ }, preventUncommittedChangesText));
51
+ }
52
+ export const isolationError = new Error('Form.Isolation');
53
+ //# sourceMappingURL=IsolatedContainer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IsolatedContainer.js","names":["React","useCallback","useContext","FormStatus","useTranslation","useHandleStatus","IsolationContext","DataContext","useDataContextSnapshot","IsolatedContainer","children","outerContext","preventUncommittedChanges","preventUncommittedChangesText","Isolation","showStatus","showCommitStatus","error","isolationError","setFieldEventListener","resetDataAfterCommit","handleReset","enabled","handleSubmit","undefined","createElement","Fragment","no_animation","shellSpace","top","show","Boolean","Error"],"sources":["../../../../../../src/extensions/forms/Form/Isolation/IsolatedContainer.tsx"],"sourcesContent":["import React, { useCallback, useContext } from 'react'\nimport { FormStatus } from '../../../../components'\nimport { useTranslation } from '../../hooks'\nimport useHandleStatus from './useHandleStatus'\nimport IsolationContext from './IsolationContext'\nimport DataContext from '../../DataContext/Context'\nimport useDataContextSnapshot from './useDataContextSnapshot'\n\nexport default function IsolatedContainer({ children }) {\n const { outerContext, preventUncommittedChanges } =\n useContext(IsolationContext)\n const { preventUncommittedChangesText } = useTranslation().Isolation\n const { showStatus: showCommitStatus } = useHandleStatus({\n outerContext,\n preventUncommittedChanges,\n error: isolationError,\n })\n\n const { setFieldEventListener } = useContext(DataContext)\n const { resetDataAfterCommit } = useContext(IsolationContext)\n const { handleReset } = useDataContextSnapshot({\n enabled: resetDataAfterCommit,\n })\n\n const handleSubmit = useCallback(() => {\n if (resetDataAfterCommit) {\n handleReset()\n }\n }, [handleReset, resetDataAfterCommit])\n setFieldEventListener?.(undefined, 'onBeforeCommit', handleSubmit)\n\n return (\n <>\n {children}\n\n {preventUncommittedChanges && (\n <FormStatus\n no_animation={false}\n shellSpace={{ top: true }}\n show={Boolean(showCommitStatus)}\n >\n {preventUncommittedChangesText}\n </FormStatus>\n )}\n </>\n )\n}\n\nexport const isolationError = new Error('Form.Isolation')\n"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,UAAU,QAAQ,OAAO;AACtD,SAASC,UAAU,QAAQ,wBAAwB;AACnD,SAASC,cAAc,QAAQ,aAAa;AAC5C,OAAOC,eAAe,MAAM,mBAAmB;AAC/C,OAAOC,gBAAgB,MAAM,oBAAoB;AACjD,OAAOC,WAAW,MAAM,2BAA2B;AACnD,OAAOC,sBAAsB,MAAM,0BAA0B;AAE7D,eAAe,SAASC,iBAAiBA,CAAC;EAAEC;AAAS,CAAC,EAAE;EACtD,MAAM;IAAEC,YAAY;IAAEC;EAA0B,CAAC,GAC/CV,UAAU,CAACI,gBAAgB,CAAC;EAC9B,MAAM;IAAEO;EAA8B,CAAC,GAAGT,cAAc,CAAC,CAAC,CAACU,SAAS;EACpE,MAAM;IAAEC,UAAU,EAAEC;EAAiB,CAAC,GAAGX,eAAe,CAAC;IACvDM,YAAY;IACZC,yBAAyB;IACzBK,KAAK,EAAEC;EACT,CAAC,CAAC;EAEF,MAAM;IAAEC;EAAsB,CAAC,GAAGjB,UAAU,CAACK,WAAW,CAAC;EACzD,MAAM;IAAEa;EAAqB,CAAC,GAAGlB,UAAU,CAACI,gBAAgB,CAAC;EAC7D,MAAM;IAAEe;EAAY,CAAC,GAAGb,sBAAsB,CAAC;IAC7Cc,OAAO,EAAEF;EACX,CAAC,CAAC;EAEF,MAAMG,YAAY,GAAGtB,WAAW,CAAC,MAAM;IACrC,IAAImB,oBAAoB,EAAE;MACxBC,WAAW,CAAC,CAAC;IACf;EACF,CAAC,EAAE,CAACA,WAAW,EAAED,oBAAoB,CAAC,CAAC;EACvCD,qBAAqB,aAArBA,qBAAqB,uBAArBA,qBAAqB,CAAGK,SAAS,EAAE,gBAAgB,EAAED,YAAY,CAAC;EAElE,OACEvB,KAAA,CAAAyB,aAAA,CAAAzB,KAAA,CAAA0B,QAAA,QACGhB,QAAQ,EAERE,yBAAyB,IACxBZ,KAAA,CAAAyB,aAAA,CAACtB,UAAU;IACTwB,YAAY,EAAE,KAAM;IACpBC,UAAU,EAAE;MAAEC,GAAG,EAAE;IAAK,CAAE;IAC1BC,IAAI,EAAEC,OAAO,CAACf,gBAAgB;EAAE,GAE/BH,6BACS,CAEd,CAAC;AAEP;AAEA,OAAO,MAAMK,cAAc,GAAG,IAAIc,KAAK,CAAC,gBAAgB,CAAC","ignoreList":[]}
@@ -1,7 +1,9 @@
1
1
  import React from 'react';
2
2
  import { JsonObject } from '../../utils/json-pointer';
3
3
  import IsolationCommitButton from './IsolationCommitButton';
4
+ import IsolationResetButton from './IsolationResetButton';
4
5
  import { type Props as ProviderProps } from '../../DataContext/Provider';
6
+ import { IsolationDataReference } from './IsolationDataReference';
5
7
  import type { OnCommit, Path } from '../../types';
6
8
  export type IsolationProviderProps<Data extends JsonObject> = {
7
9
  /**
@@ -22,6 +24,18 @@ export type IsolationProviderProps<Data extends JsonObject> = {
22
24
  * Prevent the form from being submitted when there are fields with errors inside the Form.Isolation.
23
25
  */
24
26
  bubbleValidation?: boolean;
27
+ /**
28
+ * Prevents uncommitted changes before the form is submitted. Will display an error message if user tries to submit without committing their changes.
29
+ */
30
+ preventUncommittedChanges?: boolean;
31
+ /**
32
+ * If set to `true`, the Form.Isolation will reset its data context after committing the data to the outer context.
33
+ */
34
+ resetDataAfterCommit?: boolean;
35
+ /**
36
+ * Provide a reference by using Form.Isolation.createDataReference.
37
+ */
38
+ dataReference?: IsolationDataReference;
25
39
  /**
26
40
  * Used internally by the Form.Isolation component
27
41
  */
@@ -40,6 +54,8 @@ export type IsolationProps<Data extends JsonObject> = Omit<ProviderProps<Data>,
40
54
  declare function IsolationProvider<Data extends JsonObject>(props: IsolationProps<Data>): import("react/jsx-runtime").JSX.Element;
41
55
  declare namespace IsolationProvider {
42
56
  var CommitButton: typeof IsolationCommitButton;
57
+ var ResetButton: typeof IsolationResetButton;
58
+ var createDataReference: typeof import("./IsolationDataReference").createDataReference;
43
59
  var _supportsSpacingProps: any;
44
60
  }
45
61
  export default IsolationProvider;
@@ -1,9 +1,10 @@
1
1
  "use client";
2
2
 
3
3
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
4
+ var _BubbleValidation;
4
5
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
5
6
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
6
- import React, { useCallback, useContext, useMemo, useReducer, useRef } from 'react';
7
+ import React, { useCallback, useContext, useMemo, useReducer, useRef, useState } from 'react';
7
8
  import useMountEffect from '../../../../shared/helpers/useMountEffect';
8
9
  import pointer from '../../utils/json-pointer';
9
10
  import { extendDeep } from '../../../../shared/component-helper';
@@ -13,9 +14,19 @@ import { Context as DataContext, Provider } from '../../DataContext';
13
14
  import SectionContext from '../Section/SectionContext';
14
15
  import useReportError from './useReportError';
15
16
  import IsolationCommitButton from './IsolationCommitButton';
17
+ import IsolationResetButton from './IsolationResetButton';
16
18
  import { clearedData } from '../../DataContext/Provider';
19
+ import { createDataReference } from './IsolationDataReference';
20
+ import IsolatedContainer from './IsolatedContainer';
21
+ import IsolationContext from './IsolationContext';
17
22
  import structuredClone from '@ungap/structured-clone';
18
23
  function IsolationProvider(props) {
24
+ var _IsolatedContainer;
25
+ const [dataReferenceFallback] = useState(() => {
26
+ if (!(props !== null && props !== void 0 && props.dataReference)) {
27
+ return createDataReference();
28
+ }
29
+ });
19
30
  const {
20
31
  children,
21
32
  onPathChange,
@@ -24,8 +35,11 @@ function IsolationProvider(props) {
24
35
  transformOnCommit: transformOnCommitProp,
25
36
  commitHandleRef,
26
37
  bubbleValidation,
38
+ preventUncommittedChanges,
27
39
  data,
28
- defaultData
40
+ defaultData,
41
+ dataReference = dataReferenceFallback,
42
+ resetDataAfterCommit
29
43
  } = props;
30
44
  const [, forceUpdate] = useReducer(() => ({}), {});
31
45
  const internalDataRef = useRef();
@@ -87,7 +101,7 @@ function IsolationProvider(props) {
87
101
  if (localData && pathSection && !pointer.has(localDataRef.current, pathSection)) {
88
102
  localData = moveValueToPath(pathSection, localData);
89
103
  }
90
- internalDataRef.current = Object.assign({}, localData || dataOuter || {}, localDataRef.current);
104
+ internalDataRef.current = Object.assign({}, localData || structuredClone(dataOuter) || {}, localDataRef.current);
91
105
  }, [data, defaultData, pathSection, dataOuter, moveValueToPath]);
92
106
  const onCommit = useCallback(async (data, additionalArgs) => {
93
107
  var _props$path;
@@ -109,12 +123,15 @@ function IsolationProvider(props) {
109
123
  await (handlePathChangeOuter === null || handlePathChangeOuter === void 0 ? void 0 : handlePathChangeOuter(path, Array.isArray(isolatedData) ? isolatedData : extendDeep({}, outerData, isolatedData)));
110
124
  return result;
111
125
  }, [getMountedData, props.path, dataOuter, transformOnCommitProp, handlePathChangeOuter, onCommitProp, removeSectionPath]);
126
+ const setIsolatedData = useCallback(data => {
127
+ localDataRef.current = data;
128
+ internalDataRef.current = data;
129
+ }, []);
112
130
  const onClear = useCallback(() => {
113
- localDataRef.current = clearedData;
114
- internalDataRef.current = clearedData;
131
+ setIsolatedData(clearedData);
115
132
  forceUpdate();
116
133
  onClearProp === null || onClearProp === void 0 ? void 0 : onClearProp();
117
- }, [onClearProp]);
134
+ }, [onClearProp, setIsolatedData]);
118
135
  const providerProps = _objectSpread(_objectSpread({}, props), {}, {
119
136
  [defaultData ? 'defaultData' : 'data']: internalDataRef.current,
120
137
  onUpdateDataValue: onUpdateDataValueHandler,
@@ -123,21 +140,28 @@ function IsolationProvider(props) {
123
140
  onClear,
124
141
  isolate: true
125
142
  });
126
- return React.createElement(Provider, providerProps, React.createElement(DataContext.Consumer, null, dataContext => {
143
+ return React.createElement(Provider, providerProps, React.createElement(IsolationContext.Provider, {
144
+ value: {
145
+ preventUncommittedChanges,
146
+ dataReference,
147
+ resetDataAfterCommit,
148
+ outerContext,
149
+ setIsolatedData
150
+ }
151
+ }, React.createElement(DataContext.Consumer, null, dataContext => {
127
152
  dataContextRef.current = dataContext;
128
153
  if (commitHandleRef) {
129
154
  commitHandleRef.current = dataContext === null || dataContext === void 0 ? void 0 : dataContext.handleSubmit;
130
155
  }
131
- return children;
132
- }), bubbleValidation && React.createElement(BubbleValidation, {
133
- outerContext: outerContext
134
- }));
156
+ return _IsolatedContainer || (_IsolatedContainer = React.createElement(IsolatedContainer, null, children, " "));
157
+ }), bubbleValidation && (_BubbleValidation || (_BubbleValidation = React.createElement(BubbleValidation, null)))));
135
158
  }
136
- function BubbleValidation({
137
- outerContext
138
- }) {
159
+ function BubbleValidation() {
139
160
  var _addSetShowAllErrorsR;
140
161
  const innerContext = useContext(DataContext);
162
+ const {
163
+ outerContext
164
+ } = useContext(IsolationContext);
141
165
  const {
142
166
  setShowAllErrors
143
167
  } = innerContext;
@@ -155,6 +179,8 @@ function BubbleValidation({
155
179
  }
156
180
  const isolationError = new Error('Form.Isolation');
157
181
  IsolationProvider.CommitButton = IsolationCommitButton;
182
+ IsolationProvider.ResetButton = IsolationResetButton;
183
+ IsolationProvider.createDataReference = createDataReference;
158
184
  IsolationProvider._supportsSpacingProps = undefined;
159
185
  export default IsolationProvider;
160
186
  //# sourceMappingURL=Isolation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Isolation.js","names":["React","useCallback","useContext","useMemo","useReducer","useRef","useMountEffect","pointer","extendDeep","isAsync","useDataValue","Context","DataContext","Provider","SectionContext","useReportError","IsolationCommitButton","clearedData","structuredClone","IsolationProvider","props","children","onPathChange","onCommit","onCommitProp","onClear","onClearProp","transformOnCommit","transformOnCommitProp","commitHandleRef","bubbleValidation","data","defaultData","forceUpdate","internalDataRef","localDataRef","dataContextRef","outerContext","path","pathSection","handlePathChange","handlePathChangeOuter","dataOuter","moveValueToPath","onPathChangeHandler","value","current","set","replace","onUpdateDataValueHandler","preventUpdate","undefined","removeSectionPath","has","get","getMountedData","_dataContextRef$curre","mounterData","mountedFieldsRef","forEach","field","isMounted","localData","Object","assign","additionalArgs","_props$path","mountedData","outerData","isolatedData","stop","preventCommit","commitData","result","Array","isArray","providerProps","_objectSpread","onUpdateDataValue","isolate","createElement","Consumer","dataContext","handleSubmit","BubbleValidation","_addSetShowAllErrorsR","innerContext","setShowAllErrors","setShowAllErrorsNested","showAllErrors","addSetShowAllErrorsRef","includes","push","hasErrors","isolationError","Error","CommitButton","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Form/Isolation/Isolation.tsx"],"sourcesContent":["import React, {\n useCallback,\n useContext,\n useMemo,\n useReducer,\n useRef,\n} from 'react'\nimport useMountEffect from '../../../../shared/helpers/useMountEffect'\nimport pointer, { JsonObject } from '../../utils/json-pointer'\nimport { extendDeep } from '../../../../shared/component-helper'\nimport { isAsync } from '../../../../shared/helpers/isAsync'\nimport useDataValue from '../../hooks/useDataValue'\nimport {\n Context as DataContext,\n ContextState,\n Provider,\n} from '../../DataContext'\nimport SectionContext from '../Section/SectionContext'\nimport useReportError from './useReportError'\nimport IsolationCommitButton from './IsolationCommitButton'\nimport {\n clearedData,\n type Props as ProviderProps,\n} from '../../DataContext/Provider'\nimport type { OnCommit, Path } from '../../types'\n\n/**\n * Deprecated, as it is supported by all major browsers and Node.js >=v18\n * So it's a question of time, when we will remove this polyfill\n */\nimport structuredClone from '@ungap/structured-clone'\n\nexport type IsolationProviderProps<Data extends JsonObject> = {\n /**\n * Form.Isolation: Will be called when the isolated context is committed.\n */\n onCommit?: OnCommit<Data>\n /**\n * Form.Isolation: Will be called when the form is cleared via Form.clearData\n */\n onClear?: () => void\n /**\n * Form.Isolation: A function that will be called when the isolated context is committed.\n * It will receive the data from the isolated context and the data from the outer context.\n * You can use this to transform the data before it is committed.\n */\n transformOnCommit?: (isolatedData: Data, handlerData: Data) => JsonObject\n /**\n * Prevent the form from being submitted when there are fields with errors inside the Form.Isolation.\n */\n bubbleValidation?: boolean\n /**\n * Used internally by the Form.Isolation component\n */\n path?: Path\n /**\n * Used internally by the Form.Isolation component\n */\n isolate?: boolean\n}\n\nexport type IsolationProps<Data extends JsonObject> = Omit<\n ProviderProps<Data>,\n | 'onSubmit'\n | 'onSubmitRequest'\n | 'onSubmitComplete'\n | 'minimumAsyncBehaviorTime'\n | 'asyncSubmitTimeout'\n | 'scrollTopOnSubmit'\n | 'sessionStorageId'\n | 'globalStatusId'\n> & {\n /**\n * A ref (function) that you can call in order to commit the data programmatically to the outer context.\n */\n commitHandleRef?: React.MutableRefObject<() => void>\n}\n\nfunction IsolationProvider<Data extends JsonObject>(\n props: IsolationProps<Data>\n) {\n const {\n children,\n onPathChange,\n onCommit: onCommitProp,\n onClear: onClearProp,\n transformOnCommit: transformOnCommitProp,\n commitHandleRef,\n bubbleValidation,\n data,\n defaultData,\n } = props\n\n const [, forceUpdate] = useReducer(() => ({}), {})\n const internalDataRef = useRef<Data>()\n const localDataRef = useRef<Partial<Data>>({})\n const dataContextRef = useRef<ContextState>(null)\n const outerContext = useContext(DataContext)\n const { path: pathSection } = useContext(SectionContext) || {}\n const { handlePathChange: handlePathChangeOuter, data: dataOuter } =\n outerContext || {}\n const { moveValueToPath } = useDataValue()\n\n const onPathChangeHandler = useCallback(\n async (path: Path, value: unknown) => {\n if (localDataRef.current === clearedData) {\n localDataRef.current = {}\n }\n\n // Depending on the usage, we can get a path like so: \"/pushContainerItems/0/somePath\"\n // where \"somePath\" is a frozen object. In order to still be able to modify it,\n // pointer.set will unfreeze the object and then modify it. (Object.isFrozen(obj[tok]))\n\n pointer.set(localDataRef.current, path, value)\n\n if (pathSection) {\n path = path.replace(pathSection, '')\n }\n\n return await onPathChange?.(path, value)\n },\n [onPathChange, pathSection]\n )\n\n const onUpdateDataValueHandler = useCallback(\n async (\n path: Path,\n value: unknown,\n { preventUpdate = undefined } = {}\n ) => {\n if (internalDataRef.current === clearedData) {\n internalDataRef.current = {} as Data\n }\n\n pointer.set(internalDataRef.current, path, value)\n\n if (!preventUpdate) {\n forceUpdate()\n }\n },\n []\n )\n\n const removeSectionPath = useCallback(\n (data: Data) => {\n return pathSection && pointer.has(data, pathSection)\n ? pointer.get(data, pathSection)\n : data\n },\n [pathSection]\n )\n\n const getMountedData = useCallback((data: Data) => {\n const mounterData = {} as Data\n dataContextRef.current?.mountedFieldsRef.current.forEach(\n (field, path) => {\n if (field.isMounted && pointer.has(data, path)) {\n pointer.set(mounterData, path, pointer.get(data, path))\n }\n }\n )\n return mounterData\n }, [])\n\n useMountEffect(() => {\n localDataRef.current = getMountedData(internalDataRef.current)\n })\n\n // Update the isolated data with the outside context data\n useMemo(() => {\n if (localDataRef.current === clearedData) {\n return // stop here\n }\n\n let localData = data ?? defaultData\n\n if (\n localData &&\n pathSection &&\n !pointer.has(localDataRef.current, pathSection)\n ) {\n localData = moveValueToPath<Data>(pathSection, localData)\n }\n\n internalDataRef.current = Object.assign(\n {},\n localData || dataOuter || {},\n localDataRef.current\n )\n }, [data, defaultData, pathSection, dataOuter, moveValueToPath])\n\n const onCommit: IsolationProps<Data>['onCommit'] = useCallback(\n async (data: Data, additionalArgs) => {\n const mountedData = getMountedData(data)\n const path = props.path ?? '/'\n const outerData =\n props.path && pointer.has(dataOuter, path)\n ? pointer.get(dataOuter, path)\n : dataOuter\n\n localDataRef.current = mountedData\n let isolatedData = structuredClone(mountedData)\n\n if (typeof transformOnCommitProp === 'function') {\n isolatedData = transformOnCommitProp(isolatedData, outerData)\n }\n\n let stop = false\n additionalArgs.preventCommit = () => (stop = true)\n\n const commitData = removeSectionPath(isolatedData)\n const result = isAsync(onCommitProp)\n ? await onCommitProp?.(commitData, additionalArgs)\n : onCommitProp?.(commitData, additionalArgs)\n\n if (stop) {\n return // stop here\n }\n\n // Commit the internal data to the nested context data\n await handlePathChangeOuter?.(\n path,\n Array.isArray(isolatedData)\n ? isolatedData\n : extendDeep({}, outerData, isolatedData)\n )\n\n return result\n },\n [\n getMountedData,\n props.path,\n dataOuter,\n transformOnCommitProp,\n handlePathChangeOuter,\n onCommitProp,\n removeSectionPath,\n ]\n )\n\n const onClear = useCallback(() => {\n localDataRef.current = clearedData\n internalDataRef.current = clearedData as Data\n forceUpdate()\n onClearProp?.()\n }, [onClearProp])\n\n const providerProps: IsolationProps<Data> = {\n ...props,\n [defaultData ? 'defaultData' : 'data']: internalDataRef.current,\n onUpdateDataValue: onUpdateDataValueHandler,\n onPathChange: onPathChangeHandler,\n onCommit,\n onClear,\n isolate: true,\n }\n\n return (\n <Provider {...providerProps}>\n <DataContext.Consumer>\n {(dataContext) => {\n dataContextRef.current = dataContext\n\n if (commitHandleRef) {\n commitHandleRef.current = dataContext?.handleSubmit\n }\n\n return children\n }}\n </DataContext.Consumer>\n\n {bubbleValidation && (\n <BubbleValidation outerContext={outerContext} />\n )}\n </Provider>\n )\n}\n\nfunction BubbleValidation({\n outerContext,\n}: {\n outerContext: ContextState\n}) {\n const innerContext = useContext(DataContext)\n const { setShowAllErrors } = innerContext\n\n const setShowAllErrorsNested = useCallback(\n (showAllErrors: boolean) => {\n setShowAllErrors?.(showAllErrors)\n },\n [setShowAllErrors]\n )\n\n const { addSetShowAllErrorsRef } = outerContext || {}\n if (!addSetShowAllErrorsRef?.current?.includes(setShowAllErrorsNested)) {\n addSetShowAllErrorsRef?.current.push(setShowAllErrorsNested)\n }\n\n useReportError(\n innerContext.hasErrors() ? isolationError : undefined,\n outerContext\n )\n\n return null\n}\n\nconst isolationError = new Error('Form.Isolation')\n\nIsolationProvider.CommitButton = IsolationCommitButton\nIsolationProvider._supportsSpacingProps = undefined\n\nexport default IsolationProvider\n"],"mappings":";;;;;AAAA,OAAOA,KAAK,IACVC,WAAW,EACXC,UAAU,EACVC,OAAO,EACPC,UAAU,EACVC,MAAM,QACD,OAAO;AACd,OAAOC,cAAc,MAAM,2CAA2C;AACtE,OAAOC,OAAO,MAAsB,0BAA0B;AAC9D,SAASC,UAAU,QAAQ,qCAAqC;AAChE,SAASC,OAAO,QAAQ,oCAAoC;AAC5D,OAAOC,YAAY,MAAM,0BAA0B;AACnD,SACEC,OAAO,IAAIC,WAAW,EAEtBC,QAAQ,QACH,mBAAmB;AAC1B,OAAOC,cAAc,MAAM,2BAA2B;AACtD,OAAOC,cAAc,MAAM,kBAAkB;AAC7C,OAAOC,qBAAqB,MAAM,yBAAyB;AAC3D,SACEC,WAAW,QAEN,4BAA4B;AAOnC,OAAOC,eAAe,MAAM,yBAAyB;AAgDrD,SAASC,iBAAiBA,CACxBC,KAA2B,EAC3B;EACA,MAAM;IACJC,QAAQ;IACRC,YAAY;IACZC,QAAQ,EAAEC,YAAY;IACtBC,OAAO,EAAEC,WAAW;IACpBC,iBAAiB,EAAEC,qBAAqB;IACxCC,eAAe;IACfC,gBAAgB;IAChBC,IAAI;IACJC;EACF,CAAC,GAAGZ,KAAK;EAET,MAAM,GAAGa,WAAW,CAAC,GAAG7B,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAClD,MAAM8B,eAAe,GAAG7B,MAAM,CAAO,CAAC;EACtC,MAAM8B,YAAY,GAAG9B,MAAM,CAAgB,CAAC,CAAC,CAAC;EAC9C,MAAM+B,cAAc,GAAG/B,MAAM,CAAe,IAAI,CAAC;EACjD,MAAMgC,YAAY,GAAGnC,UAAU,CAACU,WAAW,CAAC;EAC5C,MAAM;IAAE0B,IAAI,EAAEC;EAAY,CAAC,GAAGrC,UAAU,CAACY,cAAc,CAAC,IAAI,CAAC,CAAC;EAC9D,MAAM;IAAE0B,gBAAgB,EAAEC,qBAAqB;IAAEV,IAAI,EAAEW;EAAU,CAAC,GAChEL,YAAY,IAAI,CAAC,CAAC;EACpB,MAAM;IAAEM;EAAgB,CAAC,GAAGjC,YAAY,CAAC,CAAC;EAE1C,MAAMkC,mBAAmB,GAAG3C,WAAW,CACrC,OAAOqC,IAAU,EAAEO,KAAc,KAAK;IACpC,IAAIV,YAAY,CAACW,OAAO,KAAK7B,WAAW,EAAE;MACxCkB,YAAY,CAACW,OAAO,GAAG,CAAC,CAAC;IAC3B;IAMAvC,OAAO,CAACwC,GAAG,CAACZ,YAAY,CAACW,OAAO,EAAER,IAAI,EAAEO,KAAK,CAAC;IAE9C,IAAIN,WAAW,EAAE;MACfD,IAAI,GAAGA,IAAI,CAACU,OAAO,CAACT,WAAW,EAAE,EAAE,CAAC;IACtC;IAEA,OAAO,OAAMjB,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAGgB,IAAI,EAAEO,KAAK,CAAC;EAC1C,CAAC,EACD,CAACvB,YAAY,EAAEiB,WAAW,CAC5B,CAAC;EAED,MAAMU,wBAAwB,GAAGhD,WAAW,CAC1C,OACEqC,IAAU,EACVO,KAAc,EACd;IAAEK,aAAa,GAAGC;EAAU,CAAC,GAAG,CAAC,CAAC,KAC/B;IACH,IAAIjB,eAAe,CAACY,OAAO,KAAK7B,WAAW,EAAE;MAC3CiB,eAAe,CAACY,OAAO,GAAG,CAAC,CAAS;IACtC;IAEAvC,OAAO,CAACwC,GAAG,CAACb,eAAe,CAACY,OAAO,EAAER,IAAI,EAAEO,KAAK,CAAC;IAEjD,IAAI,CAACK,aAAa,EAAE;MAClBjB,WAAW,CAAC,CAAC;IACf;EACF,CAAC,EACD,EACF,CAAC;EAED,MAAMmB,iBAAiB,GAAGnD,WAAW,CAClC8B,IAAU,IAAK;IACd,OAAOQ,WAAW,IAAIhC,OAAO,CAAC8C,GAAG,CAACtB,IAAI,EAAEQ,WAAW,CAAC,GAChDhC,OAAO,CAAC+C,GAAG,CAACvB,IAAI,EAAEQ,WAAW,CAAC,GAC9BR,IAAI;EACV,CAAC,EACD,CAACQ,WAAW,CACd,CAAC;EAED,MAAMgB,cAAc,GAAGtD,WAAW,CAAE8B,IAAU,IAAK;IAAA,IAAAyB,qBAAA;IACjD,MAAMC,WAAW,GAAG,CAAC,CAAS;IAC9B,CAAAD,qBAAA,GAAApB,cAAc,CAACU,OAAO,cAAAU,qBAAA,uBAAtBA,qBAAA,CAAwBE,gBAAgB,CAACZ,OAAO,CAACa,OAAO,CACtD,CAACC,KAAK,EAAEtB,IAAI,KAAK;MACf,IAAIsB,KAAK,CAACC,SAAS,IAAItD,OAAO,CAAC8C,GAAG,CAACtB,IAAI,EAAEO,IAAI,CAAC,EAAE;QAC9C/B,OAAO,CAACwC,GAAG,CAACU,WAAW,EAAEnB,IAAI,EAAE/B,OAAO,CAAC+C,GAAG,CAACvB,IAAI,EAAEO,IAAI,CAAC,CAAC;MACzD;IACF,CACF,CAAC;IACD,OAAOmB,WAAW;EACpB,CAAC,EAAE,EAAE,CAAC;EAENnD,cAAc,CAAC,MAAM;IACnB6B,YAAY,CAACW,OAAO,GAAGS,cAAc,CAACrB,eAAe,CAACY,OAAO,CAAC;EAChE,CAAC,CAAC;EAGF3C,OAAO,CAAC,MAAM;IACZ,IAAIgC,YAAY,CAACW,OAAO,KAAK7B,WAAW,EAAE;MACxC;IACF;IAEA,IAAI6C,SAAS,GAAG/B,IAAI,aAAJA,IAAI,cAAJA,IAAI,GAAIC,WAAW;IAEnC,IACE8B,SAAS,IACTvB,WAAW,IACX,CAAChC,OAAO,CAAC8C,GAAG,CAAClB,YAAY,CAACW,OAAO,EAAEP,WAAW,CAAC,EAC/C;MACAuB,SAAS,GAAGnB,eAAe,CAAOJ,WAAW,EAAEuB,SAAS,CAAC;IAC3D;IAEA5B,eAAe,CAACY,OAAO,GAAGiB,MAAM,CAACC,MAAM,CACrC,CAAC,CAAC,EACFF,SAAS,IAAIpB,SAAS,IAAI,CAAC,CAAC,EAC5BP,YAAY,CAACW,OACf,CAAC;EACH,CAAC,EAAE,CAACf,IAAI,EAAEC,WAAW,EAAEO,WAAW,EAAEG,SAAS,EAAEC,eAAe,CAAC,CAAC;EAEhE,MAAMpB,QAA0C,GAAGtB,WAAW,CAC5D,OAAO8B,IAAU,EAAEkC,cAAc,KAAK;IAAA,IAAAC,WAAA;IACpC,MAAMC,WAAW,GAAGZ,cAAc,CAACxB,IAAI,CAAC;IACxC,MAAMO,IAAI,IAAA4B,WAAA,GAAG9C,KAAK,CAACkB,IAAI,cAAA4B,WAAA,cAAAA,WAAA,GAAI,GAAG;IAC9B,MAAME,SAAS,GACbhD,KAAK,CAACkB,IAAI,IAAI/B,OAAO,CAAC8C,GAAG,CAACX,SAAS,EAAEJ,IAAI,CAAC,GACtC/B,OAAO,CAAC+C,GAAG,CAACZ,SAAS,EAAEJ,IAAI,CAAC,GAC5BI,SAAS;IAEfP,YAAY,CAACW,OAAO,GAAGqB,WAAW;IAClC,IAAIE,YAAY,GAAGnD,eAAe,CAACiD,WAAW,CAAC;IAE/C,IAAI,OAAOvC,qBAAqB,KAAK,UAAU,EAAE;MAC/CyC,YAAY,GAAGzC,qBAAqB,CAACyC,YAAY,EAAED,SAAS,CAAC;IAC/D;IAEA,IAAIE,IAAI,GAAG,KAAK;IAChBL,cAAc,CAACM,aAAa,GAAG,MAAOD,IAAI,GAAG,IAAK;IAElD,MAAME,UAAU,GAAGpB,iBAAiB,CAACiB,YAAY,CAAC;IAClD,MAAMI,MAAM,GAAGhE,OAAO,CAACe,YAAY,CAAC,GAChC,OAAMA,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAGgD,UAAU,EAAEP,cAAc,CAAC,IAChDzC,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAGgD,UAAU,EAAEP,cAAc,CAAC;IAE9C,IAAIK,IAAI,EAAE;MACR;IACF;IAGA,OAAM7B,qBAAqB,aAArBA,qBAAqB,uBAArBA,qBAAqB,CACzBH,IAAI,EACJoC,KAAK,CAACC,OAAO,CAACN,YAAY,CAAC,GACvBA,YAAY,GACZ7D,UAAU,CAAC,CAAC,CAAC,EAAE4D,SAAS,EAAEC,YAAY,CAC5C,CAAC;IAED,OAAOI,MAAM;EACf,CAAC,EACD,CACElB,cAAc,EACdnC,KAAK,CAACkB,IAAI,EACVI,SAAS,EACTd,qBAAqB,EACrBa,qBAAqB,EACrBjB,YAAY,EACZ4B,iBAAiB,CAErB,CAAC;EAED,MAAM3B,OAAO,GAAGxB,WAAW,CAAC,MAAM;IAChCkC,YAAY,CAACW,OAAO,GAAG7B,WAAW;IAClCiB,eAAe,CAACY,OAAO,GAAG7B,WAAmB;IAC7CgB,WAAW,CAAC,CAAC;IACbP,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAG,CAAC;EACjB,CAAC,EAAE,CAACA,WAAW,CAAC,CAAC;EAEjB,MAAMkD,aAAmC,GAAAC,aAAA,CAAAA,aAAA,KACpCzD,KAAK;IACR,CAACY,WAAW,GAAG,aAAa,GAAG,MAAM,GAAGE,eAAe,CAACY,OAAO;IAC/DgC,iBAAiB,EAAE7B,wBAAwB;IAC3C3B,YAAY,EAAEsB,mBAAmB;IACjCrB,QAAQ;IACRE,OAAO;IACPsD,OAAO,EAAE;EAAI,EACd;EAED,OACE/E,KAAA,CAAAgF,aAAA,CAACnE,QAAQ,EAAK+D,aAAa,EACzB5E,KAAA,CAAAgF,aAAA,CAACpE,WAAW,CAACqE,QAAQ,QACjBC,WAAW,IAAK;IAChB9C,cAAc,CAACU,OAAO,GAAGoC,WAAW;IAEpC,IAAIrD,eAAe,EAAE;MACnBA,eAAe,CAACiB,OAAO,GAAGoC,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEC,YAAY;IACrD;IAEA,OAAO9D,QAAQ;EACjB,CACoB,CAAC,EAEtBS,gBAAgB,IACf9B,KAAA,CAAAgF,aAAA,CAACI,gBAAgB;IAAC/C,YAAY,EAAEA;EAAa,CAAE,CAEzC,CAAC;AAEf;AAEA,SAAS+C,gBAAgBA,CAAC;EACxB/C;AAGF,CAAC,EAAE;EAAA,IAAAgD,qBAAA;EACD,MAAMC,YAAY,GAAGpF,UAAU,CAACU,WAAW,CAAC;EAC5C,MAAM;IAAE2E;EAAiB,CAAC,GAAGD,YAAY;EAEzC,MAAME,sBAAsB,GAAGvF,WAAW,CACvCwF,aAAsB,IAAK;IAC1BF,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAGE,aAAa,CAAC;EACnC,CAAC,EACD,CAACF,gBAAgB,CACnB,CAAC;EAED,MAAM;IAAEG;EAAuB,CAAC,GAAGrD,YAAY,IAAI,CAAC,CAAC;EACrD,IAAI,EAACqD,sBAAsB,aAAtBA,sBAAsB,gBAAAL,qBAAA,GAAtBK,sBAAsB,CAAE5C,OAAO,cAAAuC,qBAAA,eAA/BA,qBAAA,CAAiCM,QAAQ,CAACH,sBAAsB,CAAC,GAAE;IACtEE,sBAAsB,aAAtBA,sBAAsB,uBAAtBA,sBAAsB,CAAE5C,OAAO,CAAC8C,IAAI,CAACJ,sBAAsB,CAAC;EAC9D;EAEAzE,cAAc,CACZuE,YAAY,CAACO,SAAS,CAAC,CAAC,GAAGC,cAAc,GAAG3C,SAAS,EACrDd,YACF,CAAC;EAED,OAAO,IAAI;AACb;AAEA,MAAMyD,cAAc,GAAG,IAAIC,KAAK,CAAC,gBAAgB,CAAC;AAElD5E,iBAAiB,CAAC6E,YAAY,GAAGhF,qBAAqB;AACtDG,iBAAiB,CAAC8E,qBAAqB,GAAG9C,SAAS;AAEnD,eAAehC,iBAAiB","ignoreList":[]}
1
+ {"version":3,"file":"Isolation.js","names":["React","useCallback","useContext","useMemo","useReducer","useRef","useState","useMountEffect","pointer","extendDeep","isAsync","useDataValue","Context","DataContext","Provider","SectionContext","useReportError","IsolationCommitButton","IsolationResetButton","clearedData","createDataReference","IsolatedContainer","IsolationContext","structuredClone","IsolationProvider","props","_IsolatedContainer","dataReferenceFallback","dataReference","children","onPathChange","onCommit","onCommitProp","onClear","onClearProp","transformOnCommit","transformOnCommitProp","commitHandleRef","bubbleValidation","preventUncommittedChanges","data","defaultData","resetDataAfterCommit","forceUpdate","internalDataRef","localDataRef","dataContextRef","outerContext","path","pathSection","handlePathChange","handlePathChangeOuter","dataOuter","moveValueToPath","onPathChangeHandler","value","current","set","replace","onUpdateDataValueHandler","preventUpdate","undefined","removeSectionPath","has","get","getMountedData","_dataContextRef$curre","mounterData","mountedFieldsRef","forEach","field","isMounted","localData","Object","assign","additionalArgs","_props$path","mountedData","outerData","isolatedData","stop","preventCommit","commitData","result","Array","isArray","setIsolatedData","providerProps","_objectSpread","onUpdateDataValue","isolate","createElement","Consumer","dataContext","handleSubmit","_BubbleValidation","BubbleValidation","_addSetShowAllErrorsR","innerContext","setShowAllErrors","setShowAllErrorsNested","showAllErrors","addSetShowAllErrorsRef","includes","push","hasErrors","isolationError","Error","CommitButton","ResetButton","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Form/Isolation/Isolation.tsx"],"sourcesContent":["import React, {\n useCallback,\n useContext,\n useMemo,\n useReducer,\n useRef,\n useState,\n} from 'react'\nimport useMountEffect from '../../../../shared/helpers/useMountEffect'\nimport pointer, { JsonObject } from '../../utils/json-pointer'\nimport { extendDeep } from '../../../../shared/component-helper'\nimport { isAsync } from '../../../../shared/helpers/isAsync'\nimport useDataValue from '../../hooks/useDataValue'\nimport {\n Context as DataContext,\n ContextState,\n Provider,\n} from '../../DataContext'\nimport SectionContext from '../Section/SectionContext'\nimport useReportError from './useReportError'\nimport IsolationCommitButton from './IsolationCommitButton'\nimport IsolationResetButton from './IsolationResetButton'\nimport {\n clearedData,\n type Props as ProviderProps,\n} from '../../DataContext/Provider'\nimport {\n IsolationDataReference,\n createDataReference,\n} from './IsolationDataReference'\nimport IsolatedContainer from './IsolatedContainer'\nimport IsolationContext from './IsolationContext'\nimport type { OnCommit, Path } from '../../types'\n\n/**\n * Deprecated, as it is supported by all major browsers and Node.js >=v18\n * So it's a question of time, when we will remove this polyfill\n */\nimport structuredClone from '@ungap/structured-clone'\n\nexport type IsolationProviderProps<Data extends JsonObject> = {\n /**\n * Form.Isolation: Will be called when the isolated context is committed.\n */\n onCommit?: OnCommit<Data>\n /**\n * Form.Isolation: Will be called when the form is cleared via Form.clearData\n */\n onClear?: () => void\n /**\n * Form.Isolation: A function that will be called when the isolated context is committed.\n * It will receive the data from the isolated context and the data from the outer context.\n * You can use this to transform the data before it is committed.\n */\n transformOnCommit?: (isolatedData: Data, handlerData: Data) => JsonObject\n /**\n * Prevent the form from being submitted when there are fields with errors inside the Form.Isolation.\n */\n bubbleValidation?: boolean\n /**\n * Prevents uncommitted changes before the form is submitted. Will display an error message if user tries to submit without committing their changes.\n */\n preventUncommittedChanges?: boolean\n /**\n * If set to `true`, the Form.Isolation will reset its data context after committing the data to the outer context.\n */\n resetDataAfterCommit?: boolean\n /**\n * Provide a reference by using Form.Isolation.createDataReference.\n */\n dataReference?: IsolationDataReference\n /**\n * Used internally by the Form.Isolation component\n */\n path?: Path\n /**\n * Used internally by the Form.Isolation component\n */\n isolate?: boolean\n}\n\nexport type IsolationProps<Data extends JsonObject> = Omit<\n ProviderProps<Data>,\n | 'onSubmit'\n | 'onSubmitRequest'\n | 'onSubmitComplete'\n | 'minimumAsyncBehaviorTime'\n | 'asyncSubmitTimeout'\n | 'scrollTopOnSubmit'\n | 'sessionStorageId'\n | 'globalStatusId'\n> & {\n /**\n * A ref (function) that you can call in order to commit the data programmatically to the outer context.\n */\n commitHandleRef?: React.MutableRefObject<() => void>\n}\n\nfunction IsolationProvider<Data extends JsonObject>(\n props: IsolationProps<Data>\n) {\n const [dataReferenceFallback] = useState<IsolationDataReference>(() => {\n if (!props?.dataReference) {\n return createDataReference()\n }\n })\n\n const {\n children,\n onPathChange,\n onCommit: onCommitProp,\n onClear: onClearProp,\n transformOnCommit: transformOnCommitProp,\n commitHandleRef,\n bubbleValidation,\n preventUncommittedChanges,\n data,\n defaultData,\n dataReference = dataReferenceFallback,\n resetDataAfterCommit,\n } = props\n\n const [, forceUpdate] = useReducer(() => ({}), {})\n const internalDataRef = useRef<Data>()\n const localDataRef = useRef<Partial<Data>>({})\n const dataContextRef = useRef<ContextState>(null)\n const outerContext = useContext(DataContext)\n const { path: pathSection } = useContext(SectionContext) || {}\n const { handlePathChange: handlePathChangeOuter, data: dataOuter } =\n outerContext || {}\n const { moveValueToPath } = useDataValue()\n\n const onPathChangeHandler = useCallback(\n async (path: Path, value: unknown) => {\n if (localDataRef.current === clearedData) {\n localDataRef.current = {}\n }\n\n // Depending on the usage, we can get a path like so: \"/pushContainerItems/0/somePath\"\n // where \"somePath\" is a frozen object. In order to still be able to modify it,\n // pointer.set will unfreeze the object and then modify it. (Object.isFrozen(obj[tok]))\n\n pointer.set(localDataRef.current, path, value)\n\n if (pathSection) {\n path = path.replace(pathSection, '')\n }\n\n return await onPathChange?.(path, value)\n },\n [onPathChange, pathSection]\n )\n\n const onUpdateDataValueHandler = useCallback(\n async (\n path: Path,\n value: unknown,\n { preventUpdate = undefined } = {}\n ) => {\n if (internalDataRef.current === clearedData) {\n internalDataRef.current = {} as Data\n }\n\n pointer.set(internalDataRef.current, path, value)\n\n if (!preventUpdate) {\n forceUpdate()\n }\n },\n []\n )\n\n const removeSectionPath = useCallback(\n (data: Data) => {\n return pathSection && pointer.has(data, pathSection)\n ? pointer.get(data, pathSection)\n : data\n },\n [pathSection]\n )\n\n const getMountedData = useCallback((data: Data) => {\n const mounterData = {} as Data\n dataContextRef.current?.mountedFieldsRef.current.forEach(\n (field, path) => {\n if (field.isMounted && pointer.has(data, path)) {\n pointer.set(mounterData, path, pointer.get(data, path))\n }\n }\n )\n return mounterData\n }, [])\n\n useMountEffect(() => {\n localDataRef.current = getMountedData(internalDataRef.current)\n })\n\n // Update the isolated data with the outside context data\n useMemo(() => {\n if (localDataRef.current === clearedData) {\n return // stop here\n }\n\n let localData = data ?? defaultData\n\n if (\n localData &&\n pathSection &&\n !pointer.has(localDataRef.current, pathSection)\n ) {\n localData = moveValueToPath<Data>(pathSection, localData)\n }\n\n internalDataRef.current = Object.assign(\n {},\n localData || structuredClone(dataOuter) || {},\n localDataRef.current\n )\n }, [data, defaultData, pathSection, dataOuter, moveValueToPath])\n\n const onCommit: IsolationProps<Data>['onCommit'] = useCallback(\n async (data: Data, additionalArgs) => {\n const mountedData = getMountedData(data)\n const path = props.path ?? '/'\n const outerData =\n props.path && pointer.has(dataOuter, path)\n ? pointer.get(dataOuter, path)\n : dataOuter\n\n localDataRef.current = mountedData\n let isolatedData = structuredClone(mountedData)\n\n if (typeof transformOnCommitProp === 'function') {\n isolatedData = transformOnCommitProp(isolatedData, outerData)\n }\n\n let stop = false\n additionalArgs.preventCommit = () => (stop = true)\n\n const commitData = removeSectionPath(isolatedData)\n const result = isAsync(onCommitProp)\n ? await onCommitProp?.(commitData, additionalArgs)\n : onCommitProp?.(commitData, additionalArgs)\n\n if (stop) {\n return // stop here\n }\n\n // Commit the internal data to the nested context data\n await handlePathChangeOuter?.(\n path,\n Array.isArray(isolatedData)\n ? isolatedData\n : extendDeep({}, outerData, isolatedData)\n )\n\n return result\n },\n [\n getMountedData,\n props.path,\n dataOuter,\n transformOnCommitProp,\n handlePathChangeOuter,\n onCommitProp,\n removeSectionPath,\n ]\n )\n\n const setIsolatedData = useCallback((data: Data) => {\n localDataRef.current = data\n internalDataRef.current = data\n }, [])\n\n const onClear = useCallback(() => {\n setIsolatedData(clearedData as Data)\n forceUpdate()\n onClearProp?.()\n }, [onClearProp, setIsolatedData])\n\n const providerProps: IsolationProps<Data> = {\n ...props,\n [defaultData ? 'defaultData' : 'data']: internalDataRef.current,\n onUpdateDataValue: onUpdateDataValueHandler,\n onPathChange: onPathChangeHandler,\n onCommit,\n onClear,\n isolate: true,\n }\n\n return (\n <Provider {...providerProps}>\n <IsolationContext.Provider\n value={{\n preventUncommittedChanges,\n dataReference,\n resetDataAfterCommit,\n outerContext,\n setIsolatedData,\n }}\n >\n <DataContext.Consumer>\n {(dataContext) => {\n dataContextRef.current = dataContext\n\n if (commitHandleRef) {\n commitHandleRef.current = dataContext?.handleSubmit\n }\n\n return <IsolatedContainer>{children} </IsolatedContainer>\n }}\n </DataContext.Consumer>\n\n {bubbleValidation && <BubbleValidation />}\n </IsolationContext.Provider>\n </Provider>\n )\n}\n\nfunction BubbleValidation() {\n const innerContext = useContext(DataContext)\n const { outerContext } = useContext(IsolationContext)\n const { setShowAllErrors } = innerContext\n\n const setShowAllErrorsNested = useCallback(\n (showAllErrors: boolean) => {\n setShowAllErrors?.(showAllErrors)\n },\n [setShowAllErrors]\n )\n\n const { addSetShowAllErrorsRef } = outerContext || {}\n if (!addSetShowAllErrorsRef?.current?.includes(setShowAllErrorsNested)) {\n addSetShowAllErrorsRef?.current.push(setShowAllErrorsNested)\n }\n\n useReportError(\n innerContext.hasErrors() ? isolationError : undefined,\n outerContext\n )\n\n return null\n}\n\nconst isolationError = new Error('Form.Isolation')\n\nIsolationProvider.CommitButton = IsolationCommitButton\nIsolationProvider.ResetButton = IsolationResetButton\nIsolationProvider.createDataReference = createDataReference\nIsolationProvider._supportsSpacingProps = undefined\n\nexport default IsolationProvider\n"],"mappings":"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","ignoreList":[]}
@@ -32,7 +32,7 @@ function IsolationCommitButton(props) {
32
32
  }, [handleSubmit, isolate]);
33
33
  return React.createElement(Button, _extends({
34
34
  variant: "secondary",
35
- className: classnames('dnb-forms-isolate-button', className),
35
+ className: classnames('dnb-forms-isolate__commit-button', className),
36
36
  icon: check,
37
37
  icon_position: "left",
38
38
  onClick: onClickHandler
@@ -1 +1 @@
1
- {"version":3,"file":"IsolationCommitButton.js","names":["React","useCallback","useContext","classnames","useTranslation","DataContext","Button","check","IsolationCommitButton","props","translations","Isolation","className","children","text","rest","_objectWithoutProperties","_excluded","content","commitButtonText","handleSubmit","dataContextProps","isolate","onClickHandler","createElement","_extends","variant","icon","icon_position","onClick","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Form/Isolation/IsolationCommitButton.tsx"],"sourcesContent":["import React, { useCallback, useContext } from 'react'\nimport classnames from 'classnames'\nimport { useTranslation } from '../../hooks'\nimport DataContext from '../../DataContext/Context'\nimport Button, { ButtonProps } from '../../../../components/button/Button'\nimport { check } from '../../../../icons'\n\nexport type Props = ButtonProps\n\nfunction IsolationCommitButton(props: Props) {\n const translations = useTranslation().Isolation\n\n const { className, children, text, ...rest } = props\n\n const content = text || children || translations.commitButtonText\n\n const { handleSubmit, props: dataContextProps } =\n useContext(DataContext) || {}\n const { isolate } = dataContextProps || {}\n\n const onClickHandler = useCallback(() => {\n if (isolate) {\n handleSubmit?.()\n }\n }, [handleSubmit, isolate])\n\n return (\n <Button\n variant=\"secondary\"\n className={classnames('dnb-forms-isolate-button', className)}\n icon={check}\n icon_position=\"left\"\n onClick={onClickHandler}\n {...rest}\n >\n {content}\n </Button>\n )\n}\n\nIsolationCommitButton._supportsSpacingProps = true\nexport default IsolationCommitButton\n"],"mappings":";;;;;AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,UAAU,QAAQ,OAAO;AACtD,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,cAAc,QAAQ,aAAa;AAC5C,OAAOC,WAAW,MAAM,2BAA2B;AACnD,OAAOC,MAAM,MAAuB,sCAAsC;AAC1E,SAASC,KAAK,QAAQ,mBAAmB;AAIzC,SAASC,qBAAqBA,CAACC,KAAY,EAAE;EAC3C,MAAMC,YAAY,GAAGN,cAAc,CAAC,CAAC,CAACO,SAAS;EAE/C,MAAM;MAAEC,SAAS;MAAEC,QAAQ;MAAEC;IAAc,CAAC,GAAGL,KAAK;IAAdM,IAAI,GAAAC,wBAAA,CAAKP,KAAK,EAAAQ,SAAA;EAEpD,MAAMC,OAAO,GAAGJ,IAAI,IAAID,QAAQ,IAAIH,YAAY,CAACS,gBAAgB;EAEjE,MAAM;IAAEC,YAAY;IAAEX,KAAK,EAAEY;EAAiB,CAAC,GAC7CnB,UAAU,CAACG,WAAW,CAAC,IAAI,CAAC,CAAC;EAC/B,MAAM;IAAEiB;EAAQ,CAAC,GAAGD,gBAAgB,IAAI,CAAC,CAAC;EAE1C,MAAME,cAAc,GAAGtB,WAAW,CAAC,MAAM;IACvC,IAAIqB,OAAO,EAAE;MACXF,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAG,CAAC;IAClB;EACF,CAAC,EAAE,CAACA,YAAY,EAAEE,OAAO,CAAC,CAAC;EAE3B,OACEtB,KAAA,CAAAwB,aAAA,CAAClB,MAAM,EAAAmB,QAAA;IACLC,OAAO,EAAC,WAAW;IACnBd,SAAS,EAAET,UAAU,CAAC,0BAA0B,EAAES,SAAS,CAAE;IAC7De,IAAI,EAAEpB,KAAM;IACZqB,aAAa,EAAC,MAAM;IACpBC,OAAO,EAAEN;EAAe,GACpBR,IAAI,GAEPG,OACK,CAAC;AAEb;AAEAV,qBAAqB,CAACsB,qBAAqB,GAAG,IAAI;AAClD,eAAetB,qBAAqB","ignoreList":[]}
1
+ {"version":3,"file":"IsolationCommitButton.js","names":["React","useCallback","useContext","classnames","useTranslation","DataContext","Button","check","IsolationCommitButton","props","translations","Isolation","className","children","text","rest","_objectWithoutProperties","_excluded","content","commitButtonText","handleSubmit","dataContextProps","isolate","onClickHandler","createElement","_extends","variant","icon","icon_position","onClick","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Form/Isolation/IsolationCommitButton.tsx"],"sourcesContent":["import React, { useCallback, useContext } from 'react'\nimport classnames from 'classnames'\nimport { useTranslation } from '../../hooks'\nimport DataContext from '../../DataContext/Context'\nimport Button, { ButtonProps } from '../../../../components/button/Button'\nimport { check } from '../../../../icons'\n\nexport type Props = ButtonProps\n\nfunction IsolationCommitButton(props: Props) {\n const translations = useTranslation().Isolation\n\n const { className, children, text, ...rest } = props\n\n const content = text || children || translations.commitButtonText\n\n const { handleSubmit, props: dataContextProps } =\n useContext(DataContext) || {}\n const { isolate } = dataContextProps || {}\n\n const onClickHandler = useCallback(() => {\n if (isolate) {\n handleSubmit?.()\n }\n }, [handleSubmit, isolate])\n\n return (\n <Button\n variant=\"secondary\"\n className={classnames('dnb-forms-isolate__commit-button', className)}\n icon={check}\n icon_position=\"left\"\n onClick={onClickHandler}\n {...rest}\n >\n {content}\n </Button>\n )\n}\n\nIsolationCommitButton._supportsSpacingProps = true\nexport default IsolationCommitButton\n"],"mappings":";;;;;AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,UAAU,QAAQ,OAAO;AACtD,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,cAAc,QAAQ,aAAa;AAC5C,OAAOC,WAAW,MAAM,2BAA2B;AACnD,OAAOC,MAAM,MAAuB,sCAAsC;AAC1E,SAASC,KAAK,QAAQ,mBAAmB;AAIzC,SAASC,qBAAqBA,CAACC,KAAY,EAAE;EAC3C,MAAMC,YAAY,GAAGN,cAAc,CAAC,CAAC,CAACO,SAAS;EAE/C,MAAM;MAAEC,SAAS;MAAEC,QAAQ;MAAEC;IAAc,CAAC,GAAGL,KAAK;IAAdM,IAAI,GAAAC,wBAAA,CAAKP,KAAK,EAAAQ,SAAA;EAEpD,MAAMC,OAAO,GAAGJ,IAAI,IAAID,QAAQ,IAAIH,YAAY,CAACS,gBAAgB;EAEjE,MAAM;IAAEC,YAAY;IAAEX,KAAK,EAAEY;EAAiB,CAAC,GAC7CnB,UAAU,CAACG,WAAW,CAAC,IAAI,CAAC,CAAC;EAC/B,MAAM;IAAEiB;EAAQ,CAAC,GAAGD,gBAAgB,IAAI,CAAC,CAAC;EAE1C,MAAME,cAAc,GAAGtB,WAAW,CAAC,MAAM;IACvC,IAAIqB,OAAO,EAAE;MACXF,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAG,CAAC;IAClB;EACF,CAAC,EAAE,CAACA,YAAY,EAAEE,OAAO,CAAC,CAAC;EAE3B,OACEtB,KAAA,CAAAwB,aAAA,CAAClB,MAAM,EAAAmB,QAAA;IACLC,OAAO,EAAC,WAAW;IACnBd,SAAS,EAAET,UAAU,CAAC,kCAAkC,EAAES,SAAS,CAAE;IACrEe,IAAI,EAAEpB,KAAM;IACZqB,aAAa,EAAC,MAAM;IACpBC,OAAO,EAAEN;EAAe,GACpBR,IAAI,GAEPG,OACK,CAAC;AAEb;AAEAV,qBAAqB,CAACsB,qBAAqB,GAAG,IAAI;AAClD,eAAetB,qBAAqB","ignoreList":[]}
@@ -0,0 +1,12 @@
1
+ /// <reference types="react" />
2
+ import { ContextState } from '../../DataContext/Context';
3
+ import { IsolationDataReference } from './IsolationDataReference';
4
+ export type IsolationContext = {
5
+ dataReference: IsolationDataReference;
6
+ resetDataAfterCommit: boolean;
7
+ outerContext: ContextState;
8
+ preventUncommittedChanges: boolean;
9
+ setIsolatedData: (data: unknown) => void;
10
+ };
11
+ declare const IsolationContext: import("react").Context<IsolationContext>;
12
+ export default IsolationContext;
@@ -0,0 +1,6 @@
1
+ "use client";
2
+
3
+ import { createContext } from 'react';
4
+ const IsolationContext = createContext(null);
5
+ export default IsolationContext;
6
+ //# sourceMappingURL=IsolationContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IsolationContext.js","names":["createContext","IsolationContext"],"sources":["../../../../../../src/extensions/forms/Form/Isolation/IsolationContext.ts"],"sourcesContent":["import { createContext } from 'react'\nimport { ContextState } from '../../DataContext/Context'\nimport { IsolationDataReference } from './IsolationDataReference'\n\nexport type IsolationContext = {\n dataReference: IsolationDataReference\n resetDataAfterCommit: boolean\n outerContext: ContextState\n preventUncommittedChanges: boolean\n setIsolatedData: (data: unknown) => void\n}\n\nconst IsolationContext = createContext<IsolationContext>(null)\n\nexport default IsolationContext\n"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,OAAO;AAYrC,MAAMC,gBAAgB,GAAGD,aAAa,CAAmB,IAAI,CAAC;AAE9D,eAAeC,gBAAgB","ignoreList":[]}
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ export type IsolationDataReference = {
3
+ refresh: () => void;
4
+ update: (data: unknown) => void;
5
+ cleanup: () => void;
6
+ snapshotRef: React.MutableRefObject<unknown>;
7
+ eventsRef: React.MutableRefObject<Array<() => void>>;
8
+ };
9
+ export declare function createDataReference(): IsolationDataReference;
@@ -0,0 +1,25 @@
1
+ export function createDataReference() {
2
+ const snapshotRef = {
3
+ current: undefined
4
+ };
5
+ const eventsRef = {
6
+ current: []
7
+ };
8
+ const refresh = () => {
9
+ eventsRef.current.forEach(fn => fn());
10
+ };
11
+ const update = data => {
12
+ snapshotRef.current = data;
13
+ };
14
+ const cleanup = () => {
15
+ eventsRef.current = [];
16
+ };
17
+ return {
18
+ refresh,
19
+ update,
20
+ cleanup,
21
+ snapshotRef,
22
+ eventsRef
23
+ };
24
+ }
25
+ //# sourceMappingURL=IsolationDataReference.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IsolationDataReference.js","names":["createDataReference","snapshotRef","current","undefined","eventsRef","refresh","forEach","fn","update","data","cleanup"],"sources":["../../../../../../src/extensions/forms/Form/Isolation/IsolationDataReference.ts"],"sourcesContent":["import React from 'react'\n\nexport type IsolationDataReference = {\n refresh: () => void\n update: (data: unknown) => void\n cleanup: () => void\n snapshotRef: React.MutableRefObject<unknown>\n eventsRef: React.MutableRefObject<Array<() => void>>\n}\n\nexport function createDataReference(): IsolationDataReference {\n const snapshotRef = { current: undefined }\n const eventsRef = { current: [] }\n\n const refresh: IsolationDataReference['refresh'] = () => {\n eventsRef.current.forEach((fn) => fn())\n }\n\n const update: IsolationDataReference['update'] = (data) => {\n snapshotRef.current = data\n }\n\n const cleanup: IsolationDataReference['cleanup'] = () => {\n eventsRef.current = []\n }\n\n return {\n refresh,\n update,\n cleanup,\n snapshotRef,\n eventsRef,\n }\n}\n"],"mappings":"AAUA,OAAO,SAASA,mBAAmBA,CAAA,EAA2B;EAC5D,MAAMC,WAAW,GAAG;IAAEC,OAAO,EAAEC;EAAU,CAAC;EAC1C,MAAMC,SAAS,GAAG;IAAEF,OAAO,EAAE;EAAG,CAAC;EAEjC,MAAMG,OAA0C,GAAGA,CAAA,KAAM;IACvDD,SAAS,CAACF,OAAO,CAACI,OAAO,CAAEC,EAAE,IAAKA,EAAE,CAAC,CAAC,CAAC;EACzC,CAAC;EAED,MAAMC,MAAwC,GAAIC,IAAI,IAAK;IACzDR,WAAW,CAACC,OAAO,GAAGO,IAAI;EAC5B,CAAC;EAED,MAAMC,OAA0C,GAAGA,CAAA,KAAM;IACvDN,SAAS,CAACF,OAAO,GAAG,EAAE;EACxB,CAAC;EAED,OAAO;IACLG,OAAO;IACPG,MAAM;IACNE,OAAO;IACPT,WAAW;IACXG;EACF,CAAC;AACH","ignoreList":[]}
@@ -22,6 +22,21 @@ export const IsolationProperties = _objectSpread(_objectSpread({
22
22
  doc: 'Prevent the form from being submitted when there are fields with errors inside the Form.Isolation.',
23
23
  type: 'boolean',
24
24
  status: 'optional'
25
+ },
26
+ preventUncommittedChanges: {
27
+ doc: 'Prevents uncommitted changes before the form is submitted. Will display an error message if user tries to submit without committing their changes.',
28
+ type: 'boolean',
29
+ status: 'optional'
30
+ },
31
+ resetDataAfterCommit: {
32
+ doc: 'If set to `true`, the Form.Isolation will reset its data context after committing the data to the outer context.',
33
+ type: 'boolean',
34
+ status: 'optional'
35
+ },
36
+ dataReference: {
37
+ doc: 'Provide a reference by using `Form.Isolation.createDataReference.`',
38
+ type: 'IsolationDataReference',
39
+ status: 'optional'
25
40
  }
26
41
  }, ProviderProperties), {}, {
27
42
  minimumAsyncBehaviorTime: undefined,
@@ -1 +1 @@
1
- {"version":3,"file":"IsolationDocs.js","names":["ProviderEvents","ProviderProperties","IsolationProperties","_objectSpread","path","doc","type","status","transformOnCommit","commitHandleRef","bubbleValidation","minimumAsyncBehaviorTime","undefined","asyncSubmitTimeout","scrollTopOnSubmit","sessionStorageId","globalStatusId","IsolationEvents","onCommit","onSubmit","onSubmitRequest","onSubmitComplete"],"sources":["../../../../../../src/extensions/forms/Form/Isolation/IsolationDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../../../shared/types'\nimport {\n ProviderEvents,\n ProviderProperties,\n} from '../../DataContext/Provider/ProviderDocs'\n\nexport const IsolationProperties: PropertiesTableProps = {\n path: {\n doc: 'JSON Pointer to define the object key for all the generated nested field data.',\n type: 'string',\n status: 'optional',\n },\n transformOnCommit: {\n doc: 'Transform the data before it gets committed to the form. The first parameter is the isolated data object. The second parameter is the outer context data object (Form.Handler).',\n type: 'function',\n status: 'optional',\n },\n commitHandleRef: {\n doc: 'Provide a ref to a function that can be called from any location to commit the data to the form.',\n type: 'React.RefObject',\n status: 'optional',\n },\n bubbleValidation: {\n doc: 'Prevent the form from being submitted when there are fields with errors inside the Form.Isolation.',\n type: 'boolean',\n status: 'optional',\n },\n ...ProviderProperties,\n minimumAsyncBehaviorTime: undefined,\n asyncSubmitTimeout: undefined,\n scrollTopOnSubmit: undefined,\n sessionStorageId: undefined,\n globalStatusId: undefined,\n}\n\nexport const IsolationEvents: PropertiesTableProps = {\n onCommit: {\n doc: 'Will be called on a nested form context commit – if validation has passed. The first parameter is the committed data object. The second parameter is an object containing a method to clear the internal data `{ clearData }`.',\n type: 'function',\n status: 'optional',\n },\n ...ProviderEvents,\n onSubmit: undefined,\n onSubmitRequest: undefined,\n onSubmitComplete: undefined,\n}\n"],"mappings":";;;AACA,SACEA,cAAc,EACdC,kBAAkB,QACb,yCAAyC;AAEhD,OAAO,MAAMC,mBAAyC,GAAAC,aAAA,CAAAA,aAAA;EACpDC,IAAI,EAAE;IACJC,GAAG,EAAE,gFAAgF;IACrFC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDC,iBAAiB,EAAE;IACjBH,GAAG,EAAE,iLAAiL;IACtLC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV,CAAC;EACDE,eAAe,EAAE;IACfJ,GAAG,EAAE,kGAAkG;IACvGC,IAAI,EAAE,iBAAiB;IACvBC,MAAM,EAAE;EACV,CAAC;EACDG,gBAAgB,EAAE;IAChBL,GAAG,EAAE,oGAAoG;IACzGC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV;AAAC,GACEN,kBAAkB;EACrBU,wBAAwB,EAAEC,SAAS;EACnCC,kBAAkB,EAAED,SAAS;EAC7BE,iBAAiB,EAAEF,SAAS;EAC5BG,gBAAgB,EAAEH,SAAS;EAC3BI,cAAc,EAAEJ;AAAS,EAC1B;AAED,OAAO,MAAMK,eAAqC,GAAAd,aAAA,CAAAA,aAAA;EAChDe,QAAQ,EAAE;IACRb,GAAG,EAAE,gOAAgO;IACrOC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV;AAAC,GACEP,cAAc;EACjBmB,QAAQ,EAAEP,SAAS;EACnBQ,eAAe,EAAER,SAAS;EAC1BS,gBAAgB,EAAET;AAAS,EAC5B","ignoreList":[]}
1
+ {"version":3,"file":"IsolationDocs.js","names":["ProviderEvents","ProviderProperties","IsolationProperties","_objectSpread","path","doc","type","status","transformOnCommit","commitHandleRef","bubbleValidation","preventUncommittedChanges","resetDataAfterCommit","dataReference","minimumAsyncBehaviorTime","undefined","asyncSubmitTimeout","scrollTopOnSubmit","sessionStorageId","globalStatusId","IsolationEvents","onCommit","onSubmit","onSubmitRequest","onSubmitComplete"],"sources":["../../../../../../src/extensions/forms/Form/Isolation/IsolationDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../../../shared/types'\nimport {\n ProviderEvents,\n ProviderProperties,\n} from '../../DataContext/Provider/ProviderDocs'\n\nexport const IsolationProperties: PropertiesTableProps = {\n path: {\n doc: 'JSON Pointer to define the object key for all the generated nested field data.',\n type: 'string',\n status: 'optional',\n },\n transformOnCommit: {\n doc: 'Transform the data before it gets committed to the form. The first parameter is the isolated data object. The second parameter is the outer context data object (Form.Handler).',\n type: 'function',\n status: 'optional',\n },\n commitHandleRef: {\n doc: 'Provide a ref to a function that can be called from any location to commit the data to the form.',\n type: 'React.RefObject',\n status: 'optional',\n },\n bubbleValidation: {\n doc: 'Prevent the form from being submitted when there are fields with errors inside the Form.Isolation.',\n type: 'boolean',\n status: 'optional',\n },\n preventUncommittedChanges: {\n doc: 'Prevents uncommitted changes before the form is submitted. Will display an error message if user tries to submit without committing their changes.',\n type: 'boolean',\n status: 'optional',\n },\n resetDataAfterCommit: {\n doc: 'If set to `true`, the Form.Isolation will reset its data context after committing the data to the outer context.',\n type: 'boolean',\n status: 'optional',\n },\n dataReference: {\n doc: 'Provide a reference by using `Form.Isolation.createDataReference.`',\n type: 'IsolationDataReference',\n status: 'optional',\n },\n ...ProviderProperties,\n minimumAsyncBehaviorTime: undefined,\n asyncSubmitTimeout: undefined,\n scrollTopOnSubmit: undefined,\n sessionStorageId: undefined,\n globalStatusId: undefined,\n}\n\nexport const IsolationEvents: PropertiesTableProps = {\n onCommit: {\n doc: 'Will be called on a nested form context commit – if validation has passed. The first parameter is the committed data object. The second parameter is an object containing a method to clear the internal data `{ clearData }`.',\n type: 'function',\n status: 'optional',\n },\n ...ProviderEvents,\n onSubmit: undefined,\n onSubmitRequest: undefined,\n onSubmitComplete: undefined,\n}\n"],"mappings":";;;AACA,SACEA,cAAc,EACdC,kBAAkB,QACb,yCAAyC;AAEhD,OAAO,MAAMC,mBAAyC,GAAAC,aAAA,CAAAA,aAAA;EACpDC,IAAI,EAAE;IACJC,GAAG,EAAE,gFAAgF;IACrFC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDC,iBAAiB,EAAE;IACjBH,GAAG,EAAE,iLAAiL;IACtLC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV,CAAC;EACDE,eAAe,EAAE;IACfJ,GAAG,EAAE,kGAAkG;IACvGC,IAAI,EAAE,iBAAiB;IACvBC,MAAM,EAAE;EACV,CAAC;EACDG,gBAAgB,EAAE;IAChBL,GAAG,EAAE,oGAAoG;IACzGC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDI,yBAAyB,EAAE;IACzBN,GAAG,EAAE,oJAAoJ;IACzJC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDK,oBAAoB,EAAE;IACpBP,GAAG,EAAE,kHAAkH;IACvHC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDM,aAAa,EAAE;IACbR,GAAG,EAAE,oEAAoE;IACzEC,IAAI,EAAE,wBAAwB;IAC9BC,MAAM,EAAE;EACV;AAAC,GACEN,kBAAkB;EACrBa,wBAAwB,EAAEC,SAAS;EACnCC,kBAAkB,EAAED,SAAS;EAC7BE,iBAAiB,EAAEF,SAAS;EAC5BG,gBAAgB,EAAEH,SAAS;EAC3BI,cAAc,EAAEJ;AAAS,EAC1B;AAED,OAAO,MAAMK,eAAqC,GAAAjB,aAAA,CAAAA,aAAA;EAChDkB,QAAQ,EAAE;IACRhB,GAAG,EAAE,gOAAgO;IACrOC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV;AAAC,GACEP,cAAc;EACjBsB,QAAQ,EAAEP,SAAS;EACnBQ,eAAe,EAAER,SAAS;EAC1BS,gBAAgB,EAAET;AAAS,EAC5B","ignoreList":[]}