@dnb/eufemia 10.58.0 → 10.60.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 (405) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/cjs/components/dialog/style/dnb-dialog.css +2 -1
  3. package/cjs/components/dialog/style/dnb-dialog.min.css +1 -1
  4. package/cjs/components/dialog/style/dnb-dialog.scss +2 -1
  5. package/cjs/components/form-label/FormLabel.js +13 -10
  6. package/cjs/components/form-label/FormLabel.js.map +1 -1
  7. package/cjs/components/height-animation/HeightAnimation.d.ts +1 -1
  8. package/cjs/components/height-animation/HeightAnimation.js.map +1 -1
  9. package/cjs/components/height-animation/HeightAnimationDocs.js +2 -2
  10. package/cjs/components/height-animation/HeightAnimationDocs.js.map +1 -1
  11. package/cjs/components/pagination/Pagination.d.ts +1 -1
  12. package/cjs/components/upload/Upload.js +2 -1
  13. package/cjs/components/upload/Upload.js.map +1 -1
  14. package/cjs/components/upload/UploadDocs.js +5 -0
  15. package/cjs/components/upload/UploadDocs.js.map +1 -1
  16. package/cjs/components/upload/UploadFileList.js +80 -12
  17. package/cjs/components/upload/UploadFileList.js.map +1 -1
  18. package/cjs/components/upload/UploadFileListCell.d.ts +5 -1
  19. package/cjs/components/upload/UploadFileListCell.js +9 -8
  20. package/cjs/components/upload/UploadFileListCell.js.map +1 -1
  21. package/cjs/components/upload/UploadFileListLink.d.ts +13 -0
  22. package/cjs/components/upload/UploadFileListLink.js +66 -0
  23. package/cjs/components/upload/UploadFileListLink.js.map +1 -0
  24. package/cjs/components/upload/types.d.ts +8 -2
  25. package/cjs/components/upload/types.js.map +1 -1
  26. package/cjs/extensions/forms/DataContext/Provider/Provider.js +17 -9
  27. package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  28. package/cjs/extensions/forms/Field/Upload/Upload.d.ts +1 -1
  29. package/cjs/extensions/forms/Field/Upload/Upload.js +22 -8
  30. package/cjs/extensions/forms/Field/Upload/Upload.js.map +1 -1
  31. package/cjs/extensions/forms/Form/Element/Element.js +1 -1
  32. package/cjs/extensions/forms/Form/Element/Element.js.map +1 -1
  33. package/cjs/extensions/forms/Form/InfoOverlay/InfoOverlay.d.ts +36 -0
  34. package/cjs/extensions/forms/Form/InfoOverlay/InfoOverlay.js +132 -0
  35. package/cjs/extensions/forms/Form/InfoOverlay/InfoOverlay.js.map +1 -0
  36. package/cjs/extensions/forms/Form/InfoOverlay/InfoOverlayDocs.d.ts +3 -0
  37. package/cjs/extensions/forms/Form/InfoOverlay/InfoOverlayDocs.js +68 -0
  38. package/cjs/extensions/forms/Form/InfoOverlay/InfoOverlayDocs.js.map +1 -0
  39. package/cjs/extensions/forms/Form/InfoOverlay/index.d.ts +2 -0
  40. package/cjs/extensions/forms/Form/InfoOverlay/index.js +27 -0
  41. package/cjs/extensions/forms/Form/InfoOverlay/index.js.map +1 -0
  42. package/cjs/extensions/forms/Form/InfoOverlay/setContent.d.ts +4 -0
  43. package/cjs/extensions/forms/Form/InfoOverlay/setContent.js +14 -0
  44. package/cjs/extensions/forms/Form/InfoOverlay/setContent.js.map +1 -0
  45. package/cjs/extensions/forms/Form/Section/Section.js.map +1 -1
  46. package/cjs/extensions/forms/Form/Section/style/themes/ui.js +1 -1
  47. package/cjs/extensions/forms/Form/Section/style/themes/ui.js.map +1 -1
  48. package/cjs/extensions/forms/Form/Visibility/Visibility.d.ts +8 -4
  49. package/cjs/extensions/forms/Form/Visibility/Visibility.js +18 -2
  50. package/cjs/extensions/forms/Form/Visibility/Visibility.js.map +1 -1
  51. package/cjs/extensions/forms/Form/Visibility/VisibilityDocs.d.ts +1 -0
  52. package/cjs/extensions/forms/Form/Visibility/VisibilityDocs.js +11 -1
  53. package/cjs/extensions/forms/Form/Visibility/VisibilityDocs.js.map +1 -1
  54. package/cjs/extensions/forms/Form/index.d.ts +1 -0
  55. package/cjs/extensions/forms/Form/index.js +7 -0
  56. package/cjs/extensions/forms/Form/index.js.map +1 -1
  57. package/cjs/extensions/forms/Value/Upload/Upload.d.ts +3 -2
  58. package/cjs/extensions/forms/Value/Upload/Upload.js +18 -10
  59. package/cjs/extensions/forms/Value/Upload/Upload.js.map +1 -1
  60. package/cjs/extensions/forms/Value/Upload/UploadDocs.d.ts +2 -1
  61. package/cjs/extensions/forms/Value/Upload/UploadDocs.js +8 -3
  62. package/cjs/extensions/forms/Value/Upload/UploadDocs.js.map +1 -1
  63. package/cjs/extensions/forms/Wizard/Container/WizardContainer.js +2 -3
  64. package/cjs/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  65. package/cjs/extensions/forms/Wizard/style/dnb-wizard-layout.css +1 -1
  66. package/cjs/extensions/forms/Wizard/style/dnb-wizard-layout.min.css +1 -1
  67. package/cjs/extensions/forms/Wizard/style/dnb-wizard-layout.scss +1 -1
  68. package/cjs/extensions/forms/constants/locales/en-GB.d.ts +12 -0
  69. package/cjs/extensions/forms/constants/locales/en-GB.js +12 -0
  70. package/cjs/extensions/forms/constants/locales/en-GB.js.map +1 -1
  71. package/cjs/extensions/forms/constants/locales/en-US.d.ts +12 -0
  72. package/cjs/extensions/forms/constants/locales/index.d.ts +24 -0
  73. package/cjs/extensions/forms/constants/locales/nb-NO.d.ts +12 -0
  74. package/cjs/extensions/forms/constants/locales/nb-NO.js +12 -0
  75. package/cjs/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  76. package/cjs/extensions/forms/style/dnb-forms.css +1 -1
  77. package/cjs/extensions/forms/style/dnb-forms.min.css +1 -1
  78. package/cjs/fragments/drawer-list/DrawerListProvider.js +58 -21
  79. package/cjs/fragments/drawer-list/DrawerListProvider.js.map +1 -1
  80. package/cjs/shared/Eufemia.d.ts +1 -1
  81. package/cjs/shared/Eufemia.js +2 -2
  82. package/cjs/shared/Eufemia.js.map +1 -1
  83. package/cjs/shared/helpers/useSharedState.d.ts +14 -6
  84. package/cjs/shared/helpers/useSharedState.js +52 -27
  85. package/cjs/shared/helpers/useSharedState.js.map +1 -1
  86. package/cjs/shared/locales/en-GB.js +1 -1
  87. package/cjs/shared/locales/en-GB.js.map +1 -1
  88. package/cjs/shared/locales/nb-NO.js +1 -1
  89. package/cjs/shared/locales/nb-NO.js.map +1 -1
  90. package/cjs/style/core/scopes.scss +1 -1
  91. package/cjs/style/dnb-ui-basis.css +1 -1
  92. package/cjs/style/dnb-ui-basis.min.css +1 -1
  93. package/cjs/style/dnb-ui-body.css +1 -1
  94. package/cjs/style/dnb-ui-body.min.css +1 -1
  95. package/cjs/style/dnb-ui-components.css +3 -2
  96. package/cjs/style/dnb-ui-components.min.css +2 -2
  97. package/cjs/style/dnb-ui-core.css +1 -1
  98. package/cjs/style/dnb-ui-core.min.css +1 -1
  99. package/cjs/style/dnb-ui-extensions.css +1 -1
  100. package/cjs/style/dnb-ui-extensions.min.css +1 -1
  101. package/cjs/style/dnb-ui-forms.css +1 -1
  102. package/cjs/style/dnb-ui-forms.min.css +1 -1
  103. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +4 -3
  104. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  105. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.css +1 -1
  106. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  107. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.scss +1 -1
  108. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.css +1 -1
  109. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  110. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.scss +1 -1
  111. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +4 -3
  112. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  113. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.css +1 -1
  114. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  115. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.scss +1 -1
  116. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.css +1 -1
  117. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  118. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.scss +1 -1
  119. package/cjs/style/themes/theme-ui/ui-theme-components.css +4 -3
  120. package/cjs/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  121. package/cjs/style/themes/theme-ui/ui-theme-extensions.css +1 -1
  122. package/cjs/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  123. package/cjs/style/themes/theme-ui/ui-theme-extensions.scss +1 -1
  124. package/cjs/style/themes/theme-ui/ui-theme-forms.css +1 -1
  125. package/cjs/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  126. package/cjs/style/themes/theme-ui/ui-theme-forms.scss +1 -1
  127. package/components/dialog/style/dnb-dialog.css +2 -1
  128. package/components/dialog/style/dnb-dialog.min.css +1 -1
  129. package/components/dialog/style/dnb-dialog.scss +2 -1
  130. package/components/form-label/FormLabel.js +13 -10
  131. package/components/form-label/FormLabel.js.map +1 -1
  132. package/components/height-animation/HeightAnimation.d.ts +1 -1
  133. package/components/height-animation/HeightAnimation.js.map +1 -1
  134. package/components/height-animation/HeightAnimationDocs.js +2 -2
  135. package/components/height-animation/HeightAnimationDocs.js.map +1 -1
  136. package/components/pagination/Pagination.d.ts +1 -1
  137. package/components/upload/Upload.js +2 -1
  138. package/components/upload/Upload.js.map +1 -1
  139. package/components/upload/UploadDocs.js +5 -0
  140. package/components/upload/UploadDocs.js.map +1 -1
  141. package/components/upload/UploadFileList.js +77 -12
  142. package/components/upload/UploadFileList.js.map +1 -1
  143. package/components/upload/UploadFileListCell.d.ts +5 -1
  144. package/components/upload/UploadFileListCell.js +9 -8
  145. package/components/upload/UploadFileListCell.js.map +1 -1
  146. package/components/upload/UploadFileListLink.d.ts +13 -0
  147. package/components/upload/UploadFileListLink.js +56 -0
  148. package/components/upload/UploadFileListLink.js.map +1 -0
  149. package/components/upload/types.d.ts +8 -2
  150. package/components/upload/types.js.map +1 -1
  151. package/es/components/dialog/style/dnb-dialog.css +2 -1
  152. package/es/components/dialog/style/dnb-dialog.min.css +1 -1
  153. package/es/components/dialog/style/dnb-dialog.scss +2 -1
  154. package/es/components/form-label/FormLabel.js +13 -10
  155. package/es/components/form-label/FormLabel.js.map +1 -1
  156. package/es/components/height-animation/HeightAnimation.d.ts +1 -1
  157. package/es/components/height-animation/HeightAnimation.js.map +1 -1
  158. package/es/components/height-animation/HeightAnimationDocs.js +2 -2
  159. package/es/components/height-animation/HeightAnimationDocs.js.map +1 -1
  160. package/es/components/pagination/Pagination.d.ts +1 -1
  161. package/es/components/upload/Upload.js +2 -1
  162. package/es/components/upload/Upload.js.map +1 -1
  163. package/es/components/upload/UploadDocs.js +5 -0
  164. package/es/components/upload/UploadDocs.js.map +1 -1
  165. package/es/components/upload/UploadFileList.js +77 -12
  166. package/es/components/upload/UploadFileList.js.map +1 -1
  167. package/es/components/upload/UploadFileListCell.d.ts +5 -1
  168. package/es/components/upload/UploadFileListCell.js +9 -8
  169. package/es/components/upload/UploadFileListCell.js.map +1 -1
  170. package/es/components/upload/UploadFileListLink.d.ts +13 -0
  171. package/es/components/upload/UploadFileListLink.js +56 -0
  172. package/es/components/upload/UploadFileListLink.js.map +1 -0
  173. package/es/components/upload/types.d.ts +8 -2
  174. package/es/components/upload/types.js.map +1 -1
  175. package/es/extensions/forms/DataContext/Provider/Provider.js +17 -9
  176. package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  177. package/es/extensions/forms/Field/Upload/Upload.d.ts +1 -1
  178. package/es/extensions/forms/Field/Upload/Upload.js +18 -7
  179. package/es/extensions/forms/Field/Upload/Upload.js.map +1 -1
  180. package/es/extensions/forms/Form/Element/Element.js +1 -1
  181. package/es/extensions/forms/Form/Element/Element.js.map +1 -1
  182. package/es/extensions/forms/Form/InfoOverlay/InfoOverlay.d.ts +36 -0
  183. package/es/extensions/forms/Form/InfoOverlay/InfoOverlay.js +122 -0
  184. package/es/extensions/forms/Form/InfoOverlay/InfoOverlay.js.map +1 -0
  185. package/es/extensions/forms/Form/InfoOverlay/InfoOverlayDocs.d.ts +3 -0
  186. package/es/extensions/forms/Form/InfoOverlay/InfoOverlayDocs.js +60 -0
  187. package/es/extensions/forms/Form/InfoOverlay/InfoOverlayDocs.js.map +1 -0
  188. package/es/extensions/forms/Form/InfoOverlay/index.d.ts +2 -0
  189. package/es/extensions/forms/Form/InfoOverlay/index.js +3 -0
  190. package/es/extensions/forms/Form/InfoOverlay/index.js.map +1 -0
  191. package/es/extensions/forms/Form/InfoOverlay/setContent.d.ts +4 -0
  192. package/es/extensions/forms/Form/InfoOverlay/setContent.js +8 -0
  193. package/es/extensions/forms/Form/InfoOverlay/setContent.js.map +1 -0
  194. package/es/extensions/forms/Form/Section/Section.js.map +1 -1
  195. package/es/extensions/forms/Form/Section/style/themes/ui.js +1 -1
  196. package/es/extensions/forms/Form/Section/style/themes/ui.js.map +1 -1
  197. package/es/extensions/forms/Form/Visibility/Visibility.d.ts +8 -4
  198. package/es/extensions/forms/Form/Visibility/Visibility.js +16 -2
  199. package/es/extensions/forms/Form/Visibility/Visibility.js.map +1 -1
  200. package/es/extensions/forms/Form/Visibility/VisibilityDocs.d.ts +1 -0
  201. package/es/extensions/forms/Form/Visibility/VisibilityDocs.js +9 -0
  202. package/es/extensions/forms/Form/Visibility/VisibilityDocs.js.map +1 -1
  203. package/es/extensions/forms/Form/index.d.ts +1 -0
  204. package/es/extensions/forms/Form/index.js +1 -0
  205. package/es/extensions/forms/Form/index.js.map +1 -1
  206. package/es/extensions/forms/Value/Upload/Upload.d.ts +3 -2
  207. package/es/extensions/forms/Value/Upload/Upload.js +18 -10
  208. package/es/extensions/forms/Value/Upload/Upload.js.map +1 -1
  209. package/es/extensions/forms/Value/Upload/UploadDocs.d.ts +2 -1
  210. package/es/extensions/forms/Value/Upload/UploadDocs.js +5 -1
  211. package/es/extensions/forms/Value/Upload/UploadDocs.js.map +1 -1
  212. package/es/extensions/forms/Wizard/Container/WizardContainer.js +2 -3
  213. package/es/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  214. package/es/extensions/forms/Wizard/style/dnb-wizard-layout.css +1 -1
  215. package/es/extensions/forms/Wizard/style/dnb-wizard-layout.min.css +1 -1
  216. package/es/extensions/forms/Wizard/style/dnb-wizard-layout.scss +1 -1
  217. package/es/extensions/forms/constants/locales/en-GB.d.ts +12 -0
  218. package/es/extensions/forms/constants/locales/en-GB.js +12 -0
  219. package/es/extensions/forms/constants/locales/en-GB.js.map +1 -1
  220. package/es/extensions/forms/constants/locales/en-US.d.ts +12 -0
  221. package/es/extensions/forms/constants/locales/index.d.ts +24 -0
  222. package/es/extensions/forms/constants/locales/nb-NO.d.ts +12 -0
  223. package/es/extensions/forms/constants/locales/nb-NO.js +12 -0
  224. package/es/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  225. package/es/extensions/forms/style/dnb-forms.css +1 -1
  226. package/es/extensions/forms/style/dnb-forms.min.css +1 -1
  227. package/es/fragments/drawer-list/DrawerListProvider.js +57 -21
  228. package/es/fragments/drawer-list/DrawerListProvider.js.map +1 -1
  229. package/es/shared/Eufemia.d.ts +1 -1
  230. package/es/shared/Eufemia.js +2 -2
  231. package/es/shared/Eufemia.js.map +1 -1
  232. package/es/shared/helpers/useSharedState.d.ts +14 -6
  233. package/es/shared/helpers/useSharedState.js +51 -28
  234. package/es/shared/helpers/useSharedState.js.map +1 -1
  235. package/es/shared/locales/en-GB.js +1 -1
  236. package/es/shared/locales/en-GB.js.map +1 -1
  237. package/es/shared/locales/nb-NO.js +1 -1
  238. package/es/shared/locales/nb-NO.js.map +1 -1
  239. package/es/style/core/scopes.scss +1 -1
  240. package/es/style/dnb-ui-basis.css +1 -1
  241. package/es/style/dnb-ui-basis.min.css +1 -1
  242. package/es/style/dnb-ui-body.css +1 -1
  243. package/es/style/dnb-ui-body.min.css +1 -1
  244. package/es/style/dnb-ui-components.css +3 -2
  245. package/es/style/dnb-ui-components.min.css +2 -2
  246. package/es/style/dnb-ui-core.css +1 -1
  247. package/es/style/dnb-ui-core.min.css +1 -1
  248. package/es/style/dnb-ui-extensions.css +1 -1
  249. package/es/style/dnb-ui-extensions.min.css +1 -1
  250. package/es/style/dnb-ui-forms.css +1 -1
  251. package/es/style/dnb-ui-forms.min.css +1 -1
  252. package/es/style/themes/theme-eiendom/eiendom-theme-components.css +4 -3
  253. package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  254. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.css +1 -1
  255. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  256. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.scss +1 -1
  257. package/es/style/themes/theme-eiendom/eiendom-theme-forms.css +1 -1
  258. package/es/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  259. package/es/style/themes/theme-eiendom/eiendom-theme-forms.scss +1 -1
  260. package/es/style/themes/theme-sbanken/sbanken-theme-components.css +4 -3
  261. package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  262. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.css +1 -1
  263. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  264. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.scss +1 -1
  265. package/es/style/themes/theme-sbanken/sbanken-theme-forms.css +1 -1
  266. package/es/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  267. package/es/style/themes/theme-sbanken/sbanken-theme-forms.scss +1 -1
  268. package/es/style/themes/theme-ui/ui-theme-components.css +4 -3
  269. package/es/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  270. package/es/style/themes/theme-ui/ui-theme-extensions.css +1 -1
  271. package/es/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  272. package/es/style/themes/theme-ui/ui-theme-extensions.scss +1 -1
  273. package/es/style/themes/theme-ui/ui-theme-forms.css +1 -1
  274. package/es/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  275. package/es/style/themes/theme-ui/ui-theme-forms.scss +1 -1
  276. package/esm/dnb-ui-basis.min.mjs +1 -1
  277. package/esm/dnb-ui-components.min.mjs +1 -1
  278. package/esm/dnb-ui-elements.min.mjs +1 -1
  279. package/esm/dnb-ui-extensions.min.mjs +3 -3
  280. package/esm/dnb-ui-lib.min.mjs +1 -1
  281. package/extensions/forms/DataContext/Provider/Provider.js +17 -9
  282. package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  283. package/extensions/forms/Field/Upload/Upload.d.ts +1 -1
  284. package/extensions/forms/Field/Upload/Upload.js +23 -9
  285. package/extensions/forms/Field/Upload/Upload.js.map +1 -1
  286. package/extensions/forms/Form/Element/Element.js +1 -1
  287. package/extensions/forms/Form/Element/Element.js.map +1 -1
  288. package/extensions/forms/Form/InfoOverlay/InfoOverlay.d.ts +36 -0
  289. package/extensions/forms/Form/InfoOverlay/InfoOverlay.js +122 -0
  290. package/extensions/forms/Form/InfoOverlay/InfoOverlay.js.map +1 -0
  291. package/extensions/forms/Form/InfoOverlay/InfoOverlayDocs.d.ts +3 -0
  292. package/extensions/forms/Form/InfoOverlay/InfoOverlayDocs.js +60 -0
  293. package/extensions/forms/Form/InfoOverlay/InfoOverlayDocs.js.map +1 -0
  294. package/extensions/forms/Form/InfoOverlay/index.d.ts +2 -0
  295. package/extensions/forms/Form/InfoOverlay/index.js +3 -0
  296. package/extensions/forms/Form/InfoOverlay/index.js.map +1 -0
  297. package/extensions/forms/Form/InfoOverlay/setContent.d.ts +4 -0
  298. package/extensions/forms/Form/InfoOverlay/setContent.js +8 -0
  299. package/extensions/forms/Form/InfoOverlay/setContent.js.map +1 -0
  300. package/extensions/forms/Form/Section/Section.js.map +1 -1
  301. package/extensions/forms/Form/Section/style/themes/ui.js +1 -1
  302. package/extensions/forms/Form/Section/style/themes/ui.js.map +1 -1
  303. package/extensions/forms/Form/Visibility/Visibility.d.ts +8 -4
  304. package/extensions/forms/Form/Visibility/Visibility.js +16 -2
  305. package/extensions/forms/Form/Visibility/Visibility.js.map +1 -1
  306. package/extensions/forms/Form/Visibility/VisibilityDocs.d.ts +1 -0
  307. package/extensions/forms/Form/Visibility/VisibilityDocs.js +9 -0
  308. package/extensions/forms/Form/Visibility/VisibilityDocs.js.map +1 -1
  309. package/extensions/forms/Form/index.d.ts +1 -0
  310. package/extensions/forms/Form/index.js +1 -0
  311. package/extensions/forms/Form/index.js.map +1 -1
  312. package/extensions/forms/Value/Upload/Upload.d.ts +3 -2
  313. package/extensions/forms/Value/Upload/Upload.js +18 -10
  314. package/extensions/forms/Value/Upload/Upload.js.map +1 -1
  315. package/extensions/forms/Value/Upload/UploadDocs.d.ts +2 -1
  316. package/extensions/forms/Value/Upload/UploadDocs.js +5 -1
  317. package/extensions/forms/Value/Upload/UploadDocs.js.map +1 -1
  318. package/extensions/forms/Wizard/Container/WizardContainer.js +2 -3
  319. package/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  320. package/extensions/forms/Wizard/style/dnb-wizard-layout.css +1 -1
  321. package/extensions/forms/Wizard/style/dnb-wizard-layout.min.css +1 -1
  322. package/extensions/forms/Wizard/style/dnb-wizard-layout.scss +1 -1
  323. package/extensions/forms/constants/locales/en-GB.d.ts +12 -0
  324. package/extensions/forms/constants/locales/en-GB.js +12 -0
  325. package/extensions/forms/constants/locales/en-GB.js.map +1 -1
  326. package/extensions/forms/constants/locales/en-US.d.ts +12 -0
  327. package/extensions/forms/constants/locales/index.d.ts +24 -0
  328. package/extensions/forms/constants/locales/nb-NO.d.ts +12 -0
  329. package/extensions/forms/constants/locales/nb-NO.js +12 -0
  330. package/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  331. package/extensions/forms/style/dnb-forms.css +1 -1
  332. package/extensions/forms/style/dnb-forms.min.css +1 -1
  333. package/fragments/drawer-list/DrawerListProvider.js +58 -21
  334. package/fragments/drawer-list/DrawerListProvider.js.map +1 -1
  335. package/package.json +1 -1
  336. package/shared/Eufemia.d.ts +1 -1
  337. package/shared/Eufemia.js +2 -2
  338. package/shared/Eufemia.js.map +1 -1
  339. package/shared/helpers/useSharedState.d.ts +14 -6
  340. package/shared/helpers/useSharedState.js +52 -27
  341. package/shared/helpers/useSharedState.js.map +1 -1
  342. package/shared/locales/en-GB.js +1 -1
  343. package/shared/locales/en-GB.js.map +1 -1
  344. package/shared/locales/nb-NO.js +1 -1
  345. package/shared/locales/nb-NO.js.map +1 -1
  346. package/style/core/scopes.scss +1 -1
  347. package/style/dnb-ui-basis.css +1 -1
  348. package/style/dnb-ui-basis.min.css +1 -1
  349. package/style/dnb-ui-body.css +1 -1
  350. package/style/dnb-ui-body.min.css +1 -1
  351. package/style/dnb-ui-components.css +3 -2
  352. package/style/dnb-ui-components.min.css +2 -2
  353. package/style/dnb-ui-core.css +1 -1
  354. package/style/dnb-ui-core.min.css +1 -1
  355. package/style/dnb-ui-extensions.css +1 -1
  356. package/style/dnb-ui-extensions.min.css +1 -1
  357. package/style/dnb-ui-forms.css +1 -1
  358. package/style/dnb-ui-forms.min.css +1 -1
  359. package/style/themes/theme-eiendom/eiendom-theme-components.css +4 -3
  360. package/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  361. package/style/themes/theme-eiendom/eiendom-theme-extensions.css +1 -1
  362. package/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  363. package/style/themes/theme-eiendom/eiendom-theme-extensions.scss +1 -1
  364. package/style/themes/theme-eiendom/eiendom-theme-forms.css +1 -1
  365. package/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  366. package/style/themes/theme-eiendom/eiendom-theme-forms.scss +1 -1
  367. package/style/themes/theme-sbanken/sbanken-theme-components.css +4 -3
  368. package/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  369. package/style/themes/theme-sbanken/sbanken-theme-extensions.css +1 -1
  370. package/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  371. package/style/themes/theme-sbanken/sbanken-theme-extensions.scss +1 -1
  372. package/style/themes/theme-sbanken/sbanken-theme-forms.css +1 -1
  373. package/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  374. package/style/themes/theme-sbanken/sbanken-theme-forms.scss +1 -1
  375. package/style/themes/theme-ui/ui-theme-components.css +4 -3
  376. package/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  377. package/style/themes/theme-ui/ui-theme-extensions.css +1 -1
  378. package/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  379. package/style/themes/theme-ui/ui-theme-extensions.scss +1 -1
  380. package/style/themes/theme-ui/ui-theme-forms.css +1 -1
  381. package/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  382. package/style/themes/theme-ui/ui-theme-forms.scss +1 -1
  383. package/umd/dnb-ui-basis.min.js +1 -1
  384. package/umd/dnb-ui-components.min.js +1 -1
  385. package/umd/dnb-ui-elements.min.js +1 -1
  386. package/umd/dnb-ui-extensions.min.js +5 -5
  387. package/umd/dnb-ui-lib.min.js +1 -1
  388. /package/cjs/extensions/forms/Form/Section/style/themes/{dnb-section-theme-sbanken.css → dnb-form-section-theme-sbanken.css} +0 -0
  389. /package/cjs/extensions/forms/Form/Section/style/themes/{dnb-section-theme-sbanken.min.css → dnb-form-section-theme-sbanken.min.css} +0 -0
  390. /package/cjs/extensions/forms/Form/Section/style/themes/{dnb-section-theme-sbanken.scss → dnb-form-section-theme-sbanken.scss} +0 -0
  391. /package/cjs/extensions/forms/Form/Section/style/themes/{dnb-section-theme-ui.css → dnb-form-section-theme-ui.css} +0 -0
  392. /package/cjs/extensions/forms/Form/Section/style/themes/{dnb-section-theme-ui.min.css → dnb-form-section-theme-ui.min.css} +0 -0
  393. /package/cjs/extensions/forms/Form/Section/style/themes/{dnb-section-theme-ui.scss → dnb-form-section-theme-ui.scss} +0 -0
  394. /package/es/extensions/forms/Form/Section/style/themes/{dnb-section-theme-sbanken.css → dnb-form-section-theme-sbanken.css} +0 -0
  395. /package/es/extensions/forms/Form/Section/style/themes/{dnb-section-theme-sbanken.min.css → dnb-form-section-theme-sbanken.min.css} +0 -0
  396. /package/es/extensions/forms/Form/Section/style/themes/{dnb-section-theme-sbanken.scss → dnb-form-section-theme-sbanken.scss} +0 -0
  397. /package/es/extensions/forms/Form/Section/style/themes/{dnb-section-theme-ui.css → dnb-form-section-theme-ui.css} +0 -0
  398. /package/es/extensions/forms/Form/Section/style/themes/{dnb-section-theme-ui.min.css → dnb-form-section-theme-ui.min.css} +0 -0
  399. /package/es/extensions/forms/Form/Section/style/themes/{dnb-section-theme-ui.scss → dnb-form-section-theme-ui.scss} +0 -0
  400. /package/extensions/forms/Form/Section/style/themes/{dnb-section-theme-sbanken.css → dnb-form-section-theme-sbanken.css} +0 -0
  401. /package/extensions/forms/Form/Section/style/themes/{dnb-section-theme-sbanken.min.css → dnb-form-section-theme-sbanken.min.css} +0 -0
  402. /package/extensions/forms/Form/Section/style/themes/{dnb-section-theme-sbanken.scss → dnb-form-section-theme-sbanken.scss} +0 -0
  403. /package/extensions/forms/Form/Section/style/themes/{dnb-section-theme-ui.css → dnb-form-section-theme-ui.css} +0 -0
  404. /package/extensions/forms/Form/Section/style/themes/{dnb-section-theme-ui.min.css → dnb-form-section-theme-ui.min.css} +0 -0
  405. /package/extensions/forms/Form/Section/style/themes/{dnb-section-theme-ui.scss → dnb-form-section-theme-ui.scss} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"Upload.js","names":["React","useCallback","useEffect","useMemo","classnames","FieldBlock","useFieldProps","useTranslation","useFormsTranslation","Upload","useUpload","pickSpacingProps","HelpButtonInline","HelpButtonInlineContent","useSharedTranslation","FormError","validateRequired","value","_ref","required","isChanged","error","hasError","some","file","errorMessage","hasFiles","length","undefined","updateFileLoadingState","files","isLoading","arguments","map","_objectSpread","UploadComponent","props","sharedTr","formsTr","errorMessages","errorRequired","preparedProps","_useFieldProps","executeOnChangeRegardlessOfError","id","className","width","widthProp","label","labelDescription","help","htmlAttributes","handleChange","handleFocus","handleBlur","fileHandler","rest","_objectWithoutProperties","_excluded","title","text","acceptedFileTypes","filesAmountLimit","fileMaxSize","skeleton","onFileDelete","fileContext","setFiles","hasInvalidFiles","_ref2","name","handleChangeAsync","existingFileIds","newFiles","filter","includes","uploadedFiles","changeHandler","_ref3","fieldBlockProps","forId","labelSrOnly","createElement","_extends","onChange","Fragment","contentId","left","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Upload/Upload.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo } from 'react'\nimport classnames from 'classnames'\nimport FieldBlock, {\n Props as FieldBlockProps,\n FieldBlockWidth,\n} from '../../FieldBlock'\nimport {\n useFieldProps,\n useTranslation as useFormsTranslation,\n} from '../../hooks'\nimport { FieldProps } from '../../types'\nimport Upload, {\n UploadFile,\n UploadFileNative,\n UploadProps,\n} from '../../../../components/Upload'\nimport useUpload from '../../../../components/upload/useUpload'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport HelpButtonInline, {\n HelpButtonInlineContent,\n} from '../../../../components/help-button/HelpButtonInline'\nimport { useTranslation as useSharedTranslation } from '../../../../shared'\nimport { SpacingProps } from '../../../../shared/types'\nimport { FormError } from '../../utils'\n\nexport type UploadValue = Array<UploadFile | UploadFileNative>\nexport type Props = Omit<\n FieldProps<UploadValue, UploadValue | undefined>,\n 'name'\n> &\n SpacingProps & {\n width?: Omit<FieldBlockWidth, 'medium' | 'small'>\n } & Pick<\n Partial<UploadProps>,\n | 'title'\n | 'text'\n | 'acceptedFileTypes'\n | 'filesAmountLimit'\n | 'fileMaxSize'\n | 'onFileDelete'\n | 'skeleton'\n > & {\n fileHandler?: (\n newFiles: UploadValue\n ) => UploadValue | Promise<UploadValue>\n }\n\nconst validateRequired = (\n value: UploadValue,\n { required, isChanged, error }\n) => {\n const hasError = value?.some((file) => file.errorMessage)\n if (hasError) {\n return new FormError('Upload.errorInvalidFiles')\n }\n\n const hasFiles = value?.length > 0\n if (required && ((!isChanged && !hasFiles) || !hasFiles)) {\n return error\n }\n\n return undefined\n}\n\nconst updateFileLoadingState = (\n files: UploadValue,\n { isLoading } = { isLoading: false }\n) => {\n return files.map((file) => ({ ...file, isLoading }))\n}\n\nfunction UploadComponent(props: Props) {\n const sharedTr = useSharedTranslation().Upload\n const formsTr = useFormsTranslation().Upload\n\n const errorMessages = useMemo(\n () => ({\n 'Field.errorRequired': formsTr.errorRequired,\n }),\n [formsTr.errorRequired]\n )\n\n const preparedProps = {\n errorMessages,\n validateRequired,\n ...props,\n }\n\n const {\n id,\n className,\n width: widthProp = 'stretch',\n value,\n label,\n labelDescription,\n help,\n htmlAttributes,\n handleChange,\n handleFocus,\n handleBlur,\n fileHandler,\n ...rest\n } = useFieldProps(preparedProps, {\n executeOnChangeRegardlessOfError: true,\n })\n\n // Upload props\n const {\n title = sharedTr.title,\n text = sharedTr.text,\n acceptedFileTypes = ['pdf', 'png', 'jpg', 'jpeg'],\n filesAmountLimit = 100,\n fileMaxSize = 5,\n skeleton,\n onFileDelete,\n } = rest\n\n const { files: fileContext, setFiles } = useUpload(id)\n\n useEffect(() => {\n // Files stored in session storage will not have a property (due to serialization).\n const hasInvalidFiles = value?.some(({ file }) => !file?.name)\n if (!hasInvalidFiles) {\n setFiles(value)\n }\n }, [setFiles, value])\n\n const handleChangeAsync = useCallback(\n async (files: UploadValue) => {\n // Filter out existing files\n const existingFileIds = fileContext?.map((file) => file.id) || []\n const newFiles = files.filter(\n (file) => !existingFileIds.includes(file.id)\n )\n\n if (newFiles.length > 0) {\n // Set loading\n setFiles([\n ...fileContext,\n ...updateFileLoadingState(newFiles, { isLoading: true }),\n ])\n\n const uploadedFiles = updateFileLoadingState(\n await fileHandler(newFiles),\n { isLoading: false }\n )\n\n // Set error, if any\n handleChange([...fileContext, ...uploadedFiles])\n } else {\n handleChange(files)\n }\n },\n [fileContext, setFiles, fileHandler, handleChange]\n )\n\n const changeHandler = useCallback(\n ({ files }: { files: UploadValue }) => {\n // Prevents the form-status from showing up\n handleBlur()\n handleFocus()\n\n if (fileHandler) {\n handleChangeAsync(files)\n } else {\n handleChange(files)\n }\n },\n [handleBlur, handleFocus, fileHandler, handleChangeAsync, handleChange]\n )\n\n const width = widthProp as FieldBlockWidth\n const fieldBlockProps: FieldBlockProps = {\n id,\n forId: `${id}-input`,\n labelSrOnly: true,\n className: classnames('dnb-forms-field-upload', className),\n width,\n help: undefined,\n ...pickSpacingProps(props),\n }\n\n return (\n <FieldBlock {...fieldBlockProps}>\n <Upload\n id={id}\n acceptedFileTypes={acceptedFileTypes}\n filesAmountLimit={filesAmountLimit}\n fileMaxSize={fileMaxSize}\n skeleton={skeleton}\n onChange={changeHandler}\n onFileDelete={onFileDelete}\n title={label ?? title}\n text={\n help ? (\n <>\n {labelDescription ?? text}\n <HelpButtonInline\n contentId={`${id}-help`}\n left={text ? 'x-small' : false}\n help={help}\n />\n </>\n ) : (\n labelDescription ?? text\n )\n }\n {...htmlAttributes}\n >\n {help && (\n <HelpButtonInlineContent contentId={`${id}-help`} help={help} />\n )}\n </Upload>\n </FieldBlock>\n )\n}\n\nexport default UploadComponent\n\nUploadComponent._supportsSpacingProps = true\n"],"mappings":"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"}
1
+ {"version":3,"file":"Upload.js","names":["React","useCallback","useEffect","useMemo","useRef","classnames","FieldBlock","useFieldProps","useTranslation","useFormsTranslation","Upload","useUpload","pickSpacingProps","HelpButtonInline","HelpButtonInlineContent","useSharedTranslation","FormError","validateRequired","value","_ref","required","isChanged","error","hasError","some","file","errorMessage","hasFiles","length","undefined","updateFileLoadingState","files","isLoading","arguments","map","_objectSpread","UploadComponent","props","sharedTr","formsTr","errorMessages","errorRequired","preparedProps","_useFieldProps","executeOnChangeRegardlessOfError","id","className","width","widthProp","label","labelDescription","help","htmlAttributes","handleChange","handleFocus","handleBlur","fileHandler","rest","_objectWithoutProperties","_excluded","title","text","acceptedFileTypes","filesAmountLimit","fileMaxSize","skeleton","onFileDelete","onFileClick","fileContext","setFiles","filesRef","current","hasInvalidFiles","_ref2","name","handleChangeAsync","existingFiles","existingFileIds","newFiles","filter","includes","incomingFiles","uploadedFiles","indexOfFirstNewFile","findIndex","_ref3","updatedFiles","slice","changeHandler","_ref4","fieldBlockProps","forId","labelSrOnly","createElement","_extends","onChange","Fragment","contentId","left","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Upload/Upload.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef } from 'react'\nimport classnames from 'classnames'\nimport FieldBlock, {\n Props as FieldBlockProps,\n FieldBlockWidth,\n} from '../../FieldBlock'\nimport {\n useFieldProps,\n useTranslation as useFormsTranslation,\n} from '../../hooks'\nimport { FieldProps } from '../../types'\nimport Upload, {\n UploadFile,\n UploadFileNative,\n UploadProps,\n} from '../../../../components/Upload'\nimport useUpload from '../../../../components/upload/useUpload'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport HelpButtonInline, {\n HelpButtonInlineContent,\n} from '../../../../components/help-button/HelpButtonInline'\nimport { useTranslation as useSharedTranslation } from '../../../../shared'\nimport { SpacingProps } from '../../../../shared/types'\nimport { FormError } from '../../utils'\n\nexport type UploadValue = Array<UploadFile | UploadFileNative>\nexport type Props = Omit<\n FieldProps<UploadValue, UploadValue | undefined>,\n 'name'\n> &\n SpacingProps & {\n width?: Omit<FieldBlockWidth, 'medium' | 'small'>\n } & Pick<\n Partial<UploadProps>,\n | 'title'\n | 'text'\n | 'acceptedFileTypes'\n | 'filesAmountLimit'\n | 'fileMaxSize'\n | 'onFileDelete'\n | 'onFileClick'\n | 'skeleton'\n | 'download'\n > & {\n fileHandler?: (\n newFiles: UploadValue\n ) => UploadValue | Promise<UploadValue>\n }\n\nconst validateRequired = (\n value: UploadValue,\n { required, isChanged, error }\n) => {\n const hasError = value?.some((file) => file.errorMessage)\n if (hasError) {\n return new FormError('Upload.errorInvalidFiles')\n }\n\n const hasFiles = value?.length > 0\n if (required && ((!isChanged && !hasFiles) || !hasFiles)) {\n return error\n }\n\n return undefined\n}\n\nconst updateFileLoadingState = (\n files: UploadValue,\n { isLoading } = { isLoading: false }\n) => {\n return files.map((file) => ({ ...file, isLoading }))\n}\n\nfunction UploadComponent(props: Props) {\n const sharedTr = useSharedTranslation().Upload\n const formsTr = useFormsTranslation().Upload\n\n const errorMessages = useMemo(\n () => ({\n 'Field.errorRequired': formsTr.errorRequired,\n }),\n [formsTr.errorRequired]\n )\n\n const preparedProps = {\n errorMessages,\n validateRequired,\n ...props,\n }\n\n const {\n id,\n className,\n width: widthProp = 'stretch',\n value,\n label,\n labelDescription,\n help,\n htmlAttributes,\n handleChange,\n handleFocus,\n handleBlur,\n fileHandler,\n ...rest\n } = useFieldProps(preparedProps, {\n executeOnChangeRegardlessOfError: true,\n })\n\n // Upload props\n const {\n title = sharedTr.title,\n text = sharedTr.text,\n acceptedFileTypes = ['pdf', 'png', 'jpg', 'jpeg'],\n filesAmountLimit = 100,\n fileMaxSize = 5,\n skeleton,\n onFileDelete,\n onFileClick,\n } = rest\n\n const { files: fileContext, setFiles } = useUpload(id)\n\n const filesRef = useRef<Array<UploadFile>>()\n\n useEffect(() => {\n filesRef.current = fileContext\n }, [fileContext])\n\n useEffect(() => {\n // Files stored in session storage will not have a property (due to serialization).\n const hasInvalidFiles = value?.some(({ file }) => !file?.name)\n if (!hasInvalidFiles) {\n setFiles(value)\n }\n }, [setFiles, value])\n\n const handleChangeAsync = useCallback(\n async (existingFiles: UploadValue) => {\n // Filter out existing files\n const existingFileIds = fileContext?.map((file) => file.id) || []\n const newFiles = existingFiles.filter(\n (file) => !existingFileIds.includes(file.id)\n )\n\n if (newFiles.length > 0) {\n // Set loading\n setFiles([\n ...fileContext,\n ...updateFileLoadingState(newFiles, { isLoading: true }),\n ])\n\n const incomingFiles = await fileHandler(newFiles)\n\n const uploadedFiles = updateFileLoadingState(incomingFiles, {\n isLoading: false,\n })\n\n const indexOfFirstNewFile = filesRef.current.findIndex(\n ({ id }) => id === newFiles[0].id\n )\n\n const updatedFiles = [\n ...filesRef.current.slice(0, indexOfFirstNewFile),\n ...uploadedFiles,\n ...filesRef.current.slice(indexOfFirstNewFile + newFiles.length),\n ]\n\n // Set error, if any\n handleChange(updatedFiles)\n } else {\n handleChange(existingFiles)\n }\n },\n [fileContext, setFiles, fileHandler, handleChange]\n )\n\n const changeHandler = useCallback(\n ({ files }: { files: UploadValue }) => {\n // Prevents the form-status from showing up\n handleBlur()\n handleFocus()\n\n if (fileHandler) {\n handleChangeAsync(files)\n } else {\n handleChange(files)\n }\n },\n [handleBlur, handleFocus, fileHandler, handleChangeAsync, handleChange]\n )\n\n const width = widthProp as FieldBlockWidth\n const fieldBlockProps: FieldBlockProps = {\n id,\n forId: `${id}-input`,\n labelSrOnly: true,\n className: classnames('dnb-forms-field-upload', className),\n width,\n help: undefined,\n ...pickSpacingProps(props),\n }\n\n return (\n <FieldBlock {...fieldBlockProps}>\n <Upload\n id={id}\n acceptedFileTypes={acceptedFileTypes}\n filesAmountLimit={filesAmountLimit}\n fileMaxSize={fileMaxSize}\n skeleton={skeleton}\n onChange={changeHandler}\n onFileDelete={onFileDelete}\n onFileClick={onFileClick}\n title={label ?? title}\n text={\n help ? (\n <>\n {labelDescription ?? text}\n <HelpButtonInline\n contentId={`${id}-help`}\n left={text ? 'x-small' : false}\n help={help}\n />\n </>\n ) : (\n labelDescription ?? text\n )\n }\n {...htmlAttributes}\n >\n {help && (\n <HelpButtonInlineContent contentId={`${id}-help`} help={help} />\n )}\n </Upload>\n </FieldBlock>\n )\n}\n\nexport default UploadComponent\n\nUploadComponent._supportsSpacingProps = true\n"],"mappings":"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"}
@@ -61,7 +61,7 @@ export default function FormElement(props) {
61
61
  key: key,
62
62
  state: key,
63
63
  id: `${id}-form-status-${key}`,
64
- className: "dnb-forms-status",
64
+ className: "dnb-forms-form__status-message",
65
65
  show: Boolean(value),
66
66
  no_animation: false,
67
67
  shellSpace: {
@@ -1 +1 @@
1
- {"version":3,"file":"Element.js","names":["React","useCallback","useContext","useRef","classnames","DataContext","Space","useId","FormStatus","combineLabelledBy","FormElement","props","id","dataContext","submitState","restHandlerProps","states","Object","entries","filter","_ref","value","_ref2","_objectSpread","children","className","onSubmit","restProps","_objectWithoutProperties","_excluded","hasElementRef","current","onSubmitHandler","event","preventDefault","formElement","target","hasContext","formElementRef","handleSubmit","createElement","_extends","element","map","_ref3","key","undefined","state","show","Boolean","no_animation","shellSpace","top","String"],"sources":["../../../../../../src/extensions/forms/Form/Element/Element.tsx"],"sourcesContent":["import React, { useCallback, useContext, useRef } from 'react'\nimport classnames from 'classnames'\nimport DataContext from '../../DataContext/Context'\nimport Space from '../../../../components/space/Space'\nimport useId from '../../../../shared/helpers/useId'\nimport type { SpacingProps } from '../../../../shared/types'\nimport { FormStatus } from '../../../../components'\nimport { combineLabelledBy } from '../../../../shared/component-helper'\n\nexport type Props = Omit<\n React.HTMLProps<HTMLFormElement>,\n 'ref' | 'autoComplete'\n> &\n SpacingProps\n\nexport default function FormElement(props: Props) {\n const id = useId()\n const dataContext = useContext(DataContext)\n const { submitState, restHandlerProps } = dataContext || {}\n const states = Object.entries(submitState || {}).filter(\n ([, value]) => value\n )\n\n const { children, className, onSubmit, ...restProps } = {\n ...restHandlerProps,\n ...props,\n } as Props\n\n /**\n * Set to true,\n * this way we prevent \"handleSubmit\" to be called twice when the SubmitButton is pressed.\n */\n const hasElementRef = useRef(false)\n if (!dataContext.hasElementRef) {\n dataContext.hasElementRef = hasElementRef\n }\n dataContext.hasElementRef.current = true\n\n const onSubmitHandler = useCallback(\n (event: React.SyntheticEvent<HTMLFormElement>) => {\n event?.preventDefault()\n\n const formElement = event.target as HTMLFormElement\n\n if (dataContext.hasContext) {\n dataContext.formElementRef.current = formElement\n dataContext.handleSubmit()\n }\n\n if (typeof onSubmit === 'function') {\n onSubmit(event)\n }\n },\n [dataContext, onSubmit]\n )\n\n return (\n <Space\n element=\"form\"\n className={classnames('dnb-forms-form', className)}\n onSubmit={onSubmitHandler}\n aria-labelledby={\n combineLabelledBy(\n restProps,\n states.map(([key]) => {\n return `${id}-form-status-${key}`\n })\n ) || undefined\n }\n {...restProps}\n >\n {children}\n\n {['error', 'warning', 'info'].map((key) => {\n const value = submitState?.[key]\n return (\n <FormStatus\n key={key}\n state={key}\n id={`${id}-form-status-${key}`}\n className=\"dnb-forms-status\"\n show={Boolean(value)}\n no_animation={false}\n shellSpace={{ top: 'small' }}\n >\n {String(value?.['message'] || value || '')}\n </FormStatus>\n )\n })}\n </Space>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Element.js","names":["React","useCallback","useContext","useRef","classnames","DataContext","Space","useId","FormStatus","combineLabelledBy","FormElement","props","id","dataContext","submitState","restHandlerProps","states","Object","entries","filter","_ref","value","_ref2","_objectSpread","children","className","onSubmit","restProps","_objectWithoutProperties","_excluded","hasElementRef","current","onSubmitHandler","event","preventDefault","formElement","target","hasContext","formElementRef","handleSubmit","createElement","_extends","element","map","_ref3","key","undefined","state","show","Boolean","no_animation","shellSpace","top","String"],"sources":["../../../../../../src/extensions/forms/Form/Element/Element.tsx"],"sourcesContent":["import React, { useCallback, useContext, useRef } from 'react'\nimport classnames from 'classnames'\nimport DataContext from '../../DataContext/Context'\nimport Space from '../../../../components/space/Space'\nimport useId from '../../../../shared/helpers/useId'\nimport type { SpacingProps } from '../../../../shared/types'\nimport { FormStatus } from '../../../../components'\nimport { combineLabelledBy } from '../../../../shared/component-helper'\n\nexport type Props = Omit<\n React.HTMLProps<HTMLFormElement>,\n 'ref' | 'autoComplete'\n> &\n SpacingProps\n\nexport default function FormElement(props: Props) {\n const id = useId()\n const dataContext = useContext(DataContext)\n const { submitState, restHandlerProps } = dataContext || {}\n const states = Object.entries(submitState || {}).filter(\n ([, value]) => value\n )\n\n const { children, className, onSubmit, ...restProps } = {\n ...restHandlerProps,\n ...props,\n } as Props\n\n /**\n * Set to true,\n * this way we prevent \"handleSubmit\" to be called twice when the SubmitButton is pressed.\n */\n const hasElementRef = useRef(false)\n if (!dataContext.hasElementRef) {\n dataContext.hasElementRef = hasElementRef\n }\n dataContext.hasElementRef.current = true\n\n const onSubmitHandler = useCallback(\n (event: React.SyntheticEvent<HTMLFormElement>) => {\n event?.preventDefault()\n\n const formElement = event.target as HTMLFormElement\n\n if (dataContext.hasContext) {\n dataContext.formElementRef.current = formElement\n dataContext.handleSubmit()\n }\n\n if (typeof onSubmit === 'function') {\n onSubmit(event)\n }\n },\n [dataContext, onSubmit]\n )\n\n return (\n <Space\n element=\"form\"\n className={classnames('dnb-forms-form', className)}\n onSubmit={onSubmitHandler}\n aria-labelledby={\n combineLabelledBy(\n restProps,\n states.map(([key]) => {\n return `${id}-form-status-${key}`\n })\n ) || undefined\n }\n {...restProps}\n >\n {children}\n\n {['error', 'warning', 'info'].map((key) => {\n const value = submitState?.[key]\n return (\n <FormStatus\n key={key}\n state={key}\n id={`${id}-form-status-${key}`}\n className=\"dnb-forms-form__status-message\"\n show={Boolean(value)}\n no_animation={false}\n shellSpace={{ top: 'small' }}\n >\n {String(value?.['message'] || value || '')}\n </FormStatus>\n )\n })}\n </Space>\n )\n}\n"],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import React from 'react';
2
+ import { SharedStateId } from '../../../../shared/helpers/useSharedState';
3
+ import { InfoOverlayContent } from './setContent';
4
+ export type Props = {
5
+ /**
6
+ * The content to show.
7
+ * If not given, the children will be shown.
8
+ * Can be `success`, `error` or a custom content.
9
+ */
10
+ content?: InfoOverlayContent;
11
+ onCancel?: () => void;
12
+ /** Predefined content */
13
+ success?: {
14
+ title?: React.ReactNode;
15
+ description?: React.ReactNode;
16
+ buttonText?: React.ReactNode;
17
+ buttonHref?: string;
18
+ buttonClickHandler?: () => void;
19
+ };
20
+ /** Predefined content */
21
+ error?: {
22
+ title?: React.ReactNode;
23
+ description?: React.ReactNode;
24
+ retryButton?: React.ReactNode;
25
+ cancelButton?: React.ReactNode;
26
+ };
27
+ id?: SharedStateId;
28
+ children: React.ReactNode;
29
+ className?: string;
30
+ };
31
+ declare function InfoOverlay(props: Props): import("react/jsx-runtime").JSX.Element;
32
+ declare namespace InfoOverlay {
33
+ var setContent: typeof import("./setContent").default;
34
+ var _supportsSpacingProps: boolean;
35
+ }
36
+ export default InfoOverlay;
@@ -0,0 +1,122 @@
1
+ "use client";
2
+
3
+ import _extends from "@babel/runtime/helpers/esm/extends";
4
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
5
+ const _excluded = ["id", "content", "success", "error", "onCancel", "className", "children"];
6
+ import React, { useCallback, useContext, useRef } from 'react';
7
+ import classnames from 'classnames';
8
+ import Visibility from '../Visibility';
9
+ import DataContext from '../../DataContext/Context';
10
+ import { useSharedState } from '../../../../shared/helpers/useSharedState';
11
+ import useMounted from '../../../../shared/helpers/useMounted';
12
+ import setContent from './setContent';
13
+ import { Button, Flex, HeightAnimation, Section } from '../../../../components';
14
+ import { P } from '../../../../elements';
15
+ import { useTranslation } from '../../hooks';
16
+ import MainHeading from '../MainHeading';
17
+ import SubmitButton from '../SubmitButton';
18
+ function InfoOverlay(props) {
19
+ const {
20
+ id: idProp,
21
+ formState
22
+ } = useContext(DataContext);
23
+ const {
24
+ id = idProp,
25
+ content: contentProp,
26
+ success,
27
+ error,
28
+ onCancel,
29
+ className,
30
+ children
31
+ } = props,
32
+ restProps = _objectWithoutProperties(props, _excluded);
33
+ const {
34
+ data
35
+ } = useSharedState(id);
36
+ const {
37
+ content = contentProp
38
+ } = data || {};
39
+ const translations = useTranslation();
40
+ const mountedRef = useMounted();
41
+ const innerRef = useRef(null);
42
+ const onAnimationEnd = useCallback(state => {
43
+ if (mountedRef.current && state === 'opened') {
44
+ var _innerRef$current$foc, _innerRef$current;
45
+ (_innerRef$current$foc = (_innerRef$current = innerRef.current).focus) === null || _innerRef$current$foc === void 0 ? void 0 : _innerRef$current$foc.call(_innerRef$current);
46
+ }
47
+ }, [mountedRef]);
48
+ const currentContentRef = useRef();
49
+ if (content) {
50
+ currentContentRef.current = content;
51
+ }
52
+ const onCancelHandler = useCallback(() => {
53
+ if (id) {
54
+ setContent(id, undefined);
55
+ }
56
+ onCancel === null || onCancel === void 0 ? void 0 : onCancel();
57
+ }, [id, onCancel]);
58
+ const childrenAreVisible = typeof content !== 'undefined' ? !(content === content) : undefined;
59
+ const statusContentIsVisible = typeof content !== 'undefined' ? content === content : false;
60
+ const status = typeof content === 'string' && !content.includes(' ') ? content : undefined;
61
+ let statusContent = content;
62
+ if (currentContentRef.current === 'success') {
63
+ const tr = translations.InfoOverlaySuccess;
64
+ const {
65
+ title,
66
+ description,
67
+ buttonText,
68
+ buttonHref,
69
+ buttonClickHandler
70
+ } = success || {};
71
+ statusContent = React.createElement(Section, _extends({
72
+ variant: "info",
73
+ innerSpace: {
74
+ top: 'large',
75
+ bottom: 'xx-large'
76
+ }
77
+ }, restProps), React.createElement(Flex.Stack, {
78
+ gap: "large"
79
+ }, React.createElement(MainHeading, null, title !== null && title !== void 0 ? title : tr.title), React.createElement(P, null, description !== null && description !== void 0 ? description : tr.description), React.createElement(Button, {
80
+ href: buttonClickHandler ? undefined : buttonHref !== null && buttonHref !== void 0 ? buttonHref : '/',
81
+ on_click: buttonClickHandler
82
+ }, buttonText !== null && buttonText !== void 0 ? buttonText : tr.buttonText)));
83
+ } else if (currentContentRef.current === 'error') {
84
+ const tr = translations.InfoOverlayError;
85
+ const {
86
+ title,
87
+ description,
88
+ cancelButton,
89
+ retryButton
90
+ } = error || {};
91
+ statusContent = React.createElement(Section, _extends({
92
+ variant: "transparent",
93
+ innerSpace: {
94
+ top: 'large',
95
+ bottom: 'xx-large'
96
+ }
97
+ }, restProps), React.createElement(Flex.Stack, {
98
+ gap: "large"
99
+ }, React.createElement(MainHeading, null, title !== null && title !== void 0 ? title : tr.title), React.createElement(HeightAnimation, null, React.createElement(P, null, formState === 'pending' ? tr.retryingText : description !== null && description !== void 0 ? description : tr.description)), React.createElement(Flex.Horizontal, null, React.createElement(Button, {
100
+ variant: "secondary",
101
+ onClick: onCancelHandler
102
+ }, cancelButton !== null && cancelButton !== void 0 ? cancelButton : tr.cancelButton), React.createElement(SubmitButton, null, retryButton !== null && retryButton !== void 0 ? retryButton : tr.retryButton))));
103
+ }
104
+ return React.createElement("div", {
105
+ className: classnames("dnb-forms-info-overlay dnb-no-focus", className, status && `dnb-forms-info-overlay--${status}`),
106
+ tabIndex: -1,
107
+ ref: innerRef
108
+ }, React.createElement(Visibility, {
109
+ visible: statusContentIsVisible,
110
+ onAnimationEnd: onAnimationEnd,
111
+ animate: true
112
+ }, statusContent), React.createElement(Visibility, {
113
+ visible: childrenAreVisible,
114
+ onAnimationEnd: onAnimationEnd,
115
+ animate: true,
116
+ keepInDOM: true
117
+ }, children));
118
+ }
119
+ InfoOverlay.setContent = setContent;
120
+ InfoOverlay._supportsSpacingProps = true;
121
+ export default InfoOverlay;
122
+ //# sourceMappingURL=InfoOverlay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InfoOverlay.js","names":["React","useCallback","useContext","useRef","classnames","Visibility","DataContext","useSharedState","useMounted","setContent","Button","Flex","HeightAnimation","Section","P","useTranslation","MainHeading","SubmitButton","InfoOverlay","props","id","idProp","formState","content","contentProp","success","error","onCancel","className","children","restProps","_objectWithoutProperties","_excluded","data","translations","mountedRef","innerRef","onAnimationEnd","state","current","_innerRef$current$foc","_innerRef$current","focus","call","currentContentRef","onCancelHandler","undefined","childrenAreVisible","statusContentIsVisible","status","includes","statusContent","tr","InfoOverlaySuccess","title","description","buttonText","buttonHref","buttonClickHandler","createElement","_extends","variant","innerSpace","top","bottom","Stack","gap","href","on_click","InfoOverlayError","cancelButton","retryButton","retryingText","Horizontal","onClick","tabIndex","ref","visible","animate","keepInDOM","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Form/InfoOverlay/InfoOverlay.tsx"],"sourcesContent":["import React, { useCallback, useContext, useRef } from 'react'\nimport classnames from 'classnames'\nimport Visibility from '../Visibility'\nimport DataContext from '../../DataContext/Context'\nimport {\n SharedStateId,\n useSharedState,\n} from '../../../../shared/helpers/useSharedState'\nimport useMounted from '../../../../shared/helpers/useMounted'\nimport setContent, { InfoOverlayContent } from './setContent'\nimport {\n Button,\n Flex,\n HeightAnimation,\n Section,\n} from '../../../../components'\nimport { HeightAnimationAllProps } from '../../../../components/HeightAnimation'\nimport { P } from '../../../../elements'\nimport { useTranslation } from '../../hooks'\nimport MainHeading from '../MainHeading'\nimport SubmitButton from '../SubmitButton'\n\nexport type Props = {\n /**\n * The content to show.\n * If not given, the children will be shown.\n * Can be `success`, `error` or a custom content.\n */\n content?: InfoOverlayContent\n onCancel?: () => void\n\n /** Predefined content */\n success?: {\n title?: React.ReactNode\n description?: React.ReactNode\n buttonText?: React.ReactNode\n buttonHref?: string\n buttonClickHandler?: () => void\n }\n /** Predefined content */\n error?: {\n title?: React.ReactNode\n description?: React.ReactNode\n retryButton?: React.ReactNode\n cancelButton?: React.ReactNode\n }\n\n // Various props\n id?: SharedStateId\n children: React.ReactNode\n className?: string\n}\n\nfunction InfoOverlay(props: Props) {\n const { id: idProp, formState } = useContext(DataContext)\n\n const {\n id = idProp,\n content: contentProp,\n success,\n error,\n onCancel,\n className,\n children,\n ...restProps\n } = props\n\n const { data } = useSharedState<{\n content?: InfoOverlayContent\n }>(id)\n const { content = contentProp } = data || {}\n\n const translations = useTranslation()\n const mountedRef = useMounted()\n const innerRef = useRef<HTMLDivElement>(null)\n const onAnimationEnd: HeightAnimationAllProps['onAnimationEnd'] =\n useCallback(\n (state) => {\n if (mountedRef.current && state === 'opened') {\n innerRef.current.focus?.()\n }\n },\n [mountedRef]\n )\n\n // To keep the content visible while hiding it with the HightAnimation\n const currentContentRef = useRef<InfoOverlayContent>()\n if (content) {\n currentContentRef.current = content\n }\n\n const onCancelHandler = useCallback(() => {\n if (id) {\n setContent(id, undefined)\n }\n onCancel?.()\n }, [id, onCancel])\n\n const childrenAreVisible =\n typeof content !== 'undefined' ? !(content === content) : undefined\n const statusContentIsVisible =\n typeof content !== 'undefined' ? content === content : false\n const status =\n typeof content === 'string' && !content.includes(' ')\n ? content\n : undefined\n\n let statusContent = content\n\n if (currentContentRef.current === 'success') {\n const tr = translations.InfoOverlaySuccess\n const {\n title,\n description,\n buttonText,\n buttonHref,\n buttonClickHandler,\n } = success || {}\n\n statusContent = (\n <Section\n variant=\"info\"\n innerSpace={{ top: 'large', bottom: 'xx-large' }}\n {...restProps}\n >\n <Flex.Stack gap=\"large\">\n <MainHeading>{title ?? tr.title}</MainHeading>\n <P>{description ?? tr.description}</P>\n <Button\n href={buttonClickHandler ? undefined : buttonHref ?? '/'}\n on_click={buttonClickHandler}\n >\n {buttonText ?? tr.buttonText}\n </Button>\n </Flex.Stack>\n </Section>\n )\n } else if (currentContentRef.current === 'error') {\n const tr = translations.InfoOverlayError\n const { title, description, cancelButton, retryButton } = error || {}\n\n statusContent = (\n <Section\n variant=\"transparent\"\n innerSpace={{ top: 'large', bottom: 'xx-large' }}\n {...restProps}\n >\n <Flex.Stack gap=\"large\">\n <MainHeading>{title ?? tr.title}</MainHeading>\n <HeightAnimation>\n <P>\n {formState === 'pending'\n ? tr.retryingText\n : description ?? tr.description}\n </P>\n </HeightAnimation>\n <Flex.Horizontal>\n <Button variant=\"secondary\" onClick={onCancelHandler}>\n {cancelButton ?? tr.cancelButton}\n </Button>\n <SubmitButton>{retryButton ?? tr.retryButton}</SubmitButton>\n </Flex.Horizontal>\n </Flex.Stack>\n </Section>\n )\n }\n\n return (\n <div\n className={classnames(\n 'dnb-forms-info-overlay',\n status && `dnb-forms-info-overlay--${status}`,\n 'dnb-no-focus',\n className\n )}\n tabIndex={-1}\n ref={innerRef}\n >\n <Visibility\n visible={statusContentIsVisible}\n onAnimationEnd={onAnimationEnd}\n animate\n >\n {statusContent}\n </Visibility>\n\n <Visibility\n visible={childrenAreVisible}\n onAnimationEnd={onAnimationEnd}\n animate\n keepInDOM\n >\n {children}\n </Visibility>\n </div>\n )\n}\n\nInfoOverlay.setContent = setContent\nInfoOverlay._supportsSpacingProps = true\n\nexport default InfoOverlay\n"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { PropertiesTableProps } from '../../../../shared/types';
2
+ export declare const InfoOverlaySuccessProperties: PropertiesTableProps;
3
+ export declare const InfoOverlayErrorProperties: PropertiesTableProps;
@@ -0,0 +1,60 @@
1
+ export const InfoOverlaySuccessProperties = {
2
+ title: {
3
+ doc: 'The title of the component.',
4
+ type: 'React.Node',
5
+ status: 'optional'
6
+ },
7
+ description: {
8
+ doc: 'The description of the component.',
9
+ type: 'React.Node',
10
+ status: 'optional'
11
+ },
12
+ buttonText: {
13
+ doc: 'The text of the button.',
14
+ type: 'React.Node',
15
+ status: 'optional'
16
+ },
17
+ buttonHref: {
18
+ doc: 'The href of the button.',
19
+ type: 'string',
20
+ status: 'optional'
21
+ },
22
+ buttonClickHandler: {
23
+ doc: 'The click handler of the button.',
24
+ type: 'function',
25
+ status: 'optional'
26
+ },
27
+ '[Section](/uilib/components/section/properties)': {
28
+ doc: 'All Section properties.',
29
+ type: 'various',
30
+ status: 'optional'
31
+ }
32
+ };
33
+ export const InfoOverlayErrorProperties = {
34
+ title: {
35
+ doc: 'The title of the component.',
36
+ type: 'React.Node',
37
+ status: 'optional'
38
+ },
39
+ description: {
40
+ doc: 'The description of the component.',
41
+ type: 'React.Node',
42
+ status: 'optional'
43
+ },
44
+ cancelButton: {
45
+ doc: 'The text of the cancel button.',
46
+ type: 'React.Node',
47
+ status: 'optional'
48
+ },
49
+ retryButton: {
50
+ doc: 'The text of the retry button.',
51
+ type: 'React.Node',
52
+ status: 'optional'
53
+ },
54
+ '[Section](/uilib/components/section/properties)': {
55
+ doc: 'All Section properties.',
56
+ type: 'various',
57
+ status: 'optional'
58
+ }
59
+ };
60
+ //# sourceMappingURL=InfoOverlayDocs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InfoOverlayDocs.js","names":["InfoOverlaySuccessProperties","title","doc","type","status","description","buttonText","buttonHref","buttonClickHandler","InfoOverlayErrorProperties","cancelButton","retryButton"],"sources":["../../../../../../src/extensions/forms/Form/InfoOverlay/InfoOverlayDocs.tsx"],"sourcesContent":["import { PropertiesTableProps } from '../../../../shared/types'\n\nexport const InfoOverlaySuccessProperties: PropertiesTableProps = {\n title: {\n doc: 'The title of the component.',\n type: 'React.Node',\n status: 'optional',\n },\n description: {\n doc: 'The description of the component.',\n type: 'React.Node',\n status: 'optional',\n },\n buttonText: {\n doc: 'The text of the button.',\n type: 'React.Node',\n status: 'optional',\n },\n buttonHref: {\n doc: 'The href of the button.',\n type: 'string',\n status: 'optional',\n },\n buttonClickHandler: {\n doc: 'The click handler of the button.',\n type: 'function',\n status: 'optional',\n },\n '[Section](/uilib/components/section/properties)': {\n doc: 'All Section properties.',\n type: 'various',\n status: 'optional',\n },\n}\n\nexport const InfoOverlayErrorProperties: PropertiesTableProps = {\n title: {\n doc: 'The title of the component.',\n type: 'React.Node',\n status: 'optional',\n },\n description: {\n doc: 'The description of the component.',\n type: 'React.Node',\n status: 'optional',\n },\n cancelButton: {\n doc: 'The text of the cancel button.',\n type: 'React.Node',\n status: 'optional',\n },\n retryButton: {\n doc: 'The text of the retry button.',\n type: 'React.Node',\n status: 'optional',\n },\n '[Section](/uilib/components/section/properties)': {\n doc: 'All Section properties.',\n type: 'various',\n status: 'optional',\n },\n}\n"],"mappings":"AAEA,OAAO,MAAMA,4BAAkD,GAAG;EAChEC,KAAK,EAAE;IACLC,GAAG,EAAE,6BAA6B;IAClCC,IAAI,EAAE,YAAY;IAClBC,MAAM,EAAE;EACV,CAAC;EACDC,WAAW,EAAE;IACXH,GAAG,EAAE,mCAAmC;IACxCC,IAAI,EAAE,YAAY;IAClBC,MAAM,EAAE;EACV,CAAC;EACDE,UAAU,EAAE;IACVJ,GAAG,EAAE,yBAAyB;IAC9BC,IAAI,EAAE,YAAY;IAClBC,MAAM,EAAE;EACV,CAAC;EACDG,UAAU,EAAE;IACVL,GAAG,EAAE,yBAAyB;IAC9BC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDI,kBAAkB,EAAE;IAClBN,GAAG,EAAE,kCAAkC;IACvCC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV,CAAC;EACD,iDAAiD,EAAE;IACjDF,GAAG,EAAE,yBAAyB;IAC9BC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV;AACF,CAAC;AAED,OAAO,MAAMK,0BAAgD,GAAG;EAC9DR,KAAK,EAAE;IACLC,GAAG,EAAE,6BAA6B;IAClCC,IAAI,EAAE,YAAY;IAClBC,MAAM,EAAE;EACV,CAAC;EACDC,WAAW,EAAE;IACXH,GAAG,EAAE,mCAAmC;IACxCC,IAAI,EAAE,YAAY;IAClBC,MAAM,EAAE;EACV,CAAC;EACDM,YAAY,EAAE;IACZR,GAAG,EAAE,gCAAgC;IACrCC,IAAI,EAAE,YAAY;IAClBC,MAAM,EAAE;EACV,CAAC;EACDO,WAAW,EAAE;IACXT,GAAG,EAAE,+BAA+B;IACpCC,IAAI,EAAE,YAAY;IAClBC,MAAM,EAAE;EACV,CAAC;EACD,iDAAiD,EAAE;IACjDF,GAAG,EAAE,yBAAyB;IAC9BC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV;AACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { default } from './InfoOverlay';
2
+ export * from './InfoOverlay';
@@ -0,0 +1,3 @@
1
+ export { default } from './InfoOverlay';
2
+ export * from './InfoOverlay';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["default"],"sources":["../../../../../../src/extensions/forms/Form/InfoOverlay/index.ts"],"sourcesContent":["export { default } from './InfoOverlay'\nexport * from './InfoOverlay'\n"],"mappings":"AAAA,SAASA,OAAO,QAAQ,eAAe;AACvC,cAAc,eAAe"}
@@ -0,0 +1,4 @@
1
+ /// <reference types="react" />
2
+ import { SharedStateId } from '../../../../shared/helpers/useSharedState';
3
+ export type InfoOverlayContent = 'success' | 'error' | React.ReactNode | undefined;
4
+ export default function setContent(id: SharedStateId, content: InfoOverlayContent): void;
@@ -0,0 +1,8 @@
1
+ import { createSharedState } from '../../../../shared/helpers/useSharedState';
2
+ export default function setContent(id, content) {
3
+ const sharedState = createSharedState(id);
4
+ sharedState.extend({
5
+ content
6
+ });
7
+ }
8
+ //# sourceMappingURL=setContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setContent.js","names":["createSharedState","setContent","id","content","sharedState","extend"],"sources":["../../../../../../src/extensions/forms/Form/InfoOverlay/setContent.ts"],"sourcesContent":["import {\n SharedStateId,\n createSharedState,\n} from '../../../../shared/helpers/useSharedState'\n\nexport type InfoOverlayContent =\n | 'success'\n | 'error'\n | React.ReactNode\n | undefined\n\nexport default function setContent(\n id: SharedStateId,\n content: InfoOverlayContent\n) {\n const sharedState = createSharedState(id)\n sharedState.extend({ content })\n}\n"],"mappings":"AAAA,SAEEA,iBAAiB,QACZ,2CAA2C;AAQlD,eAAe,SAASC,UAAUA,CAChCC,EAAiB,EACjBC,OAA2B,EAC3B;EACA,MAAMC,WAAW,GAAGJ,iBAAiB,CAACE,EAAE,CAAC;EACzCE,WAAW,CAACC,MAAM,CAAC;IAAEF;EAAQ,CAAC,CAAC;AACjC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Section.js","names":["React","useCallback","useContext","useMemo","SectionContext","DataContext","Provider","FieldPropsProvider","SectionContainerProvider","ViewContainer","EditContainer","Toolbar","SectionComponent","props","_path$startsWith","_nestedProps$overwrit","path","overwriteProps","translations","required","data","defaultData","validateInitially","containerMode","onChange","errorPrioritization","children","startsWith","call","Error","hasContext","addOnChangeHandler","nestedPath","nestedProps","handleChange","_len","arguments","length","args","Array","_key","identifier","fieldProps","undefined","createElement","sectionProps","value","_extends","_objectSpread","substring","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Form/Section/Section.tsx"],"sourcesContent":["import React, { useCallback, useContext, useMemo } from 'react'\nimport SectionContext, { SectionContextState } from './SectionContext'\nimport DataContext from '../../DataContext/Context'\nimport Provider from '../../DataContext/Provider/Provider'\nimport FieldPropsProvider from '../../Field/Provider'\nimport SectionContainerProvider from './containers/SectionContainerProvider'\nimport ViewContainer from './ViewContainer'\nimport EditContainer from './EditContainer'\n\nimport type { Props as DataContextProps } from '../../DataContext/Provider'\nimport type { ContainerMode } from './containers/SectionContainer'\nimport type { Path, FieldProps, OnChange } from '../../types'\nimport type { JsonObject } from '../../utils/json-pointer'\nimport type { SharedFieldBlockProps } from '../../FieldBlock'\nimport Toolbar from './Toolbar'\n\nexport type OverwritePropsDefaults = {\n [key: Path]:\n | (FieldProps & SharedFieldBlockProps)\n | OverwritePropsDefaults\n}\nexport type SectionProps<\n overwriteProps = OverwritePropsDefaults,\n Data extends JsonObject = JsonObject,\n> = {\n /**\n * Path to the section.\n * When defined, fields inside the section will get this path as a prefix of their own path.\n */\n path?: Path\n\n /**\n * Overwrite field props for the section.\n */\n overwriteProps?: overwriteProps | OverwritePropsDefaults\n\n /**\n * Makes all fields inside it required.\n */\n required?: boolean\n\n /**\n * If set to `true`, the whole section will be validated initially. All fields will then automatically get `validateInitially` and show their error messages. Can be useful in combination with `containerMode=\"auto\"`.\n */\n validateInitially?: boolean\n\n /**\n * Defines the container mode. Can be `view`, `edit` or `auto`.\n * When set to `auto`, the mode will initially be \"edit\" if fields contain errors.\n * Defaults to `auto`.\n */\n containerMode?: ContainerMode\n\n /**\n * Only for internal use and undocumented for now.\n * Prioritize error techniques for the section.\n * Can be `fieldSchema`, `sectionSchema` or `contextSchema.\n */\n errorPrioritization?: SectionContextState['errorPrioritization']\n} & Pick<\n DataContextProps<Data>,\n 'data' | 'defaultData' | 'onChange' | 'translations'\n>\n\nexport type LocalProps<overwriteProps = OverwritePropsDefaults> =\n SectionProps<overwriteProps> & {\n children: React.ReactNode\n }\n\nfunction SectionComponent<overwriteProps = OverwritePropsDefaults>(\n props: LocalProps<overwriteProps>\n) {\n const {\n path,\n overwriteProps,\n translations,\n required,\n data,\n defaultData,\n validateInitially,\n containerMode = 'auto',\n onChange,\n errorPrioritization = ['contextSchema'],\n children,\n } = props\n\n if (path && !path.startsWith?.('/')) {\n throw new Error(`path=\"${path}\" must start with a slash`)\n }\n\n const { hasContext, addOnChangeHandler } = useContext(DataContext)\n\n const { path: nestedPath, props: nestedProps } =\n useContext(SectionContext) || {}\n\n const handleChange = useCallback<OnChange>(\n (...args) => onChange?.(...args),\n [onChange]\n )\n addOnChangeHandler?.(handleChange)\n\n const identifier = useMemo(() => {\n return `${nestedPath && nestedPath !== '/' ? nestedPath : ''}${\n path || ''\n }`\n }, [path, nestedPath])\n const fieldProps = required ? { required: true } : undefined\n\n if (!hasContext) {\n return (\n <Provider data={data} defaultData={defaultData}>\n <SectionComponent {...props} />\n </Provider>\n )\n }\n\n const sectionProps = props as SectionProps\n\n return (\n <SectionContext.Provider\n value={{\n path: identifier,\n errorPrioritization,\n props: sectionProps,\n }}\n >\n <SectionContainerProvider\n validateInitially={validateInitially}\n containerMode={containerMode}\n >\n <FieldPropsProvider\n overwriteProps={{\n ...overwriteProps,\n ...(nestedProps?.overwriteProps?.[\n path.substring(1)\n ] as OverwritePropsDefaults),\n }}\n translations={translations}\n {...fieldProps}\n >\n {children}\n </FieldPropsProvider>\n </SectionContainerProvider>\n </SectionContext.Provider>\n )\n}\n\nSectionComponent.Toolbar = Toolbar\nSectionComponent.ViewContainer = ViewContainer\nSectionComponent.EditContainer = EditContainer\n\nSectionComponent._supportsSpacingProps = undefined\nexport default SectionComponent\n"],"mappings":"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"}
1
+ {"version":3,"file":"Section.js","names":["React","useCallback","useContext","useMemo","SectionContext","DataContext","Provider","FieldPropsProvider","SectionContainerProvider","ViewContainer","EditContainer","Toolbar","SectionComponent","props","_path$startsWith","_nestedProps$overwrit","path","overwriteProps","translations","required","data","defaultData","validateInitially","containerMode","onChange","errorPrioritization","children","startsWith","call","Error","hasContext","addOnChangeHandler","nestedPath","nestedProps","handleChange","_len","arguments","length","args","Array","_key","identifier","fieldProps","undefined","createElement","sectionProps","value","_extends","_objectSpread","substring","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Form/Section/Section.tsx"],"sourcesContent":["import React, { useCallback, useContext, useMemo } from 'react'\nimport SectionContext, { SectionContextState } from './SectionContext'\nimport DataContext from '../../DataContext/Context'\nimport Provider from '../../DataContext/Provider/Provider'\nimport FieldPropsProvider from '../../Field/Provider'\nimport SectionContainerProvider from './containers/SectionContainerProvider'\nimport ViewContainer from './ViewContainer'\nimport EditContainer from './EditContainer'\nimport Toolbar from './Toolbar'\n\nimport type { Props as DataContextProps } from '../../DataContext/Provider'\nimport type { ContainerMode } from './containers/SectionContainer'\nimport type { Path, FieldProps, OnChange } from '../../types'\nimport type { JsonObject } from '../../utils/json-pointer'\nimport type { SharedFieldBlockProps } from '../../FieldBlock'\n\nexport type OverwritePropsDefaults = {\n [key: Path]:\n | (FieldProps & SharedFieldBlockProps)\n | OverwritePropsDefaults\n}\nexport type SectionProps<\n overwriteProps = OverwritePropsDefaults,\n Data extends JsonObject = JsonObject,\n> = {\n /**\n * Path to the section.\n * When defined, fields inside the section will get this path as a prefix of their own path.\n */\n path?: Path\n\n /**\n * Overwrite field props for the section.\n */\n overwriteProps?: overwriteProps | OverwritePropsDefaults\n\n /**\n * Makes all fields inside it required.\n */\n required?: boolean\n\n /**\n * If set to `true`, the whole section will be validated initially. All fields will then automatically get `validateInitially` and show their error messages. Can be useful in combination with `containerMode=\"auto\"`.\n */\n validateInitially?: boolean\n\n /**\n * Defines the container mode. Can be `view`, `edit` or `auto`.\n * When set to `auto`, the mode will initially be \"edit\" if fields contain errors.\n * Defaults to `auto`.\n */\n containerMode?: ContainerMode\n\n /**\n * Only for internal use and undocumented for now.\n * Prioritize error techniques for the section.\n * Can be `fieldSchema`, `sectionSchema` or `contextSchema.\n */\n errorPrioritization?: SectionContextState['errorPrioritization']\n} & Pick<\n DataContextProps<Data>,\n 'data' | 'defaultData' | 'onChange' | 'translations'\n>\n\nexport type LocalProps<overwriteProps = OverwritePropsDefaults> =\n SectionProps<overwriteProps> & {\n children: React.ReactNode\n }\n\nfunction SectionComponent<overwriteProps = OverwritePropsDefaults>(\n props: LocalProps<overwriteProps>\n) {\n const {\n path,\n overwriteProps,\n translations,\n required,\n data,\n defaultData,\n validateInitially,\n containerMode = 'auto',\n onChange,\n errorPrioritization = ['contextSchema'],\n children,\n } = props\n\n if (path && !path.startsWith?.('/')) {\n throw new Error(`path=\"${path}\" must start with a slash`)\n }\n\n const { hasContext, addOnChangeHandler } = useContext(DataContext)\n\n const { path: nestedPath, props: nestedProps } =\n useContext(SectionContext) || {}\n\n const handleChange = useCallback<OnChange>(\n (...args) => onChange?.(...args),\n [onChange]\n )\n addOnChangeHandler?.(handleChange)\n\n const identifier = useMemo(() => {\n return `${nestedPath && nestedPath !== '/' ? nestedPath : ''}${\n path || ''\n }`\n }, [path, nestedPath])\n const fieldProps = required ? { required: true } : undefined\n\n if (!hasContext) {\n return (\n <Provider data={data} defaultData={defaultData}>\n <SectionComponent {...props} />\n </Provider>\n )\n }\n\n const sectionProps = props as SectionProps\n\n return (\n <SectionContext.Provider\n value={{\n path: identifier,\n errorPrioritization,\n props: sectionProps,\n }}\n >\n <SectionContainerProvider\n validateInitially={validateInitially}\n containerMode={containerMode}\n >\n <FieldPropsProvider\n overwriteProps={{\n ...overwriteProps,\n ...(nestedProps?.overwriteProps?.[\n path.substring(1)\n ] as OverwritePropsDefaults),\n }}\n translations={translations}\n {...fieldProps}\n >\n {children}\n </FieldPropsProvider>\n </SectionContainerProvider>\n </SectionContext.Provider>\n )\n}\n\nSectionComponent.Toolbar = Toolbar\nSectionComponent.ViewContainer = ViewContainer\nSectionComponent.EditContainer = EditContainer\n\nSectionComponent._supportsSpacingProps = undefined\nexport default SectionComponent\n"],"mappings":"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"}
@@ -1 +1 @@
1
- import "./dnb-section-theme-ui.min.css";
1
+ import "./dnb-form-section-theme-ui.min.css";
@@ -1 +1 @@
1
- {"version":3,"file":"ui.js","names":[],"sources":["../../../../../../../../src/extensions/forms/Form/Section/style/themes/ui.js"],"sourcesContent":["/**\n * Imports the default theme\n *\n */\n\nimport './dnb-section-theme-ui.scss'\n"],"mappings":"AAKA,OAAO,gCAA6B"}
1
+ {"version":3,"file":"ui.js","names":[],"sources":["../../../../../../../../src/extensions/forms/Form/Section/style/themes/ui.js"],"sourcesContent":["/**\n * Imports the default theme\n *\n */\n\nimport './dnb-form-section-theme-ui.scss'\n"],"mappings":"AAKA,OAAO,qCAAkC"}
@@ -1,5 +1,5 @@
1
1
  import React, { AriaAttributes } from 'react';
2
- import { HeightAnimationProps } from '../../../../components/HeightAnimation';
2
+ import { HeightAnimationAllProps } from '../../../../components/HeightAnimation';
3
3
  import type { Path, UseFieldProps } from '../../types';
4
4
  import type { DataAttributes } from '../../hooks/useFieldProps';
5
5
  import { FilterData } from '../../DataContext';
@@ -60,18 +60,22 @@ export type Props = {
60
60
  animate?: boolean;
61
61
  /** Keep the content in the DOM, even if it's not visible */
62
62
  keepInDOM?: boolean;
63
+ /** Callback for when the content gets visible. */
64
+ onVisible?: HeightAnimationAllProps['onOpen'];
65
+ /** Callback for when animation has ended */
66
+ onAnimationEnd?: HeightAnimationAllProps['onAnimationEnd'];
63
67
  /** To compensate for CSS gap between the rows, so animation does not jump during the animation. Provide a CSS unit or `auto`. Defaults to `null`. */
64
- compensateForGap?: HeightAnimationProps['compensateForGap'];
68
+ compensateForGap?: HeightAnimationAllProps['compensateForGap'];
65
69
  /** When visibility is hidden, and `keepInDOM` is true, pass these props to the children */
66
70
  fieldPropsWhenHidden?: UseFieldProps & DataAttributes & AriaAttributes;
67
- element?: HeightAnimationProps['element'];
71
+ element?: HeightAnimationAllProps['element'];
68
72
  children: React.ReactNode;
69
73
  /** @deprecated Use `visibleWhen` instead */
70
74
  pathValue?: string;
71
75
  /** @deprecated Use `visibleWhen` instead */
72
76
  whenValue?: unknown;
73
77
  };
74
- declare function Visibility({ visible, pathDefined, pathUndefined, pathTruthy, pathFalsy, pathTrue, pathFalse, pathValue, whenValue, visibleWhen, visibleWhenNot, inferData, filterData, animate, keepInDOM, compensateForGap, fieldPropsWhenHidden, children, ...rest }: Props): import("react/jsx-runtime").JSX.Element;
78
+ declare function Visibility({ visible, pathDefined, pathUndefined, pathTruthy, pathFalsy, pathTrue, pathFalse, pathValue, whenValue, visibleWhen, visibleWhenNot, inferData, filterData, onVisible, onAnimationEnd, animate, keepInDOM, compensateForGap, fieldPropsWhenHidden, children, ...rest }: Props): import("react/jsx-runtime").JSX.Element;
75
79
  declare namespace Visibility {
76
80
  var _supportsSpacingProps: string;
77
81
  }
@@ -1,9 +1,10 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
- const _excluded = ["visible", "pathDefined", "pathUndefined", "pathTruthy", "pathFalsy", "pathTrue", "pathFalse", "pathValue", "whenValue", "visibleWhen", "visibleWhenNot", "inferData", "filterData", "animate", "keepInDOM", "compensateForGap", "fieldPropsWhenHidden", "children"];
4
- import React from 'react';
3
+ const _excluded = ["visible", "pathDefined", "pathUndefined", "pathTruthy", "pathFalsy", "pathTrue", "pathFalse", "pathValue", "whenValue", "visibleWhen", "visibleWhenNot", "inferData", "filterData", "onVisible", "onAnimationEnd", "animate", "keepInDOM", "compensateForGap", "fieldPropsWhenHidden", "children"];
4
+ import React, { useCallback } from 'react';
5
5
  import { warn } from '../../../../shared/helpers';
6
6
  import useMountEffect from '../../../../shared/helpers/useMountEffect';
7
+ import useMounted from '../../../../shared/helpers/useMounted';
7
8
  import HeightAnimation from '../../../../components/HeightAnimation';
8
9
  import FieldProvider from '../../Field/Provider';
9
10
  import useVisibility from './useVisibility';
@@ -23,6 +24,8 @@ function Visibility(_ref) {
23
24
  visibleWhenNot,
24
25
  inferData,
25
26
  filterData,
27
+ onVisible,
28
+ onAnimationEnd,
26
29
  animate,
27
30
  keepInDOM,
28
31
  compensateForGap,
@@ -58,15 +61,26 @@ function Visibility(_ref) {
58
61
  isVisible: open
59
62
  }
60
63
  }, children);
64
+ const mountedRef = useMounted();
65
+ const onOpen = useCallback(state => {
66
+ if (mountedRef.current) {
67
+ onVisible === null || onVisible === void 0 ? void 0 : onVisible(state);
68
+ }
69
+ }, [mountedRef, onVisible]);
61
70
  if (animate) {
62
71
  const props = !open ? fieldPropsWhenHidden : null;
63
72
  return React.createElement(HeightAnimation, _extends({
64
73
  open: open,
74
+ onAnimationEnd: onAnimationEnd,
75
+ onOpen: onOpen,
65
76
  keepInDOM: Boolean(keepInDOM),
66
77
  className: "dnb-forms-visibility",
67
78
  compensateForGap: compensateForGap
68
79
  }, rest), React.createElement(FieldProvider, props, content));
69
80
  }
81
+ if (mountedRef.current) {
82
+ onVisible === null || onVisible === void 0 ? void 0 : onVisible(open);
83
+ }
70
84
  if (keepInDOM) {
71
85
  const props = !open ? fieldPropsWhenHidden : null;
72
86
  return React.createElement("span", {
@@ -1 +1 @@
1
- {"version":3,"file":"Visibility.js","names":["React","warn","useMountEffect","HeightAnimation","FieldProvider","useVisibility","VisibilityContext","Visibility","_ref","visible","pathDefined","pathUndefined","pathTruthy","pathFalsy","pathTrue","pathFalse","pathValue","whenValue","visibleWhen","visibleWhenNot","inferData","filterData","animate","keepInDOM","compensateForGap","fieldPropsWhenHidden","children","rest","_objectWithoutProperties","_excluded","check","open","content","createElement","Provider","value","isVisible","props","_extends","Boolean","className","hidden","Fragment","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Form/Visibility/Visibility.tsx"],"sourcesContent":["import React, { AriaAttributes } from 'react'\n\nimport { warn } from '../../../../shared/helpers'\nimport useMountEffect from '../../../../shared/helpers/useMountEffect'\nimport HeightAnimation, {\n HeightAnimationProps,\n} from '../../../../components/HeightAnimation'\nimport FieldProvider from '../../Field/Provider'\nimport useVisibility from './useVisibility'\n\nimport type { Path, UseFieldProps } from '../../types'\nimport type { DataAttributes } from '../../hooks/useFieldProps'\nimport { FilterData } from '../../DataContext'\nimport VisibilityContext from './VisibilityContext'\n\nexport type VisibleWhen =\n | {\n path: Path\n hasValue: unknown | ((value: unknown) => boolean)\n }\n | {\n itemPath: Path\n hasValue: unknown | ((value: unknown) => boolean)\n }\n | {\n path: Path\n isValid: boolean\n continuousValidation?: boolean\n }\n | {\n itemPath: Path\n isValid: boolean\n continuousValidation?: boolean\n }\n\n /**\n * @deprecated Will be removed in v11!\n */\n | {\n path: Path\n /** @deprecated Use `hasValue` instead */\n withValue: (value: unknown) => boolean\n }\n /**\n * @deprecated Will be removed in v11!\n */\n | {\n itemPath: Path\n /** @deprecated Use `hasValue` instead */\n withValue: (value: unknown) => boolean\n }\n\nexport type Props = {\n visible?: boolean\n /** Given data context path must be defined to show children */\n pathDefined?: Path\n /** Given data context path must be undefined to show children */\n pathUndefined?: Path\n /** Given data context path must be truthy to show children */\n pathTruthy?: Path\n /** Given data context path must be falsy to show children */\n pathFalsy?: Path\n /** Given data context path must be true to show children */\n pathTrue?: Path\n /** Given data context path must be false to show children */\n pathFalse?: Path\n /** Provide a `path` or `itemPath` and a `hasValue` method that returns a boolean or the excepted value in order to show children. The first parameter is the value of the path. */\n visibleWhen?: VisibleWhen\n /** Same as `visibleWhen`, but with inverted logic. */\n visibleWhenNot?: VisibleWhen\n /** Infer visibility calling given derivative function with the whole data set. Should return true/false for visibility. */\n inferData?: (data: unknown) => boolean\n /** Filter data based on provided criteria. The first parameter is the path, the second is the value, and the third is the props, and the fourth is the internal. Return false to filter out the data. */\n filterData?: FilterData\n /** Animate the visibility change */\n animate?: boolean\n /** Keep the content in the DOM, even if it's not visible */\n keepInDOM?: boolean\n /** To compensate for CSS gap between the rows, so animation does not jump during the animation. Provide a CSS unit or `auto`. Defaults to `null`. */\n compensateForGap?: HeightAnimationProps['compensateForGap']\n /** When visibility is hidden, and `keepInDOM` is true, pass these props to the children */\n fieldPropsWhenHidden?: UseFieldProps & DataAttributes & AriaAttributes\n element?: HeightAnimationProps['element']\n children: React.ReactNode\n\n /** @deprecated Use `visibleWhen` instead */\n pathValue?: string\n /** @deprecated Use `visibleWhen` instead */\n whenValue?: unknown\n}\n\nfunction Visibility({\n visible,\n pathDefined,\n pathUndefined,\n pathTruthy,\n pathFalsy,\n pathTrue,\n pathFalse,\n pathValue,\n whenValue,\n visibleWhen,\n visibleWhenNot,\n inferData,\n filterData,\n animate,\n keepInDOM,\n compensateForGap,\n fieldPropsWhenHidden,\n children,\n ...rest\n}: Props) {\n useMountEffect(() => {\n if (fieldPropsWhenHidden && !keepInDOM) {\n warn('Using \"fieldPropsWhenHidden\" requires \"keepInDOM\" to be true.')\n }\n })\n\n const { check } = useVisibility({\n visible,\n pathDefined,\n pathUndefined,\n pathTruthy,\n pathFalsy,\n pathTrue,\n pathFalse,\n pathValue,\n whenValue,\n visibleWhen,\n visibleWhenNot,\n inferData,\n filterData,\n })\n const open = check()\n const content = (\n <VisibilityContext.Provider\n value={{\n isVisible: open,\n }}\n >\n {children}\n </VisibilityContext.Provider>\n )\n\n if (animate) {\n const props = !open ? fieldPropsWhenHidden : null\n\n return (\n <HeightAnimation\n open={open}\n keepInDOM={Boolean(keepInDOM)}\n className=\"dnb-forms-visibility\"\n compensateForGap={compensateForGap}\n {...rest}\n >\n <FieldProvider {...props}>{content}</FieldProvider>\n </HeightAnimation>\n )\n }\n\n if (keepInDOM) {\n const props = !open ? fieldPropsWhenHidden : null\n return (\n <span className=\"dnb-forms-visibility\" hidden={!open}>\n <FieldProvider {...props}>{content}</FieldProvider>\n </span>\n )\n }\n\n return <>{open ? content : null}</>\n}\n\nVisibility._supportsSpacingProps = 'children'\nexport default Visibility\n"],"mappings":";;;AAAA,OAAOA,KAAK,MAA0B,OAAO;AAE7C,SAASC,IAAI,QAAQ,4BAA4B;AACjD,OAAOC,cAAc,MAAM,2CAA2C;AACtE,OAAOC,eAAe,MAEf,wCAAwC;AAC/C,OAAOC,aAAa,MAAM,sBAAsB;AAChD,OAAOC,aAAa,MAAM,iBAAiB;AAK3C,OAAOC,iBAAiB,MAAM,qBAAqB;AA8EnD,SAASC,UAAUA,CAAAC,IAAA,EAoBT;EAAA,IApBU;MAClBC,OAAO;MACPC,WAAW;MACXC,aAAa;MACbC,UAAU;MACVC,SAAS;MACTC,QAAQ;MACRC,SAAS;MACTC,SAAS;MACTC,SAAS;MACTC,WAAW;MACXC,cAAc;MACdC,SAAS;MACTC,UAAU;MACVC,OAAO;MACPC,SAAS;MACTC,gBAAgB;MAChBC,oBAAoB;MACpBC;IAEK,CAAC,GAAAlB,IAAA;IADHmB,IAAI,GAAAC,wBAAA,CAAApB,IAAA,EAAAqB,SAAA;EAEP3B,cAAc,CAAC,MAAM;IACnB,IAAIuB,oBAAoB,IAAI,CAACF,SAAS,EAAE;MACtCtB,IAAI,CAAC,+DAA+D,CAAC;IACvE;EACF,CAAC,CAAC;EAEF,MAAM;IAAE6B;EAAM,CAAC,GAAGzB,aAAa,CAAC;IAC9BI,OAAO;IACPC,WAAW;IACXC,aAAa;IACbC,UAAU;IACVC,SAAS;IACTC,QAAQ;IACRC,SAAS;IACTC,SAAS;IACTC,SAAS;IACTC,WAAW;IACXC,cAAc;IACdC,SAAS;IACTC;EACF,CAAC,CAAC;EACF,MAAMU,IAAI,GAAGD,KAAK,CAAC,CAAC;EACpB,MAAME,OAAO,GACXhC,KAAA,CAAAiC,aAAA,CAAC3B,iBAAiB,CAAC4B,QAAQ;IACzBC,KAAK,EAAE;MACLC,SAAS,EAAEL;IACb;EAAE,GAEDL,QACyB,CAC7B;EAED,IAAIJ,OAAO,EAAE;IACX,MAAMe,KAAK,GAAG,CAACN,IAAI,GAAGN,oBAAoB,GAAG,IAAI;IAEjD,OACEzB,KAAA,CAAAiC,aAAA,CAAC9B,eAAe,EAAAmC,QAAA;MACdP,IAAI,EAAEA,IAAK;MACXR,SAAS,EAAEgB,OAAO,CAAChB,SAAS,CAAE;MAC9BiB,SAAS,EAAC,sBAAsB;MAChChB,gBAAgB,EAAEA;IAAiB,GAC/BG,IAAI,GAER3B,KAAA,CAAAiC,aAAA,CAAC7B,aAAa,EAAKiC,KAAK,EAAGL,OAAuB,CACnC,CAAC;EAEtB;EAEA,IAAIT,SAAS,EAAE;IACb,MAAMc,KAAK,GAAG,CAACN,IAAI,GAAGN,oBAAoB,GAAG,IAAI;IACjD,OACEzB,KAAA,CAAAiC,aAAA;MAAMO,SAAS,EAAC,sBAAsB;MAACC,MAAM,EAAE,CAACV;IAAK,GACnD/B,KAAA,CAAAiC,aAAA,CAAC7B,aAAa,EAAKiC,KAAK,EAAGL,OAAuB,CAC9C,CAAC;EAEX;EAEA,OAAOhC,KAAA,CAAAiC,aAAA,CAAAjC,KAAA,CAAA0C,QAAA,QAAGX,IAAI,GAAGC,OAAO,GAAG,IAAO,CAAC;AACrC;AAEAzB,UAAU,CAACoC,qBAAqB,GAAG,UAAU;AAC7C,eAAepC,UAAU"}
1
+ {"version":3,"file":"Visibility.js","names":["React","useCallback","warn","useMountEffect","useMounted","HeightAnimation","FieldProvider","useVisibility","VisibilityContext","Visibility","_ref","visible","pathDefined","pathUndefined","pathTruthy","pathFalsy","pathTrue","pathFalse","pathValue","whenValue","visibleWhen","visibleWhenNot","inferData","filterData","onVisible","onAnimationEnd","animate","keepInDOM","compensateForGap","fieldPropsWhenHidden","children","rest","_objectWithoutProperties","_excluded","check","open","content","createElement","Provider","value","isVisible","mountedRef","onOpen","state","current","props","_extends","Boolean","className","hidden","Fragment","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Form/Visibility/Visibility.tsx"],"sourcesContent":["import React, { AriaAttributes, useCallback } from 'react'\n\nimport { warn } from '../../../../shared/helpers'\nimport useMountEffect from '../../../../shared/helpers/useMountEffect'\nimport useMounted from '../../../../shared/helpers/useMounted'\nimport HeightAnimation, {\n HeightAnimationAllProps,\n} from '../../../../components/HeightAnimation'\nimport FieldProvider from '../../Field/Provider'\nimport useVisibility from './useVisibility'\nimport VisibilityContext from './VisibilityContext'\n\nimport type { Path, UseFieldProps } from '../../types'\nimport type { DataAttributes } from '../../hooks/useFieldProps'\nimport { FilterData } from '../../DataContext'\n\nexport type VisibleWhen =\n | {\n path: Path\n hasValue: unknown | ((value: unknown) => boolean)\n }\n | {\n itemPath: Path\n hasValue: unknown | ((value: unknown) => boolean)\n }\n | {\n path: Path\n isValid: boolean\n continuousValidation?: boolean\n }\n | {\n itemPath: Path\n isValid: boolean\n continuousValidation?: boolean\n }\n\n /**\n * @deprecated Will be removed in v11!\n */\n | {\n path: Path\n /** @deprecated Use `hasValue` instead */\n withValue: (value: unknown) => boolean\n }\n /**\n * @deprecated Will be removed in v11!\n */\n | {\n itemPath: Path\n /** @deprecated Use `hasValue` instead */\n withValue: (value: unknown) => boolean\n }\n\nexport type Props = {\n visible?: boolean\n /** Given data context path must be defined to show children */\n pathDefined?: Path\n /** Given data context path must be undefined to show children */\n pathUndefined?: Path\n /** Given data context path must be truthy to show children */\n pathTruthy?: Path\n /** Given data context path must be falsy to show children */\n pathFalsy?: Path\n /** Given data context path must be true to show children */\n pathTrue?: Path\n /** Given data context path must be false to show children */\n pathFalse?: Path\n /** Provide a `path` or `itemPath` and a `hasValue` method that returns a boolean or the excepted value in order to show children. The first parameter is the value of the path. */\n visibleWhen?: VisibleWhen\n /** Same as `visibleWhen`, but with inverted logic. */\n visibleWhenNot?: VisibleWhen\n /** Infer visibility calling given derivative function with the whole data set. Should return true/false for visibility. */\n inferData?: (data: unknown) => boolean\n /** Filter data based on provided criteria. The first parameter is the path, the second is the value, and the third is the props, and the fourth is the internal. Return false to filter out the data. */\n filterData?: FilterData\n /** Animate the visibility change */\n animate?: boolean\n /** Keep the content in the DOM, even if it's not visible */\n keepInDOM?: boolean\n /** Callback for when the content gets visible. */\n onVisible?: HeightAnimationAllProps['onOpen']\n /** Callback for when animation has ended */\n onAnimationEnd?: HeightAnimationAllProps['onAnimationEnd']\n /** To compensate for CSS gap between the rows, so animation does not jump during the animation. Provide a CSS unit or `auto`. Defaults to `null`. */\n compensateForGap?: HeightAnimationAllProps['compensateForGap']\n /** When visibility is hidden, and `keepInDOM` is true, pass these props to the children */\n fieldPropsWhenHidden?: UseFieldProps & DataAttributes & AriaAttributes\n element?: HeightAnimationAllProps['element']\n children: React.ReactNode\n\n /** @deprecated Use `visibleWhen` instead */\n pathValue?: string\n /** @deprecated Use `visibleWhen` instead */\n whenValue?: unknown\n}\n\nfunction Visibility({\n visible,\n pathDefined,\n pathUndefined,\n pathTruthy,\n pathFalsy,\n pathTrue,\n pathFalse,\n pathValue,\n whenValue,\n visibleWhen,\n visibleWhenNot,\n inferData,\n filterData,\n onVisible,\n onAnimationEnd,\n animate,\n keepInDOM,\n compensateForGap,\n fieldPropsWhenHidden,\n children,\n ...rest\n}: Props) {\n useMountEffect(() => {\n if (fieldPropsWhenHidden && !keepInDOM) {\n warn('Using \"fieldPropsWhenHidden\" requires \"keepInDOM\" to be true.')\n }\n })\n\n const { check } = useVisibility({\n visible,\n pathDefined,\n pathUndefined,\n pathTruthy,\n pathFalsy,\n pathTrue,\n pathFalse,\n pathValue,\n whenValue,\n visibleWhen,\n visibleWhenNot,\n inferData,\n filterData,\n })\n const open = check()\n const content = (\n <VisibilityContext.Provider\n value={{\n isVisible: open,\n }}\n >\n {children}\n </VisibilityContext.Provider>\n )\n const mountedRef = useMounted()\n\n const onOpen: HeightAnimationAllProps['onOpen'] = useCallback(\n (state) => {\n if (mountedRef.current) {\n onVisible?.(state)\n }\n },\n [mountedRef, onVisible]\n )\n\n if (animate) {\n const props = !open ? fieldPropsWhenHidden : null\n\n return (\n <HeightAnimation\n open={open}\n onAnimationEnd={onAnimationEnd}\n onOpen={onOpen}\n keepInDOM={Boolean(keepInDOM)}\n className=\"dnb-forms-visibility\"\n compensateForGap={compensateForGap}\n {...rest}\n >\n <FieldProvider {...props}>{content}</FieldProvider>\n </HeightAnimation>\n )\n }\n\n if (mountedRef.current) {\n onVisible?.(open)\n }\n\n if (keepInDOM) {\n const props = !open ? fieldPropsWhenHidden : null\n return (\n <span className=\"dnb-forms-visibility\" hidden={!open}>\n <FieldProvider {...props}>{content}</FieldProvider>\n </span>\n )\n }\n\n return <>{open ? content : null}</>\n}\n\nVisibility._supportsSpacingProps = 'children'\nexport default Visibility\n"],"mappings":"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"}
@@ -1,2 +1,3 @@
1
1
  import { PropertiesTableProps } from '../../../../shared/types';
2
2
  export declare const VisibilityProperties: PropertiesTableProps;
3
+ export declare const VisibilityEvents: PropertiesTableProps;